├── wix ├── ahmed.log ├── banner.png ├── dialog.png ├── License.rtf └── main.wxs ├── .gitignore ├── testfiles ├── bad_forkbomb.txt ├── good.txt └── bad_eicar.txt ├── src ├── Ahmed.ico ├── Ahmed.png └── main.rs ├── showcase ├── bad.png ├── good.png └── context_menu.png ├── .cargo └── config.toml ├── Cargo.toml ├── LICENSE ├── README.md └── Cargo.lock /wix/ahmed.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /testfiles/bad_forkbomb.txt: -------------------------------------------------------------------------------- 1 | %0|%0|%0 -------------------------------------------------------------------------------- /testfiles/good.txt: -------------------------------------------------------------------------------- 1 | This is just a file 2 | -------------------------------------------------------------------------------- /src/Ahmed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/src/Ahmed.ico -------------------------------------------------------------------------------- /src/Ahmed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/src/Ahmed.png -------------------------------------------------------------------------------- /wix/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/wix/banner.png -------------------------------------------------------------------------------- /wix/dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/wix/dialog.png -------------------------------------------------------------------------------- /showcase/bad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/showcase/bad.png -------------------------------------------------------------------------------- /showcase/good.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/showcase/good.png -------------------------------------------------------------------------------- /testfiles/bad_eicar.txt: -------------------------------------------------------------------------------- 1 | X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* -------------------------------------------------------------------------------- /showcase/context_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ErmitaVulpe/ask-ahmed/HEAD/showcase/context_menu.png -------------------------------------------------------------------------------- /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [target.x86_64-pc-windows-msvc] 2 | rustflags = ["-C", "target-feature=+crt-static"] 3 | 4 | [target.i686-pc-windows-msvc] 5 | rustflags = ["-C", "target-feature=+crt-static"] 6 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ask-ahmed" 3 | version = "1.1.0" 4 | edition = "2024" 5 | license = "MIT" 6 | authors = ["Tymon Wilczek "] 7 | 8 | [profile.release] 9 | codegen-units = 1 10 | lto = true 11 | strip = true 12 | 13 | [dependencies] 14 | anyhow = "1.0.98" 15 | flexi_logger = "0.30.2" 16 | hex = "0.4.3" 17 | log = { version = "0.4.27",features = ["release_max_level_info"] } 18 | native-windows-derive = "1.0.5" 19 | native-windows-gui = "1.0.13" 20 | reqwest = { version = "0.12.20", default-features = false, features = [ 21 | "blocking", 22 | "charset", 23 | "http2", 24 | "multipart", 25 | "native-tls", 26 | "stream", 27 | "system-proxy" 28 | ]} 29 | rust-ini = "0.21.1" 30 | serde = { version = "1.0.219", features = ["derive"] } 31 | serde_json = "1.0.140" 32 | sha2 = "0.10.9" 33 | winapi = "0.3" 34 | 35 | [build-dependencies] 36 | embed-manifest = "1.4.0" 37 | windows_exe_info = "0.5.2" 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 ErmitaVulpe 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /wix/License.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 Courier New;}} 2 | {\*\generator Riched20 10.0.15063}\viewkind4\uc1 3 | \pard\sa180\fs24\lang9 Copyright (c) 2025 Tymon Wilczek\par 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\par 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\par 6 | \f1 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\f0\par 7 | } 8 | 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ask Ahmed 2 | 3 | A Handy little buddy to ask if a file is ok 4 | Heavily inspired by [this reddit post](https://www.reddit.com/r/thomastheplankengine/comments/1l5zf4e/i_recreated_usignbear999s_ahmed_program_dream/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button) 5 | 6 | # Installation 7 | 8 | Go to the [Releases](https://github.com/ErmitaVulpe/ask-ahmed/releases) page, download the latest installer and run it 9 | 10 | # Uninstalling 11 | 12 | To uninstall go to: 13 | Settings > Apps > Apps & features 14 | Search for `ask-ahmed` and press `Uninstall` 15 | 16 | # Changing the API key 17 | 18 | Go to the installation folder (by default `C:\Program Files\ask-ahmed`) and edit the `settings.ini` file 19 | 20 | # Compiling 21 | 22 | To compile the program yourself, install the Rust compiler toolchain ([available here](https://www.rust-lang.org/tools/install)), and then run the following commands 23 | ```sh 24 | git clone https://github.com/ErmitaVulpe/ask-ahmed 25 | cd ask-ahmed 26 | cargo b -r 27 | ``` 28 | The compiled program will be at `target/release/ask-ahmed.exe` 29 | 30 | ## Generating the installer 31 | 32 | To generate the installer you will need the `Wix toolset v3` which you can download [here](https://github.com/wixtoolset/wix3/releases), and the cargo-wix tool 33 | ```sh 34 | # To download cargo-wix 35 | cargo install cargo-wix 36 | 37 | # Then to compile 38 | cargo wix 39 | ``` 40 | The compiled installer will be inside of `target/wix/` 41 | 42 | # Showcase 43 | 44 | ![Context menu](https://github.com/ErmitaVulpe/ask-ahmed/blob/master/showcase/context_menu.png "Context menu") 45 | 46 | ![Bad](https://github.com/ErmitaVulpe/ask-ahmed/blob/master/showcase/bad.png "Bad") 47 | 48 | ![Good](https://github.com/ErmitaVulpe/ask-ahmed/blob/master/showcase/good.png "Good") 49 | 50 | # License 51 | 52 | This project is licensed under the MIT License — see the [LICENSE](https://github.com/ErmitaVulpe/ask-ahmed/blob/master/LICENSE) file for details 53 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 2 | 3 | use std::{ 4 | cell::RefCell, 5 | env, fs, 6 | io::{self, BufReader, Read, Write}, 7 | thread::{self, sleep}, 8 | time::Duration, 9 | }; 10 | 11 | use native_windows_derive as nwd; 12 | use native_windows_gui as nwg; 13 | 14 | use anyhow::{Context, Error as AnyError, Result as AnyResult}; 15 | use log::{Record, debug, error, info, warn}; 16 | use nwd::NwgUi; 17 | use nwg::NativeUi; 18 | use serde::Deserialize; 19 | use serde_json::Value; 20 | use sha2::{Digest, Sha256}; 21 | use winapi::um::wingdi::{ 22 | CombineRgn, CreatePen, CreatePolygonRgn, CreateRectRgn, CreateRoundRectRgn, CreateSolidBrush, 23 | DeleteObject, FillRgn, FrameRgn, PS_SOLID, RGB, RGN_OR, SelectObject, WINDING, 24 | }; 25 | 26 | #[derive(Default, NwgUi)] 27 | pub struct BasicApp { 28 | #[nwg_control( size: (400, 270), center: true, title: "Ahmed", icon: load_icon().as_ref(), flags: "WINDOW|VISIBLE" )] 29 | #[nwg_events( OnInit: [Self::main], OnWindowClose: [Self::exit], OnPaint: [Self::paint_bubble(SELF, EVT_DATA)] )] 30 | window: nwg::Window, 31 | 32 | #[nwg_control( bitmap: load_ahmed_img().as_ref(), size: (140, 150), position: (230, 40) )] 33 | image: nwg::ImageFrame, 34 | 35 | #[nwg_control( text: "hold up", size: (145, 150), position: (30, 35), background_color: Some([255,255,224]), font: build_font().as_ref(), flags: "MULTI_LINE|VISIBLE" )] 36 | text: nwg::RichLabel, 37 | 38 | #[nwg_control] 39 | #[nwg_events( OnNotice: [Self::display_result] )] 40 | request_notice: nwg::Notice, 41 | request_result: RefCell>>>, 42 | 43 | #[nwg_control( text: "OK", size: (80, 25), position: (160, 220) )] 44 | #[nwg_events( OnButtonClick: [Self::exit] )] 45 | hello_button: nwg::Button, 46 | } 47 | 48 | impl BasicApp { 49 | fn main(&self) { 50 | let sender = self.request_notice.sender(); 51 | info!("Starting the request thread"); 52 | *self.request_result.borrow_mut() = Some(thread::spawn(move || { 53 | let task = || -> AnyResult> { 54 | info!("Getting upload file path"); 55 | let upload_file_path = if let Some(path) = env::args().nth(1) { 56 | path 57 | } else { 58 | warn!("Path arg not specified"); 59 | return Ok(Box::from("the fuck you want")); 60 | }; 61 | 62 | info!("Getting file metadata"); 63 | let upload_meta = fs::metadata(&upload_file_path)?; 64 | if !upload_meta.is_file() { 65 | warn!("Item specified for checking is not a file"); 66 | return Ok(Box::from("bruh this ain a file")); 67 | } 68 | 69 | let upload_file = fs::File::open(&upload_file_path)?; 70 | let upload_file_hash = { 71 | let mut reader = BufReader::new(&upload_file); 72 | let mut hasher = Sha256::new(); 73 | let mut buffer = [0u8; 4096]; 74 | 75 | loop { 76 | let n = reader.read(&mut buffer)?; 77 | if n == 0 { 78 | break; 79 | } 80 | hasher.update(&buffer[..n]); 81 | } 82 | 83 | hex::encode(&hasher.finalize()[..]) 84 | }; 85 | 86 | info!("Opening settings.ini"); 87 | let mut settings_path = env::current_exe()?; 88 | settings_path.set_file_name("settings.ini"); 89 | let conf = ini::Ini::load_from_file(settings_path)?; 90 | let apikey = conf 91 | .section(Some("Settings")) 92 | .and_then(|v| v.get("APIKEY")) 93 | .context("settings.ini is invalid")?; 94 | 95 | let client = reqwest::blocking::Client::builder() 96 | .use_native_tls() 97 | .build() 98 | .context("Failed to build a http client")?; 99 | 100 | info!("Trying to get analysis stats by the hash"); 101 | let response = client 102 | .get(format!( 103 | "https://www.virustotal.com/api/v3/files/{upload_file_hash}" 104 | )) 105 | .header("accept", "application/json") 106 | .header("x-apikey", apikey) 107 | .send()?; 108 | 109 | if response.status().is_success() { 110 | info!("Analysis found by hash"); 111 | let v: Value = serde_json::from_str( 112 | &response.text().context("Server sent invalid data")?, 113 | )?; 114 | let msg = v 115 | .get("data") 116 | .and_then(|v| v.get("attributes")) 117 | .and_then(|v| v.get("last_analysis_stats")) 118 | .and_then(|v| serde_json::from_value::(v.to_owned()).ok()) 119 | .context("Server sent invalid data")? 120 | .score(); 121 | return Ok(Box::from(msg)); 122 | } else { 123 | info!("Analysis NOT found by hash"); 124 | } 125 | 126 | info!("Checking file size"); 127 | // 32MB as specifed by https://docs.virustotal.com/reference/files-scan 128 | let upload_url = if upload_meta.len() > 32_000_000 { 129 | info!("File is larger than 32MB, requesting upload url"); 130 | let response = client 131 | .get("https://www.virustotal.com/api/v3/files/upload_url") 132 | .header("accept", "application/json") 133 | .header("x-apikey", apikey) 134 | .send()?; 135 | let status = response.status(); 136 | if !status.is_success() { 137 | return Err(AnyError::msg(format!( 138 | "Server sent a wrong response: {status}" 139 | ))); 140 | } 141 | let v: Value = serde_json::from_str( 142 | &response.text().context("Server sent invalid data")?, 143 | )?; 144 | v.get("data") 145 | .and_then(|v| v.as_str()) 146 | .context("Server sent invalid data")? 147 | .to_string() 148 | } else { 149 | "https://www.virustotal.com/api/v3/files".to_string() 150 | }; 151 | 152 | info!("Creating upload form"); 153 | // TODO change .file to .part with Part::reader 154 | let upload_form = 155 | reqwest::blocking::multipart::Form::new().file("file", &upload_file_path)?; 156 | 157 | info!("Uploading the file"); 158 | let response = client 159 | .post(upload_url) 160 | .header("accept", "application/json") 161 | .header("x-apikey", apikey) 162 | .multipart(upload_form) 163 | .send()?; 164 | let status = response.status(); 165 | if !status.is_success() { 166 | return Err(AnyError::msg(format!( 167 | "Server responded with code: {status}" 168 | ))); 169 | } 170 | let v: Value = 171 | serde_json::from_str(&response.text().context("Server sent invalid data")?)?; 172 | let analysis_id = v 173 | .get("data") 174 | .and_then(|v| v.get("id")) 175 | .and_then(|v| v.as_str()) 176 | .context("Server sent invalid data")?; 177 | 178 | info!("Waiting for analysis to complete"); 179 | let response_content = loop { 180 | let response = client 181 | .get(format!( 182 | "https://www.virustotal.com/api/v3/analyses/{analysis_id}" 183 | )) 184 | .header("accept", "application/json") 185 | .header("x-apikey", apikey) 186 | .send()?; 187 | 188 | let status = response.status(); 189 | if !status.is_success() { 190 | return Err(AnyError::msg(format!( 191 | "Server sent a wrong response: {status}" 192 | ))); 193 | } 194 | 195 | let v: Value = serde_json::from_str(&response.text()?)?; 196 | let status = v 197 | .get("data") 198 | .and_then(|v| v.get("attributes")) 199 | .and_then(|v| v.get("status")) 200 | .and_then(|v| v.as_str()) 201 | .context("Server sent invalid data")?; 202 | debug!("Analysis: {status}"); 203 | if status == "completed" { 204 | break v; 205 | } 206 | sleep(Duration::from_secs(1)); 207 | }; 208 | 209 | info!("Reading analysis results"); 210 | let msg = response_content 211 | .get("data") 212 | .and_then(|v| v.get("attributes")) 213 | .and_then(|v| v.get("stats")) 214 | .and_then(|v| serde_json::from_value::(v.to_owned()).ok()) 215 | .context("Server sent invalid data")? 216 | .score(); 217 | Ok(Box::from(msg)) 218 | }; 219 | 220 | let result = task().unwrap_or_else(|e| { 221 | error!("Encountered an error: {e}"); 222 | Box::from("idk") 223 | }); 224 | info!("Request thread finished"); 225 | sender.notice(); 226 | result 227 | })); 228 | } 229 | 230 | fn display_result(&self) { 231 | if let Some(handle) = self.request_result.borrow_mut().take() { 232 | let request_result = handle.join().unwrap(); 233 | self.text.set_text(&request_result); 234 | } 235 | } 236 | 237 | fn paint_bubble(&self, data: &nwg::EventData) { 238 | use winapi::shared::windef::POINT as P; 239 | 240 | let paint = data.on_paint(); 241 | let ps = paint.begin_paint(); 242 | let hdc = ps.hdc; 243 | 244 | unsafe { 245 | // Setup pen and brush 246 | let pen = CreatePen(PS_SOLID as i32, 2, RGB(0, 0, 0)); 247 | let brush = CreateSolidBrush(RGB(255, 255, 224)); 248 | 249 | // Create regions 250 | let bubble = CreateRoundRectRgn(20, 25, 185, 195, 20, 20); 251 | let mut pts = [ 252 | P { x: 180, y: 90 }, 253 | P { x: 220, y: 90 }, 254 | P { x: 180, y: 50 }, 255 | ]; 256 | let tail = CreatePolygonRgn(pts.as_mut_ptr(), pts.len() as i32, WINDING); 257 | 258 | // Combine into one region 259 | let combined = CreateRectRgn(0, 0, 0, 0); 260 | CombineRgn(combined, bubble, tail, RGN_OR); 261 | 262 | // Paint 263 | SelectObject(hdc, pen as _); 264 | SelectObject(hdc, brush as _); 265 | FillRgn(hdc, combined, brush); 266 | FrameRgn(hdc, combined, pen as _, 1, 1); 267 | 268 | // Cleanup 269 | DeleteObject(bubble as _); 270 | DeleteObject(tail as _); 271 | DeleteObject(combined as _); 272 | DeleteObject(pen as _); 273 | DeleteObject(brush as _); 274 | } 275 | 276 | paint.end_paint(&ps); 277 | } 278 | 279 | fn exit(&self) { 280 | nwg::stop_thread_dispatch(); 281 | } 282 | } 283 | 284 | fn load_ahmed_img() -> Option { 285 | nwg::Bitmap::from_bin(include_bytes!("Ahmed.png")).ok() 286 | } 287 | 288 | fn load_icon() -> Option { 289 | nwg::Icon::from_bin(include_bytes!("Ahmed.ico")).ok() 290 | } 291 | 292 | fn build_font() -> Option { 293 | let mut font = nwg::Font::default(); 294 | nwg::Font::builder() 295 | .size(24) 296 | .family("Segoe UI") 297 | .weight(500) 298 | .build(&mut font) 299 | .ok()?; 300 | 301 | Some(font) 302 | } 303 | 304 | #[derive(Debug, Deserialize)] 305 | struct AnalysisStats { 306 | malicious: u16, 307 | suspicious: u16, 308 | undetected: u16, 309 | harmless: u16, 310 | // timeout: u16, 311 | // #[serde(rename = "confirmed-timeout")] 312 | // confirmed_timeout: u16, 313 | // failure: u16, 314 | // #[serde(rename = "type-unsupported")] 315 | // typ_unsupported: u16, 316 | } 317 | 318 | impl AnalysisStats { 319 | fn get_bad_ratio(&self) -> f64 { 320 | let good = self.harmless + self.undetected; 321 | let bad = self.suspicious + self.malicious; 322 | bad as f64 / (good + bad) as f64 323 | } 324 | 325 | fn score(&self) -> &'static str { 326 | info!("Scoring the analysis results"); 327 | let bad_ratio = self.get_bad_ratio(); 328 | if bad_ratio < 0.05 { 329 | "looks fine bro" 330 | } else if bad_ratio < 0.1 { 331 | "kinda sus" 332 | } else { 333 | "not good" 334 | } 335 | } 336 | } 337 | 338 | fn start_logger() -> flexi_logger::LoggerHandle { 339 | use flexi_logger::{ 340 | DeferredNow, FileSpec, LogSpecification, Logger, TS_DASHES_BLANK_COLONS_DOT_BLANK, 341 | colored_detailed_format, 342 | }; 343 | 344 | fn release_format( 345 | w: &mut dyn Write, 346 | now: &mut DeferredNow, 347 | record: &Record<'_>, 348 | ) -> io::Result<()> { 349 | write!( 350 | w, 351 | "[{}] {:<5} [{}] {}", 352 | now.format(TS_DASHES_BLANK_COLONS_DOT_BLANK), 353 | record.level(), 354 | record.module_path().unwrap_or(""), 355 | record.args(), 356 | ) 357 | } 358 | 359 | let logger = Logger::with(LogSpecification::debug()).use_windows_line_ending(); 360 | 361 | let logger = if cfg!(debug_assertions) { 362 | logger.log_to_stdout().format(colored_detailed_format) 363 | } else { 364 | logger 365 | .log_to_file( 366 | FileSpec::default() 367 | .directory(env::current_exe().unwrap().parent().unwrap()) 368 | .basename("ahmed") 369 | .use_timestamp(false), 370 | ) 371 | .format(release_format) 372 | }; 373 | 374 | logger.start().unwrap() 375 | } 376 | 377 | fn main() { 378 | let logger_handle = start_logger(); 379 | 380 | nwg::init().expect("Failed to init Native Windows GUI"); 381 | let _app = BasicApp::build_ui(Default::default()).expect("Failed to build UI"); 382 | nwg::dispatch_thread_events(); 383 | 384 | logger_handle.shutdown(); 385 | } 386 | -------------------------------------------------------------------------------- /wix/main.wxs: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 46 | 47 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 70 | 79 | 80 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 101 | 102 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 126 | 127 | 128 | 129 | 134 | 139 | 140 | 141 | 142 | 143 | 144 | 153 | 154 | 155 | 156 | 157 | 158 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 179 | 180 | 181 | 182 | 183 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 205 | 206 | 207 | 208 | 209 | 213 | 214 | 215 | 216 | 224 | 225 | 226 | 227 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | official docs]]> 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 1 273 | 274 | 275 | 1 276 | 277 | 278 | 1 279 | 280 | 281 | 282 | 283 | NOT Installed 284 | Installed AND PATCH 285 | 286 | 1 287 | LicenseAccepted = "1" 288 | 289 | 1 290 | 291 | 1 292 | 1 293 | NOT WIXUI_DONTVALIDATEPATH 294 | "1"]]> 295 | WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1" 296 | 1 297 | 1 298 | 299 | 1 300 | 1 301 | 302 | 1 303 | "1"]]> 304 | 305 | NOT Installed 306 | Installed AND NOT PATCH 307 | Installed AND PATCH 308 | 309 | 1 310 | 1 311 | 1 312 | 313 | 1 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.24.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler2" 16 | version = "2.0.1" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 19 | 20 | [[package]] 21 | name = "aho-corasick" 22 | version = "1.1.3" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 25 | dependencies = [ 26 | "memchr", 27 | ] 28 | 29 | [[package]] 30 | name = "android-tzdata" 31 | version = "0.1.1" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 34 | 35 | [[package]] 36 | name = "android_system_properties" 37 | version = "0.1.5" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 40 | dependencies = [ 41 | "libc", 42 | ] 43 | 44 | [[package]] 45 | name = "anyhow" 46 | version = "1.0.98" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 49 | 50 | [[package]] 51 | name = "ask-ahmed" 52 | version = "1.1.0" 53 | dependencies = [ 54 | "anyhow", 55 | "embed-manifest", 56 | "flexi_logger", 57 | "hex", 58 | "log", 59 | "native-windows-derive", 60 | "native-windows-gui", 61 | "reqwest", 62 | "rust-ini", 63 | "serde", 64 | "serde_json", 65 | "sha2", 66 | "winapi", 67 | "windows_exe_info", 68 | ] 69 | 70 | [[package]] 71 | name = "atomic-waker" 72 | version = "1.1.2" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 75 | 76 | [[package]] 77 | name = "autocfg" 78 | version = "1.4.0" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 81 | 82 | [[package]] 83 | name = "backtrace" 84 | version = "0.3.75" 85 | source = "registry+https://github.com/rust-lang/crates.io-index" 86 | checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" 87 | dependencies = [ 88 | "addr2line", 89 | "cfg-if", 90 | "libc", 91 | "miniz_oxide", 92 | "object", 93 | "rustc-demangle", 94 | "windows-targets", 95 | ] 96 | 97 | [[package]] 98 | name = "base64" 99 | version = "0.22.1" 100 | source = "registry+https://github.com/rust-lang/crates.io-index" 101 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 102 | 103 | [[package]] 104 | name = "bitflags" 105 | version = "1.3.2" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 108 | 109 | [[package]] 110 | name = "bitflags" 111 | version = "2.9.1" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" 114 | 115 | [[package]] 116 | name = "block-buffer" 117 | version = "0.10.4" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 120 | dependencies = [ 121 | "generic-array", 122 | ] 123 | 124 | [[package]] 125 | name = "bumpalo" 126 | version = "3.18.1" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" 129 | 130 | [[package]] 131 | name = "bytes" 132 | version = "1.10.1" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 135 | 136 | [[package]] 137 | name = "camino" 138 | version = "1.1.10" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" 141 | 142 | [[package]] 143 | name = "cc" 144 | version = "1.2.26" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" 147 | dependencies = [ 148 | "shlex", 149 | ] 150 | 151 | [[package]] 152 | name = "cfg-if" 153 | version = "1.0.1" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" 156 | 157 | [[package]] 158 | name = "chrono" 159 | version = "0.4.41" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" 162 | dependencies = [ 163 | "android-tzdata", 164 | "iana-time-zone", 165 | "num-traits", 166 | "windows-link", 167 | ] 168 | 169 | [[package]] 170 | name = "const-random" 171 | version = "0.1.18" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" 174 | dependencies = [ 175 | "const-random-macro", 176 | ] 177 | 178 | [[package]] 179 | name = "const-random-macro" 180 | version = "0.1.16" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" 183 | dependencies = [ 184 | "getrandom 0.2.16", 185 | "once_cell", 186 | "tiny-keccak", 187 | ] 188 | 189 | [[package]] 190 | name = "core-foundation" 191 | version = "0.9.4" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 194 | dependencies = [ 195 | "core-foundation-sys", 196 | "libc", 197 | ] 198 | 199 | [[package]] 200 | name = "core-foundation-sys" 201 | version = "0.8.7" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 204 | 205 | [[package]] 206 | name = "cpufeatures" 207 | version = "0.2.17" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 210 | dependencies = [ 211 | "libc", 212 | ] 213 | 214 | [[package]] 215 | name = "crunchy" 216 | version = "0.2.3" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" 219 | 220 | [[package]] 221 | name = "crypto-common" 222 | version = "0.1.6" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 225 | dependencies = [ 226 | "generic-array", 227 | "typenum", 228 | ] 229 | 230 | [[package]] 231 | name = "digest" 232 | version = "0.10.7" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 235 | dependencies = [ 236 | "block-buffer", 237 | "crypto-common", 238 | ] 239 | 240 | [[package]] 241 | name = "displaydoc" 242 | version = "0.2.5" 243 | source = "registry+https://github.com/rust-lang/crates.io-index" 244 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 245 | dependencies = [ 246 | "proc-macro2", 247 | "quote", 248 | "syn 2.0.102", 249 | ] 250 | 251 | [[package]] 252 | name = "dlv-list" 253 | version = "0.5.2" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" 256 | dependencies = [ 257 | "const-random", 258 | ] 259 | 260 | [[package]] 261 | name = "embed-manifest" 262 | version = "1.4.0" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "41cd446c890d6bed1d8b53acef5f240069ebef91d6fae7c5f52efe61fe8b5eae" 265 | 266 | [[package]] 267 | name = "embed-resource" 268 | version = "3.0.3" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "e8fe7d068ca6b3a5782ca5ec9afc244acd99dd441e4686a83b1c3973aba1d489" 271 | dependencies = [ 272 | "cc", 273 | "memchr", 274 | "rustc_version", 275 | "toml 0.8.23", 276 | "vswhom", 277 | "winreg", 278 | ] 279 | 280 | [[package]] 281 | name = "encoding_rs" 282 | version = "0.8.35" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 285 | dependencies = [ 286 | "cfg-if", 287 | ] 288 | 289 | [[package]] 290 | name = "equivalent" 291 | version = "1.0.2" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 294 | 295 | [[package]] 296 | name = "errno" 297 | version = "0.3.12" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" 300 | dependencies = [ 301 | "libc", 302 | "windows-sys 0.59.0", 303 | ] 304 | 305 | [[package]] 306 | name = "fastrand" 307 | version = "2.3.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 310 | 311 | [[package]] 312 | name = "flexi_logger" 313 | version = "0.30.2" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "cb03342077df16d5b1400d7bed00156882846d7a479ff61a6f10594bcc3423d8" 316 | dependencies = [ 317 | "chrono", 318 | "log", 319 | "nu-ansi-term", 320 | "regex", 321 | "thiserror", 322 | ] 323 | 324 | [[package]] 325 | name = "fnv" 326 | version = "1.0.7" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 329 | 330 | [[package]] 331 | name = "foreign-types" 332 | version = "0.3.2" 333 | source = "registry+https://github.com/rust-lang/crates.io-index" 334 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 335 | dependencies = [ 336 | "foreign-types-shared", 337 | ] 338 | 339 | [[package]] 340 | name = "foreign-types-shared" 341 | version = "0.1.1" 342 | source = "registry+https://github.com/rust-lang/crates.io-index" 343 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 344 | 345 | [[package]] 346 | name = "form_urlencoded" 347 | version = "1.2.1" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 350 | dependencies = [ 351 | "percent-encoding", 352 | ] 353 | 354 | [[package]] 355 | name = "futures-channel" 356 | version = "0.3.31" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 359 | dependencies = [ 360 | "futures-core", 361 | "futures-sink", 362 | ] 363 | 364 | [[package]] 365 | name = "futures-core" 366 | version = "0.3.31" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 369 | 370 | [[package]] 371 | name = "futures-io" 372 | version = "0.3.31" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 375 | 376 | [[package]] 377 | name = "futures-macro" 378 | version = "0.3.31" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 381 | dependencies = [ 382 | "proc-macro2", 383 | "quote", 384 | "syn 2.0.102", 385 | ] 386 | 387 | [[package]] 388 | name = "futures-sink" 389 | version = "0.3.31" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 392 | 393 | [[package]] 394 | name = "futures-task" 395 | version = "0.3.31" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 398 | 399 | [[package]] 400 | name = "futures-util" 401 | version = "0.3.31" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 404 | dependencies = [ 405 | "futures-core", 406 | "futures-io", 407 | "futures-macro", 408 | "futures-sink", 409 | "futures-task", 410 | "memchr", 411 | "pin-project-lite", 412 | "pin-utils", 413 | "slab", 414 | ] 415 | 416 | [[package]] 417 | name = "generic-array" 418 | version = "0.14.7" 419 | source = "registry+https://github.com/rust-lang/crates.io-index" 420 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 421 | dependencies = [ 422 | "typenum", 423 | "version_check", 424 | ] 425 | 426 | [[package]] 427 | name = "getrandom" 428 | version = "0.2.16" 429 | source = "registry+https://github.com/rust-lang/crates.io-index" 430 | checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 431 | dependencies = [ 432 | "cfg-if", 433 | "libc", 434 | "wasi 0.11.1+wasi-snapshot-preview1", 435 | ] 436 | 437 | [[package]] 438 | name = "getrandom" 439 | version = "0.3.3" 440 | source = "registry+https://github.com/rust-lang/crates.io-index" 441 | checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 442 | dependencies = [ 443 | "cfg-if", 444 | "libc", 445 | "r-efi", 446 | "wasi 0.14.2+wasi-0.2.4", 447 | ] 448 | 449 | [[package]] 450 | name = "gimli" 451 | version = "0.31.1" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 454 | 455 | [[package]] 456 | name = "h2" 457 | version = "0.4.10" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" 460 | dependencies = [ 461 | "atomic-waker", 462 | "bytes", 463 | "fnv", 464 | "futures-core", 465 | "futures-sink", 466 | "http", 467 | "indexmap", 468 | "slab", 469 | "tokio", 470 | "tokio-util", 471 | "tracing", 472 | ] 473 | 474 | [[package]] 475 | name = "hashbrown" 476 | version = "0.14.5" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 479 | 480 | [[package]] 481 | name = "hashbrown" 482 | version = "0.15.4" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" 485 | 486 | [[package]] 487 | name = "hex" 488 | version = "0.4.3" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 491 | 492 | [[package]] 493 | name = "http" 494 | version = "1.3.1" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 497 | dependencies = [ 498 | "bytes", 499 | "fnv", 500 | "itoa", 501 | ] 502 | 503 | [[package]] 504 | name = "http-body" 505 | version = "1.0.1" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 508 | dependencies = [ 509 | "bytes", 510 | "http", 511 | ] 512 | 513 | [[package]] 514 | name = "http-body-util" 515 | version = "0.1.3" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 518 | dependencies = [ 519 | "bytes", 520 | "futures-core", 521 | "http", 522 | "http-body", 523 | "pin-project-lite", 524 | ] 525 | 526 | [[package]] 527 | name = "httparse" 528 | version = "1.10.1" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 531 | 532 | [[package]] 533 | name = "hyper" 534 | version = "1.6.0" 535 | source = "registry+https://github.com/rust-lang/crates.io-index" 536 | checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" 537 | dependencies = [ 538 | "bytes", 539 | "futures-channel", 540 | "futures-util", 541 | "h2", 542 | "http", 543 | "http-body", 544 | "httparse", 545 | "itoa", 546 | "pin-project-lite", 547 | "smallvec", 548 | "tokio", 549 | "want", 550 | ] 551 | 552 | [[package]] 553 | name = "hyper-rustls" 554 | version = "0.27.7" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 557 | dependencies = [ 558 | "http", 559 | "hyper", 560 | "hyper-util", 561 | "rustls", 562 | "rustls-pki-types", 563 | "tokio", 564 | "tokio-rustls", 565 | "tower-service", 566 | ] 567 | 568 | [[package]] 569 | name = "hyper-tls" 570 | version = "0.6.0" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 573 | dependencies = [ 574 | "bytes", 575 | "http-body-util", 576 | "hyper", 577 | "hyper-util", 578 | "native-tls", 579 | "tokio", 580 | "tokio-native-tls", 581 | "tower-service", 582 | ] 583 | 584 | [[package]] 585 | name = "hyper-util" 586 | version = "0.1.14" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" 589 | dependencies = [ 590 | "base64", 591 | "bytes", 592 | "futures-channel", 593 | "futures-core", 594 | "futures-util", 595 | "http", 596 | "http-body", 597 | "hyper", 598 | "ipnet", 599 | "libc", 600 | "percent-encoding", 601 | "pin-project-lite", 602 | "socket2", 603 | "system-configuration", 604 | "tokio", 605 | "tower-service", 606 | "tracing", 607 | "windows-registry", 608 | ] 609 | 610 | [[package]] 611 | name = "iana-time-zone" 612 | version = "0.1.63" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" 615 | dependencies = [ 616 | "android_system_properties", 617 | "core-foundation-sys", 618 | "iana-time-zone-haiku", 619 | "js-sys", 620 | "log", 621 | "wasm-bindgen", 622 | "windows-core", 623 | ] 624 | 625 | [[package]] 626 | name = "iana-time-zone-haiku" 627 | version = "0.1.2" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 630 | dependencies = [ 631 | "cc", 632 | ] 633 | 634 | [[package]] 635 | name = "icu_collections" 636 | version = "2.0.0" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 639 | dependencies = [ 640 | "displaydoc", 641 | "potential_utf", 642 | "yoke", 643 | "zerofrom", 644 | "zerovec", 645 | ] 646 | 647 | [[package]] 648 | name = "icu_locale_core" 649 | version = "2.0.0" 650 | source = "registry+https://github.com/rust-lang/crates.io-index" 651 | checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 652 | dependencies = [ 653 | "displaydoc", 654 | "litemap", 655 | "tinystr", 656 | "writeable", 657 | "zerovec", 658 | ] 659 | 660 | [[package]] 661 | name = "icu_normalizer" 662 | version = "2.0.0" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 665 | dependencies = [ 666 | "displaydoc", 667 | "icu_collections", 668 | "icu_normalizer_data", 669 | "icu_properties", 670 | "icu_provider", 671 | "smallvec", 672 | "zerovec", 673 | ] 674 | 675 | [[package]] 676 | name = "icu_normalizer_data" 677 | version = "2.0.0" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 680 | 681 | [[package]] 682 | name = "icu_properties" 683 | version = "2.0.1" 684 | source = "registry+https://github.com/rust-lang/crates.io-index" 685 | checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 686 | dependencies = [ 687 | "displaydoc", 688 | "icu_collections", 689 | "icu_locale_core", 690 | "icu_properties_data", 691 | "icu_provider", 692 | "potential_utf", 693 | "zerotrie", 694 | "zerovec", 695 | ] 696 | 697 | [[package]] 698 | name = "icu_properties_data" 699 | version = "2.0.1" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 702 | 703 | [[package]] 704 | name = "icu_provider" 705 | version = "2.0.0" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 708 | dependencies = [ 709 | "displaydoc", 710 | "icu_locale_core", 711 | "stable_deref_trait", 712 | "tinystr", 713 | "writeable", 714 | "yoke", 715 | "zerofrom", 716 | "zerotrie", 717 | "zerovec", 718 | ] 719 | 720 | [[package]] 721 | name = "idna" 722 | version = "1.0.3" 723 | source = "registry+https://github.com/rust-lang/crates.io-index" 724 | checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 725 | dependencies = [ 726 | "idna_adapter", 727 | "smallvec", 728 | "utf8_iter", 729 | ] 730 | 731 | [[package]] 732 | name = "idna_adapter" 733 | version = "1.2.1" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 736 | dependencies = [ 737 | "icu_normalizer", 738 | "icu_properties", 739 | ] 740 | 741 | [[package]] 742 | name = "indexmap" 743 | version = "2.9.0" 744 | source = "registry+https://github.com/rust-lang/crates.io-index" 745 | checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" 746 | dependencies = [ 747 | "equivalent", 748 | "hashbrown 0.15.4", 749 | ] 750 | 751 | [[package]] 752 | name = "ipnet" 753 | version = "2.11.0" 754 | source = "registry+https://github.com/rust-lang/crates.io-index" 755 | checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 756 | 757 | [[package]] 758 | name = "iri-string" 759 | version = "0.7.8" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 762 | dependencies = [ 763 | "memchr", 764 | "serde", 765 | ] 766 | 767 | [[package]] 768 | name = "itoa" 769 | version = "1.0.15" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 772 | 773 | [[package]] 774 | name = "js-sys" 775 | version = "0.3.77" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 778 | dependencies = [ 779 | "once_cell", 780 | "wasm-bindgen", 781 | ] 782 | 783 | [[package]] 784 | name = "lazy_static" 785 | version = "1.5.0" 786 | source = "registry+https://github.com/rust-lang/crates.io-index" 787 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 788 | 789 | [[package]] 790 | name = "libc" 791 | version = "0.2.172" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" 794 | 795 | [[package]] 796 | name = "libm" 797 | version = "0.1.4" 798 | source = "registry+https://github.com/rust-lang/crates.io-index" 799 | checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a" 800 | 801 | [[package]] 802 | name = "linux-raw-sys" 803 | version = "0.9.4" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 806 | 807 | [[package]] 808 | name = "litemap" 809 | version = "0.8.0" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 812 | 813 | [[package]] 814 | name = "log" 815 | version = "0.4.27" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" 818 | 819 | [[package]] 820 | name = "memchr" 821 | version = "2.7.5" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 824 | 825 | [[package]] 826 | name = "mime" 827 | version = "0.3.17" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 830 | 831 | [[package]] 832 | name = "mime_guess" 833 | version = "2.0.5" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 836 | dependencies = [ 837 | "mime", 838 | "unicase", 839 | ] 840 | 841 | [[package]] 842 | name = "miniz_oxide" 843 | version = "0.8.9" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 846 | dependencies = [ 847 | "adler2", 848 | ] 849 | 850 | [[package]] 851 | name = "mio" 852 | version = "1.0.4" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 855 | dependencies = [ 856 | "libc", 857 | "wasi 0.11.1+wasi-snapshot-preview1", 858 | "windows-sys 0.59.0", 859 | ] 860 | 861 | [[package]] 862 | name = "native-tls" 863 | version = "0.2.14" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 866 | dependencies = [ 867 | "libc", 868 | "log", 869 | "openssl", 870 | "openssl-probe", 871 | "openssl-sys", 872 | "schannel", 873 | "security-framework", 874 | "security-framework-sys", 875 | "tempfile", 876 | ] 877 | 878 | [[package]] 879 | name = "native-windows-derive" 880 | version = "1.0.5" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "76134ae81020d89d154f619fd2495a2cecad204276b1dc21174b55e4d0975edd" 883 | dependencies = [ 884 | "proc-macro-crate", 885 | "proc-macro2", 886 | "quote", 887 | "syn 1.0.109", 888 | ] 889 | 890 | [[package]] 891 | name = "native-windows-gui" 892 | version = "1.0.13" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "4f7003a669f68deb6b7c57d74fff4f8e533c44a3f0b297492440ef4ff5a28454" 895 | dependencies = [ 896 | "bitflags 1.3.2", 897 | "lazy_static", 898 | "newline-converter", 899 | "plotters", 900 | "plotters-backend", 901 | "stretch", 902 | "winapi", 903 | "winapi-build", 904 | ] 905 | 906 | [[package]] 907 | name = "newline-converter" 908 | version = "0.2.2" 909 | source = "registry+https://github.com/rust-lang/crates.io-index" 910 | checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f" 911 | dependencies = [ 912 | "unicode-segmentation", 913 | ] 914 | 915 | [[package]] 916 | name = "nu-ansi-term" 917 | version = "0.50.1" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" 920 | dependencies = [ 921 | "windows-sys 0.52.0", 922 | ] 923 | 924 | [[package]] 925 | name = "num-traits" 926 | version = "0.2.19" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 929 | dependencies = [ 930 | "autocfg", 931 | ] 932 | 933 | [[package]] 934 | name = "object" 935 | version = "0.36.7" 936 | source = "registry+https://github.com/rust-lang/crates.io-index" 937 | checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 938 | dependencies = [ 939 | "memchr", 940 | ] 941 | 942 | [[package]] 943 | name = "once_cell" 944 | version = "1.21.3" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 947 | 948 | [[package]] 949 | name = "openssl" 950 | version = "0.10.73" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" 953 | dependencies = [ 954 | "bitflags 2.9.1", 955 | "cfg-if", 956 | "foreign-types", 957 | "libc", 958 | "once_cell", 959 | "openssl-macros", 960 | "openssl-sys", 961 | ] 962 | 963 | [[package]] 964 | name = "openssl-macros" 965 | version = "0.1.1" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 968 | dependencies = [ 969 | "proc-macro2", 970 | "quote", 971 | "syn 2.0.102", 972 | ] 973 | 974 | [[package]] 975 | name = "openssl-probe" 976 | version = "0.1.6" 977 | source = "registry+https://github.com/rust-lang/crates.io-index" 978 | checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 979 | 980 | [[package]] 981 | name = "openssl-sys" 982 | version = "0.9.109" 983 | source = "registry+https://github.com/rust-lang/crates.io-index" 984 | checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" 985 | dependencies = [ 986 | "cc", 987 | "libc", 988 | "pkg-config", 989 | "vcpkg", 990 | ] 991 | 992 | [[package]] 993 | name = "ordered-multimap" 994 | version = "0.7.3" 995 | source = "registry+https://github.com/rust-lang/crates.io-index" 996 | checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" 997 | dependencies = [ 998 | "dlv-list", 999 | "hashbrown 0.14.5", 1000 | ] 1001 | 1002 | [[package]] 1003 | name = "percent-encoding" 1004 | version = "2.3.1" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1007 | 1008 | [[package]] 1009 | name = "pin-project-lite" 1010 | version = "0.2.16" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 1013 | 1014 | [[package]] 1015 | name = "pin-utils" 1016 | version = "0.1.0" 1017 | source = "registry+https://github.com/rust-lang/crates.io-index" 1018 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1019 | 1020 | [[package]] 1021 | name = "pkg-config" 1022 | version = "0.3.32" 1023 | source = "registry+https://github.com/rust-lang/crates.io-index" 1024 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1025 | 1026 | [[package]] 1027 | name = "plotters" 1028 | version = "0.3.7" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" 1031 | dependencies = [ 1032 | "num-traits", 1033 | "plotters-backend", 1034 | "wasm-bindgen", 1035 | "web-sys", 1036 | ] 1037 | 1038 | [[package]] 1039 | name = "plotters-backend" 1040 | version = "0.3.7" 1041 | source = "registry+https://github.com/rust-lang/crates.io-index" 1042 | checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" 1043 | 1044 | [[package]] 1045 | name = "potential_utf" 1046 | version = "0.1.2" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" 1049 | dependencies = [ 1050 | "zerovec", 1051 | ] 1052 | 1053 | [[package]] 1054 | name = "proc-macro-crate" 1055 | version = "0.1.5" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 1058 | dependencies = [ 1059 | "toml 0.5.11", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "proc-macro2" 1064 | version = "1.0.95" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" 1067 | dependencies = [ 1068 | "unicode-ident", 1069 | ] 1070 | 1071 | [[package]] 1072 | name = "quote" 1073 | version = "1.0.40" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 1076 | dependencies = [ 1077 | "proc-macro2", 1078 | ] 1079 | 1080 | [[package]] 1081 | name = "r-efi" 1082 | version = "5.2.0" 1083 | source = "registry+https://github.com/rust-lang/crates.io-index" 1084 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 1085 | 1086 | [[package]] 1087 | name = "regex" 1088 | version = "1.11.1" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 1091 | dependencies = [ 1092 | "aho-corasick", 1093 | "memchr", 1094 | "regex-automata", 1095 | "regex-syntax", 1096 | ] 1097 | 1098 | [[package]] 1099 | name = "regex-automata" 1100 | version = "0.4.9" 1101 | source = "registry+https://github.com/rust-lang/crates.io-index" 1102 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 1103 | dependencies = [ 1104 | "aho-corasick", 1105 | "memchr", 1106 | "regex-syntax", 1107 | ] 1108 | 1109 | [[package]] 1110 | name = "regex-syntax" 1111 | version = "0.8.5" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 1114 | 1115 | [[package]] 1116 | name = "reqwest" 1117 | version = "0.12.20" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" 1120 | dependencies = [ 1121 | "base64", 1122 | "bytes", 1123 | "encoding_rs", 1124 | "futures-channel", 1125 | "futures-core", 1126 | "futures-util", 1127 | "h2", 1128 | "http", 1129 | "http-body", 1130 | "http-body-util", 1131 | "hyper", 1132 | "hyper-rustls", 1133 | "hyper-tls", 1134 | "hyper-util", 1135 | "js-sys", 1136 | "log", 1137 | "mime", 1138 | "mime_guess", 1139 | "native-tls", 1140 | "percent-encoding", 1141 | "pin-project-lite", 1142 | "rustls-pki-types", 1143 | "serde", 1144 | "serde_json", 1145 | "serde_urlencoded", 1146 | "sync_wrapper", 1147 | "tokio", 1148 | "tokio-native-tls", 1149 | "tokio-util", 1150 | "tower", 1151 | "tower-http", 1152 | "tower-service", 1153 | "url", 1154 | "wasm-bindgen", 1155 | "wasm-bindgen-futures", 1156 | "wasm-streams", 1157 | "web-sys", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "ring" 1162 | version = "0.17.14" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 1165 | dependencies = [ 1166 | "cc", 1167 | "cfg-if", 1168 | "getrandom 0.2.16", 1169 | "libc", 1170 | "untrusted", 1171 | "windows-sys 0.52.0", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "rust-ini" 1176 | version = "0.21.1" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" 1179 | dependencies = [ 1180 | "cfg-if", 1181 | "ordered-multimap", 1182 | "trim-in-place", 1183 | ] 1184 | 1185 | [[package]] 1186 | name = "rustc-demangle" 1187 | version = "0.1.25" 1188 | source = "registry+https://github.com/rust-lang/crates.io-index" 1189 | checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" 1190 | 1191 | [[package]] 1192 | name = "rustc_version" 1193 | version = "0.4.1" 1194 | source = "registry+https://github.com/rust-lang/crates.io-index" 1195 | checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 1196 | dependencies = [ 1197 | "semver", 1198 | ] 1199 | 1200 | [[package]] 1201 | name = "rustix" 1202 | version = "1.0.7" 1203 | source = "registry+https://github.com/rust-lang/crates.io-index" 1204 | checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" 1205 | dependencies = [ 1206 | "bitflags 2.9.1", 1207 | "errno", 1208 | "libc", 1209 | "linux-raw-sys", 1210 | "windows-sys 0.59.0", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "rustls" 1215 | version = "0.23.27" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" 1218 | dependencies = [ 1219 | "once_cell", 1220 | "rustls-pki-types", 1221 | "rustls-webpki", 1222 | "subtle", 1223 | "zeroize", 1224 | ] 1225 | 1226 | [[package]] 1227 | name = "rustls-pki-types" 1228 | version = "1.12.0" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 1231 | dependencies = [ 1232 | "zeroize", 1233 | ] 1234 | 1235 | [[package]] 1236 | name = "rustls-webpki" 1237 | version = "0.103.3" 1238 | source = "registry+https://github.com/rust-lang/crates.io-index" 1239 | checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" 1240 | dependencies = [ 1241 | "ring", 1242 | "rustls-pki-types", 1243 | "untrusted", 1244 | ] 1245 | 1246 | [[package]] 1247 | name = "rustversion" 1248 | version = "1.0.21" 1249 | source = "registry+https://github.com/rust-lang/crates.io-index" 1250 | checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" 1251 | 1252 | [[package]] 1253 | name = "ryu" 1254 | version = "1.0.20" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 1257 | 1258 | [[package]] 1259 | name = "schannel" 1260 | version = "0.1.27" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" 1263 | dependencies = [ 1264 | "windows-sys 0.59.0", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "security-framework" 1269 | version = "2.11.1" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 1272 | dependencies = [ 1273 | "bitflags 2.9.1", 1274 | "core-foundation", 1275 | "core-foundation-sys", 1276 | "libc", 1277 | "security-framework-sys", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "security-framework-sys" 1282 | version = "2.14.0" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" 1285 | dependencies = [ 1286 | "core-foundation-sys", 1287 | "libc", 1288 | ] 1289 | 1290 | [[package]] 1291 | name = "semver" 1292 | version = "1.0.26" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 1295 | 1296 | [[package]] 1297 | name = "serde" 1298 | version = "1.0.219" 1299 | source = "registry+https://github.com/rust-lang/crates.io-index" 1300 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 1301 | dependencies = [ 1302 | "serde_derive", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "serde_derive" 1307 | version = "1.0.219" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 1310 | dependencies = [ 1311 | "proc-macro2", 1312 | "quote", 1313 | "syn 2.0.102", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "serde_json" 1318 | version = "1.0.140" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 1321 | dependencies = [ 1322 | "itoa", 1323 | "memchr", 1324 | "ryu", 1325 | "serde", 1326 | ] 1327 | 1328 | [[package]] 1329 | name = "serde_spanned" 1330 | version = "0.6.9" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 1333 | dependencies = [ 1334 | "serde", 1335 | ] 1336 | 1337 | [[package]] 1338 | name = "serde_urlencoded" 1339 | version = "0.7.1" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1342 | dependencies = [ 1343 | "form_urlencoded", 1344 | "itoa", 1345 | "ryu", 1346 | "serde", 1347 | ] 1348 | 1349 | [[package]] 1350 | name = "sha2" 1351 | version = "0.10.9" 1352 | source = "registry+https://github.com/rust-lang/crates.io-index" 1353 | checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 1354 | dependencies = [ 1355 | "cfg-if", 1356 | "cpufeatures", 1357 | "digest", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "shlex" 1362 | version = "1.3.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1365 | 1366 | [[package]] 1367 | name = "slab" 1368 | version = "0.4.9" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1371 | dependencies = [ 1372 | "autocfg", 1373 | ] 1374 | 1375 | [[package]] 1376 | name = "smallvec" 1377 | version = "1.15.1" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 1380 | 1381 | [[package]] 1382 | name = "socket2" 1383 | version = "0.5.10" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" 1386 | dependencies = [ 1387 | "libc", 1388 | "windows-sys 0.52.0", 1389 | ] 1390 | 1391 | [[package]] 1392 | name = "stable_deref_trait" 1393 | version = "1.2.0" 1394 | source = "registry+https://github.com/rust-lang/crates.io-index" 1395 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1396 | 1397 | [[package]] 1398 | name = "stretch" 1399 | version = "0.3.2" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "7b0dc6d20ce137f302edf90f9cd3d278866fd7fb139efca6f246161222ad6d87" 1402 | dependencies = [ 1403 | "lazy_static", 1404 | "libm", 1405 | ] 1406 | 1407 | [[package]] 1408 | name = "subtle" 1409 | version = "2.6.1" 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" 1411 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1412 | 1413 | [[package]] 1414 | name = "syn" 1415 | version = "1.0.109" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1418 | dependencies = [ 1419 | "proc-macro2", 1420 | "quote", 1421 | "unicode-ident", 1422 | ] 1423 | 1424 | [[package]] 1425 | name = "syn" 1426 | version = "2.0.102" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" 1429 | dependencies = [ 1430 | "proc-macro2", 1431 | "quote", 1432 | "unicode-ident", 1433 | ] 1434 | 1435 | [[package]] 1436 | name = "sync_wrapper" 1437 | version = "1.0.2" 1438 | source = "registry+https://github.com/rust-lang/crates.io-index" 1439 | checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1440 | dependencies = [ 1441 | "futures-core", 1442 | ] 1443 | 1444 | [[package]] 1445 | name = "synstructure" 1446 | version = "0.13.2" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 1449 | dependencies = [ 1450 | "proc-macro2", 1451 | "quote", 1452 | "syn 2.0.102", 1453 | ] 1454 | 1455 | [[package]] 1456 | name = "system-configuration" 1457 | version = "0.6.1" 1458 | source = "registry+https://github.com/rust-lang/crates.io-index" 1459 | checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 1460 | dependencies = [ 1461 | "bitflags 2.9.1", 1462 | "core-foundation", 1463 | "system-configuration-sys", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "system-configuration-sys" 1468 | version = "0.6.0" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 1471 | dependencies = [ 1472 | "core-foundation-sys", 1473 | "libc", 1474 | ] 1475 | 1476 | [[package]] 1477 | name = "tempfile" 1478 | version = "3.20.0" 1479 | source = "registry+https://github.com/rust-lang/crates.io-index" 1480 | checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" 1481 | dependencies = [ 1482 | "fastrand", 1483 | "getrandom 0.3.3", 1484 | "once_cell", 1485 | "rustix", 1486 | "windows-sys 0.59.0", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "thiserror" 1491 | version = "2.0.12" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" 1494 | dependencies = [ 1495 | "thiserror-impl", 1496 | ] 1497 | 1498 | [[package]] 1499 | name = "thiserror-impl" 1500 | version = "2.0.12" 1501 | source = "registry+https://github.com/rust-lang/crates.io-index" 1502 | checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" 1503 | dependencies = [ 1504 | "proc-macro2", 1505 | "quote", 1506 | "syn 2.0.102", 1507 | ] 1508 | 1509 | [[package]] 1510 | name = "tiny-keccak" 1511 | version = "2.0.2" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 1514 | dependencies = [ 1515 | "crunchy", 1516 | ] 1517 | 1518 | [[package]] 1519 | name = "tinystr" 1520 | version = "0.8.1" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 1523 | dependencies = [ 1524 | "displaydoc", 1525 | "zerovec", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "tokio" 1530 | version = "1.45.1" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" 1533 | dependencies = [ 1534 | "backtrace", 1535 | "bytes", 1536 | "libc", 1537 | "mio", 1538 | "pin-project-lite", 1539 | "socket2", 1540 | "windows-sys 0.52.0", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "tokio-native-tls" 1545 | version = "0.3.1" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 1548 | dependencies = [ 1549 | "native-tls", 1550 | "tokio", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "tokio-rustls" 1555 | version = "0.26.2" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" 1558 | dependencies = [ 1559 | "rustls", 1560 | "tokio", 1561 | ] 1562 | 1563 | [[package]] 1564 | name = "tokio-util" 1565 | version = "0.7.15" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" 1568 | dependencies = [ 1569 | "bytes", 1570 | "futures-core", 1571 | "futures-sink", 1572 | "pin-project-lite", 1573 | "tokio", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "toml" 1578 | version = "0.5.11" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 1581 | dependencies = [ 1582 | "serde", 1583 | ] 1584 | 1585 | [[package]] 1586 | name = "toml" 1587 | version = "0.8.23" 1588 | source = "registry+https://github.com/rust-lang/crates.io-index" 1589 | checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 1590 | dependencies = [ 1591 | "serde", 1592 | "serde_spanned", 1593 | "toml_datetime", 1594 | "toml_edit", 1595 | ] 1596 | 1597 | [[package]] 1598 | name = "toml_datetime" 1599 | version = "0.6.11" 1600 | source = "registry+https://github.com/rust-lang/crates.io-index" 1601 | checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 1602 | dependencies = [ 1603 | "serde", 1604 | ] 1605 | 1606 | [[package]] 1607 | name = "toml_edit" 1608 | version = "0.22.27" 1609 | source = "registry+https://github.com/rust-lang/crates.io-index" 1610 | checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 1611 | dependencies = [ 1612 | "indexmap", 1613 | "serde", 1614 | "serde_spanned", 1615 | "toml_datetime", 1616 | "toml_write", 1617 | "winnow", 1618 | ] 1619 | 1620 | [[package]] 1621 | name = "toml_write" 1622 | version = "0.1.2" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 1625 | 1626 | [[package]] 1627 | name = "tower" 1628 | version = "0.5.2" 1629 | source = "registry+https://github.com/rust-lang/crates.io-index" 1630 | checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 1631 | dependencies = [ 1632 | "futures-core", 1633 | "futures-util", 1634 | "pin-project-lite", 1635 | "sync_wrapper", 1636 | "tokio", 1637 | "tower-layer", 1638 | "tower-service", 1639 | ] 1640 | 1641 | [[package]] 1642 | name = "tower-http" 1643 | version = "0.6.6" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" 1646 | dependencies = [ 1647 | "bitflags 2.9.1", 1648 | "bytes", 1649 | "futures-util", 1650 | "http", 1651 | "http-body", 1652 | "iri-string", 1653 | "pin-project-lite", 1654 | "tower", 1655 | "tower-layer", 1656 | "tower-service", 1657 | ] 1658 | 1659 | [[package]] 1660 | name = "tower-layer" 1661 | version = "0.3.3" 1662 | source = "registry+https://github.com/rust-lang/crates.io-index" 1663 | checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 1664 | 1665 | [[package]] 1666 | name = "tower-service" 1667 | version = "0.3.3" 1668 | source = "registry+https://github.com/rust-lang/crates.io-index" 1669 | checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 1670 | 1671 | [[package]] 1672 | name = "tracing" 1673 | version = "0.1.41" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 1676 | dependencies = [ 1677 | "pin-project-lite", 1678 | "tracing-core", 1679 | ] 1680 | 1681 | [[package]] 1682 | name = "tracing-core" 1683 | version = "0.1.34" 1684 | source = "registry+https://github.com/rust-lang/crates.io-index" 1685 | checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 1686 | dependencies = [ 1687 | "once_cell", 1688 | ] 1689 | 1690 | [[package]] 1691 | name = "trim-in-place" 1692 | version = "0.1.7" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" 1695 | 1696 | [[package]] 1697 | name = "try-lock" 1698 | version = "0.2.5" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1701 | 1702 | [[package]] 1703 | name = "typenum" 1704 | version = "1.18.0" 1705 | source = "registry+https://github.com/rust-lang/crates.io-index" 1706 | checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 1707 | 1708 | [[package]] 1709 | name = "unicase" 1710 | version = "2.8.1" 1711 | source = "registry+https://github.com/rust-lang/crates.io-index" 1712 | checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 1713 | 1714 | [[package]] 1715 | name = "unicode-ident" 1716 | version = "1.0.18" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1719 | 1720 | [[package]] 1721 | name = "unicode-segmentation" 1722 | version = "1.12.0" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 1725 | 1726 | [[package]] 1727 | name = "untrusted" 1728 | version = "0.9.0" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1731 | 1732 | [[package]] 1733 | name = "url" 1734 | version = "2.5.4" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 1737 | dependencies = [ 1738 | "form_urlencoded", 1739 | "idna", 1740 | "percent-encoding", 1741 | ] 1742 | 1743 | [[package]] 1744 | name = "utf8_iter" 1745 | version = "1.0.4" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1748 | 1749 | [[package]] 1750 | name = "vcpkg" 1751 | version = "0.2.15" 1752 | source = "registry+https://github.com/rust-lang/crates.io-index" 1753 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1754 | 1755 | [[package]] 1756 | name = "version_check" 1757 | version = "0.9.5" 1758 | source = "registry+https://github.com/rust-lang/crates.io-index" 1759 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1760 | 1761 | [[package]] 1762 | name = "vswhom" 1763 | version = "0.1.0" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" 1766 | dependencies = [ 1767 | "libc", 1768 | "vswhom-sys", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "vswhom-sys" 1773 | version = "0.1.3" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" 1776 | dependencies = [ 1777 | "cc", 1778 | "libc", 1779 | ] 1780 | 1781 | [[package]] 1782 | name = "want" 1783 | version = "0.3.1" 1784 | source = "registry+https://github.com/rust-lang/crates.io-index" 1785 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1786 | dependencies = [ 1787 | "try-lock", 1788 | ] 1789 | 1790 | [[package]] 1791 | name = "wasi" 1792 | version = "0.11.1+wasi-snapshot-preview1" 1793 | source = "registry+https://github.com/rust-lang/crates.io-index" 1794 | checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 1795 | 1796 | [[package]] 1797 | name = "wasi" 1798 | version = "0.14.2+wasi-0.2.4" 1799 | source = "registry+https://github.com/rust-lang/crates.io-index" 1800 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 1801 | dependencies = [ 1802 | "wit-bindgen-rt", 1803 | ] 1804 | 1805 | [[package]] 1806 | name = "wasm-bindgen" 1807 | version = "0.2.100" 1808 | source = "registry+https://github.com/rust-lang/crates.io-index" 1809 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 1810 | dependencies = [ 1811 | "cfg-if", 1812 | "once_cell", 1813 | "rustversion", 1814 | "wasm-bindgen-macro", 1815 | ] 1816 | 1817 | [[package]] 1818 | name = "wasm-bindgen-backend" 1819 | version = "0.2.100" 1820 | source = "registry+https://github.com/rust-lang/crates.io-index" 1821 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 1822 | dependencies = [ 1823 | "bumpalo", 1824 | "log", 1825 | "proc-macro2", 1826 | "quote", 1827 | "syn 2.0.102", 1828 | "wasm-bindgen-shared", 1829 | ] 1830 | 1831 | [[package]] 1832 | name = "wasm-bindgen-futures" 1833 | version = "0.4.50" 1834 | source = "registry+https://github.com/rust-lang/crates.io-index" 1835 | checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" 1836 | dependencies = [ 1837 | "cfg-if", 1838 | "js-sys", 1839 | "once_cell", 1840 | "wasm-bindgen", 1841 | "web-sys", 1842 | ] 1843 | 1844 | [[package]] 1845 | name = "wasm-bindgen-macro" 1846 | version = "0.2.100" 1847 | source = "registry+https://github.com/rust-lang/crates.io-index" 1848 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 1849 | dependencies = [ 1850 | "quote", 1851 | "wasm-bindgen-macro-support", 1852 | ] 1853 | 1854 | [[package]] 1855 | name = "wasm-bindgen-macro-support" 1856 | version = "0.2.100" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 1859 | dependencies = [ 1860 | "proc-macro2", 1861 | "quote", 1862 | "syn 2.0.102", 1863 | "wasm-bindgen-backend", 1864 | "wasm-bindgen-shared", 1865 | ] 1866 | 1867 | [[package]] 1868 | name = "wasm-bindgen-shared" 1869 | version = "0.2.100" 1870 | source = "registry+https://github.com/rust-lang/crates.io-index" 1871 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 1872 | dependencies = [ 1873 | "unicode-ident", 1874 | ] 1875 | 1876 | [[package]] 1877 | name = "wasm-streams" 1878 | version = "0.4.2" 1879 | source = "registry+https://github.com/rust-lang/crates.io-index" 1880 | checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 1881 | dependencies = [ 1882 | "futures-util", 1883 | "js-sys", 1884 | "wasm-bindgen", 1885 | "wasm-bindgen-futures", 1886 | "web-sys", 1887 | ] 1888 | 1889 | [[package]] 1890 | name = "web-sys" 1891 | version = "0.3.77" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" 1894 | dependencies = [ 1895 | "js-sys", 1896 | "wasm-bindgen", 1897 | ] 1898 | 1899 | [[package]] 1900 | name = "winapi" 1901 | version = "0.3.9" 1902 | source = "registry+https://github.com/rust-lang/crates.io-index" 1903 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1904 | dependencies = [ 1905 | "winapi-i686-pc-windows-gnu", 1906 | "winapi-x86_64-pc-windows-gnu", 1907 | ] 1908 | 1909 | [[package]] 1910 | name = "winapi-build" 1911 | version = "0.1.1" 1912 | source = "registry+https://github.com/rust-lang/crates.io-index" 1913 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1914 | 1915 | [[package]] 1916 | name = "winapi-i686-pc-windows-gnu" 1917 | version = "0.4.0" 1918 | source = "registry+https://github.com/rust-lang/crates.io-index" 1919 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1920 | 1921 | [[package]] 1922 | name = "winapi-x86_64-pc-windows-gnu" 1923 | version = "0.4.0" 1924 | source = "registry+https://github.com/rust-lang/crates.io-index" 1925 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1926 | 1927 | [[package]] 1928 | name = "windows-core" 1929 | version = "0.61.2" 1930 | source = "registry+https://github.com/rust-lang/crates.io-index" 1931 | checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 1932 | dependencies = [ 1933 | "windows-implement", 1934 | "windows-interface", 1935 | "windows-link", 1936 | "windows-result", 1937 | "windows-strings", 1938 | ] 1939 | 1940 | [[package]] 1941 | name = "windows-implement" 1942 | version = "0.60.0" 1943 | source = "registry+https://github.com/rust-lang/crates.io-index" 1944 | checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" 1945 | dependencies = [ 1946 | "proc-macro2", 1947 | "quote", 1948 | "syn 2.0.102", 1949 | ] 1950 | 1951 | [[package]] 1952 | name = "windows-interface" 1953 | version = "0.59.1" 1954 | source = "registry+https://github.com/rust-lang/crates.io-index" 1955 | checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" 1956 | dependencies = [ 1957 | "proc-macro2", 1958 | "quote", 1959 | "syn 2.0.102", 1960 | ] 1961 | 1962 | [[package]] 1963 | name = "windows-link" 1964 | version = "0.1.2" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | checksum = "d3bfe459f85da17560875b8bf1423d6f113b7a87a5d942e7da0ac71be7c61f8b" 1967 | 1968 | [[package]] 1969 | name = "windows-registry" 1970 | version = "0.5.2" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "b3bab093bdd303a1240bb99b8aba8ea8a69ee19d34c9e2ef9594e708a4878820" 1973 | dependencies = [ 1974 | "windows-link", 1975 | "windows-result", 1976 | "windows-strings", 1977 | ] 1978 | 1979 | [[package]] 1980 | name = "windows-result" 1981 | version = "0.3.4" 1982 | source = "registry+https://github.com/rust-lang/crates.io-index" 1983 | checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 1984 | dependencies = [ 1985 | "windows-link", 1986 | ] 1987 | 1988 | [[package]] 1989 | name = "windows-strings" 1990 | version = "0.4.2" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 1993 | dependencies = [ 1994 | "windows-link", 1995 | ] 1996 | 1997 | [[package]] 1998 | name = "windows-sys" 1999 | version = "0.52.0" 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" 2001 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2002 | dependencies = [ 2003 | "windows-targets", 2004 | ] 2005 | 2006 | [[package]] 2007 | name = "windows-sys" 2008 | version = "0.59.0" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 2011 | dependencies = [ 2012 | "windows-targets", 2013 | ] 2014 | 2015 | [[package]] 2016 | name = "windows-targets" 2017 | version = "0.52.6" 2018 | source = "registry+https://github.com/rust-lang/crates.io-index" 2019 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 2020 | dependencies = [ 2021 | "windows_aarch64_gnullvm", 2022 | "windows_aarch64_msvc", 2023 | "windows_i686_gnu", 2024 | "windows_i686_gnullvm", 2025 | "windows_i686_msvc", 2026 | "windows_x86_64_gnu", 2027 | "windows_x86_64_gnullvm", 2028 | "windows_x86_64_msvc", 2029 | ] 2030 | 2031 | [[package]] 2032 | name = "windows_aarch64_gnullvm" 2033 | version = "0.52.6" 2034 | source = "registry+https://github.com/rust-lang/crates.io-index" 2035 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 2036 | 2037 | [[package]] 2038 | name = "windows_aarch64_msvc" 2039 | version = "0.52.6" 2040 | source = "registry+https://github.com/rust-lang/crates.io-index" 2041 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 2042 | 2043 | [[package]] 2044 | name = "windows_exe_info" 2045 | version = "0.5.2" 2046 | source = "registry+https://github.com/rust-lang/crates.io-index" 2047 | checksum = "3a7c2cd292e8e58e012eaf18f18f6b64ef74e0b90677b4f9e1f15bfca24056c7" 2048 | dependencies = [ 2049 | "camino", 2050 | "embed-resource", 2051 | ] 2052 | 2053 | [[package]] 2054 | name = "windows_i686_gnu" 2055 | version = "0.52.6" 2056 | source = "registry+https://github.com/rust-lang/crates.io-index" 2057 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 2058 | 2059 | [[package]] 2060 | name = "windows_i686_gnullvm" 2061 | version = "0.52.6" 2062 | source = "registry+https://github.com/rust-lang/crates.io-index" 2063 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 2064 | 2065 | [[package]] 2066 | name = "windows_i686_msvc" 2067 | version = "0.52.6" 2068 | source = "registry+https://github.com/rust-lang/crates.io-index" 2069 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 2070 | 2071 | [[package]] 2072 | name = "windows_x86_64_gnu" 2073 | version = "0.52.6" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 2076 | 2077 | [[package]] 2078 | name = "windows_x86_64_gnullvm" 2079 | version = "0.52.6" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 2082 | 2083 | [[package]] 2084 | name = "windows_x86_64_msvc" 2085 | version = "0.52.6" 2086 | source = "registry+https://github.com/rust-lang/crates.io-index" 2087 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 2088 | 2089 | [[package]] 2090 | name = "winnow" 2091 | version = "0.7.11" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" 2094 | dependencies = [ 2095 | "memchr", 2096 | ] 2097 | 2098 | [[package]] 2099 | name = "winreg" 2100 | version = "0.55.0" 2101 | source = "registry+https://github.com/rust-lang/crates.io-index" 2102 | checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" 2103 | dependencies = [ 2104 | "cfg-if", 2105 | "windows-sys 0.59.0", 2106 | ] 2107 | 2108 | [[package]] 2109 | name = "wit-bindgen-rt" 2110 | version = "0.39.0" 2111 | source = "registry+https://github.com/rust-lang/crates.io-index" 2112 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 2113 | dependencies = [ 2114 | "bitflags 2.9.1", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "writeable" 2119 | version = "0.6.1" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 2122 | 2123 | [[package]] 2124 | name = "yoke" 2125 | version = "0.8.0" 2126 | source = "registry+https://github.com/rust-lang/crates.io-index" 2127 | checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 2128 | dependencies = [ 2129 | "serde", 2130 | "stable_deref_trait", 2131 | "yoke-derive", 2132 | "zerofrom", 2133 | ] 2134 | 2135 | [[package]] 2136 | name = "yoke-derive" 2137 | version = "0.8.0" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 2140 | dependencies = [ 2141 | "proc-macro2", 2142 | "quote", 2143 | "syn 2.0.102", 2144 | "synstructure", 2145 | ] 2146 | 2147 | [[package]] 2148 | name = "zerofrom" 2149 | version = "0.1.6" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 2152 | dependencies = [ 2153 | "zerofrom-derive", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "zerofrom-derive" 2158 | version = "0.1.6" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 2161 | dependencies = [ 2162 | "proc-macro2", 2163 | "quote", 2164 | "syn 2.0.102", 2165 | "synstructure", 2166 | ] 2167 | 2168 | [[package]] 2169 | name = "zeroize" 2170 | version = "1.8.1" 2171 | source = "registry+https://github.com/rust-lang/crates.io-index" 2172 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 2173 | 2174 | [[package]] 2175 | name = "zerotrie" 2176 | version = "0.2.2" 2177 | source = "registry+https://github.com/rust-lang/crates.io-index" 2178 | checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 2179 | dependencies = [ 2180 | "displaydoc", 2181 | "yoke", 2182 | "zerofrom", 2183 | ] 2184 | 2185 | [[package]] 2186 | name = "zerovec" 2187 | version = "0.11.2" 2188 | source = "registry+https://github.com/rust-lang/crates.io-index" 2189 | checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" 2190 | dependencies = [ 2191 | "yoke", 2192 | "zerofrom", 2193 | "zerovec-derive", 2194 | ] 2195 | 2196 | [[package]] 2197 | name = "zerovec-derive" 2198 | version = "0.11.1" 2199 | source = "registry+https://github.com/rust-lang/crates.io-index" 2200 | checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 2201 | dependencies = [ 2202 | "proc-macro2", 2203 | "quote", 2204 | "syn 2.0.102", 2205 | ] 2206 | --------------------------------------------------------------------------------