├── .gitignore ├── Cargo.toml ├── LICENSE-MIT ├── Dockerfile ├── src ├── app.rs ├── main.rs └── service.rs ├── README.md ├── LICENSE-APACHE └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .vscode 3 | .idea 4 | .cover 5 | keys 6 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pingora-reverse-proxy" 3 | version = "0.1.0" 4 | authors = ["Marco Inacio "] 5 | license = "Apache-2.0 or MIT" 6 | edition = "2021" 7 | 8 | [dependencies] 9 | pingora = { version = "0.2.0", features = ["proxy", "boringssl"] } 10 | structopt = "0.3" 11 | tokio = { version = "1", features = ["rt-multi-thread", "signal"] } 12 | pretty_env_logger = "0.5" 13 | jemallocator = "0.5" 14 | async-trait = "0.1.42" 15 | log = "0.4" 16 | http = "1" 17 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright 2024 Marco Inacio 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | 3 | RUN apt-get update 4 | 5 | RUN apt-get upgrade -y 6 | 7 | RUN apt-get install -y \ 8 | curl \ 9 | clang \ 10 | gcc \ 11 | g++ \ 12 | zlib1g-dev \ 13 | libmpc-dev \ 14 | libmpfr-dev \ 15 | libgmp-dev \ 16 | git \ 17 | cmake \ 18 | pkg-config \ 19 | libssl-dev \ 20 | build-essential 21 | 22 | RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s - -y 23 | 24 | ENV PATH=/root/.cargo/bin:${PATH} 25 | 26 | WORKDIR /app 27 | 28 | COPY Cargo.toml Cargo.toml 29 | 30 | COPY Cargo.lock Cargo.lock 31 | 32 | RUN mkdir src && echo "fn main() {}" > src/main.rs 33 | 34 | RUN cargo build --release --locked 35 | 36 | RUN rm -rf src 37 | 38 | COPY src src 39 | 40 | RUN cargo build --release --locked 41 | 42 | RUN mkdir -p keys && \ 43 | openssl req -x509 -sha256 -days 356 -nodes -newkey rsa:2048 -subj "/CN=somedomain.com/C=UK/L=London" -keyout keys/some_domain_key.pem -out keys/some_domain_cert.crt && \ 44 | openssl req -x509 -sha256 -days 356 -nodes -newkey rsa:2048 -subj "/CN=one.one.one.one/C=UK/L=London" -keyout keys/one_key.pem -out keys/one_cert.crt 45 | 46 | CMD cargo run --release --locked 47 | -------------------------------------------------------------------------------- /src/app.rs: -------------------------------------------------------------------------------- 1 | use super::service::HostConfigPlain; 2 | use async_trait::async_trait; 3 | use http::{header, Response, StatusCode}; 4 | use log::debug; 5 | use pingora::{ 6 | apps::http_app::ServeHttp, 7 | prelude::{HttpPeer, ProxyHttp, Result, Session}, 8 | protocols::http::ServerSession, 9 | }; 10 | 11 | pub struct ProxyApp { 12 | host_configs: Vec, 13 | } 14 | 15 | impl ProxyApp { 16 | pub fn new(host_configs: Vec) -> Self { 17 | ProxyApp { host_configs } 18 | } 19 | } 20 | 21 | #[async_trait] 22 | impl ProxyHttp for ProxyApp { 23 | type CTX = (); 24 | fn new_ctx(&self) {} 25 | 26 | async fn upstream_peer(&self, session: &mut Session, _ctx: &mut ()) -> Result> { 27 | let host_header = session.get_header(header::HOST).unwrap().to_str().unwrap(); 28 | debug!("host header: {host_header}"); 29 | 30 | let host_config = self 31 | .host_configs 32 | .iter() 33 | .find(|x| x.proxy_hostname == host_header) 34 | .unwrap(); 35 | let proxy_to = HttpPeer::new( 36 | host_config.proxy_addr.as_str(), 37 | host_config.proxy_tls, 38 | host_config.proxy_hostname.clone(), 39 | ); 40 | let peer = Box::new(proxy_to); 41 | Ok(peer) 42 | } 43 | } 44 | 45 | pub struct RedirectApp; 46 | 47 | #[async_trait] 48 | impl ServeHttp for RedirectApp { 49 | async fn response(&self, http_stream: &mut ServerSession) -> Response> { 50 | let host_header = http_stream 51 | .get_header(header::HOST) 52 | .unwrap() 53 | .to_str() 54 | .unwrap(); 55 | debug!("host header: {host_header}"); 56 | let body = "301 Moved Permanently" 57 | .as_bytes() 58 | .to_owned(); 59 | Response::builder() 60 | .status(StatusCode::MOVED_PERMANENTLY) 61 | .header(header::CONTENT_TYPE, "text/html") 62 | .header(header::CONTENT_LENGTH, body.len()) 63 | .header(header::LOCATION, format!("https://{host_header}")) 64 | .body(body) 65 | .unwrap() 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #[global_allocator] 2 | static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc; 3 | 4 | use pingora::{ 5 | server::{configuration::Opt, Server}, 6 | services::{listening::Service as ListeningService, Service}, 7 | }; 8 | use service::{ 9 | new_http_redirect_app, proxy_service_plain, proxy_service_tls, HostConfigPlain, HostConfigTls, 10 | }; 11 | use std::env; 12 | use structopt::StructOpt; 13 | 14 | mod app; 15 | mod service; 16 | 17 | pub fn main() { 18 | let http_port = env::var("HTTP_PORT").unwrap_or("80".to_owned()); 19 | let https_port = env::var("HTTPS_PORT").unwrap_or("443".to_owned()); 20 | 21 | if env::var("RUST_LOG").is_err() { 22 | env::set_var("RUST_LOG", "pingora_reverse_proxy=debug,pingora=error"); 23 | } 24 | pretty_env_logger::init_timed(); 25 | 26 | let opt = Some(Opt::from_args()); 27 | let mut my_server = Server::new(opt).unwrap(); 28 | my_server.bootstrap(); 29 | 30 | let proxy_service_ssl = proxy_service_tls( 31 | &my_server.configuration, 32 | &format!("0.0.0.0:{https_port}"), 33 | vec![ 34 | HostConfigTls { 35 | proxy_addr: "127.0.0.1:4000".to_owned(), 36 | proxy_tls: false, 37 | proxy_hostname: "somedomain.com".to_owned(), 38 | cert_path: format!("{}/keys/some_domain_cert.crt", env!("CARGO_MANIFEST_DIR")), 39 | key_path: format!("{}/keys/some_domain_key.pem", env!("CARGO_MANIFEST_DIR")), 40 | }, 41 | HostConfigTls { 42 | proxy_addr: "one.one.one.one:443".to_owned(), 43 | proxy_tls: true, 44 | proxy_hostname: "one.one.one.one".to_owned(), 45 | cert_path: format!("{}/keys/one_cert.crt", env!("CARGO_MANIFEST_DIR")), 46 | key_path: format!("{}/keys/one_key.pem", env!("CARGO_MANIFEST_DIR")), 47 | }, 48 | ], 49 | ); 50 | 51 | let http_redirect_app = new_http_redirect_app(&format!("0.0.0.0:{http_port}")); 52 | 53 | let proxy_service_plain = proxy_service_plain( 54 | &my_server.configuration, 55 | "0.0.0.0:8082", 56 | vec![HostConfigPlain { 57 | proxy_addr: "127.0.0.1:4000".to_owned(), 58 | proxy_tls: false, 59 | proxy_hostname: "someotherdomain.com".to_owned(), 60 | }], 61 | ); 62 | 63 | let mut prometheus_service_http = ListeningService::prometheus_http_service(); 64 | prometheus_service_http.add_tcp("127.0.0.1:6150"); 65 | 66 | let services: Vec> = vec![ 67 | Box::new(proxy_service_ssl), 68 | Box::new(http_redirect_app), 69 | Box::new(proxy_service_plain), 70 | Box::new(prometheus_service_http), 71 | ]; 72 | my_server.add_services(services); 73 | my_server.run_forever(); 74 | } 75 | -------------------------------------------------------------------------------- /src/service.rs: -------------------------------------------------------------------------------- 1 | use crate::app::{ProxyApp, RedirectApp}; 2 | use async_trait::async_trait; 3 | use log::debug; 4 | use pingora::{ 5 | listeners::{TlsAccept, TlsSettings}, 6 | prelude::http_proxy_service, 7 | server::configuration::ServerConf, 8 | services::listening::Service, 9 | tls::{self, ssl}, 10 | }; 11 | use std::sync::Arc; 12 | 13 | struct Callback(Vec<(String, tls::x509::X509, tls::pkey::PKey)>); 14 | 15 | impl Callback { 16 | fn new(config: Vec) -> Self { 17 | let config = config 18 | .into_iter() 19 | .map( 20 | |HostConfigTls { 21 | proxy_hostname, 22 | cert_path, 23 | key_path, 24 | proxy_addr: _, 25 | proxy_tls: _, 26 | }| { 27 | let cert_bytes = std::fs::read(cert_path).unwrap(); 28 | let cert = tls::x509::X509::from_pem(&cert_bytes).unwrap(); 29 | 30 | let key_bytes = std::fs::read(key_path).unwrap(); 31 | let key = tls::pkey::PKey::private_key_from_pem(&key_bytes).unwrap(); 32 | 33 | (proxy_hostname, cert, key) 34 | }, 35 | ) 36 | .collect(); 37 | Self(config) 38 | } 39 | } 40 | 41 | #[async_trait] 42 | impl TlsAccept for Callback { 43 | async fn certificate_callback(&self, ssl: &mut ssl::SslRef) -> () { 44 | let sni_provided = ssl.servername(ssl::NameType::HOST_NAME).unwrap(); 45 | debug!("SNI provided: {}", sni_provided); 46 | let (_, cert, key) = self.0.iter().find(|x| x.0 == sni_provided).unwrap(); 47 | tls::ext::ssl_use_certificate(ssl, cert).unwrap(); 48 | tls::ext::ssl_use_private_key(ssl, key).unwrap(); 49 | } 50 | } 51 | 52 | #[derive(Clone)] 53 | pub struct HostConfigTls { 54 | pub proxy_addr: String, 55 | pub proxy_tls: bool, 56 | pub proxy_hostname: String, 57 | pub cert_path: String, 58 | pub key_path: String, 59 | } 60 | 61 | pub fn proxy_service_tls( 62 | server_conf: &Arc, 63 | listen_addr: &str, 64 | host_configs: Vec, 65 | ) -> impl pingora::services::Service { 66 | let plain_host_config = host_configs 67 | .iter() 68 | .map(|x| HostConfigPlain { 69 | proxy_addr: x.proxy_addr.clone(), 70 | proxy_tls: x.proxy_tls, 71 | proxy_hostname: x.proxy_hostname.clone(), 72 | }) 73 | .collect(); 74 | let proxy_app = ProxyApp::new(plain_host_config); 75 | let mut service = http_proxy_service(server_conf, proxy_app); 76 | 77 | let cb = Callback::new(host_configs); 78 | let cb = Box::new(cb); 79 | let tls_settings = TlsSettings::with_callbacks(cb).unwrap(); 80 | service.add_tls_with_settings(listen_addr, None, tls_settings); 81 | 82 | service 83 | } 84 | 85 | #[derive(Clone)] 86 | pub struct HostConfigPlain { 87 | pub proxy_addr: String, 88 | pub proxy_tls: bool, 89 | pub proxy_hostname: String, 90 | } 91 | 92 | pub fn proxy_service_plain( 93 | server_conf: &Arc, 94 | listen_addr: &str, 95 | host_configs: Vec, 96 | ) -> impl pingora::services::Service { 97 | let proxy_app = ProxyApp::new(host_configs.clone()); 98 | let mut service = http_proxy_service(server_conf, proxy_app); 99 | 100 | service.add_tcp(listen_addr); 101 | 102 | service 103 | } 104 | 105 | pub fn new_http_redirect_app(listen_addr: &str) -> Service { 106 | let mut service = Service::new("Echo Service HTTP".to_string(), Arc::new(RedirectApp {})); 107 | service.add_tcp(listen_addr); 108 | service 109 | } 110 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pingora reverse proxy example 2 | 3 | Create a reverse proxy that connects backend HTTP or HTTPs services to a single HTTPs frontend (similar to what is generally done with Nginx) serving distinct SSL certificates (using SNI and the host header) for each backend service. 4 | 5 | In this example, if you connect to 6 | 7 | * with an SNI and Host header of somedomain.com, you will be served an SSL certificate to somedomain.com and a proxied connection to . 8 | 9 | * with an SNI and Host header of one.one.one.one, you will be served an SSL certificate to one.one.one.one and a proxied connection to . 10 | 11 | # Usage 12 | 13 | Create some self-signed certificates: 14 | 15 | ```bash 16 | mkdir -p keys && 17 | openssl req -x509 -sha256 -days 356 -nodes -newkey rsa:2048 -subj "/CN=somedomain.com/C=UK/L=London" -keyout keys/some_domain_key.pem -out keys/some_domain_cert.crt && 18 | openssl req -x509 -sha256 -days 356 -nodes -newkey rsa:2048 -subj "/CN=one.one.one.one/C=UK/L=London" -keyout keys/one_key.pem -out keys/one_cert.crt 19 | ``` 20 | 21 | ## Non root deploy 22 | 23 | Without root, you cannot bind to ports 80 and 443 on Linux, so you need to use custom ports and some work arounds on curl. 24 | 25 | Start the service. 26 | 27 | ```bash 28 | HTTPS_PORT=4430 HTTP_PORT=8080 cargo run 29 | ``` 30 | 31 | Start some HTTP server on port 4000, e.g.: 32 | 33 | ```bash 34 | cd $(mktemp -d) && touch somefile && python -m http.server 4000 35 | ``` 36 | 37 | Play: 38 | 39 | * with HTTPs apps that support SNI, e.g: 40 | 41 | ```bash 42 | curl --connect-to somedomain.com:443:127.0.0.1:4430 https://somedomain.com -vk 43 | ``` 44 | 45 | ```bash 46 | curl --connect-to one.one.one.one:443:127.0.0.1:4430 https://one.one.one.one -vk 47 | ``` 48 | 49 | * Connect to HTTP first and then be redirected to HTTPS: 50 | 51 | ``` 52 | curl --connect-to somedomain.com:443:127.0.0.1:4430 --connect-to somedomain.com:80:127.0.0.1:8080 http://somedomain.com -vkL 53 | ``` 54 | 55 | ``` 56 | curl --connect-to one.one.one.one:443:127.0.0.1:4430 --connect-to one.one.one.one:80:127.0.0.1:8080 http://one.one.one.one -vkL 57 | ``` 58 | 59 | * with an HTTP only app (does not redirect to HTTPS): 60 | 61 | ```bash 62 | curl --connect-to someotherdomain.com:80:127.0.0.1:8082 http://someotherdomain.com -vk 63 | ``` 64 | 65 | ## Privileged deploy 66 | 67 | If you have root access, you can allow the binary to bind to ports 80 and 443. 68 | 69 | First, build the binary: 70 | 71 | ```cargo build``` 72 | 73 | then allow the binary to bind to ports lower than 1024: 74 | 75 | ``` 76 | sudo setcap 'cap_net_bind_service=+ep' target/debug/pingora-reverse-proxy 77 | ``` 78 | 79 | Start the service. 80 | 81 | ```bash 82 | cargo run 83 | ``` 84 | 85 | Or a single command with `cargo watch`: 86 | 87 | ```bash 88 | cargo watch -c -x b -s "sudo setcap 'cap_net_bind_service=+ep' target/debug/pingora-reverse-proxy && cargo run" 89 | ``` 90 | 91 | Another option is to use Podman or Docker, e.g.: 92 | 93 | ```bash 94 | sudo podman --rm -it -p 80:80 -p 443:443 pingora-reverse-proxy && sudo podman --rm -it -p 80:80 -p 443:443 pingora-reverse-proxy 95 | ``` 96 | 97 | Start some HTTP server on port 4000, e.g.: 98 | 99 | ```bash 100 | cd $(mktemp -d) && touch somefile && python -m http.server 4000 101 | ``` 102 | 103 | Play: 104 | 105 | * with HTTPs apps that support SNI, e.g: 106 | 107 | ```bash 108 | curl --resolve somedomain.com:443:127.0.0.1 https://somedomain.com -vk 109 | ``` 110 | 111 | ```bash 112 | curl --resolve one.one.one.one:443:127.0.0.1 https://one.one.one.one -vk 113 | ``` 114 | 115 | * Connect to HTTP first and then be redirected to HTTPS: 116 | 117 | ``` 118 | curl --resolve somedomain.com:443:127.0.0.1 --resolve somedomain.com:80:127.0.0.1 http://somedomain.com -vkL 119 | ``` 120 | 121 | ``` 122 | curl --resolve one.one.one.one:443:127.0.0.1 --resolve one.one.one.one:80:127.0.0.1 http://one.one.one.one -vkL 123 | ``` 124 | 125 | * with an HTTP only app (does not redirect to HTTPS): 126 | 127 | ```bash 128 | curl --connect-to someotherdomain.com:80:127.0.0.1:8082 http://someotherdomain.com -vk 129 | ``` 130 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.22.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "ahash" 22 | version = "0.8.11" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 25 | dependencies = [ 26 | "cfg-if", 27 | "getrandom", 28 | "once_cell", 29 | "version_check", 30 | "zerocopy", 31 | ] 32 | 33 | [[package]] 34 | name = "aho-corasick" 35 | version = "1.1.3" 36 | source = "registry+https://github.com/rust-lang/crates.io-index" 37 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 38 | dependencies = [ 39 | "memchr", 40 | ] 41 | 42 | [[package]] 43 | name = "alloc-no-stdlib" 44 | version = "2.0.4" 45 | source = "registry+https://github.com/rust-lang/crates.io-index" 46 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 47 | 48 | [[package]] 49 | name = "alloc-stdlib" 50 | version = "0.2.2" 51 | source = "registry+https://github.com/rust-lang/crates.io-index" 52 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 53 | dependencies = [ 54 | "alloc-no-stdlib", 55 | ] 56 | 57 | [[package]] 58 | name = "allocator-api2" 59 | version = "0.2.18" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 62 | 63 | [[package]] 64 | name = "ansi_term" 65 | version = "0.12.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 68 | dependencies = [ 69 | "winapi", 70 | ] 71 | 72 | [[package]] 73 | name = "arc-swap" 74 | version = "1.7.1" 75 | source = "registry+https://github.com/rust-lang/crates.io-index" 76 | checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 77 | 78 | [[package]] 79 | name = "arrayvec" 80 | version = "0.7.4" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 83 | 84 | [[package]] 85 | name = "async-stream" 86 | version = "0.3.5" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" 89 | dependencies = [ 90 | "async-stream-impl", 91 | "futures-core", 92 | "pin-project-lite", 93 | ] 94 | 95 | [[package]] 96 | name = "async-stream-impl" 97 | version = "0.3.5" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" 100 | dependencies = [ 101 | "proc-macro2", 102 | "quote", 103 | "syn 2.0.67", 104 | ] 105 | 106 | [[package]] 107 | name = "async-trait" 108 | version = "0.1.80" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" 111 | dependencies = [ 112 | "proc-macro2", 113 | "quote", 114 | "syn 2.0.67", 115 | ] 116 | 117 | [[package]] 118 | name = "atomic-waker" 119 | version = "1.1.2" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 122 | 123 | [[package]] 124 | name = "atty" 125 | version = "0.2.14" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 128 | dependencies = [ 129 | "hermit-abi 0.1.19", 130 | "libc", 131 | "winapi", 132 | ] 133 | 134 | [[package]] 135 | name = "autocfg" 136 | version = "1.3.0" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 139 | 140 | [[package]] 141 | name = "backtrace" 142 | version = "0.3.73" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" 145 | dependencies = [ 146 | "addr2line", 147 | "cc", 148 | "cfg-if", 149 | "libc", 150 | "miniz_oxide", 151 | "object", 152 | "rustc-demangle", 153 | ] 154 | 155 | [[package]] 156 | name = "base64" 157 | version = "0.21.7" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 160 | 161 | [[package]] 162 | name = "bindgen" 163 | version = "0.68.1" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" 166 | dependencies = [ 167 | "bitflags 2.5.0", 168 | "cexpr", 169 | "clang-sys", 170 | "lazy_static", 171 | "lazycell", 172 | "peeking_take_while", 173 | "proc-macro2", 174 | "quote", 175 | "regex", 176 | "rustc-hash", 177 | "shlex", 178 | "syn 2.0.67", 179 | ] 180 | 181 | [[package]] 182 | name = "bitflags" 183 | version = "1.3.2" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 186 | 187 | [[package]] 188 | name = "bitflags" 189 | version = "2.5.0" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" 192 | 193 | [[package]] 194 | name = "blake2" 195 | version = "0.10.6" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 198 | dependencies = [ 199 | "digest", 200 | ] 201 | 202 | [[package]] 203 | name = "block-buffer" 204 | version = "0.10.4" 205 | source = "registry+https://github.com/rust-lang/crates.io-index" 206 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 207 | dependencies = [ 208 | "generic-array", 209 | ] 210 | 211 | [[package]] 212 | name = "boring" 213 | version = "4.7.0" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "8449eece48f398076facde2688c79b81e23e93cd4a21d52564025d8d3517fbce" 216 | dependencies = [ 217 | "bitflags 2.5.0", 218 | "boring-sys", 219 | "foreign-types 0.5.0", 220 | "libc", 221 | "once_cell", 222 | ] 223 | 224 | [[package]] 225 | name = "boring-sys" 226 | version = "4.7.0" 227 | source = "registry+https://github.com/rust-lang/crates.io-index" 228 | checksum = "b1d573e041bd65f156c72e32233c5ff68dcb5d995e119928c9b36ce338f2401c" 229 | dependencies = [ 230 | "bindgen", 231 | "cmake", 232 | "fs_extra", 233 | "fslock", 234 | ] 235 | 236 | [[package]] 237 | name = "brotli" 238 | version = "3.5.0" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" 241 | dependencies = [ 242 | "alloc-no-stdlib", 243 | "alloc-stdlib", 244 | "brotli-decompressor", 245 | ] 246 | 247 | [[package]] 248 | name = "brotli-decompressor" 249 | version = "2.5.1" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" 252 | dependencies = [ 253 | "alloc-no-stdlib", 254 | "alloc-stdlib", 255 | ] 256 | 257 | [[package]] 258 | name = "bumpalo" 259 | version = "3.16.0" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 262 | 263 | [[package]] 264 | name = "byteorder" 265 | version = "1.5.0" 266 | source = "registry+https://github.com/rust-lang/crates.io-index" 267 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 268 | 269 | [[package]] 270 | name = "bytes" 271 | version = "1.6.0" 272 | source = "registry+https://github.com/rust-lang/crates.io-index" 273 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 274 | 275 | [[package]] 276 | name = "cc" 277 | version = "1.0.100" 278 | source = "registry+https://github.com/rust-lang/crates.io-index" 279 | checksum = "c891175c3fb232128f48de6590095e59198bbeb8620c310be349bfc3afd12c7b" 280 | dependencies = [ 281 | "jobserver", 282 | "libc", 283 | "once_cell", 284 | ] 285 | 286 | [[package]] 287 | name = "cexpr" 288 | version = "0.6.0" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 291 | dependencies = [ 292 | "nom", 293 | ] 294 | 295 | [[package]] 296 | name = "cfg-if" 297 | version = "1.0.0" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 300 | 301 | [[package]] 302 | name = "chrono" 303 | version = "0.4.38" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 306 | dependencies = [ 307 | "num-traits", 308 | ] 309 | 310 | [[package]] 311 | name = "clang-sys" 312 | version = "1.8.1" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" 315 | dependencies = [ 316 | "glob", 317 | "libc", 318 | "libloading", 319 | ] 320 | 321 | [[package]] 322 | name = "clap" 323 | version = "2.34.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" 326 | dependencies = [ 327 | "ansi_term", 328 | "atty", 329 | "bitflags 1.3.2", 330 | "strsim", 331 | "textwrap", 332 | "unicode-width", 333 | "vec_map", 334 | ] 335 | 336 | [[package]] 337 | name = "cmake" 338 | version = "0.1.50" 339 | source = "registry+https://github.com/rust-lang/crates.io-index" 340 | checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" 341 | dependencies = [ 342 | "cc", 343 | ] 344 | 345 | [[package]] 346 | name = "core-foundation" 347 | version = "0.9.4" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 350 | dependencies = [ 351 | "core-foundation-sys", 352 | "libc", 353 | ] 354 | 355 | [[package]] 356 | name = "core-foundation-sys" 357 | version = "0.8.6" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 360 | 361 | [[package]] 362 | name = "crc32fast" 363 | version = "1.4.2" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 366 | dependencies = [ 367 | "cfg-if", 368 | ] 369 | 370 | [[package]] 371 | name = "crossbeam-channel" 372 | version = "0.5.13" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" 375 | dependencies = [ 376 | "crossbeam-utils", 377 | ] 378 | 379 | [[package]] 380 | name = "crossbeam-queue" 381 | version = "0.3.11" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" 384 | dependencies = [ 385 | "crossbeam-utils", 386 | ] 387 | 388 | [[package]] 389 | name = "crossbeam-utils" 390 | version = "0.8.20" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 393 | 394 | [[package]] 395 | name = "crypto-common" 396 | version = "0.1.6" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 399 | dependencies = [ 400 | "generic-array", 401 | "typenum", 402 | ] 403 | 404 | [[package]] 405 | name = "daemonize" 406 | version = "0.5.0" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "ab8bfdaacb3c887a54d41bdf48d3af8873b3f5566469f8ba21b92057509f116e" 409 | dependencies = [ 410 | "libc", 411 | ] 412 | 413 | [[package]] 414 | name = "data-encoding" 415 | version = "2.6.0" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" 418 | 419 | [[package]] 420 | name = "debugid" 421 | version = "0.8.0" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" 424 | dependencies = [ 425 | "serde", 426 | "uuid", 427 | ] 428 | 429 | [[package]] 430 | name = "deranged" 431 | version = "0.3.11" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 434 | dependencies = [ 435 | "powerfmt", 436 | ] 437 | 438 | [[package]] 439 | name = "digest" 440 | version = "0.10.7" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 443 | dependencies = [ 444 | "block-buffer", 445 | "crypto-common", 446 | "subtle", 447 | ] 448 | 449 | [[package]] 450 | name = "encoding_rs" 451 | version = "0.8.34" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 454 | dependencies = [ 455 | "cfg-if", 456 | ] 457 | 458 | [[package]] 459 | name = "env_logger" 460 | version = "0.10.2" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" 463 | dependencies = [ 464 | "humantime", 465 | "is-terminal", 466 | "log", 467 | "regex", 468 | "termcolor", 469 | ] 470 | 471 | [[package]] 472 | name = "equivalent" 473 | version = "1.0.1" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 476 | 477 | [[package]] 478 | name = "flate2" 479 | version = "1.0.30" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 482 | dependencies = [ 483 | "crc32fast", 484 | "libz-ng-sys", 485 | "miniz_oxide", 486 | ] 487 | 488 | [[package]] 489 | name = "fnv" 490 | version = "1.0.7" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 493 | 494 | [[package]] 495 | name = "foreign-types" 496 | version = "0.3.2" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 499 | dependencies = [ 500 | "foreign-types-shared 0.1.1", 501 | ] 502 | 503 | [[package]] 504 | name = "foreign-types" 505 | version = "0.5.0" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 508 | dependencies = [ 509 | "foreign-types-macros", 510 | "foreign-types-shared 0.3.1", 511 | ] 512 | 513 | [[package]] 514 | name = "foreign-types-macros" 515 | version = "0.2.3" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 518 | dependencies = [ 519 | "proc-macro2", 520 | "quote", 521 | "syn 2.0.67", 522 | ] 523 | 524 | [[package]] 525 | name = "foreign-types-shared" 526 | version = "0.1.1" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 529 | 530 | [[package]] 531 | name = "foreign-types-shared" 532 | version = "0.3.1" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 535 | 536 | [[package]] 537 | name = "form_urlencoded" 538 | version = "1.2.1" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 541 | dependencies = [ 542 | "percent-encoding", 543 | ] 544 | 545 | [[package]] 546 | name = "fs_extra" 547 | version = "1.3.0" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" 550 | 551 | [[package]] 552 | name = "fslock" 553 | version = "0.2.1" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" 556 | dependencies = [ 557 | "libc", 558 | "winapi", 559 | ] 560 | 561 | [[package]] 562 | name = "futures" 563 | version = "0.3.30" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 566 | dependencies = [ 567 | "futures-channel", 568 | "futures-core", 569 | "futures-executor", 570 | "futures-io", 571 | "futures-sink", 572 | "futures-task", 573 | "futures-util", 574 | ] 575 | 576 | [[package]] 577 | name = "futures-channel" 578 | version = "0.3.30" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 581 | dependencies = [ 582 | "futures-core", 583 | "futures-sink", 584 | ] 585 | 586 | [[package]] 587 | name = "futures-core" 588 | version = "0.3.30" 589 | source = "registry+https://github.com/rust-lang/crates.io-index" 590 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 591 | 592 | [[package]] 593 | name = "futures-executor" 594 | version = "0.3.30" 595 | source = "registry+https://github.com/rust-lang/crates.io-index" 596 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 597 | dependencies = [ 598 | "futures-core", 599 | "futures-task", 600 | "futures-util", 601 | ] 602 | 603 | [[package]] 604 | name = "futures-io" 605 | version = "0.3.30" 606 | source = "registry+https://github.com/rust-lang/crates.io-index" 607 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 608 | 609 | [[package]] 610 | name = "futures-macro" 611 | version = "0.3.30" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 614 | dependencies = [ 615 | "proc-macro2", 616 | "quote", 617 | "syn 2.0.67", 618 | ] 619 | 620 | [[package]] 621 | name = "futures-sink" 622 | version = "0.3.30" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 625 | 626 | [[package]] 627 | name = "futures-task" 628 | version = "0.3.30" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 631 | 632 | [[package]] 633 | name = "futures-util" 634 | version = "0.3.30" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 637 | dependencies = [ 638 | "futures-channel", 639 | "futures-core", 640 | "futures-io", 641 | "futures-macro", 642 | "futures-sink", 643 | "futures-task", 644 | "memchr", 645 | "pin-project-lite", 646 | "pin-utils", 647 | "slab", 648 | ] 649 | 650 | [[package]] 651 | name = "generic-array" 652 | version = "0.14.7" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 655 | dependencies = [ 656 | "typenum", 657 | "version_check", 658 | ] 659 | 660 | [[package]] 661 | name = "getrandom" 662 | version = "0.2.15" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 665 | dependencies = [ 666 | "cfg-if", 667 | "libc", 668 | "wasi", 669 | ] 670 | 671 | [[package]] 672 | name = "gimli" 673 | version = "0.29.0" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 676 | 677 | [[package]] 678 | name = "glob" 679 | version = "0.3.1" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 682 | 683 | [[package]] 684 | name = "h2" 685 | version = "0.3.26" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 688 | dependencies = [ 689 | "bytes", 690 | "fnv", 691 | "futures-core", 692 | "futures-sink", 693 | "futures-util", 694 | "http 0.2.12", 695 | "indexmap 2.2.6", 696 | "slab", 697 | "tokio", 698 | "tokio-util", 699 | "tracing", 700 | ] 701 | 702 | [[package]] 703 | name = "h2" 704 | version = "0.4.5" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" 707 | dependencies = [ 708 | "atomic-waker", 709 | "bytes", 710 | "fnv", 711 | "futures-core", 712 | "futures-sink", 713 | "http 1.1.0", 714 | "indexmap 2.2.6", 715 | "slab", 716 | "tokio", 717 | "tokio-util", 718 | "tracing", 719 | ] 720 | 721 | [[package]] 722 | name = "hashbrown" 723 | version = "0.12.3" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 726 | 727 | [[package]] 728 | name = "hashbrown" 729 | version = "0.14.5" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 732 | dependencies = [ 733 | "ahash", 734 | "allocator-api2", 735 | ] 736 | 737 | [[package]] 738 | name = "heck" 739 | version = "0.3.3" 740 | source = "registry+https://github.com/rust-lang/crates.io-index" 741 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 742 | dependencies = [ 743 | "unicode-segmentation", 744 | ] 745 | 746 | [[package]] 747 | name = "hermit-abi" 748 | version = "0.1.19" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 751 | dependencies = [ 752 | "libc", 753 | ] 754 | 755 | [[package]] 756 | name = "hermit-abi" 757 | version = "0.3.9" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 760 | 761 | [[package]] 762 | name = "hex" 763 | version = "0.4.3" 764 | source = "registry+https://github.com/rust-lang/crates.io-index" 765 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 766 | 767 | [[package]] 768 | name = "hostname" 769 | version = "0.3.1" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" 772 | dependencies = [ 773 | "libc", 774 | "match_cfg", 775 | "winapi", 776 | ] 777 | 778 | [[package]] 779 | name = "http" 780 | version = "0.2.12" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 783 | dependencies = [ 784 | "bytes", 785 | "fnv", 786 | "itoa", 787 | ] 788 | 789 | [[package]] 790 | name = "http" 791 | version = "1.1.0" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" 794 | dependencies = [ 795 | "bytes", 796 | "fnv", 797 | "itoa", 798 | ] 799 | 800 | [[package]] 801 | name = "http-body" 802 | version = "0.4.6" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 805 | dependencies = [ 806 | "bytes", 807 | "http 0.2.12", 808 | "pin-project-lite", 809 | ] 810 | 811 | [[package]] 812 | name = "httparse" 813 | version = "1.9.4" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" 816 | 817 | [[package]] 818 | name = "httpdate" 819 | version = "1.0.3" 820 | source = "registry+https://github.com/rust-lang/crates.io-index" 821 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 822 | 823 | [[package]] 824 | name = "humantime" 825 | version = "2.1.0" 826 | source = "registry+https://github.com/rust-lang/crates.io-index" 827 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 828 | 829 | [[package]] 830 | name = "hyper" 831 | version = "0.14.29" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" 834 | dependencies = [ 835 | "bytes", 836 | "futures-channel", 837 | "futures-core", 838 | "futures-util", 839 | "h2 0.3.26", 840 | "http 0.2.12", 841 | "http-body", 842 | "httparse", 843 | "httpdate", 844 | "itoa", 845 | "pin-project-lite", 846 | "socket2", 847 | "tokio", 848 | "tower-service", 849 | "tracing", 850 | "want", 851 | ] 852 | 853 | [[package]] 854 | name = "hyper-rustls" 855 | version = "0.24.2" 856 | source = "registry+https://github.com/rust-lang/crates.io-index" 857 | checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 858 | dependencies = [ 859 | "futures-util", 860 | "http 0.2.12", 861 | "hyper", 862 | "rustls", 863 | "tokio", 864 | "tokio-rustls", 865 | ] 866 | 867 | [[package]] 868 | name = "idna" 869 | version = "0.5.0" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 872 | dependencies = [ 873 | "unicode-bidi", 874 | "unicode-normalization", 875 | ] 876 | 877 | [[package]] 878 | name = "indexmap" 879 | version = "1.9.3" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 882 | dependencies = [ 883 | "autocfg", 884 | "hashbrown 0.12.3", 885 | ] 886 | 887 | [[package]] 888 | name = "indexmap" 889 | version = "2.2.6" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 892 | dependencies = [ 893 | "equivalent", 894 | "hashbrown 0.14.5", 895 | ] 896 | 897 | [[package]] 898 | name = "ipnet" 899 | version = "2.9.0" 900 | source = "registry+https://github.com/rust-lang/crates.io-index" 901 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 902 | 903 | [[package]] 904 | name = "is-terminal" 905 | version = "0.4.12" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" 908 | dependencies = [ 909 | "hermit-abi 0.3.9", 910 | "libc", 911 | "windows-sys 0.52.0", 912 | ] 913 | 914 | [[package]] 915 | name = "itoa" 916 | version = "1.0.11" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 919 | 920 | [[package]] 921 | name = "jemalloc-sys" 922 | version = "0.5.4+5.3.0-patched" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" 925 | dependencies = [ 926 | "cc", 927 | "libc", 928 | ] 929 | 930 | [[package]] 931 | name = "jemallocator" 932 | version = "0.5.4" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "a0de374a9f8e63150e6f5e8a60cc14c668226d7a347d8aee1a45766e3c4dd3bc" 935 | dependencies = [ 936 | "jemalloc-sys", 937 | "libc", 938 | ] 939 | 940 | [[package]] 941 | name = "jobserver" 942 | version = "0.1.31" 943 | source = "registry+https://github.com/rust-lang/crates.io-index" 944 | checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" 945 | dependencies = [ 946 | "libc", 947 | ] 948 | 949 | [[package]] 950 | name = "js-sys" 951 | version = "0.3.69" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 954 | dependencies = [ 955 | "wasm-bindgen", 956 | ] 957 | 958 | [[package]] 959 | name = "lazy_static" 960 | version = "1.5.0" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 963 | 964 | [[package]] 965 | name = "lazycell" 966 | version = "1.3.0" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 969 | 970 | [[package]] 971 | name = "libc" 972 | version = "0.2.155" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 975 | 976 | [[package]] 977 | name = "libloading" 978 | version = "0.8.4" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" 981 | dependencies = [ 982 | "cfg-if", 983 | "windows-targets 0.52.5", 984 | ] 985 | 986 | [[package]] 987 | name = "libz-ng-sys" 988 | version = "1.1.15" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5" 991 | dependencies = [ 992 | "cmake", 993 | "libc", 994 | ] 995 | 996 | [[package]] 997 | name = "linked-hash-map" 998 | version = "0.5.6" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1001 | 1002 | [[package]] 1003 | name = "lock_api" 1004 | version = "0.4.12" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 1007 | dependencies = [ 1008 | "autocfg", 1009 | "scopeguard", 1010 | ] 1011 | 1012 | [[package]] 1013 | name = "log" 1014 | version = "0.4.21" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" 1017 | 1018 | [[package]] 1019 | name = "lru" 1020 | version = "0.12.3" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" 1023 | dependencies = [ 1024 | "hashbrown 0.14.5", 1025 | ] 1026 | 1027 | [[package]] 1028 | name = "match_cfg" 1029 | version = "0.1.0" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" 1032 | 1033 | [[package]] 1034 | name = "memchr" 1035 | version = "2.7.4" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 1038 | 1039 | [[package]] 1040 | name = "memoffset" 1041 | version = "0.6.5" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1044 | dependencies = [ 1045 | "autocfg", 1046 | ] 1047 | 1048 | [[package]] 1049 | name = "mime" 1050 | version = "0.3.17" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1053 | 1054 | [[package]] 1055 | name = "minimal-lexical" 1056 | version = "0.2.1" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1059 | 1060 | [[package]] 1061 | name = "miniz_oxide" 1062 | version = "0.7.4" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" 1065 | dependencies = [ 1066 | "adler", 1067 | ] 1068 | 1069 | [[package]] 1070 | name = "mio" 1071 | version = "0.8.11" 1072 | source = "registry+https://github.com/rust-lang/crates.io-index" 1073 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 1074 | dependencies = [ 1075 | "libc", 1076 | "wasi", 1077 | "windows-sys 0.48.0", 1078 | ] 1079 | 1080 | [[package]] 1081 | name = "nix" 1082 | version = "0.24.3" 1083 | source = "registry+https://github.com/rust-lang/crates.io-index" 1084 | checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" 1085 | dependencies = [ 1086 | "bitflags 1.3.2", 1087 | "cfg-if", 1088 | "libc", 1089 | "memoffset", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "nom" 1094 | version = "7.1.3" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1097 | dependencies = [ 1098 | "memchr", 1099 | "minimal-lexical", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "num-conv" 1104 | version = "0.1.0" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 1107 | 1108 | [[package]] 1109 | name = "num-traits" 1110 | version = "0.2.19" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1113 | dependencies = [ 1114 | "autocfg", 1115 | ] 1116 | 1117 | [[package]] 1118 | name = "num_cpus" 1119 | version = "1.16.0" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1122 | dependencies = [ 1123 | "hermit-abi 0.3.9", 1124 | "libc", 1125 | ] 1126 | 1127 | [[package]] 1128 | name = "object" 1129 | version = "0.36.0" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" 1132 | dependencies = [ 1133 | "memchr", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "once_cell" 1138 | version = "1.19.0" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 1141 | 1142 | [[package]] 1143 | name = "openssl" 1144 | version = "0.10.64" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" 1147 | dependencies = [ 1148 | "bitflags 2.5.0", 1149 | "cfg-if", 1150 | "foreign-types 0.3.2", 1151 | "libc", 1152 | "once_cell", 1153 | "openssl-macros", 1154 | "openssl-sys", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "openssl-macros" 1159 | version = "0.1.1" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1162 | dependencies = [ 1163 | "proc-macro2", 1164 | "quote", 1165 | "syn 2.0.67", 1166 | ] 1167 | 1168 | [[package]] 1169 | name = "openssl-probe" 1170 | version = "0.1.5" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1173 | 1174 | [[package]] 1175 | name = "openssl-src" 1176 | version = "300.3.1+3.3.1" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" 1179 | dependencies = [ 1180 | "cc", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "openssl-sys" 1185 | version = "0.9.102" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" 1188 | dependencies = [ 1189 | "cc", 1190 | "libc", 1191 | "openssl-src", 1192 | "pkg-config", 1193 | "vcpkg", 1194 | ] 1195 | 1196 | [[package]] 1197 | name = "parking_lot" 1198 | version = "0.12.3" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 1201 | dependencies = [ 1202 | "lock_api", 1203 | "parking_lot_core", 1204 | ] 1205 | 1206 | [[package]] 1207 | name = "parking_lot_core" 1208 | version = "0.9.10" 1209 | source = "registry+https://github.com/rust-lang/crates.io-index" 1210 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 1211 | dependencies = [ 1212 | "cfg-if", 1213 | "libc", 1214 | "redox_syscall", 1215 | "smallvec", 1216 | "windows-targets 0.52.5", 1217 | ] 1218 | 1219 | [[package]] 1220 | name = "paste" 1221 | version = "1.0.15" 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" 1223 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 1224 | 1225 | [[package]] 1226 | name = "peeking_take_while" 1227 | version = "0.1.2" 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" 1229 | checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 1230 | 1231 | [[package]] 1232 | name = "percent-encoding" 1233 | version = "2.3.1" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1236 | 1237 | [[package]] 1238 | name = "pin-project-lite" 1239 | version = "0.2.14" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 1242 | 1243 | [[package]] 1244 | name = "pin-utils" 1245 | version = "0.1.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1248 | 1249 | [[package]] 1250 | name = "pingora" 1251 | version = "0.2.0" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "94f12ec271706862433e71690f733309a9f4a71c767bb23aa0d8b3a1d2334e38" 1254 | dependencies = [ 1255 | "pingora-cache", 1256 | "pingora-core", 1257 | "pingora-http", 1258 | "pingora-load-balancing", 1259 | "pingora-proxy", 1260 | "pingora-timeout", 1261 | ] 1262 | 1263 | [[package]] 1264 | name = "pingora-boringssl" 1265 | version = "0.2.0" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | checksum = "79d2d62939e960bac604e23416eb2fa4a05446d8762dec819540bea38d6b2428" 1268 | dependencies = [ 1269 | "boring", 1270 | "boring-sys", 1271 | "foreign-types-shared 0.3.1", 1272 | "futures-util", 1273 | "libc", 1274 | "tokio", 1275 | ] 1276 | 1277 | [[package]] 1278 | name = "pingora-cache" 1279 | version = "0.2.0" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "05660ef5cb66ecb70053c9d90523c2f4ab2bee4b5cd0e430d033f4a1d0b9be03" 1282 | dependencies = [ 1283 | "ahash", 1284 | "async-trait", 1285 | "blake2", 1286 | "bytes", 1287 | "hex", 1288 | "http 1.1.0", 1289 | "httparse", 1290 | "httpdate", 1291 | "indexmap 1.9.3", 1292 | "log", 1293 | "lru", 1294 | "once_cell", 1295 | "parking_lot", 1296 | "pingora-core", 1297 | "pingora-error", 1298 | "pingora-header-serde", 1299 | "pingora-http", 1300 | "pingora-lru", 1301 | "pingora-timeout", 1302 | "regex", 1303 | "rmp", 1304 | "rmp-serde", 1305 | "rustracing", 1306 | "rustracing_jaeger", 1307 | "serde", 1308 | "tokio", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "pingora-core" 1313 | version = "0.2.0" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | checksum = "69d1c4588a28df9cff6f923a4ca89f2e3d38ad4a6a97a3e3914a84c9a5adabfe" 1316 | dependencies = [ 1317 | "ahash", 1318 | "async-trait", 1319 | "brotli", 1320 | "bytes", 1321 | "chrono", 1322 | "daemonize", 1323 | "flate2", 1324 | "futures", 1325 | "h2 0.4.5", 1326 | "http 1.1.0", 1327 | "httparse", 1328 | "httpdate", 1329 | "libc", 1330 | "log", 1331 | "lru", 1332 | "nix", 1333 | "once_cell", 1334 | "openssl-probe", 1335 | "parking_lot", 1336 | "percent-encoding", 1337 | "pingora-boringssl", 1338 | "pingora-error", 1339 | "pingora-http", 1340 | "pingora-openssl", 1341 | "pingora-pool", 1342 | "pingora-runtime", 1343 | "pingora-timeout", 1344 | "prometheus", 1345 | "rand", 1346 | "regex", 1347 | "sentry", 1348 | "serde", 1349 | "serde_yaml", 1350 | "sfv", 1351 | "socket2", 1352 | "structopt", 1353 | "thread_local", 1354 | "tokio", 1355 | "tokio-test", 1356 | "unicase", 1357 | "zstd", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "pingora-error" 1362 | version = "0.2.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "9fab5d4c342ee9afedd3f037d7ed63e6371c1d54b2115215d59743dc24810b70" 1365 | 1366 | [[package]] 1367 | name = "pingora-header-serde" 1368 | version = "0.2.0" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "613872eb18f8af39895010b673829df2cda4767024c1e1303d4917bf50134d49" 1371 | dependencies = [ 1372 | "bytes", 1373 | "http 1.1.0", 1374 | "httparse", 1375 | "pingora-error", 1376 | "pingora-http", 1377 | "thread_local", 1378 | "zstd", 1379 | "zstd-safe", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "pingora-http" 1384 | version = "0.2.0" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "cf82e49fac35fab2e0accf87b3b761cff8ea768210408f0671fdf03e1eeaec48" 1387 | dependencies = [ 1388 | "bytes", 1389 | "http 1.1.0", 1390 | "pingora-error", 1391 | ] 1392 | 1393 | [[package]] 1394 | name = "pingora-ketama" 1395 | version = "0.2.0" 1396 | source = "registry+https://github.com/rust-lang/crates.io-index" 1397 | checksum = "721784df91d49082c3c633eb62f51498d9c871009ea1e90c034b6023daec74b3" 1398 | dependencies = [ 1399 | "crc32fast", 1400 | ] 1401 | 1402 | [[package]] 1403 | name = "pingora-load-balancing" 1404 | version = "0.2.0" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "4a9a0889bcf7d6cc57ecbe2357ae05aa62ad25035338b0475cff0dc448e26344" 1407 | dependencies = [ 1408 | "arc-swap", 1409 | "async-trait", 1410 | "fnv", 1411 | "futures", 1412 | "log", 1413 | "pingora-core", 1414 | "pingora-error", 1415 | "pingora-http", 1416 | "pingora-ketama", 1417 | "pingora-runtime", 1418 | "rand", 1419 | "tokio", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "pingora-lru" 1424 | version = "0.2.0" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "18804829a254e9e929657bf5fce975e328ac13a150f35ca32d7cfd831f6cecc9" 1427 | dependencies = [ 1428 | "arrayvec", 1429 | "hashbrown 0.14.5", 1430 | "parking_lot", 1431 | "rand", 1432 | ] 1433 | 1434 | [[package]] 1435 | name = "pingora-openssl" 1436 | version = "0.2.0" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | checksum = "a799d7d6434d1c0e41daff965d8b7a26c2f2459bd120ae5294018749f70f63be" 1439 | dependencies = [ 1440 | "foreign-types 0.3.2", 1441 | "libc", 1442 | "openssl", 1443 | "openssl-src", 1444 | "openssl-sys", 1445 | "tokio-openssl", 1446 | ] 1447 | 1448 | [[package]] 1449 | name = "pingora-pool" 1450 | version = "0.2.0" 1451 | source = "registry+https://github.com/rust-lang/crates.io-index" 1452 | checksum = "2009859df7d9db0e67622a54cb91caf8b3510c8016d4cea04c568b3cb2d35a1f" 1453 | dependencies = [ 1454 | "crossbeam-queue", 1455 | "log", 1456 | "lru", 1457 | "parking_lot", 1458 | "pingora-timeout", 1459 | "thread_local", 1460 | "tokio", 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "pingora-proxy" 1465 | version = "0.2.0" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "42b42eedf1f3cab0497a7f63ddc1f57bb0ee3d8ba8ccbcd338e6b2e86712c9ca" 1468 | dependencies = [ 1469 | "async-trait", 1470 | "bytes", 1471 | "futures", 1472 | "h2 0.4.5", 1473 | "http 1.1.0", 1474 | "log", 1475 | "once_cell", 1476 | "pingora-cache", 1477 | "pingora-core", 1478 | "pingora-error", 1479 | "pingora-http", 1480 | "pingora-timeout", 1481 | "regex", 1482 | "structopt", 1483 | "tokio", 1484 | ] 1485 | 1486 | [[package]] 1487 | name = "pingora-reverse-proxy" 1488 | version = "0.1.0" 1489 | dependencies = [ 1490 | "async-trait", 1491 | "http 1.1.0", 1492 | "jemallocator", 1493 | "log", 1494 | "pingora", 1495 | "pretty_env_logger", 1496 | "structopt", 1497 | "tokio", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "pingora-runtime" 1502 | version = "0.2.0" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "c8b3220ffd0b1ccb1f65765318615a7c9358ba79c90fe52860f09f8899b499ea" 1505 | dependencies = [ 1506 | "once_cell", 1507 | "rand", 1508 | "thread_local", 1509 | "tokio", 1510 | ] 1511 | 1512 | [[package]] 1513 | name = "pingora-timeout" 1514 | version = "0.2.0" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "ced7494c265909172e9bd7d61ceb0098abde8ec4f1744cdc555a24d084517829" 1517 | dependencies = [ 1518 | "futures", 1519 | "once_cell", 1520 | "parking_lot", 1521 | "pin-project-lite", 1522 | "thread_local", 1523 | "tokio", 1524 | ] 1525 | 1526 | [[package]] 1527 | name = "pkg-config" 1528 | version = "0.3.30" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 1531 | 1532 | [[package]] 1533 | name = "powerfmt" 1534 | version = "0.2.0" 1535 | source = "registry+https://github.com/rust-lang/crates.io-index" 1536 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 1537 | 1538 | [[package]] 1539 | name = "ppv-lite86" 1540 | version = "0.2.17" 1541 | source = "registry+https://github.com/rust-lang/crates.io-index" 1542 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1543 | 1544 | [[package]] 1545 | name = "pretty_env_logger" 1546 | version = "0.5.0" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c" 1549 | dependencies = [ 1550 | "env_logger", 1551 | "log", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "proc-macro-error" 1556 | version = "1.0.4" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1559 | dependencies = [ 1560 | "proc-macro-error-attr", 1561 | "proc-macro2", 1562 | "quote", 1563 | "syn 1.0.109", 1564 | "version_check", 1565 | ] 1566 | 1567 | [[package]] 1568 | name = "proc-macro-error-attr" 1569 | version = "1.0.4" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1572 | dependencies = [ 1573 | "proc-macro2", 1574 | "quote", 1575 | "version_check", 1576 | ] 1577 | 1578 | [[package]] 1579 | name = "proc-macro2" 1580 | version = "1.0.86" 1581 | source = "registry+https://github.com/rust-lang/crates.io-index" 1582 | checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" 1583 | dependencies = [ 1584 | "unicode-ident", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "prometheus" 1589 | version = "0.13.4" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" 1592 | dependencies = [ 1593 | "cfg-if", 1594 | "fnv", 1595 | "lazy_static", 1596 | "memchr", 1597 | "parking_lot", 1598 | "protobuf", 1599 | "thiserror", 1600 | ] 1601 | 1602 | [[package]] 1603 | name = "protobuf" 1604 | version = "2.28.0" 1605 | source = "registry+https://github.com/rust-lang/crates.io-index" 1606 | checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" 1607 | 1608 | [[package]] 1609 | name = "quote" 1610 | version = "1.0.36" 1611 | source = "registry+https://github.com/rust-lang/crates.io-index" 1612 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 1613 | dependencies = [ 1614 | "proc-macro2", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "rand" 1619 | version = "0.8.5" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1622 | dependencies = [ 1623 | "libc", 1624 | "rand_chacha", 1625 | "rand_core", 1626 | ] 1627 | 1628 | [[package]] 1629 | name = "rand_chacha" 1630 | version = "0.3.1" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1633 | dependencies = [ 1634 | "ppv-lite86", 1635 | "rand_core", 1636 | ] 1637 | 1638 | [[package]] 1639 | name = "rand_core" 1640 | version = "0.6.4" 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" 1642 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1643 | dependencies = [ 1644 | "getrandom", 1645 | ] 1646 | 1647 | [[package]] 1648 | name = "redox_syscall" 1649 | version = "0.5.2" 1650 | source = "registry+https://github.com/rust-lang/crates.io-index" 1651 | checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" 1652 | dependencies = [ 1653 | "bitflags 2.5.0", 1654 | ] 1655 | 1656 | [[package]] 1657 | name = "regex" 1658 | version = "1.10.5" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" 1661 | dependencies = [ 1662 | "aho-corasick", 1663 | "memchr", 1664 | "regex-automata", 1665 | "regex-syntax", 1666 | ] 1667 | 1668 | [[package]] 1669 | name = "regex-automata" 1670 | version = "0.4.7" 1671 | source = "registry+https://github.com/rust-lang/crates.io-index" 1672 | checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" 1673 | dependencies = [ 1674 | "aho-corasick", 1675 | "memchr", 1676 | "regex-syntax", 1677 | ] 1678 | 1679 | [[package]] 1680 | name = "regex-syntax" 1681 | version = "0.8.4" 1682 | source = "registry+https://github.com/rust-lang/crates.io-index" 1683 | checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" 1684 | 1685 | [[package]] 1686 | name = "reqwest" 1687 | version = "0.11.27" 1688 | source = "registry+https://github.com/rust-lang/crates.io-index" 1689 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 1690 | dependencies = [ 1691 | "base64", 1692 | "bytes", 1693 | "encoding_rs", 1694 | "futures-core", 1695 | "futures-util", 1696 | "h2 0.3.26", 1697 | "http 0.2.12", 1698 | "http-body", 1699 | "hyper", 1700 | "hyper-rustls", 1701 | "ipnet", 1702 | "js-sys", 1703 | "log", 1704 | "mime", 1705 | "once_cell", 1706 | "percent-encoding", 1707 | "pin-project-lite", 1708 | "rustls", 1709 | "rustls-pemfile", 1710 | "serde", 1711 | "serde_json", 1712 | "serde_urlencoded", 1713 | "sync_wrapper", 1714 | "system-configuration", 1715 | "tokio", 1716 | "tokio-rustls", 1717 | "tower-service", 1718 | "url", 1719 | "wasm-bindgen", 1720 | "wasm-bindgen-futures", 1721 | "web-sys", 1722 | "webpki-roots", 1723 | "winreg", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "ring" 1728 | version = "0.17.8" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 1731 | dependencies = [ 1732 | "cc", 1733 | "cfg-if", 1734 | "getrandom", 1735 | "libc", 1736 | "spin", 1737 | "untrusted", 1738 | "windows-sys 0.52.0", 1739 | ] 1740 | 1741 | [[package]] 1742 | name = "rmp" 1743 | version = "0.8.14" 1744 | source = "registry+https://github.com/rust-lang/crates.io-index" 1745 | checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" 1746 | dependencies = [ 1747 | "byteorder", 1748 | "num-traits", 1749 | "paste", 1750 | ] 1751 | 1752 | [[package]] 1753 | name = "rmp-serde" 1754 | version = "1.3.0" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" 1757 | dependencies = [ 1758 | "byteorder", 1759 | "rmp", 1760 | "serde", 1761 | ] 1762 | 1763 | [[package]] 1764 | name = "rust_decimal" 1765 | version = "1.35.0" 1766 | source = "registry+https://github.com/rust-lang/crates.io-index" 1767 | checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" 1768 | dependencies = [ 1769 | "arrayvec", 1770 | "num-traits", 1771 | ] 1772 | 1773 | [[package]] 1774 | name = "rustc-demangle" 1775 | version = "0.1.24" 1776 | source = "registry+https://github.com/rust-lang/crates.io-index" 1777 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 1778 | 1779 | [[package]] 1780 | name = "rustc-hash" 1781 | version = "1.1.0" 1782 | source = "registry+https://github.com/rust-lang/crates.io-index" 1783 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 1784 | 1785 | [[package]] 1786 | name = "rustc_version" 1787 | version = "0.4.0" 1788 | source = "registry+https://github.com/rust-lang/crates.io-index" 1789 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 1790 | dependencies = [ 1791 | "semver", 1792 | ] 1793 | 1794 | [[package]] 1795 | name = "rustls" 1796 | version = "0.21.12" 1797 | source = "registry+https://github.com/rust-lang/crates.io-index" 1798 | checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 1799 | dependencies = [ 1800 | "log", 1801 | "ring", 1802 | "rustls-webpki", 1803 | "sct", 1804 | ] 1805 | 1806 | [[package]] 1807 | name = "rustls-pemfile" 1808 | version = "1.0.4" 1809 | source = "registry+https://github.com/rust-lang/crates.io-index" 1810 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 1811 | dependencies = [ 1812 | "base64", 1813 | ] 1814 | 1815 | [[package]] 1816 | name = "rustls-webpki" 1817 | version = "0.101.7" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 1820 | dependencies = [ 1821 | "ring", 1822 | "untrusted", 1823 | ] 1824 | 1825 | [[package]] 1826 | name = "rustracing" 1827 | version = "0.5.1" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "a44822b10c095e574869de2b891e40c724fef42cadaea040d1cd3bdbb13d36a5" 1830 | dependencies = [ 1831 | "backtrace", 1832 | "crossbeam-channel", 1833 | "rand", 1834 | "trackable 0.2.24", 1835 | ] 1836 | 1837 | [[package]] 1838 | name = "rustracing_jaeger" 1839 | version = "0.7.0" 1840 | source = "registry+https://github.com/rust-lang/crates.io-index" 1841 | checksum = "a6c2fe9411ef5f43ac773f0e84ad735804c55719346a7aad52de2d9162db97c8" 1842 | dependencies = [ 1843 | "crossbeam-channel", 1844 | "hostname", 1845 | "percent-encoding", 1846 | "rand", 1847 | "rustracing", 1848 | "thrift_codec", 1849 | "trackable 0.2.24", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "ryu" 1854 | version = "1.0.18" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 1857 | 1858 | [[package]] 1859 | name = "scopeguard" 1860 | version = "1.2.0" 1861 | source = "registry+https://github.com/rust-lang/crates.io-index" 1862 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1863 | 1864 | [[package]] 1865 | name = "sct" 1866 | version = "0.7.1" 1867 | source = "registry+https://github.com/rust-lang/crates.io-index" 1868 | checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 1869 | dependencies = [ 1870 | "ring", 1871 | "untrusted", 1872 | ] 1873 | 1874 | [[package]] 1875 | name = "semver" 1876 | version = "1.0.23" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" 1879 | 1880 | [[package]] 1881 | name = "sentry" 1882 | version = "0.26.0" 1883 | source = "registry+https://github.com/rust-lang/crates.io-index" 1884 | checksum = "904eca4fb30c6112a1dae60c0a9e29cfb42f42129da4260f1ee20e94151b62e3" 1885 | dependencies = [ 1886 | "httpdate", 1887 | "reqwest", 1888 | "sentry-backtrace", 1889 | "sentry-contexts", 1890 | "sentry-core", 1891 | "sentry-panic", 1892 | "tokio", 1893 | ] 1894 | 1895 | [[package]] 1896 | name = "sentry-backtrace" 1897 | version = "0.26.0" 1898 | source = "registry+https://github.com/rust-lang/crates.io-index" 1899 | checksum = "1671189d1b759879fa4bdde46c50a499abb14332ed81f84fc6f60658f41b2fdb" 1900 | dependencies = [ 1901 | "backtrace", 1902 | "lazy_static", 1903 | "regex", 1904 | "sentry-core", 1905 | ] 1906 | 1907 | [[package]] 1908 | name = "sentry-contexts" 1909 | version = "0.26.0" 1910 | source = "registry+https://github.com/rust-lang/crates.io-index" 1911 | checksum = "db80ceff16bb1a4b2689b8758e5e61e405fc4d8ff9f2d1b5b845b76ce37fa34e" 1912 | dependencies = [ 1913 | "hostname", 1914 | "libc", 1915 | "rustc_version", 1916 | "sentry-core", 1917 | "uname", 1918 | ] 1919 | 1920 | [[package]] 1921 | name = "sentry-core" 1922 | version = "0.26.0" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "6c9f509d3959ed4dbbd80ca42572caad682aaa1cdd92c719e0815d0e87f82c96" 1925 | dependencies = [ 1926 | "lazy_static", 1927 | "rand", 1928 | "sentry-types", 1929 | "serde", 1930 | "serde_json", 1931 | ] 1932 | 1933 | [[package]] 1934 | name = "sentry-panic" 1935 | version = "0.26.0" 1936 | source = "registry+https://github.com/rust-lang/crates.io-index" 1937 | checksum = "f8b442769cc34115f64393f7bfe4f863c3c38749e0c0b9613a7ae25b37c7ba53" 1938 | dependencies = [ 1939 | "sentry-backtrace", 1940 | "sentry-core", 1941 | ] 1942 | 1943 | [[package]] 1944 | name = "sentry-types" 1945 | version = "0.26.0" 1946 | source = "registry+https://github.com/rust-lang/crates.io-index" 1947 | checksum = "254b600e93e9ef00a48382c9f1e86d27884bd9a5489efa4eb9210c20c72e88a6" 1948 | dependencies = [ 1949 | "debugid", 1950 | "getrandom", 1951 | "hex", 1952 | "serde", 1953 | "serde_json", 1954 | "thiserror", 1955 | "time", 1956 | "url", 1957 | "uuid", 1958 | ] 1959 | 1960 | [[package]] 1961 | name = "serde" 1962 | version = "1.0.203" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" 1965 | dependencies = [ 1966 | "serde_derive", 1967 | ] 1968 | 1969 | [[package]] 1970 | name = "serde_derive" 1971 | version = "1.0.203" 1972 | source = "registry+https://github.com/rust-lang/crates.io-index" 1973 | checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" 1974 | dependencies = [ 1975 | "proc-macro2", 1976 | "quote", 1977 | "syn 2.0.67", 1978 | ] 1979 | 1980 | [[package]] 1981 | name = "serde_json" 1982 | version = "1.0.117" 1983 | source = "registry+https://github.com/rust-lang/crates.io-index" 1984 | checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" 1985 | dependencies = [ 1986 | "itoa", 1987 | "ryu", 1988 | "serde", 1989 | ] 1990 | 1991 | [[package]] 1992 | name = "serde_urlencoded" 1993 | version = "0.7.1" 1994 | source = "registry+https://github.com/rust-lang/crates.io-index" 1995 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1996 | dependencies = [ 1997 | "form_urlencoded", 1998 | "itoa", 1999 | "ryu", 2000 | "serde", 2001 | ] 2002 | 2003 | [[package]] 2004 | name = "serde_yaml" 2005 | version = "0.8.26" 2006 | source = "registry+https://github.com/rust-lang/crates.io-index" 2007 | checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" 2008 | dependencies = [ 2009 | "indexmap 1.9.3", 2010 | "ryu", 2011 | "serde", 2012 | "yaml-rust", 2013 | ] 2014 | 2015 | [[package]] 2016 | name = "sfv" 2017 | version = "0.9.4" 2018 | source = "registry+https://github.com/rust-lang/crates.io-index" 2019 | checksum = "f27daf6ed3fc7ffd5ea3ce9f684fe351c47e50f2fdbb6236e2bad0b440dbe408" 2020 | dependencies = [ 2021 | "data-encoding", 2022 | "indexmap 2.2.6", 2023 | "rust_decimal", 2024 | ] 2025 | 2026 | [[package]] 2027 | name = "shlex" 2028 | version = "1.3.0" 2029 | source = "registry+https://github.com/rust-lang/crates.io-index" 2030 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2031 | 2032 | [[package]] 2033 | name = "signal-hook-registry" 2034 | version = "1.4.2" 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" 2036 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 2037 | dependencies = [ 2038 | "libc", 2039 | ] 2040 | 2041 | [[package]] 2042 | name = "slab" 2043 | version = "0.4.9" 2044 | source = "registry+https://github.com/rust-lang/crates.io-index" 2045 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2046 | dependencies = [ 2047 | "autocfg", 2048 | ] 2049 | 2050 | [[package]] 2051 | name = "smallvec" 2052 | version = "1.13.2" 2053 | source = "registry+https://github.com/rust-lang/crates.io-index" 2054 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 2055 | 2056 | [[package]] 2057 | name = "socket2" 2058 | version = "0.5.7" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 2061 | dependencies = [ 2062 | "libc", 2063 | "windows-sys 0.52.0", 2064 | ] 2065 | 2066 | [[package]] 2067 | name = "spin" 2068 | version = "0.9.8" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 2071 | 2072 | [[package]] 2073 | name = "strsim" 2074 | version = "0.8.0" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 2077 | 2078 | [[package]] 2079 | name = "structopt" 2080 | version = "0.3.26" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" 2083 | dependencies = [ 2084 | "clap", 2085 | "lazy_static", 2086 | "structopt-derive", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "structopt-derive" 2091 | version = "0.4.18" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" 2094 | dependencies = [ 2095 | "heck", 2096 | "proc-macro-error", 2097 | "proc-macro2", 2098 | "quote", 2099 | "syn 1.0.109", 2100 | ] 2101 | 2102 | [[package]] 2103 | name = "subtle" 2104 | version = "2.6.0" 2105 | source = "registry+https://github.com/rust-lang/crates.io-index" 2106 | checksum = "0d0208408ba0c3df17ed26eb06992cb1a1268d41b2c0e12e65203fbe3972cee5" 2107 | 2108 | [[package]] 2109 | name = "syn" 2110 | version = "1.0.109" 2111 | source = "registry+https://github.com/rust-lang/crates.io-index" 2112 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2113 | dependencies = [ 2114 | "proc-macro2", 2115 | "quote", 2116 | "unicode-ident", 2117 | ] 2118 | 2119 | [[package]] 2120 | name = "syn" 2121 | version = "2.0.67" 2122 | source = "registry+https://github.com/rust-lang/crates.io-index" 2123 | checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90" 2124 | dependencies = [ 2125 | "proc-macro2", 2126 | "quote", 2127 | "unicode-ident", 2128 | ] 2129 | 2130 | [[package]] 2131 | name = "sync_wrapper" 2132 | version = "0.1.2" 2133 | source = "registry+https://github.com/rust-lang/crates.io-index" 2134 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 2135 | 2136 | [[package]] 2137 | name = "system-configuration" 2138 | version = "0.5.1" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 2141 | dependencies = [ 2142 | "bitflags 1.3.2", 2143 | "core-foundation", 2144 | "system-configuration-sys", 2145 | ] 2146 | 2147 | [[package]] 2148 | name = "system-configuration-sys" 2149 | version = "0.5.0" 2150 | source = "registry+https://github.com/rust-lang/crates.io-index" 2151 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 2152 | dependencies = [ 2153 | "core-foundation-sys", 2154 | "libc", 2155 | ] 2156 | 2157 | [[package]] 2158 | name = "termcolor" 2159 | version = "1.4.1" 2160 | source = "registry+https://github.com/rust-lang/crates.io-index" 2161 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2162 | dependencies = [ 2163 | "winapi-util", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "textwrap" 2168 | version = "0.11.0" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 2171 | dependencies = [ 2172 | "unicode-width", 2173 | ] 2174 | 2175 | [[package]] 2176 | name = "thiserror" 2177 | version = "1.0.61" 2178 | source = "registry+https://github.com/rust-lang/crates.io-index" 2179 | checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" 2180 | dependencies = [ 2181 | "thiserror-impl", 2182 | ] 2183 | 2184 | [[package]] 2185 | name = "thiserror-impl" 2186 | version = "1.0.61" 2187 | source = "registry+https://github.com/rust-lang/crates.io-index" 2188 | checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" 2189 | dependencies = [ 2190 | "proc-macro2", 2191 | "quote", 2192 | "syn 2.0.67", 2193 | ] 2194 | 2195 | [[package]] 2196 | name = "thread_local" 2197 | version = "1.1.8" 2198 | source = "registry+https://github.com/rust-lang/crates.io-index" 2199 | checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 2200 | dependencies = [ 2201 | "cfg-if", 2202 | "once_cell", 2203 | ] 2204 | 2205 | [[package]] 2206 | name = "thrift_codec" 2207 | version = "0.1.1" 2208 | source = "registry+https://github.com/rust-lang/crates.io-index" 2209 | checksum = "8fb61fb3d0a0af14949f3a6949b2639112e13226647112824f4d081533f9b1a8" 2210 | dependencies = [ 2211 | "byteorder", 2212 | "trackable 0.2.24", 2213 | ] 2214 | 2215 | [[package]] 2216 | name = "time" 2217 | version = "0.3.36" 2218 | source = "registry+https://github.com/rust-lang/crates.io-index" 2219 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 2220 | dependencies = [ 2221 | "deranged", 2222 | "itoa", 2223 | "num-conv", 2224 | "powerfmt", 2225 | "serde", 2226 | "time-core", 2227 | "time-macros", 2228 | ] 2229 | 2230 | [[package]] 2231 | name = "time-core" 2232 | version = "0.1.2" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 2235 | 2236 | [[package]] 2237 | name = "time-macros" 2238 | version = "0.2.18" 2239 | source = "registry+https://github.com/rust-lang/crates.io-index" 2240 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 2241 | dependencies = [ 2242 | "num-conv", 2243 | "time-core", 2244 | ] 2245 | 2246 | [[package]] 2247 | name = "tinyvec" 2248 | version = "1.6.0" 2249 | source = "registry+https://github.com/rust-lang/crates.io-index" 2250 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2251 | dependencies = [ 2252 | "tinyvec_macros", 2253 | ] 2254 | 2255 | [[package]] 2256 | name = "tinyvec_macros" 2257 | version = "0.1.1" 2258 | source = "registry+https://github.com/rust-lang/crates.io-index" 2259 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2260 | 2261 | [[package]] 2262 | name = "tokio" 2263 | version = "1.38.0" 2264 | source = "registry+https://github.com/rust-lang/crates.io-index" 2265 | checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" 2266 | dependencies = [ 2267 | "backtrace", 2268 | "bytes", 2269 | "libc", 2270 | "mio", 2271 | "num_cpus", 2272 | "pin-project-lite", 2273 | "signal-hook-registry", 2274 | "socket2", 2275 | "tokio-macros", 2276 | "windows-sys 0.48.0", 2277 | ] 2278 | 2279 | [[package]] 2280 | name = "tokio-macros" 2281 | version = "2.3.0" 2282 | source = "registry+https://github.com/rust-lang/crates.io-index" 2283 | checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" 2284 | dependencies = [ 2285 | "proc-macro2", 2286 | "quote", 2287 | "syn 2.0.67", 2288 | ] 2289 | 2290 | [[package]] 2291 | name = "tokio-openssl" 2292 | version = "0.6.4" 2293 | source = "registry+https://github.com/rust-lang/crates.io-index" 2294 | checksum = "6ffab79df67727f6acf57f1ff743091873c24c579b1e2ce4d8f53e47ded4d63d" 2295 | dependencies = [ 2296 | "futures-util", 2297 | "openssl", 2298 | "openssl-sys", 2299 | "tokio", 2300 | ] 2301 | 2302 | [[package]] 2303 | name = "tokio-rustls" 2304 | version = "0.24.1" 2305 | source = "registry+https://github.com/rust-lang/crates.io-index" 2306 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 2307 | dependencies = [ 2308 | "rustls", 2309 | "tokio", 2310 | ] 2311 | 2312 | [[package]] 2313 | name = "tokio-stream" 2314 | version = "0.1.15" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" 2317 | dependencies = [ 2318 | "futures-core", 2319 | "pin-project-lite", 2320 | "tokio", 2321 | ] 2322 | 2323 | [[package]] 2324 | name = "tokio-test" 2325 | version = "0.4.4" 2326 | source = "registry+https://github.com/rust-lang/crates.io-index" 2327 | checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" 2328 | dependencies = [ 2329 | "async-stream", 2330 | "bytes", 2331 | "futures-core", 2332 | "tokio", 2333 | "tokio-stream", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "tokio-util" 2338 | version = "0.7.11" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 2341 | dependencies = [ 2342 | "bytes", 2343 | "futures-core", 2344 | "futures-sink", 2345 | "pin-project-lite", 2346 | "tokio", 2347 | ] 2348 | 2349 | [[package]] 2350 | name = "tower-service" 2351 | version = "0.3.2" 2352 | source = "registry+https://github.com/rust-lang/crates.io-index" 2353 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 2354 | 2355 | [[package]] 2356 | name = "tracing" 2357 | version = "0.1.40" 2358 | source = "registry+https://github.com/rust-lang/crates.io-index" 2359 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 2360 | dependencies = [ 2361 | "pin-project-lite", 2362 | "tracing-core", 2363 | ] 2364 | 2365 | [[package]] 2366 | name = "tracing-core" 2367 | version = "0.1.32" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 2370 | dependencies = [ 2371 | "once_cell", 2372 | ] 2373 | 2374 | [[package]] 2375 | name = "trackable" 2376 | version = "0.2.24" 2377 | source = "registry+https://github.com/rust-lang/crates.io-index" 2378 | checksum = "b98abb9e7300b9ac902cc04920945a874c1973e08c310627cc4458c04b70dd32" 2379 | dependencies = [ 2380 | "trackable 1.3.0", 2381 | "trackable_derive", 2382 | ] 2383 | 2384 | [[package]] 2385 | name = "trackable" 2386 | version = "1.3.0" 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" 2388 | checksum = "b15bd114abb99ef8cee977e517c8f37aee63f184f2d08e3e6ceca092373369ae" 2389 | dependencies = [ 2390 | "trackable_derive", 2391 | ] 2392 | 2393 | [[package]] 2394 | name = "trackable_derive" 2395 | version = "1.0.0" 2396 | source = "registry+https://github.com/rust-lang/crates.io-index" 2397 | checksum = "ebeb235c5847e2f82cfe0f07eb971d1e5f6804b18dac2ae16349cc604380f82f" 2398 | dependencies = [ 2399 | "quote", 2400 | "syn 1.0.109", 2401 | ] 2402 | 2403 | [[package]] 2404 | name = "try-lock" 2405 | version = "0.2.5" 2406 | source = "registry+https://github.com/rust-lang/crates.io-index" 2407 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 2408 | 2409 | [[package]] 2410 | name = "typenum" 2411 | version = "1.17.0" 2412 | source = "registry+https://github.com/rust-lang/crates.io-index" 2413 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 2414 | 2415 | [[package]] 2416 | name = "uname" 2417 | version = "0.1.1" 2418 | source = "registry+https://github.com/rust-lang/crates.io-index" 2419 | checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" 2420 | dependencies = [ 2421 | "libc", 2422 | ] 2423 | 2424 | [[package]] 2425 | name = "unicase" 2426 | version = "2.7.0" 2427 | source = "registry+https://github.com/rust-lang/crates.io-index" 2428 | checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" 2429 | dependencies = [ 2430 | "version_check", 2431 | ] 2432 | 2433 | [[package]] 2434 | name = "unicode-bidi" 2435 | version = "0.3.15" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 2438 | 2439 | [[package]] 2440 | name = "unicode-ident" 2441 | version = "1.0.12" 2442 | source = "registry+https://github.com/rust-lang/crates.io-index" 2443 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 2444 | 2445 | [[package]] 2446 | name = "unicode-normalization" 2447 | version = "0.1.23" 2448 | source = "registry+https://github.com/rust-lang/crates.io-index" 2449 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 2450 | dependencies = [ 2451 | "tinyvec", 2452 | ] 2453 | 2454 | [[package]] 2455 | name = "unicode-segmentation" 2456 | version = "1.11.0" 2457 | source = "registry+https://github.com/rust-lang/crates.io-index" 2458 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 2459 | 2460 | [[package]] 2461 | name = "unicode-width" 2462 | version = "0.1.13" 2463 | source = "registry+https://github.com/rust-lang/crates.io-index" 2464 | checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" 2465 | 2466 | [[package]] 2467 | name = "untrusted" 2468 | version = "0.9.0" 2469 | source = "registry+https://github.com/rust-lang/crates.io-index" 2470 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 2471 | 2472 | [[package]] 2473 | name = "url" 2474 | version = "2.5.2" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 2477 | dependencies = [ 2478 | "form_urlencoded", 2479 | "idna", 2480 | "percent-encoding", 2481 | "serde", 2482 | ] 2483 | 2484 | [[package]] 2485 | name = "uuid" 2486 | version = "1.8.0" 2487 | source = "registry+https://github.com/rust-lang/crates.io-index" 2488 | checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" 2489 | dependencies = [ 2490 | "getrandom", 2491 | "serde", 2492 | ] 2493 | 2494 | [[package]] 2495 | name = "vcpkg" 2496 | version = "0.2.15" 2497 | source = "registry+https://github.com/rust-lang/crates.io-index" 2498 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 2499 | 2500 | [[package]] 2501 | name = "vec_map" 2502 | version = "0.8.2" 2503 | source = "registry+https://github.com/rust-lang/crates.io-index" 2504 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 2505 | 2506 | [[package]] 2507 | name = "version_check" 2508 | version = "0.9.4" 2509 | source = "registry+https://github.com/rust-lang/crates.io-index" 2510 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2511 | 2512 | [[package]] 2513 | name = "want" 2514 | version = "0.3.1" 2515 | source = "registry+https://github.com/rust-lang/crates.io-index" 2516 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 2517 | dependencies = [ 2518 | "try-lock", 2519 | ] 2520 | 2521 | [[package]] 2522 | name = "wasi" 2523 | version = "0.11.0+wasi-snapshot-preview1" 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" 2525 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2526 | 2527 | [[package]] 2528 | name = "wasm-bindgen" 2529 | version = "0.2.92" 2530 | source = "registry+https://github.com/rust-lang/crates.io-index" 2531 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 2532 | dependencies = [ 2533 | "cfg-if", 2534 | "wasm-bindgen-macro", 2535 | ] 2536 | 2537 | [[package]] 2538 | name = "wasm-bindgen-backend" 2539 | version = "0.2.92" 2540 | source = "registry+https://github.com/rust-lang/crates.io-index" 2541 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 2542 | dependencies = [ 2543 | "bumpalo", 2544 | "log", 2545 | "once_cell", 2546 | "proc-macro2", 2547 | "quote", 2548 | "syn 2.0.67", 2549 | "wasm-bindgen-shared", 2550 | ] 2551 | 2552 | [[package]] 2553 | name = "wasm-bindgen-futures" 2554 | version = "0.4.42" 2555 | source = "registry+https://github.com/rust-lang/crates.io-index" 2556 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 2557 | dependencies = [ 2558 | "cfg-if", 2559 | "js-sys", 2560 | "wasm-bindgen", 2561 | "web-sys", 2562 | ] 2563 | 2564 | [[package]] 2565 | name = "wasm-bindgen-macro" 2566 | version = "0.2.92" 2567 | source = "registry+https://github.com/rust-lang/crates.io-index" 2568 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 2569 | dependencies = [ 2570 | "quote", 2571 | "wasm-bindgen-macro-support", 2572 | ] 2573 | 2574 | [[package]] 2575 | name = "wasm-bindgen-macro-support" 2576 | version = "0.2.92" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 2579 | dependencies = [ 2580 | "proc-macro2", 2581 | "quote", 2582 | "syn 2.0.67", 2583 | "wasm-bindgen-backend", 2584 | "wasm-bindgen-shared", 2585 | ] 2586 | 2587 | [[package]] 2588 | name = "wasm-bindgen-shared" 2589 | version = "0.2.92" 2590 | source = "registry+https://github.com/rust-lang/crates.io-index" 2591 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 2592 | 2593 | [[package]] 2594 | name = "web-sys" 2595 | version = "0.3.69" 2596 | source = "registry+https://github.com/rust-lang/crates.io-index" 2597 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 2598 | dependencies = [ 2599 | "js-sys", 2600 | "wasm-bindgen", 2601 | ] 2602 | 2603 | [[package]] 2604 | name = "webpki-roots" 2605 | version = "0.25.4" 2606 | source = "registry+https://github.com/rust-lang/crates.io-index" 2607 | checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 2608 | 2609 | [[package]] 2610 | name = "winapi" 2611 | version = "0.3.9" 2612 | source = "registry+https://github.com/rust-lang/crates.io-index" 2613 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2614 | dependencies = [ 2615 | "winapi-i686-pc-windows-gnu", 2616 | "winapi-x86_64-pc-windows-gnu", 2617 | ] 2618 | 2619 | [[package]] 2620 | name = "winapi-i686-pc-windows-gnu" 2621 | version = "0.4.0" 2622 | source = "registry+https://github.com/rust-lang/crates.io-index" 2623 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2624 | 2625 | [[package]] 2626 | name = "winapi-util" 2627 | version = "0.1.8" 2628 | source = "registry+https://github.com/rust-lang/crates.io-index" 2629 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 2630 | dependencies = [ 2631 | "windows-sys 0.52.0", 2632 | ] 2633 | 2634 | [[package]] 2635 | name = "winapi-x86_64-pc-windows-gnu" 2636 | version = "0.4.0" 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" 2638 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2639 | 2640 | [[package]] 2641 | name = "windows-sys" 2642 | version = "0.48.0" 2643 | source = "registry+https://github.com/rust-lang/crates.io-index" 2644 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2645 | dependencies = [ 2646 | "windows-targets 0.48.5", 2647 | ] 2648 | 2649 | [[package]] 2650 | name = "windows-sys" 2651 | version = "0.52.0" 2652 | source = "registry+https://github.com/rust-lang/crates.io-index" 2653 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2654 | dependencies = [ 2655 | "windows-targets 0.52.5", 2656 | ] 2657 | 2658 | [[package]] 2659 | name = "windows-targets" 2660 | version = "0.48.5" 2661 | source = "registry+https://github.com/rust-lang/crates.io-index" 2662 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2663 | dependencies = [ 2664 | "windows_aarch64_gnullvm 0.48.5", 2665 | "windows_aarch64_msvc 0.48.5", 2666 | "windows_i686_gnu 0.48.5", 2667 | "windows_i686_msvc 0.48.5", 2668 | "windows_x86_64_gnu 0.48.5", 2669 | "windows_x86_64_gnullvm 0.48.5", 2670 | "windows_x86_64_msvc 0.48.5", 2671 | ] 2672 | 2673 | [[package]] 2674 | name = "windows-targets" 2675 | version = "0.52.5" 2676 | source = "registry+https://github.com/rust-lang/crates.io-index" 2677 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 2678 | dependencies = [ 2679 | "windows_aarch64_gnullvm 0.52.5", 2680 | "windows_aarch64_msvc 0.52.5", 2681 | "windows_i686_gnu 0.52.5", 2682 | "windows_i686_gnullvm", 2683 | "windows_i686_msvc 0.52.5", 2684 | "windows_x86_64_gnu 0.52.5", 2685 | "windows_x86_64_gnullvm 0.52.5", 2686 | "windows_x86_64_msvc 0.52.5", 2687 | ] 2688 | 2689 | [[package]] 2690 | name = "windows_aarch64_gnullvm" 2691 | version = "0.48.5" 2692 | source = "registry+https://github.com/rust-lang/crates.io-index" 2693 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2694 | 2695 | [[package]] 2696 | name = "windows_aarch64_gnullvm" 2697 | version = "0.52.5" 2698 | source = "registry+https://github.com/rust-lang/crates.io-index" 2699 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 2700 | 2701 | [[package]] 2702 | name = "windows_aarch64_msvc" 2703 | version = "0.48.5" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2706 | 2707 | [[package]] 2708 | name = "windows_aarch64_msvc" 2709 | version = "0.52.5" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 2712 | 2713 | [[package]] 2714 | name = "windows_i686_gnu" 2715 | version = "0.48.5" 2716 | source = "registry+https://github.com/rust-lang/crates.io-index" 2717 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2718 | 2719 | [[package]] 2720 | name = "windows_i686_gnu" 2721 | version = "0.52.5" 2722 | source = "registry+https://github.com/rust-lang/crates.io-index" 2723 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 2724 | 2725 | [[package]] 2726 | name = "windows_i686_gnullvm" 2727 | version = "0.52.5" 2728 | source = "registry+https://github.com/rust-lang/crates.io-index" 2729 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 2730 | 2731 | [[package]] 2732 | name = "windows_i686_msvc" 2733 | version = "0.48.5" 2734 | source = "registry+https://github.com/rust-lang/crates.io-index" 2735 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2736 | 2737 | [[package]] 2738 | name = "windows_i686_msvc" 2739 | version = "0.52.5" 2740 | source = "registry+https://github.com/rust-lang/crates.io-index" 2741 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 2742 | 2743 | [[package]] 2744 | name = "windows_x86_64_gnu" 2745 | version = "0.48.5" 2746 | source = "registry+https://github.com/rust-lang/crates.io-index" 2747 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2748 | 2749 | [[package]] 2750 | name = "windows_x86_64_gnu" 2751 | version = "0.52.5" 2752 | source = "registry+https://github.com/rust-lang/crates.io-index" 2753 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 2754 | 2755 | [[package]] 2756 | name = "windows_x86_64_gnullvm" 2757 | version = "0.48.5" 2758 | source = "registry+https://github.com/rust-lang/crates.io-index" 2759 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 2760 | 2761 | [[package]] 2762 | name = "windows_x86_64_gnullvm" 2763 | version = "0.52.5" 2764 | source = "registry+https://github.com/rust-lang/crates.io-index" 2765 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 2766 | 2767 | [[package]] 2768 | name = "windows_x86_64_msvc" 2769 | version = "0.48.5" 2770 | source = "registry+https://github.com/rust-lang/crates.io-index" 2771 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 2772 | 2773 | [[package]] 2774 | name = "windows_x86_64_msvc" 2775 | version = "0.52.5" 2776 | source = "registry+https://github.com/rust-lang/crates.io-index" 2777 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 2778 | 2779 | [[package]] 2780 | name = "winreg" 2781 | version = "0.50.0" 2782 | source = "registry+https://github.com/rust-lang/crates.io-index" 2783 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 2784 | dependencies = [ 2785 | "cfg-if", 2786 | "windows-sys 0.48.0", 2787 | ] 2788 | 2789 | [[package]] 2790 | name = "yaml-rust" 2791 | version = "0.4.5" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" 2794 | dependencies = [ 2795 | "linked-hash-map", 2796 | ] 2797 | 2798 | [[package]] 2799 | name = "zerocopy" 2800 | version = "0.7.34" 2801 | source = "registry+https://github.com/rust-lang/crates.io-index" 2802 | checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" 2803 | dependencies = [ 2804 | "zerocopy-derive", 2805 | ] 2806 | 2807 | [[package]] 2808 | name = "zerocopy-derive" 2809 | version = "0.7.34" 2810 | source = "registry+https://github.com/rust-lang/crates.io-index" 2811 | checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" 2812 | dependencies = [ 2813 | "proc-macro2", 2814 | "quote", 2815 | "syn 2.0.67", 2816 | ] 2817 | 2818 | [[package]] 2819 | name = "zstd" 2820 | version = "0.13.1" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" 2823 | dependencies = [ 2824 | "zstd-safe", 2825 | ] 2826 | 2827 | [[package]] 2828 | name = "zstd-safe" 2829 | version = "7.1.0" 2830 | source = "registry+https://github.com/rust-lang/crates.io-index" 2831 | checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" 2832 | dependencies = [ 2833 | "zstd-sys", 2834 | ] 2835 | 2836 | [[package]] 2837 | name = "zstd-sys" 2838 | version = "2.0.11+zstd.1.5.6" 2839 | source = "registry+https://github.com/rust-lang/crates.io-index" 2840 | checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" 2841 | dependencies = [ 2842 | "cc", 2843 | "pkg-config", 2844 | ] 2845 | --------------------------------------------------------------------------------