diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..91b425d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,7 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [] +} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index c9028c4..4a108bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,21 +1,31 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -40,40 +50,221 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.82" +name = "akin" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +checksum = "1763692fc1416554cf051efc56a3de5595eca47299d731cc5c2b583adf8b4d2f" + +[[package]] +name = "aligned-vec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" dependencies = [ "backtrace", ] [[package]] -name = "autocfg" -version = "1.2.0" +name = "arbitrary" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-any" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a30a44e99a1c83ccb2a6298c563c888952a1c9134953db26876528f84c93a" + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "av1-grain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62" +dependencies = [ + "arrayvec", +] [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.22.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen_cuda" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f8489af5b7d17a81bffe37e0f4d6e1e4de87c87329d05447f22c35d95a1227d" +dependencies = [ + "glob", + "num_cpus", + "rayon", +] + +[[package]] +name = "bindgen_cuda" +version = "0.1.6" +source = "git+https://github.com/guoqingbao/bindgen_cuda.git#fb7ed75f3901b146aa1ba460baaeed5b494f2e0d" +dependencies = [ + "glob", + "num_cpus", + "rayon", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" @@ -83,9 +274,36 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "buildstructor" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3907aac66c65520545ae3cb3c195306e20d5ed5c90bfbb992e061cf12a104d0" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "str_inflector", + "syn 2.0.90", + "thiserror", + "try_match", +] + +[[package]] +name = "built" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" [[package]] name = "bumpalo" @@ -93,6 +311,26 @@ version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +[[package]] +name = "bytemuck" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -100,16 +338,105 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "bytes" -version = "1.6.0" +name = "byteorder-lite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "candle-core" +version = "0.8.0" +source = "git+https://github.com/EricLBuehler/candle.git?rev=8742354#87423548e70b471d7c4a760bc16e3aa9e814f56d" +dependencies = [ + "byteorder", + "candle-kernels", + "cudarc", + "float8", + "gemm", + "half", + "memmap2", + "num-traits", + "num_cpus", + "rand", + "rand_distr", + "rayon", + "safetensors", + "thiserror", + "ug", + "ug-cuda", + "yoke", + "zip", +] + +[[package]] +name = "candle-hf-hub" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5f45ce8fe55a9e9246a3fc60000d7ed11b88a84d72f753488f7264ce04b102" +dependencies = [ + "dirs", + "futures", + "http", + "indicatif", + "log", + "num_cpus", + "rand", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "ureq", +] + +[[package]] +name = "candle-kernels" +version = "0.8.0" +source = "git+https://github.com/EricLBuehler/candle.git?rev=8742354#87423548e70b471d7c4a760bc16e3aa9e814f56d" +dependencies = [ + "bindgen_cuda 0.1.5", +] + +[[package]] +name = "candle-nn" +version = "0.8.0" +source = "git+https://github.com/EricLBuehler/candle.git?rev=8742354#87423548e70b471d7c4a760bc16e3aa9e814f56d" +dependencies = [ + "candle-core", + "half", + "num-traits", + "rayon", + "safetensors", + "serde", + "thiserror", +] [[package]] name = "cc" -version = "1.0.92" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] [[package]] name = "cfg-if" @@ -117,6 +444,100 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfgrammar" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621f687a04efa1f269f1cd13d8cfea9660852bdb3d1cd2c3c9fb6fdd34daf2" +dependencies = [ + "indexmap", + "lazy_static", + "num-traits", + "regex", + "serde", + "vob", +] + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "clap" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.11.1", + "terminal_size", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "clap_lex" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width 0.1.14", + "windows-sys 0.52.0", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -129,9 +550,74 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crossterm" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "cssparser" @@ -153,18 +639,210 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.90", +] + +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + +[[package]] +name = "cudarc" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38cd60a9a42ec83a2ed7effb0b1f073270264ea99da7acfc44f7e8d74dee0384" +dependencies = [ + "half", + "libloading", +] + +[[package]] +name = "darling" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbffa8f8e38810422f320ca457a93cf1cd0056dc9c06c556b867558e0d471463" +dependencies = [ + "darling_core 0.11.0", + "darling_macro 0.11.0", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core 0.20.10", + "darling_macro 0.20.10", +] + +[[package]] +name = "darling_core" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e172685d94b7b83800e3256a63261537b9d6129e10f21c8e13ddf9dba8c64d" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 2.0.90", +] + +[[package]] +name = "darling_macro" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0618ac802792cebd1918ac6042a6ea1eeab92db34b35656afaa577929820788" +dependencies = [ + "darling_core 0.11.0", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core 0.20.10", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "defmac" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafbece59594ed57696a1a69e8bb3ca1683fbc9cdb41d5c02726070b2cd8f19d" + +[[package]] +name = "derive-new" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.90", ] [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -175,41 +853,116 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ "dtoa", ] +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "dyn-stack" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e53799688f5632f364f8fb387488dd05db9fe45db7011be066fc20e7027f8b" +dependencies = [ + "bytemuck", + "reborrow", +] + [[package]] name = "ebay_compute_scraper" version = "0.1.0" dependencies = [ "anyhow", + "image", "log", + "mistralrs", "regex", "reqwest", "scraper", + "strum", + "test-log", + "tokio", "tracing", "tracing-subscriber", ] [[package]] name = "ego-tree" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591" +checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +dependencies = [ + "serde", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", +] + +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -218,19 +971,75 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "esaxx-rs" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6" +dependencies = [ + "cc", +] + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", ] [[package]] name = "fastrand" -version = "2.0.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" + +[[package]] +name = "fdeflate" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float8" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c3475274d374d263c4c40c43ad854c5bdf733c7db775bbd3c1ca2ad7427978" +dependencies = [ + "cudarc", + "half", + "num-traits", + "rand", + "rand_distr", +] [[package]] name = "fnv" @@ -273,10 +1082,25 @@ dependencies = [ ] [[package]] -name = "futures-channel" -version = "0.3.30" +name = "futures" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -284,36 +1108,60 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", "futures-io", + "futures-macro", "futures-sink", "futures-task", "memchr", @@ -331,20 +1179,148 @@ dependencies = [ "byteorder", ] +[[package]] +name = "galil-seiferas" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794ac25cfda3fa11d2b07ff8c65889c6c03411646df54e59e606878d899e1d5a" +dependencies = [ + "defmac", + "unchecked-index", +] + +[[package]] +name = "gemm" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab24cc62135b40090e31a76a9b2766a501979f3070fa27f689c27ec04377d32" +dependencies = [ + "dyn-stack", + "gemm-c32", + "gemm-c64", + "gemm-common", + "gemm-f16", + "gemm-f32", + "gemm-f64", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "seq-macro", +] + +[[package]] +name = "gemm-c32" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9c030d0b983d1e34a546b86e08f600c11696fde16199f971cd46c12e67512c0" +dependencies = [ + "dyn-stack", + "gemm-common", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "seq-macro", +] + +[[package]] +name = "gemm-c64" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb5f2e79fefb9693d18e1066a557b4546cd334b226beadc68b11a8f9431852a" +dependencies = [ + "dyn-stack", + "gemm-common", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "seq-macro", +] + +[[package]] +name = "gemm-common" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2e7ea062c987abcd8db95db917b4ffb4ecdfd0668471d8dc54734fdff2354e8" +dependencies = [ + "bytemuck", + "dyn-stack", + "half", + "num-complex", + "num-traits", + "once_cell", + "paste", + "pulp", + "raw-cpuid", + "rayon", + "seq-macro", + "sysctl", +] + +[[package]] +name = "gemm-f16" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca4c06b9b11952071d317604acb332e924e817bd891bec8dfb494168c7cedd4" +dependencies = [ + "dyn-stack", + "gemm-common", + "gemm-f32", + "half", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "rayon", + "seq-macro", +] + +[[package]] +name = "gemm-f32" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9a69f51aaefbd9cf12d18faf273d3e982d9d711f60775645ed5c8047b4ae113" +dependencies = [ + "dyn-stack", + "gemm-common", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "seq-macro", +] + +[[package]] +name = "gemm-f64" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa397a48544fadf0b81ec8741e5c0fba0043008113f71f2034def1935645d2b0" +dependencies = [ + "dyn-stack", + "gemm-common", + "num-complex", + "num-traits", + "paste", + "raw-cpuid", + "seq-macro", +] + [[package]] name = "getopts" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -352,22 +1328,38 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.28.1" +name = "gif" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap", "slab", @@ -377,10 +1369,30 @@ dependencies = [ ] [[package]] -name = "hashbrown" -version = "0.14.3" +name = "half" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "bytemuck", + "cfg-if", + "crunchy", + "num-traits", + "rand", + "rand_distr", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -390,16 +1402,16 @@ checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "html5ever" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" dependencies = [ "log", "mac", "markup5ever", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] @@ -415,9 +1427,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -425,12 +1437,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -438,15 +1450,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "hyper" -version = "1.3.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f24ce812868d86d19daa79bf3bf9175bc44ea323391147a5e3abde2a283871b" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", @@ -462,6 +1474,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -480,9 +1509,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -493,75 +1522,394 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] -name = "idna" -version = "0.5.0" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "indexmap" -version = "2.2.6" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e031e8e3d94711a9ccb5d6ea357439ef3dcbed361798bd4071dc4d9793fbe22f" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown", + "serde", +] + +[[package]] +name = "indicatif" +version = "0.17.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "rayon", + "unicode-width 0.2.0", + "web-time", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "a865e038f7f6ed956f788f0d7d60c541fff74c7bd74272c5d4cf15c63743e705" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b9569d2f74e257076d8c6bfa73fb505b46b851e51ddaecc825944aa3bed17fa" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -569,9 +1917,31 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "lrtable" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e35162de3a5d91b380f8ebb31fc6c5e9a4618276465df4725ff1f88613312b" +dependencies = [ + "cfgrammar", + "fnv", + "num-traits", + "sparsevec", + "vob", +] [[package]] name = "mac" @@ -580,24 +1950,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" [[package]] -name = "markup5ever" -version = "0.11.0" +name = "macro_rules_attribute" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "8a82271f7bc033d84bbca59a3ce3e4159938cb08a9c3aebbe54d215131518a13" +dependencies = [ + "macro_rules_attribute-proc_macro", + "paste", +] + +[[package]] +name = "macro_rules_attribute-proc_macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dd856d451cc0da70e2ef2ce95a18e39a93b7558bedf10201ad28503f918568" + +[[package]] +name = "markup5ever" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" dependencies = [ "log", - "phf 0.10.1", - "phf_codegen", + "phf 0.11.2", + "phf_codegen 0.11.2", "string_cache", "string_cache_codegen", "tendril", ] [[package]] -name = "memchr" -version = "2.7.2" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", + "stable_deref_trait", +] [[package]] name = "mime" @@ -606,12 +2021,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "miniz_oxide" -version = "0.7.2" +name = "minijinja" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "2c37e1b517d1dcd0e51dc36c4567b9d5a29262b3ec8da6cb5d35e27a8fb529b5" dependencies = [ - "adler", + "serde", + "serde_json", +] + +[[package]] +name = "minijinja-contrib" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe51f1a6a8285f03fcd1544d834234fe8db285f29e1c2253600c93b3ae19242" +dependencies = [ + "minijinja", + "serde", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", + "simd-adler32", ] [[package]] @@ -621,17 +2063,180 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.48.0", ] [[package]] -name = "native-tls" -version = "0.2.11" +name = "mio" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "mistralrs" +version = "0.3.4" +source = "git+https://github.com/EricLBuehler/mistral.rs.git?tag=v0.3.4#68c078f7630b61469d4c8e391dc05da334c60291" +dependencies = [ + "anyhow", + "candle-core", + "candle-nn", + "clap", + "either", + "futures", + "image", + "indexmap", + "mistralrs-core", + "rand", + "reqwest", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "mistralrs-core" +version = "0.3.4" +source = "git+https://github.com/EricLBuehler/mistral.rs.git?tag=v0.3.4#68c078f7630b61469d4c8e391dc05da334c60291" +dependencies = [ + "akin", + "anyhow", + "as-any", + "async-trait", + "base64 0.22.1", + "bindgen_cuda 0.1.5", + "buildstructor", + "bytemuck", + "bytemuck_derive", + "candle-core", + "candle-hf-hub", + "candle-nn", + "cfgrammar", + "chrono", + "clap", + "csv", + "derive-new", + "derive_more", + "dirs", + "either", + "float8", + "futures", + "galil-seiferas", + "half", + "image", + "indexmap", + "indicatif", + "itertools 0.13.0", + "lrtable", + "minijinja", + "minijinja-contrib", + "mistralrs-paged-attn", + "mistralrs-quant", + "mistralrs-vision", + "once_cell", + "radix_trie", + "rand", + "rand_isaac", + "rayon", + "regex", + "regex-automata 0.4.9", + "reqwest", + "rustc-hash", + "safetensors", + "schemars", + "serde", + "serde_json", + "serde_plain", + "serde_yaml", + "strum", + "sysinfo", + "thiserror", + "tokenizers", + "tokio", + "tokio-rayon", + "toml", + "tqdm", + "tracing", + "tracing-subscriber", + "uuid 1.11.0", + "variantly", + "vob", +] + +[[package]] +name = "mistralrs-paged-attn" +version = "0.3.4" +source = "git+https://github.com/EricLBuehler/mistral.rs.git?tag=v0.3.4#68c078f7630b61469d4c8e391dc05da334c60291" +dependencies = [ + "anyhow", + "bindgen_cuda 0.1.6", + "candle-core", + "float8", + "half", +] + +[[package]] +name = "mistralrs-quant" +version = "0.3.4" +source = "git+https://github.com/EricLBuehler/mistral.rs.git?tag=v0.3.4#68c078f7630b61469d4c8e391dc05da334c60291" +dependencies = [ + "bindgen_cuda 0.1.5", + "byteorder", + "candle-core", + "candle-nn", + "float8", + "half", "lazy_static", + "once_cell", + "paste", + "rayon", + "serde", + "thiserror", + "tracing", +] + +[[package]] +name = "mistralrs-vision" +version = "0.3.4" +source = "git+https://github.com/EricLBuehler/mistral.rs.git?tag=v0.3.4#68c078f7630b61469d4c8e391dc05da334c60291" +dependencies = [ + "candle-core", + "image", +] + +[[package]] +name = "monostate" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d208407d7552cd041d8cdb69a1bc3303e029c598738177a3d87082004dc0e1e" +dependencies = [ + "monostate-impl", + "serde", +] + +[[package]] +name = "monostate-impl" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ce64b975ed4f123575d11afd9491f2e37bbd5813fbfbc0f09ae1fbddea74e0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "native-tls" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +dependencies = [ "libc", "log", "openssl", @@ -649,6 +2254,40 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[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 = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -659,6 +2298,92 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "bytemuck", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + [[package]] name = "num_cpus" version = "1.16.0" @@ -670,27 +2395,76 @@ dependencies = [ ] [[package]] -name = "object" -version = "0.32.2" +name = "num_enum" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "onig" +version = "6.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" +dependencies = [ + "bitflags 1.3.2", + "libc", + "once_cell", + "onig_sys", +] + +[[package]] +name = "onig_sys" +version = "69.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" +dependencies = [ + "cc", + "pkg-config", +] [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -707,7 +2481,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", ] [[package]] @@ -718,9 +2492,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -728,6 +2502,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "overload" version = "0.1.1" @@ -735,10 +2515,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] -name = "parking_lot" -version = "0.12.1" +name = "packedvec" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "bde3c690ec20e4a2b4fb46f0289a451181eb50011a1e2acc8d85e2fde9062a45" +dependencies = [ + "num-traits", + "serde", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -746,17 +2536,23 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -769,7 +2565,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" dependencies = [ + "phf_macros 0.10.0", "phf_shared 0.10.0", + "proc-macro-hack", ] [[package]] @@ -778,7 +2576,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ - "phf_macros", + "phf_macros 0.11.2", "phf_shared 0.11.2", ] @@ -792,6 +2590,16 @@ dependencies = [ "phf_shared 0.10.0", ] +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + [[package]] name = "phf_generator" version = "0.10.0" @@ -812,6 +2620,20 @@ dependencies = [ "rand", ] +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "phf_macros" version = "0.11.2" @@ -822,7 +2644,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", ] [[package]] @@ -843,31 +2665,11 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -877,15 +2679,37 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "png" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -894,23 +2718,94 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] -name = "proc-macro2" -version = "1.0.79" +name = "proc-macro-crate" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] -name = "quote" -version = "1.0.36" +name = "profiling" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +dependencies = [ + "quote", + "syn 2.0.90", +] + +[[package]] +name = "pulp" +version = "0.18.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a01a0dc67cf4558d279f0c25b0962bd08fc6dec0137699eae304103e882fe6" +dependencies = [ + "bytemuck", + "libm", + "num-complex", + "reborrow", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[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.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" version = "0.8.5" @@ -942,50 +2837,191 @@ dependencies = [ ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "rand_distr" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand", +] + +[[package]] +name = "rand_isaac" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4373cd91b4f55722c553fb0f286edbb81ef3ff6eec7b99d1898a4110a0b28" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.12.1", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" dependencies = [ "bitflags 1.3.2", ] [[package]] -name = "regex" -version = "1.10.4" +name = "rayon" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-cond" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "059f538b55efd2309c9794130bc149c6a553db90e9d99c2030785c82f0bd7df9" +dependencies = [ + "either", + "itertools 0.11.0", + "rayon", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "reborrow" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.3" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "encoding_rs", "futures-channel", @@ -996,6 +3032,7 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-rustls", "hyper-tls", "hyper-util", "ipnet", @@ -1019,22 +3056,58 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "windows-registry", +] + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -1042,34 +3115,108 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.1.2" +name = "rustls" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "safetensors" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44560c11236a6130a46ce36c836a62936dc81ebf8c36a37947423571be0e55b6" +dependencies = [ + "serde", + "serde_json", +] + +[[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 = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.90", ] [[package]] @@ -1080,9 +3227,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scraper" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b80b33679ff7a0ea53d37f3b39de77ea0c75b12c5805ac43ec0c33b3051af1b" +checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" dependencies = [ "ahash", "cssparser", @@ -1096,11 +3243,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -1109,9 +3256,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -1123,50 +3270,92 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cssparser", "derive_more", "fxhash", "log", "new_debug_unreachable", "phf 0.10.1", - "phf_codegen", + "phf_codegen 0.10.0", "precomputed-hash", "servo_arc", "smallvec", ] [[package]] -name = "serde" -version = "1.0.197" +name = "semver" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "seq-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" + +[[package]] +name = "serde" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] +[[package]] +name = "serde_plain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1fc6db65a611022b23a0dec6975d63fb80a302cb3388835ff02c097258d50" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -1179,6 +3368,19 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "servo_arc" version = "0.3.0" @@ -1197,6 +3399,57 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + [[package]] name = "siphasher" version = "0.3.11" @@ -1220,20 +3473,71 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "socks" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" +dependencies = [ + "byteorder", + "libc", + "winapi", +] + +[[package]] +name = "sparsevec" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ef4657ebc254f6e84a863cb495c2feb60e5b48eba5141bf2bbbe202adb65b4" +dependencies = [ + "num-traits", + "packedvec", + "serde", + "vob", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spm_precompiled" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326" +dependencies = [ + "base64 0.13.1", + "nom", + "serde", + "unicode-segmentation", +] + [[package]] name = "stable_deref_trait" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "str_inflector" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0b848d5a7695b33ad1be00f84a3c079fe85c9278a325ff9159e6c99cef4ef7" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "string_cache" version = "0.8.7" @@ -1260,6 +3564,47 @@ dependencies = [ "quote", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "phf 0.10.1", + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "1.0.109" @@ -1273,9 +3618,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -1284,41 +3629,104 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "sysctl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" +dependencies = [ + "bitflags 2.6.0", + "byteorder", + "enum-as-inner", + "libc", + "thiserror", + "walkdir", +] + +[[package]] +name = "sysinfo" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "windows", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", ] [[package]] -name = "tempfile" -version = "3.10.1" +name = "system-deps" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1332,6 +3740,58 @@ dependencies = [ "utf-8", ] +[[package]] +name = "terminal_size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "test-log" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dffced63c2b5c7be278154d76b479f9f9920ed34e7574201407f0b14e2bbb93" +dependencies = [ + "env_logger", + "test-log-macros", + "tracing-subscriber", +] + +[[package]] +name = "test-log-macros" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -1343,34 +3803,85 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tiff" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" dependencies = [ - "tinyvec_macros", + "flate2", + "jpeg-decoder", + "weezl", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokenizers" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b08cc37428a476fc9e20ac850132a513a2e1ce32b6a31addf2b74fa7033b905" +dependencies = [ + "aho-corasick", + "derive_builder", + "esaxx-rs", + "getrandom", + "indicatif", + "itertools 0.12.1", + "lazy_static", + "log", + "macro_rules_attribute", + "monostate", + "onig", + "paste", + "rand", + "rayon", + "rayon-cond", + "regex", + "regex-syntax 0.8.5", + "serde", + "serde_json", + "spm_precompiled", + "thiserror", + "unicode-normalization-alignments", + "unicode-segmentation", + "unicode_categories", +] [[package]] name = "tokio" -version = "1.37.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", + "mio 1.0.3", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", - "windows-sys 0.48.0", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -1384,54 +3895,96 @@ dependencies = [ ] [[package]] -name = "tokio-util" -version = "0.7.10" +name = "tokio-rayon" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "7cf33a76e0b1dd03b778f83244137bd59887abf25c0e87bc3e7071105f457693" +dependencies = [ + "rayon", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] -name = "tower" -version = "0.4.13" +name = "toml" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", ] [[package]] -name = "tower-layer" -version = "0.3.2" +name = "toml_datetime" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tqdm" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2d2932240205a99b65f15d9861992c95fbb8c9fb280b3a1f17a92db6dc611f" +dependencies = [ + "anyhow", + "crossterm", + "once_cell", +] [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1439,20 +3992,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -1471,14 +4024,18 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ + "matchers", "nu-ansi-term", + "once_cell", + "regex", "sharded-slab", "smallvec", "thread_local", + "tracing", "tracing-core", "tracing-log", ] @@ -1490,37 +4047,133 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "unicode-bidi" -version = "0.3.15" +name = "try_match" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "b065c869a3f832418e279aa4c1d7088f9d5d323bde15a60a08e20c2cd4549082" dependencies = [ - "tinyvec", + "try_match_inner", ] [[package]] -name = "unicode-width" -version = "0.1.11" +name = "try_match_inner" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "b9c81686f7ab4065ccac3df7a910c4249f8c0f3fb70421d6ddec19b9311f63f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "ug" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4eef2ebfc18c67a6dbcacd9d8a4d85e0568cc58c82515552382312c2730ea13" +dependencies = [ + "half", + "num", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ug-cuda" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4dcab280ad0ef3957e153a82dcad608c954d02cf253b695322f502d1f8902e" +dependencies = [ + "cudarc", + "half", + "serde", + "serde_json", + "thiserror", + "ug", +] + +[[package]] +name = "unchecked-index" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeba86d422ce181a719445e51872fa30f1f7413b62becb52e95ec91aa262d85c" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-normalization-alignments" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de" +dependencies = [ + "smallvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "socks", + "url", + "webpki-roots", +] [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -1533,12 +4186,73 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom", +] + +[[package]] +name = "v_frame" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "variantly" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a332341ba79a179d9e9b33c0d72fbf3dc2c80e1be79416401a08d2b820ef56" +dependencies = [ + "Inflector", + "darling 0.11.0", + "proc-macro2", + "quote", + "syn 1.0.109", + "uuid 0.8.2", +] + [[package]] name = "vcpkg" version = "0.2.15" @@ -1546,10 +4260,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] -name = "version_check" -version = "0.9.4" +name = "version-compare" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vob" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c058f4c41e71a043c67744cb76dcc1ae63ece328c1732a72489ccccc2dec23e6" +dependencies = [ + "num-traits", + "rustc_version", + "serde", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] [[package]] name = "want" @@ -1568,46 +4309,48 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "d15e63b4482863c109d70a7b8706c1e364eb6ea449b201a76c5b89cedcec2d5c" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "8d36ef12e3aaca16ddd3f67922bc63e48e953f126de60bd33ccc0101ef9998cd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "9dfaf8f50e5f293737ee323940c7d8b08a66a95a419223d9f41610ca08b0833d" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "705440e08b42d3e4b36de7d66c944be628d579796b8090bfa3471478a2260051" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1615,33 +4358,58 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "98c9ae5a76e46f4deecd0f0255cc223cfa18dc9b261213b8aa0c7b36f61b3f1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "6ee99da9c5ba11bd675621338ef6fa52296b76b83305e9b6e5c77d4c286d6d49" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "a98bc3c33f0fe7e59ad7cd041b89034fa82a7c2d4365ca538dda6cdaf513863c" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + [[package]] name = "winapi" version = "0.3.9" @@ -1658,12 +4426,70 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[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" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -1679,7 +4505,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -1699,18 +4534,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -1721,9 +4556,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -1733,9 +4568,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -1745,15 +4580,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -1763,9 +4598,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -1775,9 +4610,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -1787,9 +4622,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -1799,36 +4634,160 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winreg" -version = "0.52.0" +name = "winnow" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "zip" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cc23c04387f4da0374be4533ad1208cbb091d5c11d070dfef13676ad6497164" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "indexmap", + "num_enum", + "thiserror", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" +dependencies = [ + "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index e828717..c02e761 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,10 +4,22 @@ version = "0.1.0" edition = "2021" [dependencies] +mistralrs.git = "https://github.com/EricLBuehler/mistral.rs.git" +mistralrs.tag = "v0.3.4" +mistralrs.features = ["cuda", "cudnn"] scraper = "0.19.0" log = "0.4.21" anyhow = { version = "1.0.82", features = ["backtrace", "std"] } tracing = "0.1.40" tracing-subscriber = "0.3.18" regex = "1.10.4" -reqwest = { version = "0.12.3", features = ["blocking"] } +reqwest = { version = "0.12.3", features = ["blocking"] } +test-log = { version = "0.2.16", features = ["color", "log", "trace"] } +strum = { version = "0.26.3", features = [ + "std", + "derive", + "phf", + "strum_macros", +] } +tokio = "1.41.1" +image = "0.25.5" diff --git a/diesel.toml b/diesel.toml new file mode 100644 index 0000000..a2e57e8 --- /dev/null +++ b/diesel.toml @@ -0,0 +1,9 @@ +# For documentation on how to configure this file, +# see https://diesel.rs/guides/configuring-diesel-cli + +[print_schema] +file = "src/schema.rs" +custom_type_derives = ["diesel::query_builder::QueryId", "Clone"] + +[migrations_directory] +dir = "/home/hak8or/code/ebay_compute_scraper/migrations" diff --git a/foo.db b/foo.db new file mode 100644 index 0000000..0a3ccd7 Binary files /dev/null and b/foo.db differ diff --git a/src/benchmarks/google_sheet.png b/src/benchmarks/google_sheet.png new file mode 100644 index 0000000..ac65d53 Binary files /dev/null and b/src/benchmarks/google_sheet.png differ diff --git a/src/benchmarks/google_sheet.txt b/src/benchmarks/google_sheet.txt new file mode 100644 index 0000000..62546c0 --- /dev/null +++ b/src/benchmarks/google_sheet.txt @@ -0,0 +1,77 @@ +Here is a table of processors (with one or more spaces as delimiters), their specs, and some benchmark results. Note, "CB R15" = Cinebench R15, with the 2nd last column being the multithreaded score, and the last column being the single threaded score. + +``` +Type CPU Family Name Released Cores Pass Mark CB R15 +Desktop Intel I9 i9-13900KS Q1 2023 24/32 63,087 + Amd EPYC 7513 Q2 2021 32/64 59,988 +Desktop Intel I9 i9-13900K Q3 2022 24/32 59,968 6,141 330 +Dekstop AMD Ryzen 9 7950x Q3 2022 16/32 64,552 6,580 336 +Desktop AMD Ryzen 9 5950X Q4 2020 16/32 46,746 4,569 272 +Server AMD Epyc 7313 Q1 2021 16/32 40,075 +Server Intel Xeon Platinum 8180 35,208 4,355 165 +Desktop AMD Ryzen 9 5900X Q4 2020 12/24 39,858 3,684 269 +Server AMD Epyc 7282 Q4 2019 16/32 29,496 +Desktop AMD Ryzen 7 5800X Q4 2020 8/16 28,647 2,611 270 +Desktop AMD Ryzen 7 5800X3D Q2 2022 8/16 27,636 2,477 249 +Desktop AMD Ryzen 7 5700X Q2 2022 8/16 26,694 2,307 253 +Server AMD Threadripper 2950X Q4 2018 16/32 25,769 3,261 175 +Desktop AMD Ryzen 7 3700X Q3 2019 8/16 22,816 2,114 204 +Server AMD Threadripper 2920X Q4 2018 12/24 22,001 2,636 176 +Server AMD Threadripper 1950X Q3 2017 16/32 21,931 3,151 166 +Server AMD Threadripper 1920X Q3 2017 12/24 19,363 2,459 168 +Desktop AMD Ryzen 7 2700X Q1 2018 8/16 17,587 1,828 180 +Server Intel Xeon s Q4 2013 12/24 16,041 1,659 +Server AMD Threadripper 1900X Q3 2017 8/16 16,005 1,805 +Server Intel Xeon E5-2697 v2 Q2 2013 12/24 14,152 1,557 98 +Desktop AMD Ryzen 7 1700 Q1 2017 8/16 13,805 1,473 +Laptop AMD Ryzen 5 4650U Q1 2020 6/12 13,009 1,160 175 +Server Intel Xeon Scalable Silver 4110 Q3 2017 8/16 10,028 1,148 131 +Server Intel Xeon E5-2620 v4 Q1 2016 8/16 11,376 1,096 125 +Server Intel Xeon E5-2650 V2 Q2 2013 8/16 13,053 1,063 128 +Laptop AMD Ryzen 7 4700U Q1 2020 8/8 13,843 1,050 188 +Laptop AMD Ryzen 5 4500U Q1 2020 6/6 11,304 889 176 +Laptop Intel I5-1135G7 Q3 2020 4/8 8,623 855 +Laptop Intel i7-1165G7 Q2 2020 4/8 11,086 809 +Desktop AMD Ryzen 5 1500x Q1 2017 4/8 10,715 809 +Server Intel Xeon E5-2650 Q1 2012 8/16 10,190 790 +Server Intel Xeon E5-2630L v2 Q4 2014 6/12 9,088 800 147 +Laptop Intel i7-1065G7 Q3 2019 4/8 8,980 704 +Server Intel Xeon E3-1230 V2 Q2 2012 4/8 8,863 650 +Laptop AMD Ryzen 5 3500U Q1 2018 4/8 7,157 620 +Desktop Intel i7-8550U Q3 2017 4/8 8,317 558 +Desktop AMD Ryzen 3 1300x Q1 2017 4/4 8,109 554 +Server Intel Xeon X5670 Q1 2010 6/12 8,013 675 +Laptop Intel i5-1035G1 Q3 2019 4/8 8,007 606 +Server Intel Xeon E3-1230 Q2 2011 4/8 7,939 581 +Desktop Intel i5-8500 Q2 2018 6/6 7,737 751 148 +Desktop Intel I5-3570K Q2 2012 4/4 7,153 522 +Server Intel Xeon E3-1220 v3 Q2 2013 4/4 6,966 500 +Server Intel Xeon E5645 Q2 2011 6/12 6,545 573 +Server Intel Xeon E3-1260L Q2 2011 4/8 6,534 +Laptop Intel i5-10210U Q3 2019 4/8 6,532 567 +Server Intel Xeon L5640 Q2 2010 6/12 6,451 497 +Server Intel Xeon L5640 Q1 2010 6/12 6,451 497 +Server Intel Xeon E3-1220 Q2 2011 4/4 6,086 433 +Server Intel N100 Q1 2023 4/4 5,489 477 154 +Desktop Intel i5-7500T Q1 2017 4/4 5,263 528 141 +Laptop Intel i3-8130U Q2 2018 2/2 5,019 338 +Desktop Intel i5-6500T Q4 2015 4/4 4,768 464 132 +Server Intel Xeon L5520 Q1 2009 4/8 4,387 +Server Intel Xeon E7-4850 Q2 2011 10/20 4,000 752 +??? Intel G3258 Q2 2014 2/2 3,918 247 +??? Intel C2750 Q3 2013 8/8 3,771 317 +Server Intel Xeon E5-2407 Q2 2012 4/4 3,693 341 +Server Intel N5100 Q2 2021 4/4 3,331 ???? +Laptop Intel i5-2410M Q1 2011 2/4 3,161 236 +Laptop Intel I3-5010u 2/4 218 +??? Intel J4205 Q3 2016 4/4 2,688 196 +??? Intel J3455 Q3 2016 4/4 2,153 181 +??? Intel N3450 Q4 2016 4/4 1,805 135 +Laptop Intel 3867U Q2 2019 2/2 1,483 139 71 +Laptop Intel 2955U Q4 2016 2/2 1,450 100 +??? Intel Atom x5-Z8300 Q2 2015 4/4 1,204 111 +Laptop Intel 3205U Q2 2015 2/2 946 117 61 +??? Intel N3050 Q1 2015 2/2 885 69 +??? Intel Z3735F Q1 2014 4/4 879 +??? AMD APU E-350 Q4 2012 2/2 782 50 +``` diff --git a/src/benchmarks/google_sheet_Gemini1206.json b/src/benchmarks/google_sheet_Gemini1206.json new file mode 100644 index 0000000..106eaeb --- /dev/null +++ b/src/benchmarks/google_sheet_Gemini1206.json @@ -0,0 +1,843 @@ + +[ + { + "Type": "Desktop", + "CPU Family": "Intel I9", + "Name": "i9-13900KS", + "Released": "Q1 2023", + "Cores": "24/32", + "Pass Mark": "63,087", + "CB R15": null + }, + { + "Type": null, + "CPU Family": "Amd EPYC", + "Name": "7513", + "Released": "Q2 2021", + "Cores": "32/64", + "Pass Mark": "59,988", + "CB R15": null + }, + { + "Type": "Desktop", + "CPU Family": "Intel I9", + "Name": "i9-13900K", + "Released": "Q3 2022", + "Cores": "24/32", + "Pass Mark": "59,968", + "CB R15": { + "multithreaded": "6,141", + "singlethreaded": "330" + } + }, + { + "Type": "Dekstop", + "CPU Family": "AMD Ryzen 9", + "Name": "7950x", + "Released": "Q3 2022", + "Cores": "16/32", + "Pass Mark": "64,552", + "CB R15": { + "multithreaded": "6,580", + "singlethreaded": "336" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 9", + "Name": "5950X", + "Released": "Q4 2020", + "Cores": "16/32", + "Pass Mark": "46,746", + "CB R15": { + "multithreaded": "4,569", + "singlethreaded": "272" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Epyc", + "Name": "7313", + "Released": "Q1 2021", + "Cores": "16/32", + "Pass Mark": "40,075", + "CB R15": null + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon Platinum", + "Name": "8180", + "Released": null, + "Cores": null, + "Pass Mark": "35,208", + "CB R15": { + "multithreaded": "4,355", + "singlethreaded": "165" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 9", + "Name": "5900X", + "Released": "Q4 2020", + "Cores": "12/24", + "Pass Mark": "39,858", + "CB R15": { + "multithreaded": "3,684", + "singlethreaded": "269" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Epyc", + "Name": "7282", + "Released": "Q4 2019", + "Cores": "16/32", + "Pass Mark": "29,496", + "CB R15": null + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "5800X", + "Released": "Q4 2020", + "Cores": "8/16", + "Pass Mark": "28,647", + "CB R15": { + "multithreaded": "2,611", + "singlethreaded": "270" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "5800X3D", + "Released": "Q2 2022", + "Cores": "8/16", + "Pass Mark": "27,636", + "CB R15": { + "multithreaded": "2,477", + "singlethreaded": "249" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "5700X", + "Released": "Q2 2022", + "Cores": "8/16", + "Pass Mark": "26,694", + "CB R15": { + "multithreaded": "2,307", + "singlethreaded": "253" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Threadripper", + "Name": "2950X", + "Released": "Q4 2018", + "Cores": "16/32", + "Pass Mark": "25,769", + "CB R15": { + "multithreaded": "3,261", + "singlethreaded": "175" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "3700X", + "Released": "Q3 2019", + "Cores": "8/16", + "Pass Mark": "22,816", + "CB R15": { + "multithreaded": "2,114", + "singlethreaded": "204" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Threadripper", + "Name": "2920X", + "Released": "Q4 2018", + "Cores": "12/24", + "Pass Mark": "22,001", + "CB R15": { + "multithreaded": "2,636", + "singlethreaded": "176" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Threadripper", + "Name": "1950X", + "Released": "Q3 2017", + "Cores": "16/32", + "Pass Mark": "21,931", + "CB R15": { + "multithreaded": "3,151", + "singlethreaded": "166" + } + }, + { + "Type": "Server", + "CPU Family": "AMD Threadripper", + "Name": "1920X", + "Released": "Q3 2017", + "Cores": "12/24", + "Pass Mark": "19,363", + "CB R15": { + "multithreaded": "2,459", + "singlethreaded": "168" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "2700X", + "Released": "Q1 2018", + "Cores": "8/16", + "Pass Mark": "17,587", + "CB R15": { + "multithreaded": "1,828", + "singlethreaded": "180" + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "s", + "Released": "Q4 2013", + "Cores": "12/24", + "Pass Mark": "16,041", + "CB R15": { + "multithreaded": "1,659", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "AMD Threadripper", + "Name": "1900X", + "Released": "Q3 2017", + "Cores": "8/16", + "Pass Mark": "16,005", + "CB R15": { + "multithreaded": "1,805", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2697 v2", + "Released": "Q2 2013", + "Cores": "12/24", + "Pass Mark": "14,152", + "CB R15": { + "multithreaded": "1,557", + "singlethreaded": "98" + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 7", + "Name": "1700", + "Released": "Q1 2017", + "Cores": "8/16", + "Pass Mark": "13,805", + "CB R15": { + "multithreaded": "1,473", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "AMD Ryzen 5", + "Name": "4650U", + "Released": "Q1 2020", + "Cores": "6/12", + "Pass Mark": "13,009", + "CB R15": { + "multithreaded": "1,160", + "singlethreaded": "175" + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon Scalable", + "Name": "Silver 4110", + "Released": "Q3 2017", + "Cores": "8/16", + "Pass Mark": "10,028", + "CB R15": { + "multithreaded": "1,148", + "singlethreaded": "131" + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2620 v4", + "Released": "Q1 2016", + "Cores": "8/16", + "Pass Mark": "11,376", + "CB R15": { + "multithreaded": "1,096", + "singlethreaded": "125" + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2650 V2", + "Released": "Q2 2013", + "Cores": "8/16", + "Pass Mark": "13,053", + "CB R15": { + "multithreaded": "1,063", + "singlethreaded": "128" + } + }, + { + "Type": "Laptop", + "CPU Family": "AMD Ryzen 7", + "Name": "4700U", + "Released": "Q1 2020", + "Cores": "8/8", + "Pass Mark": "13,843", + "CB R15": { + "multithreaded": "1,050", + "singlethreaded": "188" + } + }, + { + "Type": "Laptop", + "CPU Family": "AMD Ryzen 5", + "Name": "4500U", + "Released": "Q1 2020", + "Cores": "6/6", + "Pass Mark": "11,304", + "CB R15": { + "multithreaded": "889", + "singlethreaded": "176" + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "I5-1135G7", + "Released": "Q3 2020", + "Cores": "4/8", + "Pass Mark": "8,623", + "CB R15": { + "multithreaded": "855", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i7-1165G7", + "Released": "Q2 2020", + "Cores": "4/8", + "Pass Mark": "11,086", + "CB R15": { + "multithreaded": "809", + "singlethreaded": null + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 5", + "Name": "1500x", + "Released": "Q1 2017", + "Cores": "4/8", + "Pass Mark": "10,715", + "CB R15": { + "multithreaded": "809", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2650", + "Released": "Q1 2012", + "Cores": "8/16", + "Pass Mark": "10,190", + "CB R15": { + "multithreaded": "790", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2630L v2", + "Released": "Q4 2014", + "Cores": "6/12", + "Pass Mark": "9,088", + "CB R15": { + "multithreaded": "800", + "singlethreaded": "147" + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i7-1065G7", + "Released": "Q3 2019", + "Cores": "4/8", + "Pass Mark": "8,980", + "CB R15": { + "multithreaded": "704", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E3-1230 V2", + "Released": "Q2 2012", + "Cores": "4/8", + "Pass Mark": "8,863", + "CB R15": { + "multithreaded": "650", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "AMD Ryzen 5", + "Name": "3500U", + "Released": "Q1 2018", + "Cores": "4/8", + "Pass Mark": "7,157", + "CB R15": { + "multithreaded": "620", + "singlethreaded": null + } + }, + { + "Type": "Desktop", + "CPU Family": "Intel", + "Name": "i7-8550U", + "Released": "Q3 2017", + "Cores": "4/8", + "Pass Mark": "8,317", + "CB R15": { + "multithreaded": "558", + "singlethreaded": null + } + }, + { + "Type": "Desktop", + "CPU Family": "AMD Ryzen 3", + "Name": "1300x", + "Released": "Q1 2017", + "Cores": "4/4", + "Pass Mark": "8,109", + "CB R15": { + "multithreaded": "554", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "X5670", + "Released": "Q1 2010", + "Cores": "6/12", + "Pass Mark": "8,013", + "CB R15": { + "multithreaded": "675", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i5-1035G1", + "Released": "Q3 2019", + "Cores": "4/8", + "Pass Mark": "8,007", + "CB R15": { + "multithreaded": "606", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E3-1230", + "Released": "Q2 2011", + "Cores": "4/8", + "Pass Mark": "7,939", + "CB R15": { + "multithreaded": "581", + "singlethreaded": null + } + }, + { + "Type": "Desktop", + "CPU Family": "Intel", + "Name": "i5-8500", + "Released": "Q2 2018", + "Cores": "6/6", + "Pass Mark": "7,737", + "CB R15": { + "multithreaded": "751", + "singlethreaded": "148" + } + }, + { + "Type": "Desktop", + "CPU Family": "Intel", + "Name": "I5-3570K", + "Released": "Q2 2012", + "Cores": "4/4", + "Pass Mark": "7,153", + "CB R15": { + "multithreaded": "522", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E3-1220 v3", + "Released": "Q2 2013", + "Cores": "4/4", + "Pass Mark": "6,966", + "CB R15": { + "multithreaded": "500", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5645", + "Released": "Q2 2011", + "Cores": "6/12", + "Pass Mark": "6,545", + "CB R15": { + "multithreaded": "573", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E3-1260L", + "Released": "Q2 2011", + "Cores": "4/8", + "Pass Mark": "6,534", + "CB R15": null + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i5-10210U", + "Released": "Q3 2019", + "Cores": "4/8", + "Pass Mark": "6,532", + "CB R15": { + "multithreaded": "567", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "L5640", + "Released": "Q2 2010", + "Cores": "6/12", + "Pass Mark": "6,451", + "CB R15": { + "multithreaded": "497", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "L5640", + "Released": "Q1 2010", + "Cores": "6/12", + "Pass Mark": "6,451", + "CB R15": { + "multithreaded": "497", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E3-1220", + "Released": "Q2 2011", + "Cores": "4/4", + "Pass Mark": "6,086", + "CB R15": { + "multithreaded": "433", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel", + "Name": "N100", + "Released": "Q1 2023", + "Cores": "4/4", + "Pass Mark": "5,489", + "CB R15": { + "multithreaded": "477", + "singlethreaded": "154" + } + }, + { + "Type": "Desktop", + "CPU Family": "Intel", + "Name": "i5-7500T", + "Released": "Q1 2017", + "Cores": "4/4", + "Pass Mark": "5,263", + "CB R15": { + "multithreaded": "528", + "singlethreaded": "141" + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i3-8130U", + "Released": "Q2 2018", + "Cores": "2/2", + "Pass Mark": "5,019", + "CB R15": { + "multithreaded": "338", + "singlethreaded": null + } + }, + { + "Type": "Desktop", + "CPU Family": "Intel", + "Name": "i5-6500T", + "Released": "Q4 2015", + "Cores": "4/4", + "Pass Mark": "4,768", + "CB R15": { + "multithreaded": "464", + "singlethreaded": "132" + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "L5520", + "Released": "Q1 2009", + "Cores": "4/8", + "Pass Mark": "4,387", + "CB R15": null + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E7-4850", + "Released": "Q2 2011", + "Cores": "10/20", + "Pass Mark": "4,000", + "CB R15": { + "multithreaded": "752", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "G3258", + "Released": "Q2 2014", + "Cores": "2/2", + "Pass Mark": "3,918", + "CB R15": { + "multithreaded": "247", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "C2750", + "Released": "Q3 2013", + "Cores": "8/8", + "Pass Mark": "3,771", + "CB R15": { + "multithreaded": "317", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel Xeon", + "Name": "E5-2407", + "Released": "Q2 2012", + "Cores": "4/4", + "Pass Mark": "3,693", + "CB R15": { + "multithreaded": "341", + "singlethreaded": null + } + }, + { + "Type": "Server", + "CPU Family": "Intel", + "Name": "N5100", + "Released": "Q2 2021", + "Cores": "4/4", + "Pass Mark": "3,331", + "CB R15": null + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "i5-2410M", + "Released": "Q1 2011", + "Cores": "2/4", + "Pass Mark": "3,161", + "CB R15": { + "multithreaded": "236", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "I3-5010u", + "Released": null, + "Cores": "2/4", + "Pass Mark": null, + "CB R15": { + "multithreaded": "218", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "J4205", + "Released": "Q3 2016", + "Cores": "4/4", + "Pass Mark": "2,688", + "CB R15": { + "multithreaded": "196", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "J3455", + "Released": "Q3 2016", + "Cores": "4/4", + "Pass Mark": "2,153", + "CB R15": { + "multithreaded": "181", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "N3450", + "Released": "Q4 2016", + "Cores": "4/4", + "Pass Mark": "1,805", + "CB R15": { + "multithreaded": "135", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "3867U", + "Released": "Q2 2019", + "Cores": "2/2", + "Pass Mark": "1,483", + "CB R15": { + "multithreaded": "139", + "singlethreaded": "71" + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "2955U", + "Released": "Q4 2016", + "Cores": "2/2", + "Pass Mark": "1,450", + "CB R15": { + "multithreaded": "100", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel Atom", + "Name": "x5-Z8300", + "Released": "Q2 2015", + "Cores": "4/4", + "Pass Mark": "1,204", + "CB R15": { + "multithreaded": "111", + "singlethreaded": null + } + }, + { + "Type": "Laptop", + "CPU Family": "Intel", + "Name": "3205U", + "Released": "Q2 2015", + "Cores": "2/2", + "Pass Mark": "946", + "CB R15": { + "multithreaded": "117", + "singlethreaded": "61" + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "N3050", + "Released": "Q1 2015", + "Cores": "2/2", + "Pass Mark": "885", + "CB R15": { + "multithreaded": "69", + "singlethreaded": null + } + }, + { + "Type": "???", + "CPU Family": "Intel", + "Name": "Z3735F", + "Released": "Q1 2014", + "Cores": "4/4", + "Pass Mark": "879", + "CB R15": null + }, + { + "Type": "???", + "CPU Family": "AMD APU", + "Name": "E-350", + "Released": "Q4 2012", + "Cores": "2/2", + "Pass Mark": "782", + "CB R15": { + "multithreaded": "50", + "singlethreaded": null + } + } +] \ No newline at end of file diff --git a/src/benchmarks/google_sheet_query.txt b/src/benchmarks/google_sheet_query.txt new file mode 100644 index 0000000..3107c73 --- /dev/null +++ b/src/benchmarks/google_sheet_query.txt @@ -0,0 +1,125 @@ +Here is a table of processors, their specs, and some benchmark results. Note, "CB R15" = Cinebench R15, with the 2nd last column being the multithreaded score, and the last column being the single threaded score. +``` +Type CPU Family Name Released Cores Pass Mark CB R15 +Desktop Intel I9 i9-13900KS Q1 2023 24/32 63,087 + Amd EPYC 7513 Q2 2021 32/64 59,988 +Desktop Intel I9 i9-13900K Q3 2022 24/32 59,968 6,141 330 +Dekstop AMD Ryzen 9 7950x Q3 2022 16/32 64,552 6,580 336 +Desktop AMD Ryzen 9 5950X Q4 2020 16/32 46,746 4,569 272 +Server AMD Epyc 7313 Q1 2021 16/32 40,075 +Server Intel Xeon Platinum 8180 35,208 4,355 165 +Desktop AMD Ryzen 9 5900X Q4 2020 12/24 39,858 3,684 269 +Server AMD Epyc 7282 Q4 2019 16/32 29,496 +Desktop AMD Ryzen 7 5800X Q4 2020 8/16 28,647 2,611 270 +Desktop AMD Ryzen 7 5800X3D Q2 2022 8/16 27,636 2,477 249 +Desktop AMD Ryzen 7 5700X Q2 2022 8/16 26,694 2,307 253 +Server AMD Threadripper 2950X Q4 2018 16/32 25,769 3,261 175 +Desktop AMD Ryzen 7 3700X Q3 2019 8/16 22,816 2,114 204 +Server AMD Threadripper 2920X Q4 2018 12/24 22,001 2,636 176 +Server AMD Threadripper 1950X Q3 2017 16/32 21,931 3,151 166 +Server AMD Threadripper 1920X Q3 2017 12/24 19,363 2,459 168 +Desktop AMD Ryzen 7 2700X Q1 2018 8/16 17,587 1,828 180 +Server Intel Xeon s Q4 2013 12/24 16,041 1,659 +Server AMD Threadripper 1900X Q3 2017 8/16 16,005 1,805 +Server Intel Xeon E5-2697 v2 Q2 2013 12/24 14,152 1,557 98 +Desktop AMD Ryzen 7 1700 Q1 2017 8/16 13,805 1,473 +Laptop AMD Ryzen 5 4650U Q1 2020 6/12 13,009 1,160 175 +Server Intel Xeon Scalable Silver 4110 Q3 2017 8/16 10,028 1,148 131 +Server Intel Xeon E5-2620 v4 Q1 2016 8/16 11,376 1,096 125 +Server Intel Xeon E5-2650 V2 Q2 2013 8/16 13,053 1,063 128 +Laptop AMD Ryzen 7 4700U Q1 2020 8/8 13,843 1,050 188 +Laptop AMD Ryzen 5 4500U Q1 2020 6/6 11,304 889 176 +Laptop Intel I5-1135G7 Q3 2020 4/8 8,623 855 +Laptop Intel i7-1165G7 Q2 2020 4/8 11,086 809 +Desktop AMD Ryzen 5 1500x Q1 2017 4/8 10,715 809 +Server Intel Xeon E5-2650 Q1 2012 8/16 10,190 790 +Server Intel Xeon E5-2630L v2 Q4 2014 6/12 9,088 800 147 +Laptop Intel i7-1065G7 Q3 2019 4/8 8,980 704 +Server Intel Xeon E3-1230 V2 Q2 2012 4/8 8,863 650 +Laptop AMD Ryzen 5 3500U Q1 2018 4/8 7,157 620 +Desktop Intel i7-8550U Q3 2017 4/8 8,317 558 +Desktop AMD Ryzen 3 1300x Q1 2017 4/4 8,109 554 +Server Intel Xeon X5670 Q1 2010 6/12 8,013 675 +Laptop Intel i5-1035G1 Q3 2019 4/8 8,007 606 +Server Intel Xeon E3-1230 Q2 2011 4/8 7,939 581 +Desktop Intel i5-8500 Q2 2018 6/6 7,737 751 148 +Desktop Intel I5-3570K Q2 2012 4/4 7,153 522 +Server Intel Xeon E3-1220 v3 Q2 2013 4/4 6,966 500 +Server Intel Xeon E5645 Q2 2011 6/12 6,545 573 +Server Intel Xeon E3-1260L Q2 2011 4/8 6,534 +Laptop Intel i5-10210U Q3 2019 4/8 6,532 567 +Server Intel Xeon L5640 Q2 2010 6/12 6,451 497 +Server Intel Xeon L5640 Q1 2010 6/12 6,451 497 +Server Intel Xeon E3-1220 Q2 2011 4/4 6,086 433 +Server Intel N100 Q1 2023 4/4 5,489 477 154 +Desktop Intel i5-7500T Q1 2017 4/4 5,263 528 141 +Laptop Intel i3-8130U Q2 2018 2/2 5,019 338 +Desktop Intel i5-6500T Q4 2015 4/4 4,768 464 132 +Server Intel Xeon L5520 Q1 2009 4/8 4,387 +Server Intel Xeon E7-4850 Q2 2011 10/20 4,000 752 +??? Intel G3258 Q2 2014 2/2 3,918 247 +??? Intel C2750 Q3 2013 8/8 3,771 317 +Server Intel Xeon E5-2407 Q2 2012 4/4 3,693 341 +Server Intel N5100 Q2 2021 4/4 3,331 ???? +Laptop Intel i5-2410M Q1 2011 2/4 3,161 236 +Laptop Intel I3-5010u 2/4 218 +??? Intel J4205 Q3 2016 4/4 2,688 196 +??? Intel J3455 Q3 2016 4/4 2,153 181 +??? Intel N3450 Q4 2016 4/4 1,805 135 +Laptop Intel 3867U Q2 2019 2/2 1,483 139 71 +Laptop Intel 2955U Q4 2016 2/2 1,450 100 +??? Intel Atom x5-Z8300 Q2 2015 4/4 1,204 111 +Laptop Intel 3205U Q2 2015 2/2 946 117 61 +??? Intel N3050 Q1 2015 2/2 885 69 +??? Intel Z3735F Q1 2014 4/4 879 +??? AMD APU E-350 Q4 2012 2/2 782 50 +``` + +Try to convert that table into rust code, assuming the following rust struct; +``` +#[derive(Clone, Copy, Debug)] +enum CPUClass { + MobileEmbedded, + Desktop, + Server, +} + +#[derive(Clone, Debug)] +struct PassMarkEntry { + name: Cow<'static, str>, + class: CPUClass, + ghz_normal: f32, + ghz_turbo: f32, + physical_cores: u16, + threads: u16, + tdp: u16, + released: Cow<'static, str>, + passmark_st: u32, + passmark_mt: u32, + cb_r15_st: Option, + cb_r15_mt: Option, +} + +``` + +With an example; +``` +static ENTRIES: &'static [PassMarkEntry] = &[ + PassMarkEntry { + name: Cow::Borrowed("n100"), + class: CPUClass::MobileEmbedded, + ghz_normal: 0.7, + ghz_turbo: 3.4, + physical_cores: 4, + threads: 4, + tdp: 6, + released: Cow::Borrowed("Q1 2023"), + passmark_st: 1936, + passmark_mt: 5489, + cb_r15_st: Some(154), + cb_r15_mt: Some(477), + } +] +``` + +If needed then modify the struct to mark certain properties as optional. Only output the rust code. Handle all the processors found in the table. diff --git a/src/benchmarks/mod.rs b/src/benchmarks/mod.rs new file mode 100644 index 0000000..09f3e24 --- /dev/null +++ b/src/benchmarks/mod.rs @@ -0,0 +1 @@ +pub mod passmark; diff --git a/src/benchmarks/passmark.rs b/src/benchmarks/passmark.rs new file mode 100644 index 0000000..b05a46a --- /dev/null +++ b/src/benchmarks/passmark.rs @@ -0,0 +1,125 @@ +use std::borrow::Cow; + +#[derive(Clone, Copy, Debug)] +enum CPUClass { + MobileEmbedded, + Desktop, + Server, +} + +#[derive(Clone, Debug)] +struct PassMarkEntry { + name: Cow<'static, str>, + class: CPUClass, + ghz_normal: f32, + ghz_turbo: f32, + physical_cores: u16, + threads: u16, + tdp: u16, + released: Cow<'static, str>, + passmark_st: u32, + passmark_mt: u32, + cb_r15_st: Option, + cb_r15_mt: Option, +} + +pub static ENTRIES: &'static [PassMarkEntry] = &[ + PassMarkEntry { + name: Cow::Borrowed("n100"), + class: CPUClass::MobileEmbedded, + ghz_normal: 0.7, + ghz_turbo: 3.4, + physical_cores: 4, + threads: 4, + tdp: 6, + released: Cow::Borrowed("Q1 2023"), + passmark_st: 1936, + passmark_mt: 5489, + cb_r15_st: Some(154), + cb_r15_mt: Some(477), + }, + PassMarkEntry { + name: Cow::Borrowed("i7-10710U"), + class: CPUClass::MobileEmbedded, + ghz_normal: 1.1, + ghz_turbo: 4.7, + physical_cores: 6, + threads: 12, + tdp: 15, + released: Cow::Borrowed("Q4 2019"), + passmark_st: 2336, + passmark_mt: 9551, + cb_r15_st: None, + cb_r15_mt: None, + }, + PassMarkEntry { + name: Cow::Borrowed("i5-6500T"), + class: CPUClass::Desktop, + ghz_normal: 2.5, + ghz_turbo: 3.1, + physical_cores: 4, + threads: 4, + tdp: 35, + released: Cow::Borrowed("Q4 2015"), + passmark_st: 1793, + passmark_mt: 4768, + cb_r15_st: Some(132), + cb_r15_mt: Some(464), + }, + PassMarkEntry { + name: Cow::Borrowed("i7-7700T"), + class: CPUClass::Desktop, + ghz_normal: 2.9, + ghz_turbo: 3.8, + physical_cores: 4, + threads: 8, + tdp: 35, + released: Cow::Borrowed("Q1 2017"), + passmark_st: 2147, + passmark_mt: 7589, + cb_r15_st: None, + cb_r15_mt: None, + }, + PassMarkEntry { + name: Cow::Borrowed("7950x"), + class: CPUClass::Desktop, + ghz_normal: 4.5, + ghz_turbo: 5.7, + physical_cores: 16, + threads: 32, + tdp: 170, + released: Cow::Borrowed("Q3 2022"), + passmark_st: 4276, + passmark_mt: 62705, + cb_r15_st: Some(336), + cb_r15_mt: Some(6580), + }, + PassMarkEntry { + name: Cow::Borrowed("2700x"), + class: CPUClass::Desktop, + ghz_normal: 3.7, + ghz_turbo: 4.3, + physical_cores: 8, + threads: 16, + tdp: 105, + released: Cow::Borrowed("Q2 2018"), + passmark_st: 2421, + passmark_mt: 17516, + cb_r15_st: Some(180), + cb_r15_mt: Some(1828), + }, + PassMarkEntry { + name: Cow::Borrowed("E5-2630L V2"), + class: CPUClass::Server, + ghz_normal: 2.4, + ghz_turbo: 2.8, + physical_cores: 2, + threads: 12, + tdp: 60, + released: Cow::Borrowed("Q4 2014"), + passmark_st: 1396, + passmark_mt: 6703, + cb_r15_st: Some(147), + cb_r15_mt: Some(800), + }, +]; diff --git a/src/ebay_fetcher.rs b/src/ebay_fetcher.rs index 2aa3bfb..8cfc100 100644 --- a/src/ebay_fetcher.rs +++ b/src/ebay_fetcher.rs @@ -1,14 +1,11 @@ -use std::collections::HashMap; use anyhow::{bail, Result}; -use tracing::{info, error, instrument}; -use std::sync::mpsc::{Sender, Receiver}; -use std::sync::mpsc; +use std::collections::HashMap; + use std::thread; -use std::thread::Thread; pub struct Context { pub urls: HashMap, - pub threads: Vec>> + pub threads: Vec>>, } impl Default for Context { @@ -30,7 +27,12 @@ impl Default for Context { } impl Context { - pub fn ebay_fetch_html(&mut self, filename: String, url: String, outdir_dir: String) -> Result<()> { + pub fn ebay_fetch_html( + &mut self, + filename: String, + url: String, + outdir_dir: String, + ) -> Result<()> { let thr = thread::spawn(move || { // let body = reqwest::blocking::get(url)?.text()?; @@ -45,4 +47,3 @@ impl Context { Ok(()) } } - diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..0f02ab4 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +pub mod benchmarks; +pub mod parser; diff --git a/src/main.rs b/src/main.rs index a334e06..0b67d7d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,219 +1,30 @@ -mod ebay_fetcher; - -use std::{fs::File, io::Read, path::PathBuf}; -use scraper::{ElementRef, Html, Selector, selector::ToCss}; -use anyhow::{bail, Result}; -use tracing::{info, error, instrument}; +use anyhow::Result; +use ebay_compute_scraper::parser::search_results::parse_ebay_results; +use std::path::PathBuf; +use tracing::info; use tracing_subscriber::FmtSubscriber; -use regex::Regex; -use crate::ebay_fetcher::Context; -#[allow(dead_code)] -#[derive(Debug, Default, Clone)] -struct ParsedFile { - filename: String, - listings: Vec -} +// #[derive(Debug, Default, Clone)] +// struct ParsedFile { +// filename: String, +// listings: Vec, +// } -#[allow(dead_code)] -#[derive(Debug, Clone)] -struct EbayResult { - pub price: f64, - pub shipping: f64, - pub title: String, - pub has_bids: bool, - pub allows_best_offer: bool, - pub item_num: u64, -} - -#[instrument] -fn parse_ebay_results(filepath: PathBuf) -> Result> { - let mut f = File::open(filepath).unwrap(); - let mut contents = String::new(); - f.read_to_string(&mut contents).unwrap(); - - let document = Html::parse_document(contents.as_str()); - - let selector = Selector::parse(".srp-results").unwrap(); - let srp_results = document.select(&selector).next().unwrap(); - - let (elems, errs): (Vec<_>, Vec<_>) = get_items(&srp_results)? - .iter() - .map(parse_item) - .partition(Result::is_ok); - for err in errs { - error!("Hit error: {:?}", err); - } - - Ok(elems.into_iter().map(Result::unwrap).collect()) -} - -#[instrument(skip_all)] -fn get_items<'a>(page: &'a ElementRef<'a>) -> Result>> { - let selector = Selector::parse(".s-item").unwrap(); - let found = page.select(&selector); - - Ok(found.collect()) -} - -#[instrument(skip_all)] -fn parse_item_title(binding: &ElementRef) -> Result { - let selector = Selector::parse(".s-item__title").unwrap(); - - let found = binding.select(&selector); - let mut iter = found.into_iter(); - if iter.clone().count() != 1 { - bail!("Expecting only a single title per result! Found:{:?}", iter.count()); - } - - let b1 = iter.next().unwrap().text().collect::>(); - let b2 = b1.iter().filter(|&e| *e != "New Listing").collect::>(); - if b2.len() != 1 { - bail!("Only expecting one title section per result!"); - } - - return Ok(b2.first().unwrap().to_string()) -} - -#[instrument(skip_all)] -fn parse_item_price(binding: &ElementRef) -> Result { - let selector = Selector::parse(".s-item__price").unwrap(); - - let found = binding.select(&selector); - let mut iter = found.into_iter(); - if iter.clone().count() != 1 { - bail!("Expecting only a single price per result! Found:{}", iter.clone().count()); - } - - let b1 = iter.next().unwrap().text().collect::>(); - let b2 = b1.iter().filter(|&e| *e != "New Listing").collect::>(); - let mut price_str = match b2.len() { - 1 => { *b1.first().unwrap() } - 3 => { - if *b2[1] == " to " { - bail!("Ignoring ranged listings, range:{:?}", b2); - } - bail!("Found three elements in pricing but unexpected values:{:?}", b2); - } - _ => { bail!("Found unexpected pricing: {:?}", b2); } - }; - - price_str = price_str.trim_start_matches("$"); - Ok(price_str.parse().unwrap()) -} - -#[instrument(skip_all)] -fn parse_item_shipping(binding: &ElementRef) -> Result { - let free_x_days_shipping = { - let selector = Selector::parse(".s-item__freeXDays").unwrap(); - - match binding.select(&selector).count() { - 0 => { false } - 1 => { true } - unknown => { - bail!("Expecting only a single item__freeXDays per result! Found:{}", unknown); - } - } - }; - if free_x_days_shipping { - return Ok(0.00); - } - - let selector = Selector::parse(".s-item__shipping").unwrap(); - - let found = binding.select(&selector); - let mut iter = found.into_iter(); - if iter.clone().count() != 1 { - bail!("Expecting only a single shipping price per result! Found:{}", iter.clone().count()); - } - - let b1 = iter.next().unwrap().text().collect::>(); - if b1.len() != 1 { - bail!("Expected only a single shipping price per result! Found:{:?}", b1); - } - let price_str = *b1.first().unwrap(); - if price_str == "Free shipping" { - return Ok(0.00); - } - - let price_otherstr = Regex::new(r"\d+\.\d+") - .unwrap() - .find(price_str) - .unwrap().as_str(); - Ok(price_otherstr.parse().unwrap()) -} - -#[instrument(skip_all)] -fn parse_item_ebay_itm(binding: &ElementRef) -> Result { - let selector = Selector::parse(".s-item__link").unwrap(); - - let found = binding.select(&selector); - let mut iter = found.into_iter(); - if iter.clone().count() != 1 { - bail!("Expecting only a single item link per result! Found:{}", iter.clone().count()); - } - - let b1 = iter.next().unwrap().attr("href").into_iter().collect::>(); - if b1.len() != 1 { - bail!("Expected only a single item link per result! Found:{:?}", b1); - } - let mut url = *b1.first().unwrap(); - url = url.trim_start_matches("https://www.ebay.com/itm/"); - - let price_otherstr = Regex::new(r"\d+") - .unwrap() - .find(url) - .unwrap().as_str(); - Ok(price_otherstr.parse().unwrap()) -} - -#[instrument(skip_all)] -fn item_has_bids(binding: &ElementRef) -> bool { - let selector_bids = Selector::parse(".s-item__bids").unwrap(); - // let selector_bidcount = Selector::parse("s-item__bidCount").unwrap(); - - match binding.select(&selector_bids).count() { - 0 => { false } - 1 => { true } - uhm => { error!("Found {} an unexpected {} times", selector_bids.to_css_string(), uhm); false } - } -} - -fn item_has_bestoffer(binding: &ElementRef) -> bool { - let selector_bids = Selector::parse(".s-item__purchaseOptions").unwrap(); - let elems: Vec<&str> = binding.select(&selector_bids) - .map(|e| e.text().collect::>()) - .collect::>() - .into_iter().flatten() - .collect(); - - elems.contains(&"or Best Offer") -} - -#[instrument(skip_all)] -fn parse_item(elem: &ElementRef) -> Result { - Ok(EbayResult { - price: parse_item_price(elem)?, - title: parse_item_title(elem)?, - has_bids: item_has_bids(elem), - shipping: parse_item_shipping(elem)?, - item_num: parse_item_ebay_itm(elem)?, - allows_best_offer: item_has_bestoffer(elem) - }) -} - -fn main() -> Result<()>{ +fn main() -> Result<()> { tracing::subscriber::set_global_default( FmtSubscriber::builder() .with_max_level(tracing::Level::INFO) - .finish() + .finish(), ) - .expect("setting default subscriber failed"); + .expect("setting default subscriber failed"); - let parsed_files = vec![ParsedFile::default(); 0]; - - let mut ebay_ctx = ebay_fetcher::Context::default(); - ebay_ctx.ebay_fetch_html("filename".to_string(), "someurl".to_string(), "somedir".to_string())?; + // let parsed_files = vec![ParsedFile::default(); 0]; + // let mut ebay_ctx = ebay_fetcher::Context::default(); + // ebay_ctx.ebay_fetch_html( + // "filename".to_string(), + // "someurl".to_string(), + // "somedir".to_string(), + // )?; for e in parse_ebay_results(PathBuf::from("EbayScrape_ryzen_1713039640.html"))? { info!("{:?}", e); diff --git a/src/parser/common.rs b/src/parser/common.rs new file mode 100644 index 0000000..0fe628a --- /dev/null +++ b/src/parser/common.rs @@ -0,0 +1,5 @@ +#[derive(Debug, Clone)] +pub enum Pricing { + Singular(f64), + Range(f64, f64), +} diff --git a/src/parser/listing.rs b/src/parser/listing.rs new file mode 100644 index 0000000..23efa60 --- /dev/null +++ b/src/parser/listing.rs @@ -0,0 +1,148 @@ +use anyhow::Result; +use reqwest::Url; +use scraper::{Html, Selector}; +use std::{fs::File, io::Read, path::PathBuf, str::FromStr}; +use strum::*; +use tracing::error; + +#[derive(Clone, Copy, EnumString, Debug, PartialEq)] +pub enum Condition { + New, + OpenBox, + RefurbishedCertified, + RefurbishedExcellent, + RefurbishedVeryGood, + ReburbishedGood, + Used, + PartsOrNotWorking, +} + +#[derive(Clone, PartialEq, Debug)] +pub enum Description { + Text(String), + IframeURL(Url), +} + +#[derive(Clone)] +pub struct Listing { + pub item_num: u64, + pub condition: Condition, + pub condition_notes: String, + pub description: Description, +} + +impl Listing { + pub fn from_file(filepath: PathBuf) -> Result { + let mut f = File::open(filepath).unwrap(); + let mut contents = String::new(); + f.read_to_string(&mut contents).unwrap(); + + let document = Html::parse_document(contents.as_str()); + let condition_res = document + .select(&Selector::parse(".x-item-condition-text").unwrap()) + .next() + .unwrap() + .text() + .take(1) + .collect::>() + .concat(); + + let condition_notes_res = document + .select(&Selector::parse(".ux-labels-values--sellerNotes").unwrap()) + .next() + .unwrap() + .text() + .skip_while(|e| !e.contains("about the seller notes")) + .collect::>()[1] + .trim_start_matches('“') + .trim_end_matches('”'); + + let description_url = document + .select(&Selector::parse(".d-item-description").unwrap()) + .next() + .unwrap() + .select(&Selector::parse("iframe").unwrap()) + .next() + .unwrap() + .attr("src") + .unwrap(); + + Ok(Self { + condition: Condition::from_str(&condition_res)?, + condition_notes: condition_notes_res.to_owned(), + description: Description::IframeURL(Url::parse(description_url).unwrap()), + item_num: 0, + }) + } + + fn parse_description_iframe(html: &Html) -> Option<&str> { + html.select(&Selector::parse(".d-item-description").ok()?) + .next()? + .select(&Selector::parse("iframe").unwrap()) + .next()? + .attr("src") + .to_owned() + } + + fn parse_description_text(html: &Html) -> Option { + let s = html + .select(&Selector::parse(".d-item-description").ok()?) + .next()? + .text() + .collect::>(); + Some(s.concat()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + // use test_log::test; + use mistralrs::{ + IsqType, TextMessageRole, VisionLoaderType, VisionMessages, VisionModelBuilder, + }; + use tokio; + + #[tokio::test(flavor = "multi_thread")] + async fn it_works() -> Result<()> { + // let listing = Listing::from_file( + // "tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay.html".into(), + // ) + // .unwrap(); + + // assert_eq!(listing.condition, Condition::Used); + // assert_eq!(listing.condition_notes, "4 of 5. This item is gently used. The item shows minor signs of wear and tear including scuff marks and worn finishes. Please refer to the pictures to get a better idea of the physical condition. We could not get Windows to activate properly, and thus it is the new owner's expense/responsibility to activate. There are also a host of drivers and updates needed at the new owner's expense."); + // assert_eq!(listing.item_num, 0); + // assert_eq!(listing.description, Description::IframeURL(Url::parse( + // "https://vi.vipr.ebaydesc.com/itmdesc/276620722441?t=0&category=179&seller=jaybrokers&excSoj=1&ver=0&excTrk=1&lsite=0&ittenable=true&domain=ebay.com&descgauge=1&cspheader=1&oneClk=2&secureDesc=1" + // ).unwrap())); + + // const MODEL_ID: &str = "Qwen/Qwen2-VL-7B-Instruct"; + const MODEL_ID: &str = "HuggingFaceTB/SmolVLM-Instruct"; + let model = VisionModelBuilder::new(MODEL_ID, VisionLoaderType::Idefics3) + .with_isq(IsqType::Q8_0) + .with_logging() + // .from_max_edge(800) + // .with_force_cpu() + .build() + .await?; + + // let ipath = "tests/2024-11-27_21-01.png"; + let ipath = "tests/2024-11-27_21-01_40percent.png"; + let image = image::load_from_memory(&tokio::fs::read(ipath).await.unwrap()).unwrap(); + let messages = VisionMessages::new().add_image_message( + TextMessageRole::User, + "This is an ebay product listing. Describe as JSON the processor model, monitor size, RAM size, and disk capacity.", + image.resize(600, 300, image::imageops::FilterType::Lanczos3), + &model, + )?; + + let response = model.send_chat_request(messages).await?; + + println!("{}", response.choices[0].message.content.as_ref().unwrap()); + println!("{:?}", response); + + let a = tokio::fs::read("aaaatests/2024-11-27_21-01.png").await?; + Ok(()) + } +} diff --git a/src/parser/mod.rs b/src/parser/mod.rs new file mode 100644 index 0000000..aac8a88 --- /dev/null +++ b/src/parser/mod.rs @@ -0,0 +1,3 @@ +pub mod common; +pub mod listing; +pub mod search_results; diff --git a/src/parser/search_results.rs b/src/parser/search_results.rs new file mode 100644 index 0000000..8ce3404 --- /dev/null +++ b/src/parser/search_results.rs @@ -0,0 +1,243 @@ +use crate::parser::common::*; +use anyhow::{bail, Result}; +use regex::Regex; +use scraper::{selector::ToCss, ElementRef, Html, Selector}; +use std::{fs::File, io::Read, path::PathBuf}; +use tracing::error; + +#[derive(Debug, Clone)] +pub struct EbayResult { + pub price: Pricing, + pub shipping: f64, + pub title: String, + pub has_bids: bool, + pub allows_best_offer: bool, + pub item_num: u64, +} + +pub fn parse_ebay_results(filepath: PathBuf) -> Result> { + let mut f = File::open(filepath).unwrap(); + let mut contents = String::new(); + f.read_to_string(&mut contents).unwrap(); + + let document = Html::parse_document(contents.as_str()); + + let selector = Selector::parse(".srp-results").unwrap(); + let srp_results = document.select(&selector).next().unwrap(); + + let (elems, errs): (Vec<_>, Vec<_>) = get_items(&srp_results)? + .iter() + .map(parse_item) + .partition(Result::is_ok); + for err in errs { + error!("Hit error: {:?}", err); + } + + Ok(elems.into_iter().map(Result::unwrap).collect()) +} + +fn get_items<'a>(page: &'a ElementRef<'a>) -> Result>> { + let selector = Selector::parse(".s-item").unwrap(); + let found = page.select(&selector); + + Ok(found.collect()) +} + +fn parse_item_title(binding: &ElementRef) -> Result { + let selector = Selector::parse(".s-item__title").unwrap(); + + let found = binding.select(&selector); + let mut iter = found.into_iter(); + if iter.clone().count() != 1 { + bail!( + "Expecting only a single title per result! Found:{:?}", + iter.count() + ); + } + + let b1 = iter.next().unwrap().text().collect::>(); + let b2 = b1 + .iter() + .filter(|&e| *e != "New Listing") + .collect::>(); + if b2.len() != 1 { + bail!("Only expecting one title section per result!"); + } + + return Ok(b2.first().unwrap().to_string()); +} + +fn parse_item_price(binding: &ElementRef) -> Result { + let selector = Selector::parse(".s-item__price").unwrap(); + + let found = binding.select(&selector); + let mut iter = found.clone().into_iter(); + if iter.clone().count() != 1 { + bail!( + "Expecting only a single .s-item__price per result! Found:{} elems", + iter.clone().count() + ); + } + let b = iter + .next() + .unwrap() + .text() + .filter(|e| !e.contains("New Listing")) + .filter(|e| !e.contains(" to ")) + .map(|e| e.trim_start_matches("$")) + .map(|s| s.parse::().unwrap()) + .collect::>(); + + match b.len() { + 1 => Ok(Pricing::Singular(b[0].into())), + 2 => Ok(Pricing::Range(b[0].into(), b[1].into())), + _ => bail!("Failed parsing {:?} as 1 or 2 prices", b), + } +} + +fn parse_item_shipping(binding: &ElementRef) -> Result { + let free_x_days_shipping = { + let selector = Selector::parse(".s-item__freeXDays").unwrap(); + + match binding.select(&selector).count() { + 0 => false, + 1 => true, + unknown => { + bail!( + "Expecting only a single item__freeXDays per result! Found:{}", + unknown + ); + } + } + }; + if free_x_days_shipping { + return Ok(0.00); + } + + let selector = Selector::parse(".s-item__shipping").unwrap(); + + let found = binding.select(&selector); + let mut iter = found.into_iter(); + if iter.clone().count() != 1 { + bail!( + "Expecting only a single shipping price per result! Found:{}", + iter.clone().count() + ); + } + + let b1 = iter.next().unwrap().text().collect::>(); + if b1.len() != 1 { + bail!( + "Expected only a single shipping price per result! Found:{:?}", + b1 + ); + } + let price_str = *b1.first().unwrap(); + if price_str == "Free shipping" { + return Ok(0.00); + } + + let price_otherstr = Regex::new(r"\d+\.\d+") + .unwrap() + .find(price_str) + .unwrap() + .as_str(); + Ok(price_otherstr.parse().unwrap()) +} + +fn parse_item_ebay_itm(binding: &ElementRef) -> Result { + let selector = Selector::parse(".s-item__link").unwrap(); + + let found = binding.select(&selector); + let mut iter = found.into_iter(); + if iter.clone().count() != 1 { + bail!( + "Expecting only a single item link per result! Found:{}", + iter.clone().count() + ); + } + + let b1 = iter + .next() + .unwrap() + .attr("href") + .into_iter() + .collect::>(); + if b1.len() != 1 { + bail!( + "Expected only a single item link per result! Found:{:?}", + b1 + ); + } + let mut url = *b1.first().unwrap(); + url = url.trim_start_matches("https://www.ebay.com/itm/"); + + let price_otherstr = Regex::new(r"\d+").unwrap().find(url).unwrap().as_str(); + Ok(price_otherstr.parse().unwrap()) +} + +fn item_has_bids(binding: &ElementRef) -> bool { + let selector_bids = Selector::parse(".s-item__bids").unwrap(); + // let selector_bidcount = Selector::parse("s-item__bidCount").unwrap(); + + match binding.select(&selector_bids).count() { + 0 => false, + 1 => true, + uhm => { + error!( + "Found {} an unexpected {} times", + selector_bids.to_css_string(), + uhm + ); + false + } + } +} + +fn item_has_bestoffer(binding: &ElementRef) -> bool { + let selector_bids = Selector::parse(".s-item__purchaseOptions").unwrap(); + let elems: Vec<&str> = binding + .select(&selector_bids) + .map(|e| e.text().collect::>()) + .collect::>() + .into_iter() + .flatten() + .collect(); + + elems.contains(&"or Best Offer") +} + +fn parse_item(elem: &ElementRef) -> Result { + Ok(EbayResult { + price: parse_item_price(elem)?, + title: parse_item_title(elem)?, + has_bids: item_has_bids(elem), + shipping: parse_item_shipping(elem)?, + item_num: parse_item_ebay_itm(elem)?, + allows_best_offer: item_has_bestoffer(elem), + }) +} + +#[cfg(test)] +mod tests { + use super::*; + use test_log::test; + use tokio; + + #[test(tokio::test)] + async fn it_works() { + // Should have been 60, but alas. + assert_eq!( + parse_ebay_results("tests/html/EbayScrape_16GB_100to200_Used_1732476548.html".into()) + .unwrap() + .len(), + 60 - 2 - 1 + ); + assert_eq!( + parse_ebay_results("tests/html/EbayScrape_ryzen_1713039640.html".into()) + .unwrap() + .len(), + 60 - 2 - 1 + ); + } +} diff --git a/tests/2024-11-27_21-01.png b/tests/2024-11-27_21-01.png new file mode 100644 index 0000000..b142cc9 Binary files /dev/null and b/tests/2024-11-27_21-01.png differ diff --git a/tests/2024-11-27_21-01_40percent.png b/tests/2024-11-27_21-01_40percent.png new file mode 100644 index 0000000..4423a0e Binary files /dev/null and b/tests/2024-11-27_21-01_40percent.png differ diff --git a/tests/2024-11-27_21-01_50percent.png b/tests/2024-11-27_21-01_50percent.png new file mode 100644 index 0000000..b26ebd3 Binary files /dev/null and b/tests/2024-11-27_21-01_50percent.png differ diff --git a/tests/IMG_6245.jpg b/tests/IMG_6245.jpg new file mode 100644 index 0000000..337e0cf Binary files /dev/null and b/tests/IMG_6245.jpg differ diff --git a/tests/html/EbayScrape_16GB_100to200_Used_1732476548.html b/tests/html/EbayScrape_16GB_100to200_Used_1732476548.html new file mode 100644 index 0000000..b7d42cb --- /dev/null +++ b/tests/html/EbayScrape_16GB_100to200_Used_1732476548.html @@ -0,0 +1,547 @@ + 16GB in PC Desktops & All-In-Ones for sale | eBay +

