Files
volcengine-server-manager/target/x86_64-pc-windows-gnu/release/deps/libtower_service-82c277737b0cbd63.rmeta

53 lines
23 KiB
Plaintext
Raw Normal View History

rust
0Y#rustc 1.94.1 (e408947bf 2026-03-25)<29><02>NM<4E>H<EFBFBD>/p<>|<7C>Π$;<3B>-3e8ec88e153dd14a<34><02><05><><EFBFBD>m <0B>:-Z1Ϥ-b7ca4e58e9c2b38f<38><02><1F>L{"<22>-<06>hz,+<2B>E-57f648b8ac272411<31><02>d<><1E>{' <09><18>z<EFBFBD><7A><EFBFBD><EFBFBD>-afa8b616ced7613d<33><02> <09>&<26><>r;<3B><36><CC96>/<2F>-31625bbb71278e91<39>rustc_std_workspace_core<72><65><EFBFBD><EFBFBD>NB<12><14>M<0E><P\-de1184eecc1de885<38><02>ӷvF<17>6<19>h<EFBFBD>#<23>'<27>s-dda75d287e838306<30> miniz_oxide<64>i<EFBFBD><69>‹B<C28B>7WzyF4_<34><5F>-0b9ef4d9bfa8a9e5<65>adler2<72>%<25><><EFBFBD><<3C><><EFBFBD><EFBFBD>D<EFBFBD>].<2E>-718ab5244863462b<32> hashbrown<77>њwHk<48>&<26><>LQ<4C>V<EFBFBD><56>-178729454426f155<35>rustc_std_workspace_alloc<6F><63>3Ay<><79><EFBFBD><19><><EFBFBD>[]?-61794faff8010214<31>
std_detect<EFBFBD>W<EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<0F>ijki<6B><69><EFBFBD><EFBFBD>-be014d48fae3de91<39>rustc_demangle<6C><65>iK' <0C><>V<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-3a623713f152d32d<32>windows_targets<74>A .',? <20>U`<60>@<40> x-fc0305376244409a<39>cfg_if<69>c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%9M<07><1F>-a5f4391365334c14<31> addr2line<6E>(v<><76><EFBFBD><EFBFBD> <0C><><EFBFBD>|D<><01><>-c9875f99726b3ef4<66>gimli<6C><69>j<EFBFBD><6A>o<>b<EFBFBD>[撱<><E692B1>-3244fa6a04742bd5<64>object<63><74> <0C>:+<2B>ۄy<DB84>a<EFBFBD>[B<>-9ee00fc69ae9b382<38>memchr<68>U<EFBFBD><55>ey5{<7B>e <0B>><3E>j<EFBFBD>-6179d7f2caeaf9d0<64><02> -w<>:Y_ؙ<5F>;<3B>wx<77>-4f3c6ed0f446d578<37><02>Service<63>Request<73>Response<73><02><02>
poll_ready<EFBFBD><02>'a<>S<><01><01><02><02><01><02><01><01><01><02><02><01><02>             <01><01><01><03><03><03>Box<6F><03><02><03><03><02><03>l&<26>4s<34><01><03>E<03>E<03>EGlobal<61> <00>5娒<35><E5A892>v<01>
<03>
D<>e<01><>eT<>e <01> <01> ,<14>et<>e<04>e<01><>et<02><><02><><02><><02><02><><02><02><><02><><02>x<>A"W?<02><><02><><02><><02><02><><02><02><><02><><02><02><><02><00>:X<><58><EFBFBD><EFBFBD><EFBFBD><01> <01>
Եe  <06> L<>e <02><02><02>waker<65><02><02> local_waker<65><02><02>ext<78><02><02>_marker<65><02><02>_marker2<72><02><00><00><>w<EFBFBD>W<EFBFBD><14>e<01><0F><0F>cx<63>!r<00> <17>D<>f<01><>f$<24>f <01> <01> ,<<3C>fl<>f<04>f<01><>eX<01> <01> L<>f<00>L<>f<00> <<3C>f<01>request<73>&Y<00><0F>D<>h<02><02>Unique<75><02><02> <02><02><01><02><00><>DD.G<01> <02><02><02><02><02> <02><00>B<EFBFBD><42><EFBFBD>gu<01> <0F>  <0B> <0F><01><>hT<>h <01> <01> <0F><14>ht<>h <0C>h<04>i<01><>ht<02><><02><><02><><02><02><><02><02><><02><><02>x<>A"W?<02><><02><><02><><02><02><><02><02><><02><><02><02><><02><00>:X<><58><EFBFBD><EFBFBD><EFBFBD><01><01> <01>
<00><>h <06> L<>h<00><14>h <06> <17><01><01>$-<01>1<0F><00>QD<>i<00><00> <00>*<01><>i$<24>i <01> <01> V<<3C>il<>i <0C>i<04>i<01><>iX<01> <01> L<>i<00>L<>i<00> <<3C>i<01><0F><01><01> )<01>-`<00><0F> <02><02>4<>ݚ<<3C><02><02>$<24><02><><06><00>i<00><>30 Definition of the core `Service` trait to Tower<65><1C><02><00><>JG The [`Service`] trait provides the necessary abstractions for defining<6E><00><>LI request / response clients and servers. It is simple but powerful and is<69><00><>1. used as the foundation for the rest of Tower.<2E><02><17><02><17>ݚ<17><02><02><17><02><><17><17><17><01><><17><01><><17><17><17><17><01><>R<00><>>; An asynchronous function from a `Request` to a `Response`.<2E><1C><02><00><>IF The `Service` trait is a simplified interface making it easy to write<74><00><>JG network applications in a modular and reusable way, decoupled from the<68><00><>GD underlying protocol. It is one of Tower's fundamental abstractions.<2E><1C><02><00><> # Functional<61><1C><02><00><>FC A `Service` is a function of a `Request`. It immediately returns a<><00><>C@ `Future` representing the eventual completion of processing the<68><00><>HE request. The actual request processing may happen at any time in the<68><00><>KH future, on any thread or executor. The processing may depend on calling<6E><00><>NK other services. At some point in the future, the processing will complete,<2C><00><> 96 and the `Future` will resolve to a response or error.<2E><1C> <02><00><> PM At a high level, the `Service::call` function represents an RPC request. The<68><00><>
0- `Service` value can be a server or a client.<2E><1C>
<02>d<>
# Server<65><1C>
<02><00><>
LI An RPC server *implements* the `Service` trait. Requests received by the<68><00><> RO server over the network are deserialized and then passed as an argument to the<68><00><> FC server value. The returned response is sent back over the network.<2E><1C> <02><00><> HE As an example, here is how an HTTP request is processed by a server:<3A><1C> <02>\<5C>  ```rust<73>ĸ  # use std::pin::Pin;<3B><00><> %" # use std::task::{Poll, Context};<3B><00><>  # use std::future::Future;<3B><00><>! # use tower_service::Service;<3B><00><>.+ use http::{Request, Response, StatusCode};<3B><1C><02><00><> struct HelloWorld;<3B><1C><02><00><>30 impl Service<Request<Vec<u8>>> for HelloWorld {<7B><00><>*' type Response = Response<Vec<u8>>;<3B><00><>! type Error = http::Error;<3B><00><>YV type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>>>>;<3B><1C><02><00><>YV fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::Error>> {<7B><00><> Poll::Ready(Ok(()))<29>L<> }<7D><1C><02><00><>C@ fn call(&mut self, req: Request<Vec<u8>>) -> Self::Future {<7B><00><> // create the body<64><00><>1. let body: Vec<u8> = "hello, world!\n"<22>܂ .as_bytes()<29><00><> .to_owned();<3B><00><>'$ // Create the HTTP response<73><00><>*' let resp = Response::builder()<29><00><>'$ .status(StatusCode::OK)<29>ܶ .body(body)<29><00><>=: .expect("Unable to create `http::Response`");<3B><1C><02><00><>-* // create a response in a future.<2E><00><> let fut = async {<7B><00><> Ok(resp)<29>t<> };<3B><1C><02><00><>96 // Return the response as an immediate future<72><00><> Box::pin(fut)<29>L<><01>+,<2C> }<7D><<3C> ```<60><1C><02>d<> # Client<6E><1C><02><00><>JG A client consumes a service by using a `Service` value. The client may<61><00><>MJ issue requests by invoking `call` and passing the request as an argument.<2E><00><>EB It then receives the response by waiting for the returned future.<2E><1C><02><00><>?< As an example, here is how a Redis request would be issued:<3A><1C><02><00><> ```rust,ignore<72><00><>%" let client = redis::Client::new()<29><00><>30 .connect("127.0.0.1:6379".parse().unwrap())<29><00><> .unwrap();<3B><1C><02><00><>OL let resp = client.call(Cmd::set("foo", "this is the value of foo")).await?;<3B><1C><02><00><>%" // Wait for the future to resolve<76><00><>+( println!("Redis response: {:?}", resp);<3B><<3C><01>1<1C><02><00><> # Middleware / Layer<65><1C><02><00><>KH More often than not, all the pieces needed for writing robust, scalable<6C><00><>KH network applications are the same no matter the underlying protocol. By<42><00><>MJ unifying the API for both clients and servers in a protocol agnostic way,<2C><00><>EB it is possible to write middleware that provide these pieces in a<><00><> reusable way.<2E><1C><02><00><>  Take timeouts as an example:<3A><1C><02>\<5C><01>%<00><> use tower_service::Service;<3B>ܚ use tower_layer::Layer;<3B>ܶ use futures::FutureExt;<3B><00><> use std::future::Future;<3B><00><># use std::task::{Context, Poll};<3B><00><>  use std::time::Duration;<3B><00><>  use std::pin::Pin;<3B><00><>  use std::fmt;<3B><00><>  use std::error::Error;<3B><1C> <02><00><> ;8 // Our timeout service, which wraps another service and<6E><00><>!-* // adds a timeout to its response future.<2E><00><>! pub struct Timeout<T> {<7B><00><>! inner: T,<2C>Ԑ" timeout: Duration,<2C>,<2C>"<01>1<1C>"<02>ĵ" impl<T> Timeout<T> {<7B><00><>"EB pub const fn new(inner: T, timeout: Duration) -> Timeout<T> {<7B><00><># Timeout {<7B><00><># inner,<2C><00><># timeout<75>l<>#
}<7D>L<>#<01>+,<2C>#<01>1<1C>#<02><00><>#;8 // The error returned if processing a request timed out<75><00><>$ #[derive(Debug)]<5D><00><>$ pub struct Expired;<3B><1C>$<02><00><>$# impl fmt::Display for Expired {<7B><00><>%B? fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {<7B><00><>%  write!(f, "expired")<29>L<>%<01>+,<2C>%<01>1<1C>&<02><00><>& impl Error for Expired {}<7D><1C>&<02><00><>&HE // We can implement `Service` for `Timeout<T>` if `T` is a `Service`<60><00><>&41 impl<T, Request> Service<Request> for Timeout<T><3E>L<>' where<72><00><>' T: Service<Request>,<2C><00><>' T::Future: 'static,<2C><00><>'?< T::Error: Into<Box<dyn Error + Send + Sync>> + 'static,<2C><00><>( T::Response: 'static,<2C>,<2C>( {<7B><00><>(TQ // `Timeout` doesn't modify the response type, so we use `T`'s response type<70><00><>)$! type Response = T::Response;<3B><00><>)XU // Errors may be either `Expired` if the timeout expired, or the inner service's<><00><>*eb // `Error` type. Therefore, we return a boxed `dyn Error + Send + Sync` trait object to erase<73><00><>+ // the error's type.<2E><00><>+2/ type Error = Box<dyn Error + Send + Sync>;<3B><00><>+Y<01>)<1C>,<02><00><>,Y<01>*<00><>-JG // Our timeout service is ready if the inner service is ready.<2E><00><>-\Y // This is how backpressure can be propagated through a tree of nested services.<2E><00><>.85 self.inner.poll_ready(cx).map_err(Into::into)<29>L<>.<01>+<1C>.<02><00><>.:7 fn call(&mut self, req: Request) -> Self::Future {<7B><00><>/B? // Create a future that completes after `self.timeout`<60><00><>/;8 let timeout = tokio::time::sleep(self.timeout);<3B><1C>0<02><00><>0TQ // Call the inner service and get a future that resolves to the response<73><00><>1+( let fut = self.inner.call(req);<3B><1C>1<02><00><>1`] // Wrap those two futures in another future that completes when either one completes<65>t<>2 //<2F><00><>2VS // If the inner service is too slow the `sleep` future will complete first<73><00><>3[X // And an error will be returned and `fut` will be dropped and not polled again<69>t<>3<01>R<00><>3;8 // We have to box the errors so the types match<63><00><>4  let f = async move {<7B><00><>4  tokio::select! {<7B><00><>4" res = fut => {<7B><00><>552 res.map_err(|err| err.into())<29><00><>5 },<2C><00><>5$! _ = timeout => {<7B><00><>6NK Err(Box::new(Expired) as Box<dyn Error + Send + Sync>)<29><00><>6<01>U<00><>6 }<7D>t<>6<01>0<1C>7<02><00><>7 Box::pin(f)<29>L<>7<01>+,<2C>7<01>1<1C>7<02><00><>71. // A layer for wrapping services in `Timeout`<60><00><>7&# pub struct TimeoutLayer(Duration);<3B><1C>8<02><00><>8 impl TimeoutLayer {<7B><00><>830 pub const fn new(delay: Duration) -> Self {<7B><00><>8 TimeoutLayer(delay)<29>L<>9<01>+,<2C>9<01>1<1C>9<02><00><>9'$ impl<S> Layer<S> for TimeoutLayer {<7B><00><>9" type Service = Timeout<S>;<3B><1C>9<02><00><>930 fn layer(&self, service: S) -> Timeout<S> {<7B><00><>:)& Timeout::new(service, self.0)<29>L<>:<01>+,<2C>:<01>1<<3C>:<01>1<1C>:<02><00><>:NK The above timeout implementation is decoupled from the underlying protocol<6F><00><>;MJ and is also decoupled from client or server concerns. In other words, the<68><00><>;IF same timeout middleware could be used in either a client or a server.<2E><1C><<02><00><>< # Backpressure<72><1C><<02><00><><YV Calling a `Service` which is at capacity (i.e., it is temporarily unable to process a<><00><>=NK request) should result in an error. The caller is responsible for ensuring<6E><00><>>GD that the service is ready to receive the request before calling it.<2E><1C>><02><00><>>LI `Service` provides a mechanism by which the caller is able to coordinate<74><00><>?PM readiness. `Servic
<02><><01>s<01> t<>S<00>t<02><><01>s<01>
\<5C>S<00>t<02><><01>s<01> <00><>SBݚ<01>t<00><>T4<01>tޚ<02><><02><><02><><02><02><><02><02><><02><><02><02><><02><00>:X<><58><EFBFBD><EFBFBD><EFBFBD><01>t<01>t<EFBFBD><74>T,<00>t~<00>ur<00>u l<>S<00><>R# Responses given by the service.<2E>D<EFBFBD>ST<>S<00><>S# Errors produced by the service.<2E>,<2C>S<00><>SA<00><>S The future response value.<2E>4<EFBFBD>T<00><>^P<00><>TOL Returns `Poll::Ready(Ok(()))` when the service is able to process requests.<2E><1C>U<02><00><>UPM If the service is at capacity, then `Poll::Pending` is returned and the task<73><00><>UFC is notified when the service becomes ready again. This function is<69><00><>VKH expected to be called while on a task. Generally, this can be done with<74><00><>W-* a simple `futures::future::poll_fn` call.<2E><1C>W<02><00><>W[X If `Poll::Ready(Err(_))` is returned, the service is no longer able to service requests<74><00><>X74 and the caller should discard the service instance.<2E><1C>X<02><00><>XWT Once `poll_ready` returns `Poll::Ready(Ok(()))`, a request may be dispatched to the<68><00><>YJG service using `call`. Until a request is dispatched, repeated calls to<74><00><>ZSP `poll_ready` must return either `Poll::Ready(Ok(()))` or `Poll::Ready(Err(_))`.<2E><1C>Z<02><00><>ZYV Note that `poll_ready` may reserve shared resources that are consumed in a subsequent<6E><00><>[\Y invocation of `call`. Thus, it is critical for implementations to not assume that `call`<60><00><>\[X will always be invoked and to ensure that such resources are released if the service is<69><00><>]ZW dropped before `call` is invoked or the future returned by `call` is dropped before it<69>t<>] is polled.<2E>T<EFBFBD>^ ! <1F>s  <02><02><02><01> <02><02><01> <02><02><01><02><02><01><02><02><01><02><00><00><>w<EFBFBD>W<EFBFBD>!<02><><02><><02><><02><02><><02><02><><02><><02>x<>A"W?<02><><02><><02><><02><02><><02><02><><02><><02><02><><02><00>:X<><58><EFBFBD><EFBFBD><EFBFBD><01><01>t <0C>^ <01>s<01> $<24>^<01><14>^<00><>c1<00><>^?< Process the request and return the response asynchronously.<2E><1C>_<02><00><>_?< This function is expected to be callable off task. As such,<2C><00><>_>; implementations should take care to not call `poll_ready`.<2E><1C>`<02><00><>`HE Before dispatching a request, `poll_ready` must be called and return<72>ԇa `Poll::Ready(Ok(()))`.<2E><1C>a<02>d<>a # Panics<63><1C>a<02><00><>aGD Implementations are permitted to panic if `call` is invoked without<75><00><>b63 obtaining `Poll::Ready(Ok(()))` from `poll_ready`.<2E>7<><37>bC3futures do nothing unless you `.await` or poll them<65>$<24>c" "<22>s<01> <0C>t <0C>c <01>s<01> $<24>creq<65><1C>c<00><>cW<01><01><01><02><><01> <0C>c<02><><01> <<3C>c<01> <01> <00><>d<02> <01><14>d<00>  
   <14>c[]Z\l<>dD<>d<01> <01> T<>d,<2C>d<00>\<5C>d4<>d<00><10><>eLT<>e#$% #<23>  $<02><02><02><01> <02><02><01> <02><02><01><02><02><01><02><02><01><02><00><00><>w<EFBFBD>W<EFBFBD>%<01>  <0C>e <01><01> <01> $<24>e<01>P<07><>e1$<24>f& &<26> <01> <0B> <0C>f <01><01> <01> $<24>f<01> <08><>fT<01><01><02><><01> <0C>f<00>s<<3C>f<01> <01> <00><>g<00>  
   >@DFl<>gD<>g<01> <01> T<>g,<2C>g<00>\<5C>g4<>g<00><16><>hLT<>h'() '<27>  (<02><02><02><01> <02><02><01> <02><02><01><02><02><01><02><02><01><02><00><00><>w<EFBFBD>W<EFBFBD>)<01> <0C>h <01> <01> $<24>h<01>