Filter

Related Searches

+ + \ No newline at end of file diff --git a/EbayScrape_ryzen_1713039640.html b/tests/html/EbayScrape_ryzen_1713039640.html similarity index 100% rename from EbayScrape_ryzen_1713039640.html rename to tests/html/EbayScrape_ryzen_1713039640.html diff --git a/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription.html b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription.html new file mode 100644 index 0000000..3118e76 --- /dev/null +++ b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription.html @@ -0,0 +1,161 @@ + + +eBay
+
+
+
+
+
+ +
+
+
+KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 +
Serial Number: C20002MG120230426181
Status: Used
Physical Condition: 4 of 5
Includes: Mini PC, Power Cable, Mounting Equipment, SATA Adapter, Manual/Documentation, Original Box
Notes:

This + item is gently used. The item shows minor signs of wear and tear +including scuff marks and worn finishes. Please refer to the pictures to + get a better idea of the physical condition. We could not get Windows +to activate properly, and thus it is the new owner's +expense/responsibility to activate. There are also a host of drivers and + updates needed at the new owner's expense.
+
+
+
ABOUT US

Jay Brokers is a family owned and operated +risk-free secondhand marketplace. Our inventory features an eclectic +range of items purchased from our customers ranging from gadgets and +guitars to cameras and collectibles. We'll consider just about any item +worth over $100 that is relatively easy to ship. We are a veteran eBay +seller with over 20 years of top-rated customer feedback.

+
OUR PLEDGE
+
  1. Fast Shipping: Always same-day shipping for orders paid by 10 AM EST (excludes weekends and holidays). 1-6 business day delivery is standard for most items, but we also offer 2-day and overnight shipping options.
  2. +
  3. Responsive Customer Service: We strive to answer questions within a couple hours + during normal business hours (M-F, 9 AM - 6 PM EST). You may receive an + answer from our automated assistant, particularly while we are closed +on weekends and holidays.
  4. +
  5. Honest & Accurate Product Descriptions: + Jay Brokers is family owned and operated shop. We value integrity and +treat our customers the way we want to be treated; as such, we expect +the same. This starts by writing honest and accurate product +descriptions for the items we sell. We also take high quality pictures +of the individual items for sale, presenting larger than life detail +(may not apply to multi-quantity listings). We certainly never have any +intentions of misrepresenting a product, but let's face it—we're all +human and misunderstandings and mistakes happen from time to time. If we + make a mistake and we cannot fix it, we always offer a full refund to our customers, backed by the eBay Money Back Guarantee. + Simply contact us and let us know about the problem. Whether a +misunderstanding or mistake, rest assured we're here to earn your +satisfaction.
+
+
PAYMENT
+
    +
  • We do NOT entertain offers to sell off eBay. The eBay +marketplace has built-in safety and security features designed to +protect both buyers and sellers. We think these features are valuable, +and as such we desire to uphold the integrity of the eBay website by +only completing transactions on eBay. We kindly ask buyers to +refrain from making requests to sell off the eBay site. Violators will +be reported to eBay's Trust & Safety team.
  • +
  • For Buy it Now items: Immediate payment via eBay checkout is required.
  • +
  • For Auction/Best Offer items: Payment is due within 3 days + of the listing's end. If you've purchased an item by accident and don't + intend to follow through and pay, please let us know as we have other +buyers eager to purchase our inventory.
  • +
  • Please verify your shipping address, payment method, and contact +information before submitting payment as changes are not permitted after + checkout has been completed.
  • +
  • Sales tax applies to all items shipped within Georgia as required by law (our shipping location is in Cherokee County which has 6.0% sales tax). Destinations + outside of Georgia are not subject to GA state sales tax, but may be +subject to other Internet Sales Tax laws (eBay automatically collects +Internet Sales Tax where applicable).
  • +
  • Items in our inventory may also be for sale in other venues so we +reserve the right to sell to another buyer if your payment hasn't been +received or cleared (items are sold on a first paid, first shipped +basis).
  • +
  • We have a zero-tolerance policy for all forms of fraudulent payments and illegal activity.Violators will be reported to law enforcement and eBay's Trust & Safety team.
  • +