<EFBFBD><EFBFBD>i1$<24>i* *<2A> <01> <0C> <0C>i <01> <01> $<24>i<01> 7 <0C>^<14>^ <17><17> <0C>e<14>e!X&<0F>* <0C>h0<14>h6[: <02>std::mem::replace<63>͒ <02><01>std::mem<65><02><01><><01>͒<02><01><><02><01>ݚ<02><02><02><02><02><02><02><02><><02><><02><02><><02> <02> <02> <02> <02><02><02><02><02><02><02><02>K<02>L<02>K<02>K<02>L<03><03>6rJ<72><4A><EFBFBD>'<27><%<25>T<EFBFBD><54>ZN<5A>W<EFBFBD><57><EFBFBD>Z<EFBFBD><5A>k<EFBFBD>!0<><02><>uP)<29>1hb<68><62><EFBFBD> <0C><><EFBFBD><EFBFBD>@ײ<11>}}<7D>A7<41>l<EFBFBD>E!xj<10>_<EFBFBD>c<EFBFBD>5<EFBFBD>W<EFBFBD><57>v
&<26><><EFBFBD><EFBFBD>Y<><59><EFBFBD>~F<>`<60>^t<><74>U$t<><74>dj<64><6A><EFBFBD>a<EFBFBD><61>X<EFBFBD><58><EFBFBD><EFBFBD>C uZ<75>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>gUV9,<2C><><EFBFBD>0e|<7C><>bLE<4C><DDB1><7F>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><54><EFBFBD>[<5B><>-<2D>. %<08>4<EFBFBD>3 <0B>J=<3D><11><><EFBFBD><EFBFBD><16>Ζ<><CE96><EFBFBD> ˉ<>p<EFBFBD>q*<2A>/<2F><><EFBFBD>Jksڰ<73>U@0<><30>VK<56>3Ƌj<C68B><6A><EFBFBD><EFBFBD><00>-<2D><><EFBFBD><EFBFBD><EFBFBD>n<19>Q<EFBFBD><51>[L<><1F><>i<EFBFBD>q<EFBFBD><71>d<EFBFBD>O<EFBFBD> <0A><>!ㆩ<><E386A9>l_<6C>&Ɂ6<10><>h\<5C><>l\6<>,<2C>J<EFBFBD>/<2F><><EFBFBD>l<10><><EFBFBD>͡<EFBFBD>5<EFBFBD><35>,<2C><><1D>YU<59><55>dB<17><><EFBFBD>k|<7C> k<>n<08><00>9<>9<>9<00>9<>9:<00>9<00>9<> <01> C$ <00>:<00>:/;l;<00> A<00>DrE<00>E<00>E<00>E<00>FG<00>G<00>G<00>G<00>G<00>H<00> <00>9<00>9,ENG


<18> G9<00>:;Z;<3B>@pDvE<76>E<EFBFBD>E<EFBFBD>E<EFBFBD>F<00>G<EFBFBD>G<EFBFBD>G<EFBFBD>G<EFBFBD>H<EFBFBD>  % ( / 3 9 ? <0A>:<3A>:<3A>:*;g;<3B>A<EFBFBD>DLEREaEnE<6E>E<EFBFBD>E<EFBFBD>E<EFBFBD>F<EFBFBD>FnG{G<>G<EFBFBD>G<EFBFBD>G<EFBFBD>G<EFBFBD>HI IIII!I'I-I2I6I<IBI" , 6 < C9<43>:<3A>:;V;<3B>@YDPETEcErE<72>E<EFBFBD>E<EFBFBD>E<EFBFBD>FpG}G<>G<EFBFBD>G<EFBFBD>G<EFBFBD>G<EFBFBD>H
IIIII%I+I0I4I:I@IDIg9<67>:<3A>:&;c;<3B>A<EFBFBD>D<EFBFBD>D\EkEE<7F>E<EFBFBD>EsF<73>F"GxG<78>G<EFBFBD>G<EFBFBD>G<EFBFBD>G<EFBFBD>H<EFBFBD>HH9<48>:<3A>:;[;<3B>A<EFBFBD>D<EFBFBD>DVEeEwE<77>E<EFBFBD>EgF<67>FGrGG<7F>G<EFBFBD>G<EFBFBD>G<EFBFBD>H<EFBFBD>H<00>A<EFBFBD>D*E<00>E<EFBFBD>E<EFBFBD>EwF<77>FLG<00>G<EFBFBD>G<EFBFBD>G<EFBFBD>H<EFBFBD>H<00>@qD<00>E<>F<00>G<>H<00>@sD<00>E<EFBFBD>F<00>G<EFBFBD>H<00>@]D<00>E<EFBFBD>F<00>G<EFBFBD>H(<00>:^EmEzG<7A>G<00><05>NU
<00>LS
K <00>MT
L <00>A<>D<00>F<>F<00>H<>H<00>9<EFBFBD> A9<00>DG<><03>  '5DKRcjnw<04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04><04>
<00>9<EFBFBD>9<EFBFBD>9<EFBFBD>:<3A>:1E5E9E=EAESGWG[G_GcGM O Q S FI<46>I<00>:EEgGt x <17> <17> <02> rJ<72><4A><EFBFBD>'<27><<15><>Z<EFBFBD>`*<2A><02>RwR{R<>R<EFBFBD>R<EFBFBD>R<EFBFBD>ODHT +@<02><>&Ɂ6<10>#<00>~F<>`<60>^ <00>h\<5C><>l\6$<00><><EFBFBD><EFBFBD>gUV<00><>p<EFBFBD>q<><71><00><><1D>YU<59>(<00>*<2A>/<2F><><00>,<2C>J<EFBFBD>/<2F><>%<00>4<EFBFBD>3 <0B>J=A7<41>l<EFBFBD>E!<00><>bLE<4C>|rJ<72><4A><EFBFBD>'<27><<00><><EFBFBD>T<EFBFBD><54><EFBFBD>[%<25>T<EFBFBD><54>ZN<19>Q<EFBFBD><51>[L<>d<>O<EFBFBD> <0A><>!!<00>dB<17><><EFBFBD>k)<00><><EFBFBD><EFBFBD>Y<><59>
t<><74>U$t<> @0<><30>VK<56>3<00><> <0C><><EFBFBD><EFBFBD>@Ζ<><CE96><EFBFBD> <09><00>Jksڰ<73>U|<7C> k<>n<08>*xj<10>_<EFBFBD>c<EFBFBD><00>W<EFBFBD><57><EFBFBD>Z<EFBFBD><5A><1F><>i<EFBFBD>q<EFBFBD><71> uZ<75>b<EFBFBD><62><EFBFBD><00>-<2D><><EFBFBD><EFBFBD><EFBFBD>n<00>dj<64><6A><EFBFBD>a<EFBFBD> <00><11><><EFBFBD><EFBFBD><16>5<>W<EFBFBD><57>v
& <00>5<EFBFBD><35>,<2C>-<2D>'<00><>-<2D>. %<><E386A9>l_<6C>"uP)<29>1hb<68>9,<2C><><EFBFBD>0e|ݱ<DDB1><7F>i<EFBFBD><69>ײ<11>}}<7D>Ƌj<C68B><6A><EFBFBD><EFBFBD><00>l<10><><EFBFBD>͡&<00>X<EFBFBD><58><EFBFBD><EFBFBD>Ck<>!0<><02><><00>K/+@V<>fJ<66>>-'S5<>EF<19> e*n<><6E>WgGp7<70><37>l<EFBFBD>d<EFBFBD><13>n<EFBFBD>t<>J><3E><><EFBFBD>E<EFBFBD>B<EFBFBD>P<0F><><EFBFBD>K/+@V<>fJ<66>>-bC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tower-service-0.3.3\src\lib.rs<72>WC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tower-service-0.3.3<EFBFBD>bC:\Users\xiaji\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\tower-service-0.3.3\src\lib.rs<72> _<><5F>U<13><>
<EFBFBD>YTa<EFBFBD><EFBFBD><00>i<EFBFBD>i<EFBFBD> #64KM2 ?JKHGDILO:Q1 MSGI &"/4+"ZZ
D2(+(>.:
 KNF@&4P&,LLNF! $<.F
<$C!
I5
@U%Yf3ZZK]9
;C<U,aW\<!!#6%O
2'4
(#4*
ONJZOHMQ%-aa`: &")
)%ZZ&
50"@&
U &")
)%ZZ&
5,/G"&
((#GTUKP2`<\OX^a`_UDDCML;H64!S 8-"!S 8j>^<5E>dZ<64><5A><02>9y<07><>HVx86_64-pc-windows-gnu<6E>2+o<><6F><EFBFBD>%<25>i<EFBFBD> <0C><>}<7D> tower_service<63>-82c277737b0cbd63<36>rJ<72><4A><EFBFBD>'<27><<14><><01> <01><00><>+ <0C> $$|+H++>+VV>>>]>>04>>>]0+V>]<02><01> rust-end-file