+
+
SHIPPING
+
    +
  • Orders completed by 10 AM EST ship out the same business day.
  • As + a family business we are closed on weekends and holidays, so orders +placed while we are closed will ship the next business day.
  • +
  • We only ship to addresses in the USA, excluding territories and APO/FPO addresses.
  • +
  • Some items are eligible for international shipping through eBay's +Global Shipping Program (GSP) team. If available, you will see the +option to select your country in the shipping calculator. If you don't +see your country listed in a specific listing, unfortunately that means +we do not ship to your country.
  • +
  • Shipping rates are determined by UPS and/or USPS. You can get an +instant shipping quote 24/7 via the shipping calculator in each listing. + We strive to keep rates as low as possible by subsidizing +shipping rates by approximately 40%. This means the quoted shipping rate + you receive on eBay has been discounted already.
  • +
  • We can only ship to the address selected during checkout on eBay. + Please verify your shipping address before submitting payment. For your + security, address changes are not permitted after checkout has been +completed.
  • +
  • We do NOT ship to 3rd parties or freight forwarders.
  • +
  • We are unable to use 3rd party shipping accounts or 3rd party labels for shipping.
  • +
  • Your item may be shipped by UPS or USPS. Tracking information is +sent automatically to your registered email address. Tracking +information is also accessible via 'My eBay' under Purchase History > + Tracking Number.
  • +
  • Items over $250 may require a signature on delivery. Delivery + drivers may also require a signature based on other factors at his/her +discretion. If your shipment is coming via UPS you can personalize your +delivery or preauthorize a signature release online by registering for a + UPS MyChoice account.
  • +
  • We take great care in packaging items to ensure they arrive +undamaged. However, if your item arrives damaged please contact us +immediately. Please do NOT discard the damaged item or the original box and packaging. Let us file the damage claim paperwork for you to ensure it is completed properly. Do not contact UPS to file a damage claim.
  • +
  • If your tracking information shows delivered, but you cannot find your package please contact us immediately. Let + us handle the lost package claim paperwork for you to ensure it is +completed properly. Do not contact UPS to file a lost package claim.
  • +
+
+
RETURNS
+
    +
  • If you don't love the item you purchased, you can return the original, unaltered item for ANY reason within 30 days of delivery (unless otherwise specified in the listing).*
  • Return shipping labels are provided for most items via eBay's Return Center 24/7.
  • Buyers + are encouraged to model integrity when requesting and selecting a +return reason on eBay. Buyers who abuse or misuse eBay's return center +may be subject to a range of actions, including limits on buying and +selling privileges and account suspension.
  • +
  • Returned items must be received back in the original, +unaltered condition. Altered items may be denied return, and/or subject +to a reduced refund at the discretion of Jay Brokers.
  • +
  • Jay Brokers has a zero-tolerance policy for all forms of return fraud including swapping products/parts, selecting an inaccurate reason for returns, or returning empty boxes. Violators will be reported to law enforcement and eBay's Trust & Safety team.
  • +
+*Select + items such as those sold "for parts/not working" may NOT be eligible +for return. Typically these types of items are a gamble best suited for a + repair shop or qualified technician interested in repairing the item or + harvesting the parts. Please review the eBay listing and return policy +carefully before purchasing to determine eligibility. +
+
+
WARRANTY
+
    +
  • Jay Brokers is NOT a refurbishing facility or repair shop. Most of the items we sell are used and sold as is (see "Status" in listing to determine whether new, used, or for parts/not working). + Oftentimes used items have various defects from signs of wear and tear +to specific functionality limitations ranging from weaker batteries to +imperfections that restrict usage. Some items may be missing components +that originally shipped with the item (see "Includes" in listing to determine what is specifically included).
  • +
  • All merchandise is sold as is, without any warranty or guarantee of +future performance unless otherwise specified. Jay Brokers does not +provide or fulfill warranty coverage. If specified, existing warranty +coverage is provided and fulfilled by the manufacturer or another 3rd +party vendor. As such, we are unable to guarantee warranty eligibility +and coverage terms or limits.
  • +
  • If peace of mind is desired, we strongly recommend buyers purchase extended warranty coverage via eBay's partner (see link in listing for more information).
  • +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription_files/2.js b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription_files/2.js new file mode 100644 index 0000000..afce9de --- /dev/null +++ b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay IframeDescription_files/2.js @@ -0,0 +1 @@ +var e,t={COOKIELET_DELIMITER:"^",NAME_VALUE_DELIMITER:"/",escapedValue:!0},i={COOKIELET_DELIMITER:"^",NAME_VALUE_DELIMITER:"/",bUseExp:!0,startDelim:"b"},n={COOKIELET_DELIMITER:"^",NAME_VALUE_DELIMITER:"=",escapedValue:!0,startDelim:"^"},o={reg:["dp1","reg"],recent_vi:["ebay","lvmn"],ebaysignin:["ebay","sin"],p:["dp1","p"],etfc:["dp1","etfc"],keepmesignin:["dp1","kms"],ItemList:["ebay","wl"],BackToList:["s","BIBO_BACK_TO_LIST"]},r={r:t,dp1:i,npii:i,ebay:n,reg:n,apcCookies:n,ds2:{COOKIELET_DELIMITER:"^",NAME_VALUE_DELIMITER:"/"}},a={readCookie:function(e,t){var i=this.readCookieObj(e,t).value;return i?decodeURIComponent(i):""},createDefaultCookieBean:function(e,t){var i={};return i.name=e,i.cookieletname=t,i.value="",i.maxage=0,i.rawcookievalue="",i.mode="",i},readCookieObj:function(e,t){var i=this.createDefaultCookieBean(e,t);this.update(),this.checkConversionMap(i),i.rawcookievalue=this.aCookies[i.name],i.name&&i.rawcookievalue?i.cookieletname?this.readCookieletInternal(i):this.readCookieInternal(i):i.value="";var n=t&&t.match(/guid$/),o=void 0!==i?i:"";return o&&n&&i.value.length>32&&(i.value=i.value.substring(0,32)),o},checkConversionMap:function(e){var t=o[e.name];t&&(e.mode=this.getMode(e.name),e.name=t[0],e.cookieletname=t[1])},readCookieInternal:function(e){return e.value=e.rawcookievalue,e},readCookieletInternal:function(e){var t=this.getCookielet(e.name,e.cookieletname,e.rawcookievalue),i=this.getFormat(e.name);if(t&&i.bUseExp){var n=t;t=t.substring(0,t.length-8),n.length>8&&(e.maxage=n.substring(n.length-8))}return e.value=t,"10"==e.mode&&(e.value=e.rawcookievalue),e},readMultiLineCookie:function(e,t){if(!e||!t)return"";var i,n="",r=o[e];return r&&(i=this.readCookieObj(r[0],r[1]).value||""),i&&(n=this.getCookielet(e,t,i)||""),void 0!==n?n:""},writeCookie:function(e,t,i){var n=o[e];if(n)this.writeCookielet(n[0],n[1],t,i);else{var r=this.getFormat(e);t&&r.escapedValue&&(t=encodeURIComponent(t)),this.writeRawCookie(e,t,i)}},writeRawCookie:function(e,t,i){if(e&&void 0!==t&&(isNaN(t)&&t.length<4e3||(t+"").length<4e3)){"number"==typeof i&&(i=this.getExpDate(i));var n=i?new Date(i):new Date(this.getExpDate(730)),o=this.getFormat(e),r=this.sCookieDomain,a=document.domain;if(-1===a.indexOf(r)){var s=a.indexOf(".ebay.");s>0&&(this.sCookieDomain=a.substring(s))}document.cookie&&(document.cookie=e+"="+(t||"")+(i||o.bUseExp?"; expires="+n.toGMTString():"")+"; domain="+this.sCookieDomain+"; path=/")}},writeCookieEx:function(e,t,i){this.writeCookie(e,t,this.getExpDate(i))},writeCookielet:function(e,t,i,n,o){if(e&&t){if(this.update(),this.getFormat(e).bUseExp&&i){"number"==typeof n&&(n=this.getExpDate(n));var r=n?new Date(n):new Date(this.getExpDate(730)),a=Date.UTC(r.getUTCFullYear(),r.getUTCMonth(),r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds());a=Math.floor(a/1e3),i+=parseInt(a,10).toString(16)}var s=this.createCookieValue(e,t,i);this.writeRawCookie(e,s,o)}},writeMultiLineCookie:function(e,t,i,n,r){this.update();var a=this.createCookieValue(e,t,i);if(a){var s=o[e];s&&this.writeCookielet(s[0],s[1],a,n,r)}},getBitFlagOldVersion:function(e,t){var i=parseInt(e,10),n=i.toString(2);return"1"==(i?n.charAt(n.length-t-1):"")?1:0},setBitFlagOldVersion:function(e,t,i){var n,o,r,a,s="";if((e=parseInt(e+"",10))&&(s=e.toString(2)),(a=s.length)0&&"#"===e.charAt(0)){var i=t%4,n=e.length-(Math.floor(t/4)+1),o=1<0&&"#"===e.charAt(0)){var n=e.length,o=t%4,r=Math.floor(t/4)+1;if(n<=r){if(1!=i)return e;for(var a=r-n+1,s=e.substring(1,n);a>0;)s="0"+s,a--;n=(e="#"+s).length}var u=n-r,l=parseInt(e.substring(u,u+1),16),g=1<31?e:this.setBitFlagOldVersion(e,t,i)},createCookieValue:function(e,t,i){var n,r=o[e],a=this.getFormat(e),s=this.getMode(e);if(n=!r||"00"!=s&&"01"!=s?this.aCookies[e]||"":this.readCookieObj(r[0],r[1]).value||"",a){var u=this.getCookieletArray(n,a);u[t]=i;var l="";for(var g in u)u.hasOwnProperty(g)&&(l+=g+a.NAME_VALUE_DELIMITER+u[g]+a.COOKIELET_DELIMITER);l&&a.startDelim&&(l=a.startDelim+l),n=l,a.escapedValue&&(n=encodeURIComponent(n))}return n},update:function(){var e=document.cookie.split("; ");this.aCookies={};for(var t=new RegExp('^"(.*)"$'),i=0;i0&&(i[o[r].substring(0,a)]=o[r].substring(a+1))}return i},getExpDate:function(e){var t;if("number"==typeof e&&e>=0){var i=new Date;i.setTime(i.getTime()+24*e*60*60*1e3),t=i.toGMTString()}return t},getMode:function(e){var t,i,n=this.readCookieObj("ebay","cv").value;if(!(e in o))return null;if(!n)return"";if(0===n)return"00";if(n&&"0"!=n){if(-1!==n.indexOf(".")){var r=n.split(".");for(i=0;id?(b=a,a=""):("@"===a[0]&&(d=a.indexOf("/",d+1)),b=a.substring(0,d),a=a.substring(d)),(c=z[c+"/"+b])?(b="/"+b+"$"+c,a&&(b+=a),a=b):a=void 0)}if(a){b=A[a];void 0!==b&&(a=t(a,b||"index"));(b=B[a])&&(a=b);if(void 0===h[a]){b=a;c=b.lastIndexOf(".");var f;a=-1===c||-1!==(f=b.lastIndexOf("/"))&&f>c?void 0:b.substring(0,c);void 0!==a&&void 0===h[a]&&(a=void 0)}return a}}function C(a,b){if(!a)throw k("");var c=l(a,b);if(void 0===c)throw k(a,b);a=m[c];void 0===a&&(a=m[c]=new r(c),a.load(h[c]));return a}function v(a,b){return C(a,b).exports}function D(a,b){if(!(b&&!1===b.wait||n))return p.push([a,b]);C(a,"/")}function E(){n=!0;for(var a;a=p.length;){var b=p;p=[];for(var c=0;c1&&typeof allowMissing!=="boolean")throw new $TypeError('"allowMissing" argument must be a boolean');if($exec(/^%?[^%]*%?$/,name)===null)throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name);var intrinsicBaseName=parts.length>0?parts[0]:"";var intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing);var intrinsicRealName=intrinsic.name;var value=intrinsic.value;var skipFurtherCaching=false;var alias=intrinsic.alias;if(alias){intrinsicBaseName= +alias[0];$spliceApply(parts,$concat([0,1],alias))}for(var i=1,isOwn=true;i=parts.length){var desc=$gOPD(value,part);isOwn=!!desc;if(isOwn&&"get"in desc&&!("originalValue"in desc.get))value=desc.get;else value=value[part]}else{isOwn=hasOwn(value,part);value=value[part]}if(isOwn&&!skipFurtherCaching)INTRINSICS[intrinsicRealName]=value}}return value}});'use strict';$_mod.installed("call-bind$1.0.7","set-function-length","1.2.2");'use strict';$_mod.main("/set-function-length$1.2.2","");'use strict';$_mod.installed("set-function-length$1.2.2","get-intrinsic","1.2.4");'use strict';$_mod.installed("set-function-length$1.2.2","define-data-property","1.1.4");'use strict';$_mod.main("/define-data-property$1.1.4","");'use strict';$_mod.installed("define-data-property$1.1.4","es-define-property","1.0.0");'use strict';$_mod.main("/es-define-property$1.0.0","");'use strict';$_mod.installed("es-define-property$1.0.0","get-intrinsic","1.2.4");'use strict';$_mod.def("/es-define-property$1.0.0/index",function(a,c,b,d,e){if(a=a("/get-intrinsic$1.2.4/index")("%Object.defineProperty%",!0)||!1)try{a({},"a",{value:1})}catch(f){a=!1}b.exports=a});'use strict';$_mod.installed("define-data-property$1.1.4","es-errors","1.3.0");'use strict';$_mod.installed("define-data-property$1.1.4","gopd","1.0.1");'use strict';$_mod.main("/gopd$1.0.1","");'use strict';$_mod.installed("gopd$1.0.1","get-intrinsic","1.2.4");'use strict';$_mod.def("/gopd$1.0.1/index",function(a,c,b,d,e){if(a=a("/get-intrinsic$1.2.4/index")("%Object.getOwnPropertyDescriptor%",!0))try{a([],"length")}catch(f){a=null}b.exports=a});'use strict';$_mod.def("/define-data-property$1.1.4/index",function(e,r,n,t,u){var k=e("/es-define-property$1.0.0/index"),p=e("/es-errors$1.3.0/syntax"),a=e("/es-errors$1.3.0/type"),l=e("/gopd$1.0.1/index");n.exports=function(b,d,m){if(!b||"object"!==typeof b&&"function"!==typeof b)throw new a("`obj` must be an object or a function`");if("string"!==typeof d&&"symbol"!==typeof d)throw new a("`property` must be a string or a symbol`");if(3a||4294967295b||O.call(/e/,a))return a;var c=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"===typeof b){var f=0>b?-P(-b):P(b);if(f!==b)return b=String(f),a=G.call(a,b.length+1),q.call(b,c,"$\x26_")+"."+q.call(q.call(a,/([0-9]{3})/g,"$\x26_"),/_$/,"")}return q.call(a,c,"$\x26_")}function Q(b,a,c){a="double"===(c.quoteStyle||a)?'"':"'";return a+b+a}function H(b){return"[object Array]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function ia(b){return"[object Date]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function R(b){return"[object RegExp]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function ja(b){return"[object Error]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function ka(b){return"[object String]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function la(b){return"[object Number]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function ma(b){return"[object Boolean]"===r.call(b)&&(!h||!("object"===typeof b&&h in b))}function S(b){if(y)return b&&"object"===typeof b&&b instanceof Symbol;if("symbol"===typeof b)return!0;if(!b||"object"!==typeof b||!I)return!1;try{return I.call(b),!0}catch(a){}return!1}function na(b){return b.name?b.name:(b=oa.call(pa.call(b),/^function\s*([\w$]+)/))?b[1]:null}function T(b,a){if(b.indexOf)return b.indexOf(a);for(var c=0,f=b.length;ca.maxStringLength){var c=b.length-a.maxStringLength;c="... "+c+" more character"+(1b?"0":"")+va.call(b.toString(16))}function B(b){return"Object("+b+")"}function V(b,a,c,f){c=f?J(c,f):n.call(c,", ");return b+" ("+a+") {"+c+"}"}function wa(b){for(var a=0;ad.maxStringLength&&Infinity!==d.maxStringLength:null!==d.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var v=t.call(d,"customInspect")?d.customInspect:!0;if("boolean"!==typeof v&&"symbol"!==v)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(t.call(d,"indent")&&null!==d.indent&&"\t"!==d.indent&&!(parseInt(d.indent,10)===d.indent&&0=x&&0a)throw new d("Assertion failed: `fromIndex` must be a non-negative integer");var g=e.length;if(""===b&&a<=g)return a;for(var h=b.length;a<=g-h;a+=1)if(m(e,a,a+h)===b)return a;return-1}});'use strict';$_mod.installed("es-abstract$1.23.3","string.prototype.trim","1.2.9");'use strict';$_mod.main("/string.prototype.trim$1.2.9","");'use strict';$_mod.installed("string.prototype.trim$1.2.9","call-bind","1.0.7");'use strict';$_mod.installed("string.prototype.trim$1.2.9","define-properties","1.2.1");'use strict';$_mod.installed("string.prototype.trim$1.2.9","es-object-atoms","1.0.0");'use strict';$_mod.installed("es-object-atoms$1.0.0","es-errors","1.3.0");'use strict';$_mod.def("/es-object-atoms$1.0.0/RequireObjectCoercible",function(b,e,c,f,g){var d=b("/es-errors$1.3.0/type");c.exports=function(a){if(null==a)throw new d(0b.length?!1:e(b,0,a.length)===a}});'use strict';$_mod.def("/es-abstract$1.23.3/2024/GetSubstitution",function(c,p,y,J,K){var e=c("/es-errors$1.3.0/type");p=c("/safe-regex-test$1.0.3/index");var z=c("/es-abstract$1.23.3/helpers/every"),q=c("/object-inspect$1.13.1/index"),A=c("/es-abstract$1.23.3/2024/Get"),B=c("/es-abstract$1.23.3/2024/IsArray"),C=c("/es-abstract$1.23.3/2024/min"),D=c("/es-abstract$1.23.3/2024/StringIndexOf"),t=c("/es-abstract$1.23.3/2024/StringToNumber"),f=c("/es-abstract$1.23.3/2024/substring"),E=c("/es-abstract$1.23.3/2024/ToString"),u=c("/es-abstract$1.23.3/2024/Type"),F=c("/es-abstract$1.23.3/helpers/isInteger"),G=c("/es-abstract$1.23.3/helpers/isStringOrUndefined"),h=c("/es-abstract$1.23.3/helpers/isPrefixOf"),H=p(/^\$[0-9]/),I=p(/^\$[0-9][0-9]/);y.exports=function(r,m,g,k,l,b){if("string"!==typeof r)throw new e("Assertion failed: `matched` must be a String");if("string"!==typeof m)throw new e("Assertion failed: `str` must be a String");if(!F(g)||0>g)throw new e("Assertion failed: `position` must be a nonnegative integer, got "+q(g));if(!B(k)||!z(k,G))throw new e("Assertion failed: `captures` must be a possibly-empty List of Strings or `undefined`, got "+q(k));if("undefined"!==typeof l&&"Object"!==u(l))throw new e("Assertion failed: `namedCaptures` must be `undefined` or an Object");if("string"!==typeof b)throw new e("Assertion failed: `replacementTemplate` must be a String");var v=m.length;if(g>v)throw new e("Assertion failed: position \x3e stringLength, got "+q(g));for(var w="";""!==b;){if(h("$$",b)){var d="$$";var a="$"}else if(h("$`",b))d="$`",a=f(m,0,g);else if(h("$\x26",b))d="$\x26",a=r;else if(h("$'",b))d="$'",a=f(m,C(g+r.length,v));else if(H(b)){d=I(b)?2:1;var n=f(b,1,1+d);a=t(n);if(0>a||99x&&2===d&&(d=1,n=f(n,0,1),a=t(n));d=f(b,0,1+d);1<=a&&a<=x?(a=k[a-1],a="undefined"===typeof a?"":a):a=d}else if(h("$\x3c",b))if(a=D(b,"\x3e",0),-1===a||"undefined"===typeof l)a=d="$\x3c";else{d= +f(b,0,a+1);a=f(b,2,a);if("Object"!==u(l))throw new e("Assertion failed: Type(namedCaptures) is not Object");a=A(l,a);a="undefined"===typeof a?"":E(a)}else a=d=f(b,0,1);b=f(b,d.length);w+=a}return w}});'use strict';$_mod.installed("string.prototype.replaceall$1.0.10","es-object-atoms","1.0.0");'use strict';$_mod.installed("string.prototype.replaceall$1.0.10","get-intrinsic","1.2.4");'use strict';$_mod.installed("string.prototype.replaceall$1.0.10","has-symbols","1.0.3");'use strict';$_mod.installed("string.prototype.replaceall$1.0.10","is-regex","1.1.4");'use strict';$_mod.installed("string.prototype.replaceall$1.0.10","es-errors","1.3.0");'use strict';$_mod.def("/string.prototype.replaceall$1.0.10/implementation",function(b,p,w,k,H){var q=b("/es-abstract$1.23.3/2024/Call"),x=b("/es-abstract$1.23.3/2024/GetMethod"),y=b("/es-abstract$1.23.3/2024/GetSubstitution"),z=b("/es-abstract$1.23.3/2024/IsCallable"),A=b("/es-object-atoms$1.0.0/RequireObjectCoercible"),m=b("/es-abstract$1.23.3/2024/ToString"),r=b("/es-abstract$1.23.3/2024/StringIndexOf");p=b("/get-intrinsic$1.2.4/index");k=b("/call-bind$1.0.7/callBound");var B=b("/has-symbols$1.0.3/index")(),C=b("/is-regex$1.1.4/index"),D=p("%Math.max%"),t=b("/es-errors$1.3.0/type"),E=k("Array.prototype.push"),n=k("String.prototype.slice"),F=k("String.prototype.indexOf"),G=k("String.prototype.replace");w.exports=function(a,e){var c=A(this),f=C(a);if(f&&-1===F(n(a,a.source.length+2),"g"))throw new t("use .replace for a non-global regex. NOTE: this may be allowed in the future.");if(B&&Symbol.replace){if(null!=a&&(f=x(a,Symbol.replace),"undefined"!==typeof f))return q(f,a,[c,e])}else if(f)return G(c,a,e);c=m(c);a=m(a);(f=z(e))||(e=m(e));for(var u=a.length,l=D(1,u),g=[],d=r(c,a,0);-1!==d;)E(g,d),d=r(c,a,d+l);var h=0;l="";for(d=0;db.length||4E3>(b+"").length)){"number"===typeof c&&(c=this.getExpDate(c));var d=c?new Date(c):new Date(this.getExpDate(730)),e=this.getFormat(a),f=document.domain;if(-1===f.indexOf(this.sCookieDomain)){var h=f.indexOf(".ebay.");0h[1]?"poor":r>h[0]?"needs-improvement":"good",c(b))}},m=function(c){requestAnimationFrame(function(){return requestAnimationFrame(function(){return c()})})},u=function(c){var b=function(h){"pagehide"!==h.type&&"hidden"!==document.visibilityState||c(h)};addEventListener("visibilitychange",b,!0);addEventListener("pagehide",b,!0)},q=function(c){var b=!1;return function(h){b||(c(h),b=!0)}},e=-1,t=function(c){"hidden"===document.visibilityState&&-1e&&(e="hidden"!==document.visibilityState||document.prerendering?1/0:0,I(),a(function(){setTimeout(function(){e= +"hidden"!==document.visibilityState||document.prerendering?1/0:0;I()},0)})),{get firstHiddenTime(){return e}}},K=function(c){document.prerendering?addEventListener("prerenderingchange",function(){return c()},!0):c()},F=[1800,3E3],N=function(c,b){b=b||{};K(function(){var h,f=E(),p=w("FCP"),v=y("paint",function(r){r.forEach(function(C){"first-contentful-paint"===C.name&&(v.disconnect(),C.startTimeH.startTime-O.startTime&&5E3>H.startTime-V.startTime?(p+=H.value,v.push(H)):(p=H.value,v=[H])}});p>f.value&&(f.value=p,f.entries=v,h())},C=y("layout-shift",r);C&&(h=z(c,f,U,b.reportAllChanges),u(function(){r(C.takeRecords());h(!0)}),a(function(){p=0;f=w("CLS",0);h=z(c,f,U,b.reportAllChanges);m(function(){return h()})}),setTimeout(h,0))}))},M={passive:!0,capture:!0},ta=new Date,ja=function(c,b){x||(x=b,D=c,G=new Date,ha(removeEventListener),ia())},ia=function(){if(0<=D&&DJ.length||c.duration>b.latency)h?(h.entries.push(c),h.latency=Math.max(h.latency,c.duration)):(c={id:c.interactionId,latency:c.duration,entries:[c]},aa[c.id]=c,J.push(c)),J.sort(function(f,p){return p.latency-f.latency}),J.splice(10).forEach(function(f){delete aa[f.id]})},ma=function(c,b){b=b||{};K(function(){var h;"interactionCount"in performance||l||(l=y("event",va,{type:"event",buffered:!0,durationThreshold:0}));var f=w("INP"),p=function(C){C.forEach(function(H){(H.interactionId&&la(H),"first-input"===H.entryType)&&!J.some(function(V){return V.entries.some(function(O){return H.duration===O.duration&&H.startTime===O.startTime})})&&la(H)});var A;(C=(A=Math.min(J.length-1,Math.floor(((l?P:performance.interactionCount||0)-Z)/50)),J[A]))&&C.latency!==f.value&&(f.value=C.latency,f.entries=C.entries,r())},v=y("event",p,{durationThreshold:null!==(h=b.durationThreshold)&&void 0!==h?h:40});var r=z(c,f,Y,b.reportAllChanges);v&&("PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&v.observe({type:"first-input",buffered:!0}),u(function(){p(v.takeRecords());0>f.value&&0<(l?P:performance.interactionCount||0)-Z&&(f.value=0,f.entries=[]);r(!0)}),a(function(){J=[];Z=l?P:performance.interactionCount||0;f=w("INP");r=z(c,f,Y,b.reportAllChanges)}))})},ba=[2500,4E3],ca={},na=function(c,b){b=b||{};K(function(){var h=E(),f=w("LCP"),p=function(A){(A=A[A.length-1])&& +A.startTime=r||r>performance.now()||(f.value=Math.max(r-B(),0),f.entries=[v],p(!0),a(function(){f=w("TTFB",0);(p=z(b,f,da,h.reportAllChanges))(!0)}))}})};return k.CLSThresholds=U,k.FCPThresholds=F,k.FIDThresholds=W,k.INPThresholds=Y,k.LCPThresholds=ba,k.TTFBThresholds=da,k.getCLS=fa,k.getFCP=N,k.getFID=ka,k.getINP=ma,k.getLCP=na,k.getTTFB=oa,k.onCLS=fa,k.onFCP=N,k.onFID=ka,k.onINP=ma,k.onLCP=na,k.onTTFB=oa,k}({}),L=qa.create(ea.sUrl),R=[],T=new function(k){function x(){function d(m){if(!m)return[];m.sort(function(u,q){var e=u[0];u=u[1];var t=q[0];q=q[1];return e==t?u==q?0:um.responseEnd||(y[q]=y[q]||{},y[q][e]=y[q][e]||[],y[q][e].push([u,m.responseEnd]),y[q].all=y[q].all||[],y[q].all.push([u,m.responseEnd]),g[e]=g[e]||[],g[e].push([u,m.responseEnd]),g.all=g.all||[],g.all.push([u,m.responseEnd]),-1B&&(B=Math.round(t.duration),w=t.name,y=t.attribution&&t.attribution[0]&&t.attribution[0].containerSrc)});a.add("o_lt",B);a.add("o_ltn",w);a.add("o_ltu",y);a.add("o_ltc",window.__tti.e.length||0);a.add("dcpon",document.getElementsByTagName("*").length)});n=new PerformanceObserver(function(e){e.getEntries().forEach(function(t){a.add("o_fid",t.processingStart-t.startTime)})});var u=new PerformanceObserver(function(e){e.getEntries().forEach(function(t){t.hadRecentInput||(z+=t.value,a.add("o_cls",z))})}),q=new PerformanceObserver(function(e){e.getEntries().forEach(function(t){m{a.add("o_inp",e)},{reportAllChanges:!0,durationThreshold:40})}catch(e){}window.setTimeout(function(){var e=g.getEntriesByType("paint"),t=0;void 0!==e&&0t&&(void 0===E||F.startTime+F.duration+50g.indexOf("?")&&(g+="?now\x3d"+Date.now());if(d=k.metrics){d=d.getEntries(); +for(var B in d)g+="\x26"+d[B].key+"\x3d"+d[B].value}n?navigator.sendBeacon(g):(new Image).src=g;a.sent=1}else if(a.ld){if(a.bf)g.add("ex1","1");else if(g.add("ct21",a.ct21),a.iLoadST&&g.add("ctb",a.iLoadST-a.iST),a.st1a&&g.add("st1a",a.st1a),a.aChunktimes&&a.aChunktimes.length){g.add("jslcom",a.aChunktimes.length);B="jseo jsllib1 jsllib2 jsllib3 jslpg jslss jslsys".split(" ");l=a.aChunktimes.length;for(var w=0,y;wa.wt&&this.sendBeacon(d,!0,n)}else g.add("ex2",Date.now()-a.iST),this.sendBeacon(d,!0,n)}}}({gaugeInfo:ea,cookies:ra,beacon:{add:function(k,x){return L.params[k]=x},remove:function(k){delete L.params[k]},getUrl:function(){for(var k in L.params)if(Array.isArray(L.params[k])){var x=L.params[k].indexOf(void 0);-1c&&a[c]?a[c]:""},decodeIsapi:function(a){a=a?a.split("\x26"):[];this.isapi=a.shift();this.query=a.join("\x26");this.decodeParams(this.query)},appendParam:function(a,c){var b=this.params;b[a]?"object"===typeof b[a]?b[a].push(c):b[a]=[b[a],c]:b[a]=c},appendParams:function(a){for(var c in a){var b=a[c];if("object"!==typeof b)this.appendParam(c,b);else for(var d=0;d{if(!g(b))return{"data-viewport":b}},generateViewAttribute:()=>({"data-viewport":{trackableId:k()}}),interactionAttributes:b=>{let e=[];!g(b)&&Array.isArray(b)&&b.forEach(function(a,f){"ACTN"==a.eventAction&&(g(a.eventProperty)||g(a.eventProperty.interaction)||e.push({actionKind:a.actionKind||"CLICK",interaction:a.eventProperty.interaction}))});return 0void 0===b||null==b||0>=b.length||"null"==b?!0:!1,k=b=>{const e=Math.pow(2,48)-1;isNaN(b)&&(b=Date.now());return((a,f)=>{if(isNaN(a))throw Error(a+" must be a number");if(a>e)throw Error("cannot encode time greater than "+e);if(0>a)throw Error("time must be positive");if(!1===Number.isInteger(a))throw Error("time must be an integer");let c,d="";for(;0{let c="";for(;0Math.random())}});'use strict';$_mod.def("/@ebay/tracking-interactions$1.2.0/index",function(a,c,b,d,e){b.exports=a("/@ebay/tracking-interactions$1.2.0/lib/index")});'use strict';$_mod.installed("@ebay/ux-app$7.78.8","@ebay/ux-core","6.3.1");'use strict';$_mod.main("/@ebay/ux-core$6.3.1/base/js/error-utils","");'use strict';$_mod.def("/@ebay/ux-core$6.3.1/base/js/error-utils/index",function(h,k,g,l,m){const f=()=>{const a=window.EBAY_RUM_LOGGER;return"undefined"!==typeof a&&"function"===typeof a.error&&"function"===typeof a.event?a:void 0};var c=[],d=[];g.exports={logger:{error:(...a)=>{c.push(a);const b=f();b&&(c.forEach(e=>b.error(...e)),c=[])},event:(...a)=>{d.push(a);const b=f();b&&(d.forEach(e=>b.event(...e)),d=[])}},incrementErrorCounter:a=>{window.ebay&&window.ebay.metrics&&"function"===typeof window.ebay.metrics.incrementCounter&&window.ebay.metrics.incrementCounter(a)}}});'use strict';$_mod.main("/@ebay/ux-app$7.78.8/common/js/custom-event-util","");'use strict';$_mod.def("/@ebay/ux-app$7.78.8/common/js/custom-event-util/index",function(f,g,c,h,k){const d={bubbles:!0,cancelable:!0};c.exports={dispatchCustomEvent:function(a,e={},b=d){if(!a||!document||!document.dispatchEvent||"function"!==typeof CustomEvent)return!1;b.detail=e;document.dispatchEvent(new CustomEvent(a,b));return!0}}});'use strict';$_mod.installed("@ebay/ux-app$7.78.8","lodash.get","4.4.2");'use strict';$_mod.main("/lodash.get$4.4.2","");'use strict';$_mod.def("/lodash.get$4.4.2/index",function(g,x,H,m,r){function h(a){var b=-1,d=a?a.length:0;for(this.clear();++ba)return!1;a==b.length-1?b.pop():Q.call(b,a,1);return!0};l.prototype.get=function(a){var b=this.__data__;a=p(b,a);return 0>a?void 0:b[a][1]};l.prototype.has=function(a){return-1c?d.push([a,b]):d[c][1]=b;return this};k.prototype.clear=function(){this.__data__={hash:new h,map:new (R||l),string:new h}};k.prototype["delete"]=function(a){return q(this,a)["delete"](a)};k.prototype.get=function(a){return q(this,a).get(a)};k.prototype.has=function(a){return q(this,a).has(a)};k.prototype.set=function(a,b){q(this,a).set(a,b);return this};var S=u(function(a){a=null==a?"":I(a);var b=[];N.test(a)&&b.push("");a.replace(O,function(d,c,f,e){b.push(f?e.replace(P,"$1"):c||d)});return b});u.Cache=k;var F=Array.isArray;H.exports=function(a,b,d){if(null==a)b=void 0;else{var c=b;var f=a;if(F(c))c=!1;else{var e=typeof c;c="number"==e||"symbol"==e||"boolean"==e||null==c||t(c)?!0:M.test(c)||!L.test(c)||null!=f&&c in Object(f)}b=c?[b]:F(b)?b:S(b);c=0;for(f=b.length;null!= +a&&c{a.forEach(()=>{this.getHeight()!==this.height&&this.resizeHandler()})}),this.observer.observe(this.container)):(this.subscribeTo(window).on("resize",this.resizeHandler.bind(this)),this.subscribeTo(window).on("load",this.resizeHandler.bind(this))))}unobserve(){this.container&&this.observer&&this.observer.unobserve(this.container)}postMessage(){try{const a={h:this.getHeight(),w:this.getWidth()};let b,c;null==(b=window)||null==(c=b.parent)||c.postMessage(JSON.stringify(a),"*")}catch(a){console.error(a)}}receiveMessage(a){if(a.source!==window)try{const b=JSON.parse(a.data);b.op&&"resizeIframe"===b.op&&this.postMessage()}catch(b){console.error(b)}}clickHandler(a){a=a||window.event||{};var b=a.srcElement?a.srcElement:null;a=a.target?a.target:b;b=!0;if("undefined"===typeof a.href)for(;a;)if(a=a.parentNode,null===a){b=!1;break}else if("A"===a.tagName)break;else if("FORM"===a.tagName){a.target="_blank";b=!1;break}if(b){b=a.href.toString();const c=a.target;b=b.toLowerCase();"undefined"!==typeof c||"javascript"===b.substring(0,10)||b.match(/.ebaydesc./)||"#"===b.substring(0,1)||(a.target="_blank");"undefined"===typeof c||"_blank"===c.toLowerCase()||"_top"===c.toLowerCase()||"javascript"===b.substring(0,10)||b.match(/.ebaydesc./)||"#"===b.substring(0,1)||(a.target="_blank");"javascript"===b.substring(0,10)||b.match(/.ebaydesc./)||"#"===b.substring(0,1)||f({sid:"p4429486.l2879"})}}getHeight(){return Math.max(this.container.scrollHeight,document.documentElement.offsetHeight)}getWidth(){return Math.max(this.container.scrollWidth, +document.documentElement.offsetWidth)}resizeHandler(){this.height=this.getHeight();this.postMessage()}}});'use strict';$_mod.installed("@ebay/ux-app$7.78.8","marko","4.28.5");'use strict';$_mod.remap("/marko$4.28.5/components","/marko$4.28.5/components-browser.marko");'use strict';$_mod.main("/marko$4.28.5/dist/runtime/components","");'use strict';$_mod.installed("marko$4.28.5","@internal/components-entry","0");'use strict';$_mod.main("/marko$4.28.5/dist/node_modules/@internal/components-entry","");'use strict';$_mod.remap("/marko$4.28.5/dist/node_modules/@internal/components-entry/index","/marko$4.28.5/dist/node_modules/@internal/components-entry/index-browser");'use strict';$_mod.installed("marko$4.28.5","@internal/components-registry","0");'use strict';$_mod.main("/marko$4.28.5/dist/node_modules/@internal/components-registry","");'use strict';$_mod.remap("/marko$4.28.5/dist/node_modules/@internal/components-registry/index","/marko$4.28.5/dist/node_modules/@internal/components-registry/index-browser");'use strict';$_mod.installed("marko$4.28.5","warp10","2.0.2");'use strict';$_mod.def("/warp10$2.0.2/src/constants",function(a,b,c,d,e){a="undefined"!==typeof window?window:global;b.NOOP=a.$W10NOOP=a.$W10NOOP||function(){}});'use strict';$_mod.def("/warp10$2.0.2/src/finalize",function(l,q,m,r,t){function k(b,c,d){for(var e=0;e0))?d:null},trackable:function(f){var e=$trk,d=f.tagName;if(d.match(/^a$|area/i)){return e.valid(d,d.href)}else{if(d.match(/input/)&&d.type.match(/submit/i)&&d.form){return e.valid(d,form.action)}else{return null}}},click:function(h){var f=$trk,j=f.target(h);var k,d,e,g;for(var i=null;(j&&j.tagName);j=j.parentNode){i=i||f.trackable(j);if(f.attrib(j,"_sp")){e=j;return f.clickElement(e,i)}if("A"===j.tagName){k=j}if("BUTTON"===j.tagName){d=j}if("INPUT"===j.tagName){g=j}}if(k||d||g){return f.clickElement(k||d||g,i)}},clickElement:function(e,f){var d=$trk,g=d.attrib(e,"_sp");if(g==null){g=d.pid}d.track(g.split(";")[0],f?d.attrib(f,"_l"):null)},track:function(o,g){var p=$trk,h=o.split(".");if(!o.match(/p\d+/)){h.push(p.pid)}if(g){h.push(g)}var e="";var k=p.chars((e&&(e.charAt(0)=="b"))?e:"bzzzzzzzzzzz");for(var m=0,j=h.length;(m=64);e=e/64|0){g=d[e%64]+g}g=((e>=0)?d[e]:"")+g;return g.concat("zzzz").substring(0,f)},onBody:function(d){if(d.button==0||d.button==1){$trk.click(d)}},keyDown:function(d){if(d.key==="Enter"){$trk.click(d)}},onTrack:function(e,d){var f=d.trksid;if(f){$trk.track(f,d.trklid)}},onRover:function(j,g){if(j.detail!=undefined&&j.detail!=null){g=j.detail}else{if(!g||typeof g!=="object"){return}}var f=$trk;var i=g.imp;var e=f.rover.uri+(i?f.rover.imp:f.rover.clk);var d;var h;delete g.imp;if(i){h=a(i,"&",true)}if(g){g.ts=Date.now();d=a(g,"&",true)}if(d&&d.length>0){e+=(e.indexOf("?")<0?"?":"&")+"trknvp="+d}if(h&&h.length>0){e+=(e.indexOf("?")<0?"?":"&")+"imp="+h}f.image.src=e},onPulsar:function(h,k,e){if(typeof _plsUBTTQ!=="undefined"){if((typeof k==="undefined"||k==null)&&h.detail!=null){if(Array.isArray(h.detail)){k=h.detail[0];e=h.detail[1]}else{k=h.detail}}if(typeof k!=="undefined"&&k!=null){var g=(JSON.parse(JSON.stringify(k)));var f=g.eventProperty;if(typeof e!=="undefined"&&e!=null){var i=(JSON.parse(JSON.stringify(e)));if(typeof f!=="undefined"&&f!=null){f.actionKind=i.actionKind}}if(g.eventFamily!=null&&g.eventAction!=null){if(typeof f.ciid==="undefined"&&$trk!=null){var d=$trk;var j=d.currentPSI;if(j.startsWith("A")){j=j.substring(1)}f.ciid=j}_plsUBTTQ.push(["customEvts",g.eventFamily,g.eventAction,f])}}}},trackingUpdatePSI:function(e,d){if(e.detail!=undefined&&e.detail!=null){d=e.detail}if(d&&d.psi){self.currentPSI=d.psi}if(d&&d.callback&&typeof(d.callback)=="function"){d.callback.call(self)}},addLayerPSI:function(e,d){if(e.detail!=undefined&&e.detail!=null){d=e.detail}if(d&&d.psi){self.currentPSI=self.currentPSI+d.psi}},clearLayerPSI:function(d){self.currentPSI=self.originalPSI}});window.TaaSTrackingCore=c;function a(f,e,i){if(f&&typeof f==="object"){var d=[];Object.keys(f).forEach(function h(j){d.push(j+"="+f[j])});var g=d.join(e||",");return i?encodeURIComponent(g):g}else{return i?encodeURIComponent(f):f}}})();var idmapRoverURL;function TaaSIdMapTracker(){this.roverService=function(a){if(window.location.protocol=="https:"||!a||TaaSDynamicObj.readCookie("dp1","idm")){return}idmapRoverURL=a;window.jQuery?$(window).on("load",this.sendRequest):window.addEventListener("load",this.sendRequest,false)};this.sendRequest=function(){if(idmapRoverURL.indexOf("?")>-1){idmapRoverURL+="&"}else{idmapRoverURL+="?"}idmapRoverURL+="cb=TaaSIdMapTrackerObj.handleResponse";idmapRoverURL=encodeURI(idmapRoverURL)+"&cache="+Math.random();var a=document.createElement("script");a.setAttribute("src",idmapRoverURL);a.setAttribute("type","text/javascript");document.body.appendChild(a)};this.setCookieExpiration=function(a){if(typeof a=="number"&&a>0){TaaSDynamicObj.writeCookielet("dp1","idm","1",a/86400,"")}};this.handleResponse=function(c){if(c&&c.length>1){var b=c.length-1;for(var a=0;a1){var b=document.createElement("IMG");b.width="1";b.height="1";b.src=a;b.alt="";document.body.appendChild(b)}}}var tracking=tracking||(function(){return{}})();tracking.roversync=(tracking.roversync&&QUnit===undefined)||(function(){var d="1.3";var a=2;var f;var p=Date.now();var g;var j;var u;var o=window.location.hostname;var t;var n;var b;var e;var c;function h(x){var y;if(window.XMLHttpRequest){y=new window.XMLHttpRequest()}else{y=new ActiveXObject("Microsoft.XMLHTTP")}y.withCredentials=false;y.open("GET",x,true);y.send("")}function v(x){if(x==null||x===undefined){return false}return((x.naturalWidth==1&&x.naturalHeight==1)||(x.width==1&&x.height==1))}function w(y){if(y==null){return null}var z=encodeURIComponent;var A="host="+y.hostname+"&ifm="+y.imgFindMethod+"&hasImg ="+y.hasImg+"&hasNons="+(y.nonsession!=null)+"&hasNpii="+(y.npii!=null)+"&hasSess="+(y.s!=null)+"&nonSess="+z(y.nonsession)+"&npii="+z(y.npii)+"&ris="+y.roversyncImgStatus+"&s="+z(y.s)+"&winLoc="+z(y.winLoc);var x="/?_trkparms="+z(A);return x}function s(E){var C=E+"=";var z=document.cookie.split(";");for(var B=0;B36){throw new Error("illegal radix "+e+".")}if(this._s===0){return"0"}if(e===10){return(this._s<0?"-":"")+(this._d.slice().reverse().join("")||"0")}else{var b=BigInteger.digits;e=BigInteger(e);var a=this._s;var g=this.abs();var d=[];var f;while(g._s!==0){var c=g.divRem(e);g=c[0];f=c[1];d.push(b[f])}return(a<0?"-":"")+d.reverse().join("")}};BigInteger.parse=function(n,a){function j(d){d=d.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/,"e");return d.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/,function(y,A,p,u,v){v=+v;var q=v<0;var t=p.length+v;y=(q?p:u).length;v=((v=Math.abs(v))>=y?v-y+q:0);var w=(new Array(v+1)).join("0");var o=p+u;return(A||"")+(q?o=w+o:o+=w).substr(0,t+=q?w.length:0)+(t36){throw new Error("Illegal radix "+a+".")}}a=+a;if(!(BigInteger.radixRegex[a].test(b))){throw new Error("Bad digit for radix "+a)}b=b.replace(/^0+/,"").split("");if(b.length===0){return BigInteger.ZERO}c=(c==="-")?-1:1;if(a===10){var k=b.length;var m=new Array(k);for(var h=0;hf){k=j;f=d}for(var e=m;l&&ee){return 1}}var d=this._d;var c=h._d;for(var g=f-1;g>=0;g--){if(d[g]!==c[g]){return d[g]=d._d.length);var q=(c?this:d)._d;var p=(c?d:this)._d;var l=q.length;var e=p.length;var g=l+e;var m=new Array(g);for(var k=0;k9){return new BigInteger([(k%10)|0,(k/10)|0],1)}b[c]=BigInteger.small[k];return b[c]}if(c===2){b[c]=this.add(this);return b[c]}if(this.isUnit()){b[c]=BigInteger.small[c];return b[c]}var l=this._d;var g=l.length;var d=g+1;var h=new Array(d);for(var f=0;f9){throw new Error("Argument out of range")}if(this._s===0){return[BigInteger.ZERO,BigInteger.ZERO]}if(f===1||f===-1){return[(g===1)?this.abs():new BigInteger(this._d,g),BigInteger.ZERO]}if(this._d.length===1){var b=BigInteger.small[(this._d[0]/f)|0];var a=BigInteger.small[(this._d[0]%f)|0];if(g<0){b=b.negate()}if(this._s<0){a=a.negate()}return[b,a]}var d=this._d.slice();var h=new Array(d.length);var e=0;var l=0;var j=0;while(d.length){e=e*10+d[d.length-1];if(e0};BigInteger.prototype.isNegative=function(){return this._s<0};BigInteger.prototype.modPow=function(d,b){var a=BigInteger.ONE;var c=this;while(d.isPositive()){if(d.isOdd()){a=a.multiply(c).remainder(b)}d=d.divide(BigInteger.small[2]);if(d.isPositive()){c=c.square().remainder(b)}}return a};BigInteger.prototype.valueOf=function(){return parseInt(this.toString(),10)};BigInteger.MAX_EXP=BigInteger(2147483647);function MD5Hash(u){function s(a,b){return(a<>>(32-b))}function L(k,b){var F,a,d,x,c;d=(k&2147483648);x=(b&2147483648);F=(k&1073741824);a=(b&1073741824);c=(k&1073741823)+(b&1073741823);if(F&a){return(c^2147483648^d^x)}if(F|a){if(c&1073741824){return(c^3221225472^d^x)}else{return(c^1073741824^d^x)}}else{return(c^d^x)}}function r(a,c,b){return(a&c)|((~a)&b)}function q(a,c,b){return(a&b)|(c&(~b))}function p(a,c,b){return(a^c^b)}function n(a,c,b){return(c^(a|(~b)))}function v(G,F,aa,Z,k,H,I){G=L(G,L(L(r(F,aa,Z),k),I));return L(s(G,H),F)}function f(G,F,aa,Z,k,H,I){G=L(G,L(L(q(F,aa,Z),k),I));return L(s(G,H),F)}function E(G,F,aa,Z,k,H,I){G=L(G,L(L(p(F,aa,Z),k),I));return L(s(G,H),F)}function t(G,F,aa,Z,k,H,I){G=L(G,L(L(n(F,aa,Z),k),I));return L(s(G,H),F)}function e(k){var G;var d=k.length;var c=d+8;var b=(c-(c%64))/64;var F=(b+1)*16;var H=Array(F-1);var a=0;var x=0;while(x>>29;return H}function C(c){var b="",d="",k,a;for(a=0;a<=3;a++){k=(c>>>(a*8))&255;d="0"+k.toString(16);b=b+d.substr(d.length-2,2)}return b}function K(b){b=b.replace(/\r\n/g,"\n");var a="";for(var k=0;k127)&&(d<2048)){a+=String.fromCharCode((d>>6)|192);a+=String.fromCharCode((d&63)|128)}else{a+=String.fromCharCode((d>>12)|224);a+=String.fromCharCode(((d>>6)&63)|128);a+=String.fromCharCode((d&63)|128)}}}return a}var D=Array();var P,h,J,w,g,Y,X,W,V;var S=7,Q=12,N=17,M=22;var B=5,A=9,z=14,y=20;var o=4,m=11,l=16,j=23;var U=6,T=10,R=15,O=21;string=K(u);D=e(u);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P0){var c=new MD5Hash(b).get16Bits();var a=BigInteger.parse(c,16);this._guidHash=a.modPow(BigInteger.ONE,1000)}}return this._guidHash},isInSampling:function(c){if(c==100){return true}var d=CGuidHash.getMod1000();var e=Math.floor(parseFloat(c*10));var a=(d<0||d>=e)?false:true;return a}};var JSON=JSON||{};JSON.stringify=JSON.stringify||function(e){var d=typeof(e);if(e===undefined){return undefined}if(d!="object"||e===null){if(d=="string"){e='"'+e+'"'}return String(e)}else{var f,b,c=[],a=(e&&e.constructor==Array);for(f in e){b=e[f];d=typeof(b);if(d!="function"&&d!="undefined"){if(d=="string"){b='"'+b+'"'}else{if(d=="object"){b=JSON.stringify(b)}}c.push((a?"":'"'+f+'":')+String(b))}}return(a?"[":"{")+String(c)+(a?"]":"}")}};var _plsUBTCookies;if(typeof _plsUBTCookiesObj!=="undefined"){_plsUBTCookies=new _plsUBTCookiesObj()}else{if(typeof raptor!=="undefined"){_plsUBTCookies=raptor.require("ebay.cookies")}}function TrackingQueue(){var a=0;this.getLength=function(b){return(b.length-a)};this.isEmpty=function(b){return(b.length==0)};this.pop=function(h,j){var c=h.getLength(j);var d=0;if(_plsubtInp.isInSampling){for(d=0;d-1){g.lurl=f[1]}else{g.lnk=f[1]}g.clkType=f[0];g.eventOrder=d;g.difTS=f[2];_plsUBTpld.push(g)}if(f[0]=="MSOV"){var e=new _plsLinkMOInp();if(isNaN(f[1])&&f[1].indexOf("www.")>-1){e.lurl=f[1]}else{e.lnk=f[1]}e.eventOrder=d;e.difTS=f[2];_plsUBTpld.push(e)}if(f[0]=="customEvts"){var b=new _plsCustomEventsInp();b.ef=f[1];b.ea=f[2];b.eventOrder=d;b=mergeJSONObjectPlsUBT(b,f[3]);b.difTS=f[4];_plsUBTpld.push(b)}}}j.splice(0,c)}}_plsUBTTQ.push=function(){var c=arguments[0];if(c[0]!="trackImp"){c.push(new Date().getTime())}if(typeof $trk!=="undefined"&&$trk.currentPSI&&c.length>3){const a=c[3];if(a&&!a.ciid){var b=$trk.currentPSI;if(b.startsWith("A")){b=b.substring(1)}a.ciid=b}}return Array.prototype.push.apply(this,arguments)};getplsUBTAllReq=function(){if(_plsubtInp.pageId==undefined||_plsubtInp.pageId==0){console.error("pageId is not available in _plsubtInp.");return false}else{return true}};var plsUBTAllReq=getplsUBTAllReq();trackImpression=function(){var b={plsUBT:_plsubtInp.plsUBT,ea:"VIEW",pge:_plsubtInp.pageId,app:_plsubtInp.app,scrv:_plsubtInp.resolut,scrColDep:_plsubtInp.scrColDep,tiZone:_plsubtInp.tiZone,sampRate:_plsubtInp.samplingRate,steSpd:_plsubtInp.steSpd};b=mergeJSONObjectPlsUBT(b,_plsubtInp.customAttribute);if(!_plsubtInp.disableImp&&_plsubtInp.isInSampling&&plsUBTAllReq){var c=_plsubtInp.URLTemplate+"pld="+encodeURIComponent("["+JSON.stringify(b)+"]");var a=new Image();a.src=c}};var _plsLinkClickInp=function(){return{ea:"CLCK",lnk:"",pge:_plsubtInp.pageId,clkType:"",plsUBT:1,lurl:"",app:_plsubtInp.app,eventOrder:0,difTS:0}};var _plsUBTpld=[];var _plsLinkMOInp=function(){return{ea:"HOVR",lnk:"",pge:_plsubtInp.pageId,plsUBT:1,lurl:"",app:_plsubtInp.app,difTS:0,eventOrder:0}};var _plsCustomEventsInp=function(){return{ef:"",ea:"",pge:_plsubtInp.pageId,plsUBT:1,app:_plsubtInp.app,callingEF:_plsubtInp.eventFamily,difTS:0,eventOrder:0}};_plsubtInp.samplingRate=_plsubtInp.samplingRate==null?5:_plsubtInp.samplingRate;_plsubtInp.env=_plsubtInp.env==null?"PROD":_plsubtInp.env;_plsubtInp.disableImp=_plsubtInp.disableImp==null?false:_plsubtInp.disableImp;if(_plsubtInp.eventFamily==null){_plsubtInp.eventFamily="DFLT"}getPlsUBTBrowser=function(b){var a=tracking.pulsarjs.getPlsUBTBrowser2(b);return a.name};_plsubtInp.browser=getPlsUBTBrowser();_plsubtInp.browser2=tracking.pulsarjs.getPlsUBTBrowser2();_plsubtInp.plsUBT=1;_plsubtInp.resolut=screen.width+"x"+screen.height;_plsubtInp.scrColDep=screen.colorDepth;_plsubtInp.tiZone=(new Date().getTimezoneOffset()/60).toString();isPlsUBTInSampling=function(){var a=false;if(_plsubtInp.samplingRate!=0){try{a=(CGuidHash.isInSampling(_plsubtInp.samplingRate))?true:false}catch(b){isInSampg=true}}return a};_plsubtInp.isInSampling=isPlsUBTInSampling();String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1};mergeJSONObjectPlsUBT=function(a,c){for(var b in c){a[b]=c[b]}return a};function PlsUBTURLTemplate(h,j,l){var b="";if(h.serverUrl!=null){b=h.serverUrl}else{var m;var g=h.env=="qa"||j.indexOf(".qa.")>-1;var n=h.env=="preprod"||j.indexOf(".pp.")>-1;if(g||n){var k=null;if(g){m="www.pulsar.stratus.qa.ebay.com";k="qa"}else{if(n){m="www.pulsproxy.pp.stratus.ebay.com";k="pp"}}var a=["at","au","be","ca","ch","cn","cz","de","dk","es","fi","fr","gr","hk","hu","ie","in","it","my","nl","no","ph","pl","pt","ru","sg","th","uk"];for(var f=0;f-1){if(g){m="www."+c+".pulsar.stratus."+k+".ebay.com"}else{if(n){m="www."+c+".pulsproxy."+k+".stratus.ebay.com"}}break}}}else{m="pulsar.ebay.com";var e=["ebay.com.au","ebay.at","benl.ebay.be","befr.ebay.be","cafr.ebay.ca","ebay.ca","ebay.fr","ebay.de","ebay.com.cn","ebay.com.hk","ebay.in","ebay.ie","ebay.it","ebay.com.my","ebay.nl","ebay.ph","ebay.pl","ebay.com.sg","ebay.es","ebay.ch","ebay.co.th","ebay.co.uk","ebay.vn"];for(var f=0;f0)){a=((new Date().getTime())-_plsubtInp.pageLoadTime)}else{if(window.performance.timing!=null){a=window.performance.timing.connectEnd-window.performance.timing.connectStart}}return a};_plsubtInp.steSpd=steSpdPlsUBT();window._plsUBTTQ.push(["trackImp"]);_plsUBTtaq=new TrackingQueue();_plsUBTtaq.pop(_plsUBTtaq,window._plsUBTTQ);var _plsUBTPPURL="";function sendBeacon(a,b){if(navigator.sendBeacon){navigator.sendBeacon(a,b);return true}else{return false}}function firePulsarProxyURL(a){_plsUBTPPURL=_plsubtInp.URLTemplate;var d="[";plsUBTDebug("Initial event queue size: "+_plsUBTpld.length);if(_plsUBTpld.length>100&&new URLSearchParams(window.location.search).get("_showdiag")){console.warn("Pulsar event queue is too large: "+_plsUBTpld.length)}for(var c=0;c<_plsUBTpld.length;c++){_plsUBTpld[c].difTS=new Date().getTime()-_plsUBTpld[c].difTS;var e=JSON.stringify(_plsUBTpld[c]);d=d+e;if(c!=_plsUBTpld.length-1){d=d+", "}}d=d+"]";_plsUBTPPURL=_plsUBTPPURL;plsUBTDebug("Call URL: "+_plsUBTPPURL);if(d.length>50000&&new URLSearchParams(window.location.search).get("_showdiag")){console.warn("Pulsar payload is too large: "+d.length)}var b=getBrowserNameAndVersion();if(navigator.sendBeacon){if(b.name.toUpperCase()=="SAFARI"){if(b.version>=11){sendBeacon(_plsUBTPPURL,d)}else{plsUBTAjaxCall(a,_plsUBTPPURL,d)}}else{sendBeacon(_plsUBTPPURL,d)}}else{plsUBTAjaxCall(a,_plsUBTPPURL,d)}}function getBrowserNameAndVersion(){var b=navigator.userAgent,a,c=b.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];if(/trident/i.test(c[1])){a=/\brv[ :]+(\d+)/g.exec(b)||[];return{name:"IE",version:(a[1]||"")}}if(c[1]==="Chrome"){a=b.match(/\bOPR|Edge\/(\d+)/);if(a!=null){return{name:"Opera",version:a[1]}}}c=c[2]?[c[1],c[2]]:[navigator.appName,navigator.appVersion,"-?"];if((a=b.match(/version\/(\d+)/i))!=null){c.splice(1,1,a[1])}return{name:c[0],version:c[1]}}firePulsarProxyURLAsImg=function(){for(var c=0;c<_plsUBTpld.length;c++){_plsUBTpld[c].difTS=new Date().getTime()-_plsUBTpld[c].difTS;var b=_plsubtInp.URLTemplate+"pld="+encodeURIComponent("["+JSON.stringify(_plsUBTpld[c])+"]");var a=new Image();a.src=b}};function postPlsUBTCALL(a){if(_plsubtInp.isInSampling&&plsUBTAllReq){_plsUBTtaq.pop(_plsUBTtaq,window._plsUBTTQ);if(_plsUBTpld.length!=0){firePulsarProxyURL(a);plsUBTDebug("Setting event queue size to 0.");_plsUBTpld.length=0;plsUBTDebug("Final event queue size: "+_plsUBTpld.length)}}}function sendWait(a){if(a==undefined||a==null||a.sendWait==undefined||a.sendWait==null||isNaN(a.sendWait)){return 60000}else{if(a.sendWait<10000){return 10000}else{return a.sendWait}}}window.addEventListener("visibilitychange",function doPost(){_unloadAppCallbackHandler.invokeCallbacks();postPlsUBTCALL(true)});if(_plsubtInp.browser2.name==="safari"){window.addEventListener("pagehide",function doPost(){_unloadAppCallbackHandler.invokeCallbacks();postPlsUBTCALL(true)})}setInterval(function(){postPlsUBTCALL(false)},sendWait(_plsubtInp));function plsUBTAjaxCall(b,a,g){var f=null;if(window.XDomainRequest){f=new window.XDomainRequest()}if(f==null){if(window.XMLHttpRequest){f=new window.XMLHttpRequest()}else{f=new ActiveXObject("Microsoft.XMLHTTP")}}var c=a+"?cache="+Math.random();if("withCredentials" in f){f.withCredentials=true}else{var d=new Image();d.src=c;return}var e;if(b){e=false}else{e=true}f.open("POST",c,e);if(_plsubtInp.browser2.name=="chrome"||_plsubtInp.browser2.name=="safari"){f.setRequestHeader("Content-type","application/json")}f.send(g)}function plsUBTDebug(a){if(_plsubtInp.debug){console.log(a)}}function AppCallbackHandler(){this.callbacks=[];this.registerCallback=function(a){this.callbacks.push(a)};this.clearCallbacks=function(){this.callbacks=[]};this.invokeCallbacks=function(){this.callbacks.forEach(function(b){try{b()}catch(a){}});this.clearCallbacks()}}var _unloadAppCallbackHandler=new AppCallbackHandler();_plsubtInp.registerUnloadCallback=function(a){_unloadAppCallbackHandler.registerCallback(a)}; \ No newline at end of file diff --git a/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay.html b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay.html new file mode 100644 index 0000000..03641c7 --- /dev/null +++ b/tests/html/KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 _ eBay.html @@ -0,0 +1,808 @@ +KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10 | eBay +
|Listed in category:
Have one to sell?

KAMRUI Mini PC Core i7-10710U 1.1GHz 16GB 512GB UHD Graphics CK10

US $158.06
Was US $169.96 (7% off)What does this price mean?
Recent sales price provided by the seller
No Interest if paid in full in 6 mo on $149+ with PayPal Credit*
Condition:
Used
4 of 5. This item is gently used. The item shows minor signs of wear and tear including scuff marks ... Read moreabout condition
Sale ends in: 8h 52m

Additional service available

Hurry before it's gone. 1 person is watching this item.
Shipping:
US $10.43 UPS Ground.
Located in: Canton, Georgia, United States
Delivery:
Estimated between Wed, Nov 27 and Fri, Nov 29 to 11225
Delivery time is estimated using our proprietary method which is based on the buyer's proximity to the item location, the shipping service selected, the seller's shipping history, and other factors. Delivery times may vary, especially during peak periods.
Returns:
30 days returns. Seller pays for return shipping.
Payments:
     Diners Club
*No Interest if paid in full in 6 months on $149+. See terms and apply now- for PayPal Credit, opens in a new window or tab
Earn up to 5x points when you use your eBay Mastercard®. Learn moreabout earning points with eBay Mastercard

Shop with confidence

Top Rated Plus
Top rated seller, fast shipping, and free returns. Learn more- Top Rated Plus - opens in a new window or tab
eBay Money Back Guarantee
Get the item you ordered or your money back. Learn moreeBay Money Back Guarantee - opens new window or tab
+
Seller assumes all responsibility for this listing.
eBay item number:276620722441
Last updated on Oct 29, 2024 06:49:36 PDTView all revisionsView all revisions

Item specifics

Condition
Used
An item that has been used previously. The item may have some signs of cosmetic wear, but is fully operational and functions as intended. This item may be a floor model or store return that has been used. See the seller’s listing for full details and description of any imperfections. See all condition definitionsopens in a new window or tab
Seller Notes
“4 of 5. This item is gently used. The item shows minor signs of wear and tear including scuff marks ...
Brand
KAMRUI
Type
Desktop PCs
Processor
Core i7-10710U
Screen Size
in
RAM Size
16 GB
Model
CK10
MPN
CK10
SSD Capacity
512 GB
Processor Speed
1.1 GHz

Item description from the seller

About this seller

jaybrokers

99.6% positive feedback60K items sold

Joined Oct 2000
Usually responds within 24 hours
Jay Brokers is a family owned and operated risk-free secondhand marketplace. Our inventory features an eclectic range of items purchased from our customers ranging from gadgets and guitars to cameras ...
See more

Detailed seller ratings

Average for the last 12 months
Accurate description
4.9
Reasonable shipping cost
4.8
Shipping speed
5.0
Communication
5.0

Seller feedback (19,658)

  • h***0 (1023)- Feedback left by buyer.
    Past 6 months
    Verified purchase
    Great price and very detailed description. Item was well-packaged/protected and shipped soon after purchase was made. I did end up returning my purchase but the process was very smooth. The seller's response and refund were very prompt. I plan on purchasing again from this seller in the future.
  • e***o (15)- Feedback left by buyer.
    Past year
    Verified purchase
    Item was in great condition - as described and at a better price than other sellers (even with the shipping cost)! Item was also packaged very well. Great communication when shipping. They seem like a business with integrity, and I would definitely recommend this seller!
  • a***n (362)- Feedback left by buyer.
    Past 6 months
    Verified purchase
    This was the best deal on eBay for an unopen Motorola Razr+ 2024. Item was as described and easy to activate with no issues with my carrier. Fast shipping and the product packing was excellent. Seller responded to text and emails in a prompt manner. Will save seller as favorite and purchase again with this buyer.
Feedback
+ + \ No newline at end of file