eigenlayer_contract_deployer/bindings/core/
stakeregistry.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use StakeRegistry::*;
3
4///Module containing a contract's types and functions.
5/**
6
7```solidity
8library IStakeRegistryTypes {
9    type StakeType is uint8;
10    struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; }
11    struct StrategyParams { address strategy; uint96 multiplier; }
12}
13```*/
14#[allow(
15    non_camel_case_types,
16    non_snake_case,
17    clippy::pub_underscore_fields,
18    clippy::style,
19    clippy::empty_structs_with_brackets
20)]
21pub mod IStakeRegistryTypes {
22    use super::*;
23    use alloy::sol_types as alloy_sol_types;
24    #[derive(Default, Debug, PartialEq, Eq, Hash)]
25    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
26    #[derive(Clone)]
27    pub struct StakeType(u8);
28    const _: () = {
29        use alloy::sol_types as alloy_sol_types;
30        #[automatically_derived]
31        impl alloy_sol_types::private::SolTypeValue<StakeType> for u8 {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<
36                8,
37            > as alloy_sol_types::SolType>::Token<'_> {
38                alloy_sol_types::private::SolTypeValue::<
39                    alloy::sol_types::sol_data::Uint<8>,
40                >::stv_to_tokens(self)
41            }
42            #[inline]
43            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
44                <alloy::sol_types::sol_data::Uint<
45                    8,
46                > as alloy_sol_types::SolType>::tokenize(self)
47                    .0
48            }
49            #[inline]
50            fn stv_abi_encode_packed_to(
51                &self,
52                out: &mut alloy_sol_types::private::Vec<u8>,
53            ) {
54                <alloy::sol_types::sol_data::Uint<
55                    8,
56                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
57            }
58            #[inline]
59            fn stv_abi_packed_encoded_size(&self) -> usize {
60                <alloy::sol_types::sol_data::Uint<
61                    8,
62                > as alloy_sol_types::SolType>::abi_encoded_size(self)
63            }
64        }
65        #[automatically_derived]
66        impl StakeType {
67            /// The Solidity type name.
68            pub const NAME: &'static str = stringify!(@ name);
69            /// Convert from the underlying value type.
70            #[inline]
71            pub const fn from(value: u8) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into(self) -> u8 {
77                self.0
78            }
79            /// Return the single encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
84            }
85            /// Return the packed encoding of this value, delegating to the
86            /// underlying type.
87            #[inline]
88            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
89                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
90            }
91        }
92        #[automatically_derived]
93        impl alloy_sol_types::SolType for StakeType {
94            type RustType = u8;
95            type Token<'a> = <alloy::sol_types::sol_data::Uint<
96                8,
97            > as alloy_sol_types::SolType>::Token<'a>;
98            const SOL_NAME: &'static str = Self::NAME;
99            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
100                8,
101            > as alloy_sol_types::SolType>::ENCODED_SIZE;
102            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
103                8,
104            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
105            #[inline]
106            fn valid_token(token: &Self::Token<'_>) -> bool {
107                Self::type_check(token).is_ok()
108            }
109            #[inline]
110            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
111                <alloy::sol_types::sol_data::Uint<
112                    8,
113                > as alloy_sol_types::SolType>::type_check(token)
114            }
115            #[inline]
116            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
117                <alloy::sol_types::sol_data::Uint<
118                    8,
119                > as alloy_sol_types::SolType>::detokenize(token)
120            }
121        }
122        #[automatically_derived]
123        impl alloy_sol_types::EventTopic for StakeType {
124            #[inline]
125            fn topic_preimage_length(rust: &Self::RustType) -> usize {
126                <alloy::sol_types::sol_data::Uint<
127                    8,
128                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
129            }
130            #[inline]
131            fn encode_topic_preimage(
132                rust: &Self::RustType,
133                out: &mut alloy_sol_types::private::Vec<u8>,
134            ) {
135                <alloy::sol_types::sol_data::Uint<
136                    8,
137                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
138            }
139            #[inline]
140            fn encode_topic(
141                rust: &Self::RustType,
142            ) -> alloy_sol_types::abi::token::WordToken {
143                <alloy::sol_types::sol_data::Uint<
144                    8,
145                > as alloy_sol_types::EventTopic>::encode_topic(rust)
146            }
147        }
148    };
149    #[derive(Default, Debug, PartialEq, Eq, Hash)]
150    /**```solidity
151struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; }
152```*/
153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
154    #[derive(Clone)]
155    pub struct StakeUpdate {
156        #[allow(missing_docs)]
157        pub updateBlockNumber: u32,
158        #[allow(missing_docs)]
159        pub nextUpdateBlockNumber: u32,
160        #[allow(missing_docs)]
161        pub stake: alloy::sol_types::private::primitives::aliases::U96,
162    }
163    #[allow(
164        non_camel_case_types,
165        non_snake_case,
166        clippy::pub_underscore_fields,
167        clippy::style
168    )]
169    const _: () = {
170        use alloy::sol_types as alloy_sol_types;
171        #[doc(hidden)]
172        type UnderlyingSolTuple<'a> = (
173            alloy::sol_types::sol_data::Uint<32>,
174            alloy::sol_types::sol_data::Uint<32>,
175            alloy::sol_types::sol_data::Uint<96>,
176        );
177        #[doc(hidden)]
178        type UnderlyingRustTuple<'a> = (
179            u32,
180            u32,
181            alloy::sol_types::private::primitives::aliases::U96,
182        );
183        #[cfg(test)]
184        #[allow(dead_code, unreachable_patterns)]
185        fn _type_assertion(
186            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
187        ) {
188            match _t {
189                alloy_sol_types::private::AssertTypeEq::<
190                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
191                >(_) => {}
192            }
193        }
194        #[automatically_derived]
195        #[doc(hidden)]
196        impl ::core::convert::From<StakeUpdate> for UnderlyingRustTuple<'_> {
197            fn from(value: StakeUpdate) -> Self {
198                (value.updateBlockNumber, value.nextUpdateBlockNumber, value.stake)
199            }
200        }
201        #[automatically_derived]
202        #[doc(hidden)]
203        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeUpdate {
204            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
205                Self {
206                    updateBlockNumber: tuple.0,
207                    nextUpdateBlockNumber: tuple.1,
208                    stake: tuple.2,
209                }
210            }
211        }
212        #[automatically_derived]
213        impl alloy_sol_types::SolValue for StakeUpdate {
214            type SolType = Self;
215        }
216        #[automatically_derived]
217        impl alloy_sol_types::private::SolTypeValue<Self> for StakeUpdate {
218            #[inline]
219            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
220                (
221                    <alloy::sol_types::sol_data::Uint<
222                        32,
223                    > as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber),
224                    <alloy::sol_types::sol_data::Uint<
225                        32,
226                    > as alloy_sol_types::SolType>::tokenize(
227                        &self.nextUpdateBlockNumber,
228                    ),
229                    <alloy::sol_types::sol_data::Uint<
230                        96,
231                    > as alloy_sol_types::SolType>::tokenize(&self.stake),
232                )
233            }
234            #[inline]
235            fn stv_abi_encoded_size(&self) -> usize {
236                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
237                    return size;
238                }
239                let tuple = <UnderlyingRustTuple<
240                    '_,
241                > as ::core::convert::From<Self>>::from(self.clone());
242                <UnderlyingSolTuple<
243                    '_,
244                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
245            }
246            #[inline]
247            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
248                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
249            }
250            #[inline]
251            fn stv_abi_encode_packed_to(
252                &self,
253                out: &mut alloy_sol_types::private::Vec<u8>,
254            ) {
255                let tuple = <UnderlyingRustTuple<
256                    '_,
257                > as ::core::convert::From<Self>>::from(self.clone());
258                <UnderlyingSolTuple<
259                    '_,
260                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
261            }
262            #[inline]
263            fn stv_abi_packed_encoded_size(&self) -> usize {
264                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
265                    return size;
266                }
267                let tuple = <UnderlyingRustTuple<
268                    '_,
269                > as ::core::convert::From<Self>>::from(self.clone());
270                <UnderlyingSolTuple<
271                    '_,
272                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
273            }
274        }
275        #[automatically_derived]
276        impl alloy_sol_types::SolType for StakeUpdate {
277            type RustType = Self;
278            type Token<'a> = <UnderlyingSolTuple<
279                'a,
280            > as alloy_sol_types::SolType>::Token<'a>;
281            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
282            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
283                '_,
284            > as alloy_sol_types::SolType>::ENCODED_SIZE;
285            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
286                '_,
287            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
288            #[inline]
289            fn valid_token(token: &Self::Token<'_>) -> bool {
290                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
291            }
292            #[inline]
293            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
294                let tuple = <UnderlyingSolTuple<
295                    '_,
296                > as alloy_sol_types::SolType>::detokenize(token);
297                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
298            }
299        }
300        #[automatically_derived]
301        impl alloy_sol_types::SolStruct for StakeUpdate {
302            const NAME: &'static str = "StakeUpdate";
303            #[inline]
304            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
305                alloy_sol_types::private::Cow::Borrowed(
306                    "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)",
307                )
308            }
309            #[inline]
310            fn eip712_components() -> alloy_sol_types::private::Vec<
311                alloy_sol_types::private::Cow<'static, str>,
312            > {
313                alloy_sol_types::private::Vec::new()
314            }
315            #[inline]
316            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
317                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
318            }
319            #[inline]
320            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
321                [
322                    <alloy::sol_types::sol_data::Uint<
323                        32,
324                    > as alloy_sol_types::SolType>::eip712_data_word(
325                            &self.updateBlockNumber,
326                        )
327                        .0,
328                    <alloy::sol_types::sol_data::Uint<
329                        32,
330                    > as alloy_sol_types::SolType>::eip712_data_word(
331                            &self.nextUpdateBlockNumber,
332                        )
333                        .0,
334                    <alloy::sol_types::sol_data::Uint<
335                        96,
336                    > as alloy_sol_types::SolType>::eip712_data_word(&self.stake)
337                        .0,
338                ]
339                    .concat()
340            }
341        }
342        #[automatically_derived]
343        impl alloy_sol_types::EventTopic for StakeUpdate {
344            #[inline]
345            fn topic_preimage_length(rust: &Self::RustType) -> usize {
346                0usize
347                    + <alloy::sol_types::sol_data::Uint<
348                        32,
349                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
350                        &rust.updateBlockNumber,
351                    )
352                    + <alloy::sol_types::sol_data::Uint<
353                        32,
354                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
355                        &rust.nextUpdateBlockNumber,
356                    )
357                    + <alloy::sol_types::sol_data::Uint<
358                        96,
359                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake)
360            }
361            #[inline]
362            fn encode_topic_preimage(
363                rust: &Self::RustType,
364                out: &mut alloy_sol_types::private::Vec<u8>,
365            ) {
366                out.reserve(
367                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
368                );
369                <alloy::sol_types::sol_data::Uint<
370                    32,
371                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
372                    &rust.updateBlockNumber,
373                    out,
374                );
375                <alloy::sol_types::sol_data::Uint<
376                    32,
377                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
378                    &rust.nextUpdateBlockNumber,
379                    out,
380                );
381                <alloy::sol_types::sol_data::Uint<
382                    96,
383                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
384                    &rust.stake,
385                    out,
386                );
387            }
388            #[inline]
389            fn encode_topic(
390                rust: &Self::RustType,
391            ) -> alloy_sol_types::abi::token::WordToken {
392                let mut out = alloy_sol_types::private::Vec::new();
393                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
394                    rust,
395                    &mut out,
396                );
397                alloy_sol_types::abi::token::WordToken(
398                    alloy_sol_types::private::keccak256(out),
399                )
400            }
401        }
402    };
403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
404    /**```solidity
405struct StrategyParams { address strategy; uint96 multiplier; }
406```*/
407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
408    #[derive(Clone)]
409    pub struct StrategyParams {
410        #[allow(missing_docs)]
411        pub strategy: alloy::sol_types::private::Address,
412        #[allow(missing_docs)]
413        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
414    }
415    #[allow(
416        non_camel_case_types,
417        non_snake_case,
418        clippy::pub_underscore_fields,
419        clippy::style
420    )]
421    const _: () = {
422        use alloy::sol_types as alloy_sol_types;
423        #[doc(hidden)]
424        type UnderlyingSolTuple<'a> = (
425            alloy::sol_types::sol_data::Address,
426            alloy::sol_types::sol_data::Uint<96>,
427        );
428        #[doc(hidden)]
429        type UnderlyingRustTuple<'a> = (
430            alloy::sol_types::private::Address,
431            alloy::sol_types::private::primitives::aliases::U96,
432        );
433        #[cfg(test)]
434        #[allow(dead_code, unreachable_patterns)]
435        fn _type_assertion(
436            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
437        ) {
438            match _t {
439                alloy_sol_types::private::AssertTypeEq::<
440                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
441                >(_) => {}
442            }
443        }
444        #[automatically_derived]
445        #[doc(hidden)]
446        impl ::core::convert::From<StrategyParams> for UnderlyingRustTuple<'_> {
447            fn from(value: StrategyParams) -> Self {
448                (value.strategy, value.multiplier)
449            }
450        }
451        #[automatically_derived]
452        #[doc(hidden)]
453        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyParams {
454            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
455                Self {
456                    strategy: tuple.0,
457                    multiplier: tuple.1,
458                }
459            }
460        }
461        #[automatically_derived]
462        impl alloy_sol_types::SolValue for StrategyParams {
463            type SolType = Self;
464        }
465        #[automatically_derived]
466        impl alloy_sol_types::private::SolTypeValue<Self> for StrategyParams {
467            #[inline]
468            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
469                (
470                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
471                        &self.strategy,
472                    ),
473                    <alloy::sol_types::sol_data::Uint<
474                        96,
475                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
476                )
477            }
478            #[inline]
479            fn stv_abi_encoded_size(&self) -> usize {
480                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
481                    return size;
482                }
483                let tuple = <UnderlyingRustTuple<
484                    '_,
485                > as ::core::convert::From<Self>>::from(self.clone());
486                <UnderlyingSolTuple<
487                    '_,
488                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
489            }
490            #[inline]
491            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
492                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
493            }
494            #[inline]
495            fn stv_abi_encode_packed_to(
496                &self,
497                out: &mut alloy_sol_types::private::Vec<u8>,
498            ) {
499                let tuple = <UnderlyingRustTuple<
500                    '_,
501                > as ::core::convert::From<Self>>::from(self.clone());
502                <UnderlyingSolTuple<
503                    '_,
504                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
505            }
506            #[inline]
507            fn stv_abi_packed_encoded_size(&self) -> usize {
508                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
509                    return size;
510                }
511                let tuple = <UnderlyingRustTuple<
512                    '_,
513                > as ::core::convert::From<Self>>::from(self.clone());
514                <UnderlyingSolTuple<
515                    '_,
516                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
517            }
518        }
519        #[automatically_derived]
520        impl alloy_sol_types::SolType for StrategyParams {
521            type RustType = Self;
522            type Token<'a> = <UnderlyingSolTuple<
523                'a,
524            > as alloy_sol_types::SolType>::Token<'a>;
525            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
526            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
527                '_,
528            > as alloy_sol_types::SolType>::ENCODED_SIZE;
529            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
530                '_,
531            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
532            #[inline]
533            fn valid_token(token: &Self::Token<'_>) -> bool {
534                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
535            }
536            #[inline]
537            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
538                let tuple = <UnderlyingSolTuple<
539                    '_,
540                > as alloy_sol_types::SolType>::detokenize(token);
541                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
542            }
543        }
544        #[automatically_derived]
545        impl alloy_sol_types::SolStruct for StrategyParams {
546            const NAME: &'static str = "StrategyParams";
547            #[inline]
548            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
549                alloy_sol_types::private::Cow::Borrowed(
550                    "StrategyParams(address strategy,uint96 multiplier)",
551                )
552            }
553            #[inline]
554            fn eip712_components() -> alloy_sol_types::private::Vec<
555                alloy_sol_types::private::Cow<'static, str>,
556            > {
557                alloy_sol_types::private::Vec::new()
558            }
559            #[inline]
560            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
561                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
562            }
563            #[inline]
564            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
565                [
566                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
567                            &self.strategy,
568                        )
569                        .0,
570                    <alloy::sol_types::sol_data::Uint<
571                        96,
572                    > as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier)
573                        .0,
574                ]
575                    .concat()
576            }
577        }
578        #[automatically_derived]
579        impl alloy_sol_types::EventTopic for StrategyParams {
580            #[inline]
581            fn topic_preimage_length(rust: &Self::RustType) -> usize {
582                0usize
583                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
584                        &rust.strategy,
585                    )
586                    + <alloy::sol_types::sol_data::Uint<
587                        96,
588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
589                        &rust.multiplier,
590                    )
591            }
592            #[inline]
593            fn encode_topic_preimage(
594                rust: &Self::RustType,
595                out: &mut alloy_sol_types::private::Vec<u8>,
596            ) {
597                out.reserve(
598                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
599                );
600                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
601                    &rust.strategy,
602                    out,
603                );
604                <alloy::sol_types::sol_data::Uint<
605                    96,
606                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
607                    &rust.multiplier,
608                    out,
609                );
610            }
611            #[inline]
612            fn encode_topic(
613                rust: &Self::RustType,
614            ) -> alloy_sol_types::abi::token::WordToken {
615                let mut out = alloy_sol_types::private::Vec::new();
616                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
617                    rust,
618                    &mut out,
619                );
620                alloy_sol_types::abi::token::WordToken(
621                    alloy_sol_types::private::keccak256(out),
622                )
623            }
624        }
625    };
626    use alloy::contract as alloy_contract;
627    /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
628
629See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
630    #[inline]
631    pub const fn new<
632        T: alloy_contract::private::Transport + ::core::clone::Clone,
633        P: alloy_contract::private::Provider<T, N>,
634        N: alloy_contract::private::Network,
635    >(
636        address: alloy_sol_types::private::Address,
637        provider: P,
638    ) -> IStakeRegistryTypesInstance<T, P, N> {
639        IStakeRegistryTypesInstance::<T, P, N>::new(address, provider)
640    }
641    /**A [`IStakeRegistryTypes`](self) instance.
642
643Contains type-safe methods for interacting with an on-chain instance of the
644[`IStakeRegistryTypes`](self) contract located at a given `address`, using a given
645provider `P`.
646
647If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
648documentation on how to provide it), the `deploy` and `deploy_builder` methods can
649be used to deploy a new instance of the contract.
650
651See the [module-level documentation](self) for all the available methods.*/
652    #[derive(Clone)]
653    pub struct IStakeRegistryTypesInstance<T, P, N = alloy_contract::private::Ethereum> {
654        address: alloy_sol_types::private::Address,
655        provider: P,
656        _network_transport: ::core::marker::PhantomData<(N, T)>,
657    }
658    #[automatically_derived]
659    impl<T, P, N> ::core::fmt::Debug for IStakeRegistryTypesInstance<T, P, N> {
660        #[inline]
661        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
662            f.debug_tuple("IStakeRegistryTypesInstance").field(&self.address).finish()
663        }
664    }
665    /// Instantiation and getters/setters.
666    #[automatically_derived]
667    impl<
668        T: alloy_contract::private::Transport + ::core::clone::Clone,
669        P: alloy_contract::private::Provider<T, N>,
670        N: alloy_contract::private::Network,
671    > IStakeRegistryTypesInstance<T, P, N> {
672        /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
673
674See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
675        #[inline]
676        pub const fn new(
677            address: alloy_sol_types::private::Address,
678            provider: P,
679        ) -> Self {
680            Self {
681                address,
682                provider,
683                _network_transport: ::core::marker::PhantomData,
684            }
685        }
686        /// Returns a reference to the address.
687        #[inline]
688        pub const fn address(&self) -> &alloy_sol_types::private::Address {
689            &self.address
690        }
691        /// Sets the address.
692        #[inline]
693        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
694            self.address = address;
695        }
696        /// Sets the address and returns `self`.
697        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
698            self.set_address(address);
699            self
700        }
701        /// Returns a reference to the provider.
702        #[inline]
703        pub const fn provider(&self) -> &P {
704            &self.provider
705        }
706    }
707    impl<T, P: ::core::clone::Clone, N> IStakeRegistryTypesInstance<T, &P, N> {
708        /// Clones the provider and returns a new instance with the cloned provider.
709        #[inline]
710        pub fn with_cloned_provider(self) -> IStakeRegistryTypesInstance<T, P, N> {
711            IStakeRegistryTypesInstance {
712                address: self.address,
713                provider: ::core::clone::Clone::clone(&self.provider),
714                _network_transport: ::core::marker::PhantomData,
715            }
716        }
717    }
718    /// Function calls.
719    #[automatically_derived]
720    impl<
721        T: alloy_contract::private::Transport + ::core::clone::Clone,
722        P: alloy_contract::private::Provider<T, N>,
723        N: alloy_contract::private::Network,
724    > IStakeRegistryTypesInstance<T, P, N> {
725        /// Creates a new call builder using this contract instance's provider and address.
726        ///
727        /// Note that the call can be any function call, not just those defined in this
728        /// contract. Prefer using the other methods for building type-safe contract calls.
729        pub fn call_builder<C: alloy_sol_types::SolCall>(
730            &self,
731            call: &C,
732        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
733            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
734        }
735    }
736    /// Event filters.
737    #[automatically_derived]
738    impl<
739        T: alloy_contract::private::Transport + ::core::clone::Clone,
740        P: alloy_contract::private::Provider<T, N>,
741        N: alloy_contract::private::Network,
742    > IStakeRegistryTypesInstance<T, P, N> {
743        /// Creates a new event filter using this contract instance's provider and address.
744        ///
745        /// Note that the type can be any event, not just those defined in this contract.
746        /// Prefer using the other methods for building type-safe event filters.
747        pub fn event_filter<E: alloy_sol_types::SolEvent>(
748            &self,
749        ) -> alloy_contract::Event<T, &P, E, N> {
750            alloy_contract::Event::new_sol(&self.provider, &self.address)
751        }
752    }
753}
754/**
755
756Generated by the following Solidity interface...
757```solidity
758library IStakeRegistryTypes {
759    type StakeType is uint8;
760    struct StakeUpdate {
761        uint32 updateBlockNumber;
762        uint32 nextUpdateBlockNumber;
763        uint96 stake;
764    }
765    struct StrategyParams {
766        address strategy;
767        uint96 multiplier;
768    }
769}
770
771interface StakeRegistry {
772    error BelowMinimumStakeRequirement();
773    error EmptyStakeHistory();
774    error InputArrayLengthMismatch();
775    error InputArrayLengthZero();
776    error InputDuplicateStrategy();
777    error InputMultiplierZero();
778    error InvalidBlockNumber();
779    error OnlySlashingRegistryCoordinator();
780    error OnlySlashingRegistryCoordinatorOwner();
781    error QuorumAlreadyExists();
782    error QuorumDoesNotExist();
783    error QuorumNotSlashable();
784
785    event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
786    event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
787    event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
788    event QuorumCreated(uint8 indexed quorumNumber);
789    event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
790    event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
791    event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
792    event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
793
794    constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
795
796    function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
797    function WEIGHTING_DIVISOR() external view returns (uint256);
798    function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
799    function allocationManager() external view returns (address);
800    function avsDirectory() external view returns (address);
801    function delegation() external view returns (address);
802    function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
803    function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
804    function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
805    function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
806    function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
807    function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
808    function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
809    function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
810    function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
811    function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
812    function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
813    function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
814    function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
815    function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
816    function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
817    function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
818    function minimumStakeForQuorum(uint8) external view returns (uint96);
819    function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
820    function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
821    function registryCoordinator() external view returns (address);
822    function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
823    function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
824    function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
825    function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
826    function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
827    function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
828    function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
829    function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
830    function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
831    function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
832    function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
833}
834```
835
836...which was generated by the following JSON ABI:
837```json
838[
839  {
840    "type": "constructor",
841    "inputs": [
842      {
843        "name": "_slashingRegistryCoordinator",
844        "type": "address",
845        "internalType": "contract ISlashingRegistryCoordinator"
846      },
847      {
848        "name": "_delegationManager",
849        "type": "address",
850        "internalType": "contract IDelegationManager"
851      },
852      {
853        "name": "_avsDirectory",
854        "type": "address",
855        "internalType": "contract IAVSDirectory"
856      },
857      {
858        "name": "_allocationManager",
859        "type": "address",
860        "internalType": "contract IAllocationManager"
861      }
862    ],
863    "stateMutability": "nonpayable"
864  },
865  {
866    "type": "function",
867    "name": "MAX_WEIGHING_FUNCTION_LENGTH",
868    "inputs": [],
869    "outputs": [
870      {
871        "name": "",
872        "type": "uint8",
873        "internalType": "uint8"
874      }
875    ],
876    "stateMutability": "view"
877  },
878  {
879    "type": "function",
880    "name": "WEIGHTING_DIVISOR",
881    "inputs": [],
882    "outputs": [
883      {
884        "name": "",
885        "type": "uint256",
886        "internalType": "uint256"
887      }
888    ],
889    "stateMutability": "view"
890  },
891  {
892    "type": "function",
893    "name": "addStrategies",
894    "inputs": [
895      {
896        "name": "quorumNumber",
897        "type": "uint8",
898        "internalType": "uint8"
899      },
900      {
901        "name": "_strategyParams",
902        "type": "tuple[]",
903        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
904        "components": [
905          {
906            "name": "strategy",
907            "type": "address",
908            "internalType": "contract IStrategy"
909          },
910          {
911            "name": "multiplier",
912            "type": "uint96",
913            "internalType": "uint96"
914          }
915        ]
916      }
917    ],
918    "outputs": [],
919    "stateMutability": "nonpayable"
920  },
921  {
922    "type": "function",
923    "name": "allocationManager",
924    "inputs": [],
925    "outputs": [
926      {
927        "name": "",
928        "type": "address",
929        "internalType": "contract IAllocationManager"
930      }
931    ],
932    "stateMutability": "view"
933  },
934  {
935    "type": "function",
936    "name": "avsDirectory",
937    "inputs": [],
938    "outputs": [
939      {
940        "name": "",
941        "type": "address",
942        "internalType": "contract IAVSDirectory"
943      }
944    ],
945    "stateMutability": "view"
946  },
947  {
948    "type": "function",
949    "name": "delegation",
950    "inputs": [],
951    "outputs": [
952      {
953        "name": "",
954        "type": "address",
955        "internalType": "contract IDelegationManager"
956      }
957    ],
958    "stateMutability": "view"
959  },
960  {
961    "type": "function",
962    "name": "deregisterOperator",
963    "inputs": [
964      {
965        "name": "operatorId",
966        "type": "bytes32",
967        "internalType": "bytes32"
968      },
969      {
970        "name": "quorumNumbers",
971        "type": "bytes",
972        "internalType": "bytes"
973      }
974    ],
975    "outputs": [],
976    "stateMutability": "nonpayable"
977  },
978  {
979    "type": "function",
980    "name": "getCurrentStake",
981    "inputs": [
982      {
983        "name": "operatorId",
984        "type": "bytes32",
985        "internalType": "bytes32"
986      },
987      {
988        "name": "quorumNumber",
989        "type": "uint8",
990        "internalType": "uint8"
991      }
992    ],
993    "outputs": [
994      {
995        "name": "",
996        "type": "uint96",
997        "internalType": "uint96"
998      }
999    ],
1000    "stateMutability": "view"
1001  },
1002  {
1003    "type": "function",
1004    "name": "getCurrentTotalStake",
1005    "inputs": [
1006      {
1007        "name": "quorumNumber",
1008        "type": "uint8",
1009        "internalType": "uint8"
1010      }
1011    ],
1012    "outputs": [
1013      {
1014        "name": "",
1015        "type": "uint96",
1016        "internalType": "uint96"
1017      }
1018    ],
1019    "stateMutability": "view"
1020  },
1021  {
1022    "type": "function",
1023    "name": "getLatestStakeUpdate",
1024    "inputs": [
1025      {
1026        "name": "operatorId",
1027        "type": "bytes32",
1028        "internalType": "bytes32"
1029      },
1030      {
1031        "name": "quorumNumber",
1032        "type": "uint8",
1033        "internalType": "uint8"
1034      }
1035    ],
1036    "outputs": [
1037      {
1038        "name": "",
1039        "type": "tuple",
1040        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1041        "components": [
1042          {
1043            "name": "updateBlockNumber",
1044            "type": "uint32",
1045            "internalType": "uint32"
1046          },
1047          {
1048            "name": "nextUpdateBlockNumber",
1049            "type": "uint32",
1050            "internalType": "uint32"
1051          },
1052          {
1053            "name": "stake",
1054            "type": "uint96",
1055            "internalType": "uint96"
1056          }
1057        ]
1058      }
1059    ],
1060    "stateMutability": "view"
1061  },
1062  {
1063    "type": "function",
1064    "name": "getStakeAtBlockNumber",
1065    "inputs": [
1066      {
1067        "name": "operatorId",
1068        "type": "bytes32",
1069        "internalType": "bytes32"
1070      },
1071      {
1072        "name": "quorumNumber",
1073        "type": "uint8",
1074        "internalType": "uint8"
1075      },
1076      {
1077        "name": "blockNumber",
1078        "type": "uint32",
1079        "internalType": "uint32"
1080      }
1081    ],
1082    "outputs": [
1083      {
1084        "name": "",
1085        "type": "uint96",
1086        "internalType": "uint96"
1087      }
1088    ],
1089    "stateMutability": "view"
1090  },
1091  {
1092    "type": "function",
1093    "name": "getStakeAtBlockNumberAndIndex",
1094    "inputs": [
1095      {
1096        "name": "quorumNumber",
1097        "type": "uint8",
1098        "internalType": "uint8"
1099      },
1100      {
1101        "name": "blockNumber",
1102        "type": "uint32",
1103        "internalType": "uint32"
1104      },
1105      {
1106        "name": "operatorId",
1107        "type": "bytes32",
1108        "internalType": "bytes32"
1109      },
1110      {
1111        "name": "index",
1112        "type": "uint256",
1113        "internalType": "uint256"
1114      }
1115    ],
1116    "outputs": [
1117      {
1118        "name": "",
1119        "type": "uint96",
1120        "internalType": "uint96"
1121      }
1122    ],
1123    "stateMutability": "view"
1124  },
1125  {
1126    "type": "function",
1127    "name": "getStakeHistory",
1128    "inputs": [
1129      {
1130        "name": "operatorId",
1131        "type": "bytes32",
1132        "internalType": "bytes32"
1133      },
1134      {
1135        "name": "quorumNumber",
1136        "type": "uint8",
1137        "internalType": "uint8"
1138      }
1139    ],
1140    "outputs": [
1141      {
1142        "name": "",
1143        "type": "tuple[]",
1144        "internalType": "struct IStakeRegistryTypes.StakeUpdate[]",
1145        "components": [
1146          {
1147            "name": "updateBlockNumber",
1148            "type": "uint32",
1149            "internalType": "uint32"
1150          },
1151          {
1152            "name": "nextUpdateBlockNumber",
1153            "type": "uint32",
1154            "internalType": "uint32"
1155          },
1156          {
1157            "name": "stake",
1158            "type": "uint96",
1159            "internalType": "uint96"
1160          }
1161        ]
1162      }
1163    ],
1164    "stateMutability": "view"
1165  },
1166  {
1167    "type": "function",
1168    "name": "getStakeHistoryLength",
1169    "inputs": [
1170      {
1171        "name": "operatorId",
1172        "type": "bytes32",
1173        "internalType": "bytes32"
1174      },
1175      {
1176        "name": "quorumNumber",
1177        "type": "uint8",
1178        "internalType": "uint8"
1179      }
1180    ],
1181    "outputs": [
1182      {
1183        "name": "",
1184        "type": "uint256",
1185        "internalType": "uint256"
1186      }
1187    ],
1188    "stateMutability": "view"
1189  },
1190  {
1191    "type": "function",
1192    "name": "getStakeUpdateAtIndex",
1193    "inputs": [
1194      {
1195        "name": "quorumNumber",
1196        "type": "uint8",
1197        "internalType": "uint8"
1198      },
1199      {
1200        "name": "operatorId",
1201        "type": "bytes32",
1202        "internalType": "bytes32"
1203      },
1204      {
1205        "name": "index",
1206        "type": "uint256",
1207        "internalType": "uint256"
1208      }
1209    ],
1210    "outputs": [
1211      {
1212        "name": "",
1213        "type": "tuple",
1214        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1215        "components": [
1216          {
1217            "name": "updateBlockNumber",
1218            "type": "uint32",
1219            "internalType": "uint32"
1220          },
1221          {
1222            "name": "nextUpdateBlockNumber",
1223            "type": "uint32",
1224            "internalType": "uint32"
1225          },
1226          {
1227            "name": "stake",
1228            "type": "uint96",
1229            "internalType": "uint96"
1230          }
1231        ]
1232      }
1233    ],
1234    "stateMutability": "view"
1235  },
1236  {
1237    "type": "function",
1238    "name": "getStakeUpdateIndexAtBlockNumber",
1239    "inputs": [
1240      {
1241        "name": "operatorId",
1242        "type": "bytes32",
1243        "internalType": "bytes32"
1244      },
1245      {
1246        "name": "quorumNumber",
1247        "type": "uint8",
1248        "internalType": "uint8"
1249      },
1250      {
1251        "name": "blockNumber",
1252        "type": "uint32",
1253        "internalType": "uint32"
1254      }
1255    ],
1256    "outputs": [
1257      {
1258        "name": "",
1259        "type": "uint32",
1260        "internalType": "uint32"
1261      }
1262    ],
1263    "stateMutability": "view"
1264  },
1265  {
1266    "type": "function",
1267    "name": "getTotalStakeAtBlockNumberFromIndex",
1268    "inputs": [
1269      {
1270        "name": "quorumNumber",
1271        "type": "uint8",
1272        "internalType": "uint8"
1273      },
1274      {
1275        "name": "blockNumber",
1276        "type": "uint32",
1277        "internalType": "uint32"
1278      },
1279      {
1280        "name": "index",
1281        "type": "uint256",
1282        "internalType": "uint256"
1283      }
1284    ],
1285    "outputs": [
1286      {
1287        "name": "",
1288        "type": "uint96",
1289        "internalType": "uint96"
1290      }
1291    ],
1292    "stateMutability": "view"
1293  },
1294  {
1295    "type": "function",
1296    "name": "getTotalStakeHistoryLength",
1297    "inputs": [
1298      {
1299        "name": "quorumNumber",
1300        "type": "uint8",
1301        "internalType": "uint8"
1302      }
1303    ],
1304    "outputs": [
1305      {
1306        "name": "",
1307        "type": "uint256",
1308        "internalType": "uint256"
1309      }
1310    ],
1311    "stateMutability": "view"
1312  },
1313  {
1314    "type": "function",
1315    "name": "getTotalStakeIndicesAtBlockNumber",
1316    "inputs": [
1317      {
1318        "name": "blockNumber",
1319        "type": "uint32",
1320        "internalType": "uint32"
1321      },
1322      {
1323        "name": "quorumNumbers",
1324        "type": "bytes",
1325        "internalType": "bytes"
1326      }
1327    ],
1328    "outputs": [
1329      {
1330        "name": "",
1331        "type": "uint32[]",
1332        "internalType": "uint32[]"
1333      }
1334    ],
1335    "stateMutability": "view"
1336  },
1337  {
1338    "type": "function",
1339    "name": "getTotalStakeUpdateAtIndex",
1340    "inputs": [
1341      {
1342        "name": "quorumNumber",
1343        "type": "uint8",
1344        "internalType": "uint8"
1345      },
1346      {
1347        "name": "index",
1348        "type": "uint256",
1349        "internalType": "uint256"
1350      }
1351    ],
1352    "outputs": [
1353      {
1354        "name": "",
1355        "type": "tuple",
1356        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1357        "components": [
1358          {
1359            "name": "updateBlockNumber",
1360            "type": "uint32",
1361            "internalType": "uint32"
1362          },
1363          {
1364            "name": "nextUpdateBlockNumber",
1365            "type": "uint32",
1366            "internalType": "uint32"
1367          },
1368          {
1369            "name": "stake",
1370            "type": "uint96",
1371            "internalType": "uint96"
1372          }
1373        ]
1374      }
1375    ],
1376    "stateMutability": "view"
1377  },
1378  {
1379    "type": "function",
1380    "name": "initializeDelegatedStakeQuorum",
1381    "inputs": [
1382      {
1383        "name": "quorumNumber",
1384        "type": "uint8",
1385        "internalType": "uint8"
1386      },
1387      {
1388        "name": "minimumStake",
1389        "type": "uint96",
1390        "internalType": "uint96"
1391      },
1392      {
1393        "name": "_strategyParams",
1394        "type": "tuple[]",
1395        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1396        "components": [
1397          {
1398            "name": "strategy",
1399            "type": "address",
1400            "internalType": "contract IStrategy"
1401          },
1402          {
1403            "name": "multiplier",
1404            "type": "uint96",
1405            "internalType": "uint96"
1406          }
1407        ]
1408      }
1409    ],
1410    "outputs": [],
1411    "stateMutability": "nonpayable"
1412  },
1413  {
1414    "type": "function",
1415    "name": "initializeSlashableStakeQuorum",
1416    "inputs": [
1417      {
1418        "name": "quorumNumber",
1419        "type": "uint8",
1420        "internalType": "uint8"
1421      },
1422      {
1423        "name": "minimumStake",
1424        "type": "uint96",
1425        "internalType": "uint96"
1426      },
1427      {
1428        "name": "lookAheadPeriod",
1429        "type": "uint32",
1430        "internalType": "uint32"
1431      },
1432      {
1433        "name": "_strategyParams",
1434        "type": "tuple[]",
1435        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1436        "components": [
1437          {
1438            "name": "strategy",
1439            "type": "address",
1440            "internalType": "contract IStrategy"
1441          },
1442          {
1443            "name": "multiplier",
1444            "type": "uint96",
1445            "internalType": "uint96"
1446          }
1447        ]
1448      }
1449    ],
1450    "outputs": [],
1451    "stateMutability": "nonpayable"
1452  },
1453  {
1454    "type": "function",
1455    "name": "minimumStakeForQuorum",
1456    "inputs": [
1457      {
1458        "name": "",
1459        "type": "uint8",
1460        "internalType": "uint8"
1461      }
1462    ],
1463    "outputs": [
1464      {
1465        "name": "",
1466        "type": "uint96",
1467        "internalType": "uint96"
1468      }
1469    ],
1470    "stateMutability": "view"
1471  },
1472  {
1473    "type": "function",
1474    "name": "modifyStrategyParams",
1475    "inputs": [
1476      {
1477        "name": "quorumNumber",
1478        "type": "uint8",
1479        "internalType": "uint8"
1480      },
1481      {
1482        "name": "strategyIndices",
1483        "type": "uint256[]",
1484        "internalType": "uint256[]"
1485      },
1486      {
1487        "name": "newMultipliers",
1488        "type": "uint96[]",
1489        "internalType": "uint96[]"
1490      }
1491    ],
1492    "outputs": [],
1493    "stateMutability": "nonpayable"
1494  },
1495  {
1496    "type": "function",
1497    "name": "registerOperator",
1498    "inputs": [
1499      {
1500        "name": "operator",
1501        "type": "address",
1502        "internalType": "address"
1503      },
1504      {
1505        "name": "operatorId",
1506        "type": "bytes32",
1507        "internalType": "bytes32"
1508      },
1509      {
1510        "name": "quorumNumbers",
1511        "type": "bytes",
1512        "internalType": "bytes"
1513      }
1514    ],
1515    "outputs": [
1516      {
1517        "name": "",
1518        "type": "uint96[]",
1519        "internalType": "uint96[]"
1520      },
1521      {
1522        "name": "",
1523        "type": "uint96[]",
1524        "internalType": "uint96[]"
1525      }
1526    ],
1527    "stateMutability": "nonpayable"
1528  },
1529  {
1530    "type": "function",
1531    "name": "registryCoordinator",
1532    "inputs": [],
1533    "outputs": [
1534      {
1535        "name": "",
1536        "type": "address",
1537        "internalType": "contract ISlashingRegistryCoordinator"
1538      }
1539    ],
1540    "stateMutability": "view"
1541  },
1542  {
1543    "type": "function",
1544    "name": "removeStrategies",
1545    "inputs": [
1546      {
1547        "name": "quorumNumber",
1548        "type": "uint8",
1549        "internalType": "uint8"
1550      },
1551      {
1552        "name": "indicesToRemove",
1553        "type": "uint256[]",
1554        "internalType": "uint256[]"
1555      }
1556    ],
1557    "outputs": [],
1558    "stateMutability": "nonpayable"
1559  },
1560  {
1561    "type": "function",
1562    "name": "setMinimumStakeForQuorum",
1563    "inputs": [
1564      {
1565        "name": "quorumNumber",
1566        "type": "uint8",
1567        "internalType": "uint8"
1568      },
1569      {
1570        "name": "minimumStake",
1571        "type": "uint96",
1572        "internalType": "uint96"
1573      }
1574    ],
1575    "outputs": [],
1576    "stateMutability": "nonpayable"
1577  },
1578  {
1579    "type": "function",
1580    "name": "setSlashableStakeLookahead",
1581    "inputs": [
1582      {
1583        "name": "quorumNumber",
1584        "type": "uint8",
1585        "internalType": "uint8"
1586      },
1587      {
1588        "name": "_lookAheadBlocks",
1589        "type": "uint32",
1590        "internalType": "uint32"
1591      }
1592    ],
1593    "outputs": [],
1594    "stateMutability": "nonpayable"
1595  },
1596  {
1597    "type": "function",
1598    "name": "slashableStakeLookAheadPerQuorum",
1599    "inputs": [
1600      {
1601        "name": "quorumNumber",
1602        "type": "uint8",
1603        "internalType": "uint8"
1604      }
1605    ],
1606    "outputs": [
1607      {
1608        "name": "",
1609        "type": "uint32",
1610        "internalType": "uint32"
1611      }
1612    ],
1613    "stateMutability": "view"
1614  },
1615  {
1616    "type": "function",
1617    "name": "stakeTypePerQuorum",
1618    "inputs": [
1619      {
1620        "name": "quorumNumber",
1621        "type": "uint8",
1622        "internalType": "uint8"
1623      }
1624    ],
1625    "outputs": [
1626      {
1627        "name": "",
1628        "type": "uint8",
1629        "internalType": "enum IStakeRegistryTypes.StakeType"
1630      }
1631    ],
1632    "stateMutability": "view"
1633  },
1634  {
1635    "type": "function",
1636    "name": "strategiesPerQuorum",
1637    "inputs": [
1638      {
1639        "name": "quorumNumber",
1640        "type": "uint8",
1641        "internalType": "uint8"
1642      },
1643      {
1644        "name": "",
1645        "type": "uint256",
1646        "internalType": "uint256"
1647      }
1648    ],
1649    "outputs": [
1650      {
1651        "name": "",
1652        "type": "address",
1653        "internalType": "contract IStrategy"
1654      }
1655    ],
1656    "stateMutability": "view"
1657  },
1658  {
1659    "type": "function",
1660    "name": "strategyParams",
1661    "inputs": [
1662      {
1663        "name": "quorumNumber",
1664        "type": "uint8",
1665        "internalType": "uint8"
1666      },
1667      {
1668        "name": "",
1669        "type": "uint256",
1670        "internalType": "uint256"
1671      }
1672    ],
1673    "outputs": [
1674      {
1675        "name": "strategy",
1676        "type": "address",
1677        "internalType": "contract IStrategy"
1678      },
1679      {
1680        "name": "multiplier",
1681        "type": "uint96",
1682        "internalType": "uint96"
1683      }
1684    ],
1685    "stateMutability": "view"
1686  },
1687  {
1688    "type": "function",
1689    "name": "strategyParamsByIndex",
1690    "inputs": [
1691      {
1692        "name": "quorumNumber",
1693        "type": "uint8",
1694        "internalType": "uint8"
1695      },
1696      {
1697        "name": "index",
1698        "type": "uint256",
1699        "internalType": "uint256"
1700      }
1701    ],
1702    "outputs": [
1703      {
1704        "name": "",
1705        "type": "tuple",
1706        "internalType": "struct IStakeRegistryTypes.StrategyParams",
1707        "components": [
1708          {
1709            "name": "strategy",
1710            "type": "address",
1711            "internalType": "contract IStrategy"
1712          },
1713          {
1714            "name": "multiplier",
1715            "type": "uint96",
1716            "internalType": "uint96"
1717          }
1718        ]
1719      }
1720    ],
1721    "stateMutability": "view"
1722  },
1723  {
1724    "type": "function",
1725    "name": "strategyParamsLength",
1726    "inputs": [
1727      {
1728        "name": "quorumNumber",
1729        "type": "uint8",
1730        "internalType": "uint8"
1731      }
1732    ],
1733    "outputs": [
1734      {
1735        "name": "",
1736        "type": "uint256",
1737        "internalType": "uint256"
1738      }
1739    ],
1740    "stateMutability": "view"
1741  },
1742  {
1743    "type": "function",
1744    "name": "updateOperatorsStake",
1745    "inputs": [
1746      {
1747        "name": "operators",
1748        "type": "address[]",
1749        "internalType": "address[]"
1750      },
1751      {
1752        "name": "operatorIds",
1753        "type": "bytes32[]",
1754        "internalType": "bytes32[]"
1755      },
1756      {
1757        "name": "quorumNumber",
1758        "type": "uint8",
1759        "internalType": "uint8"
1760      }
1761    ],
1762    "outputs": [
1763      {
1764        "name": "",
1765        "type": "bool[]",
1766        "internalType": "bool[]"
1767      }
1768    ],
1769    "stateMutability": "nonpayable"
1770  },
1771  {
1772    "type": "function",
1773    "name": "weightOfOperatorForQuorum",
1774    "inputs": [
1775      {
1776        "name": "quorumNumber",
1777        "type": "uint8",
1778        "internalType": "uint8"
1779      },
1780      {
1781        "name": "operator",
1782        "type": "address",
1783        "internalType": "address"
1784      }
1785    ],
1786    "outputs": [
1787      {
1788        "name": "",
1789        "type": "uint96",
1790        "internalType": "uint96"
1791      }
1792    ],
1793    "stateMutability": "view"
1794  },
1795  {
1796    "type": "event",
1797    "name": "LookAheadPeriodChanged",
1798    "inputs": [
1799      {
1800        "name": "oldLookAheadBlocks",
1801        "type": "uint32",
1802        "indexed": false,
1803        "internalType": "uint32"
1804      },
1805      {
1806        "name": "newLookAheadBlocks",
1807        "type": "uint32",
1808        "indexed": false,
1809        "internalType": "uint32"
1810      }
1811    ],
1812    "anonymous": false
1813  },
1814  {
1815    "type": "event",
1816    "name": "MinimumStakeForQuorumUpdated",
1817    "inputs": [
1818      {
1819        "name": "quorumNumber",
1820        "type": "uint8",
1821        "indexed": true,
1822        "internalType": "uint8"
1823      },
1824      {
1825        "name": "minimumStake",
1826        "type": "uint96",
1827        "indexed": false,
1828        "internalType": "uint96"
1829      }
1830    ],
1831    "anonymous": false
1832  },
1833  {
1834    "type": "event",
1835    "name": "OperatorStakeUpdate",
1836    "inputs": [
1837      {
1838        "name": "operatorId",
1839        "type": "bytes32",
1840        "indexed": true,
1841        "internalType": "bytes32"
1842      },
1843      {
1844        "name": "quorumNumber",
1845        "type": "uint8",
1846        "indexed": false,
1847        "internalType": "uint8"
1848      },
1849      {
1850        "name": "stake",
1851        "type": "uint96",
1852        "indexed": false,
1853        "internalType": "uint96"
1854      }
1855    ],
1856    "anonymous": false
1857  },
1858  {
1859    "type": "event",
1860    "name": "QuorumCreated",
1861    "inputs": [
1862      {
1863        "name": "quorumNumber",
1864        "type": "uint8",
1865        "indexed": true,
1866        "internalType": "uint8"
1867      }
1868    ],
1869    "anonymous": false
1870  },
1871  {
1872    "type": "event",
1873    "name": "StakeTypeSet",
1874    "inputs": [
1875      {
1876        "name": "newStakeType",
1877        "type": "uint8",
1878        "indexed": false,
1879        "internalType": "enum IStakeRegistryTypes.StakeType"
1880      }
1881    ],
1882    "anonymous": false
1883  },
1884  {
1885    "type": "event",
1886    "name": "StrategyAddedToQuorum",
1887    "inputs": [
1888      {
1889        "name": "quorumNumber",
1890        "type": "uint8",
1891        "indexed": true,
1892        "internalType": "uint8"
1893      },
1894      {
1895        "name": "strategy",
1896        "type": "address",
1897        "indexed": false,
1898        "internalType": "contract IStrategy"
1899      }
1900    ],
1901    "anonymous": false
1902  },
1903  {
1904    "type": "event",
1905    "name": "StrategyMultiplierUpdated",
1906    "inputs": [
1907      {
1908        "name": "quorumNumber",
1909        "type": "uint8",
1910        "indexed": true,
1911        "internalType": "uint8"
1912      },
1913      {
1914        "name": "strategy",
1915        "type": "address",
1916        "indexed": false,
1917        "internalType": "contract IStrategy"
1918      },
1919      {
1920        "name": "multiplier",
1921        "type": "uint256",
1922        "indexed": false,
1923        "internalType": "uint256"
1924      }
1925    ],
1926    "anonymous": false
1927  },
1928  {
1929    "type": "event",
1930    "name": "StrategyRemovedFromQuorum",
1931    "inputs": [
1932      {
1933        "name": "quorumNumber",
1934        "type": "uint8",
1935        "indexed": true,
1936        "internalType": "uint8"
1937      },
1938      {
1939        "name": "strategy",
1940        "type": "address",
1941        "indexed": false,
1942        "internalType": "contract IStrategy"
1943      }
1944    ],
1945    "anonymous": false
1946  },
1947  {
1948    "type": "error",
1949    "name": "BelowMinimumStakeRequirement",
1950    "inputs": []
1951  },
1952  {
1953    "type": "error",
1954    "name": "EmptyStakeHistory",
1955    "inputs": []
1956  },
1957  {
1958    "type": "error",
1959    "name": "InputArrayLengthMismatch",
1960    "inputs": []
1961  },
1962  {
1963    "type": "error",
1964    "name": "InputArrayLengthZero",
1965    "inputs": []
1966  },
1967  {
1968    "type": "error",
1969    "name": "InputDuplicateStrategy",
1970    "inputs": []
1971  },
1972  {
1973    "type": "error",
1974    "name": "InputMultiplierZero",
1975    "inputs": []
1976  },
1977  {
1978    "type": "error",
1979    "name": "InvalidBlockNumber",
1980    "inputs": []
1981  },
1982  {
1983    "type": "error",
1984    "name": "OnlySlashingRegistryCoordinator",
1985    "inputs": []
1986  },
1987  {
1988    "type": "error",
1989    "name": "OnlySlashingRegistryCoordinatorOwner",
1990    "inputs": []
1991  },
1992  {
1993    "type": "error",
1994    "name": "QuorumAlreadyExists",
1995    "inputs": []
1996  },
1997  {
1998    "type": "error",
1999    "name": "QuorumDoesNotExist",
2000    "inputs": []
2001  },
2002  {
2003    "type": "error",
2004    "name": "QuorumNotSlashable",
2005    "inputs": []
2006  }
2007]
2008```*/
2009#[allow(
2010    non_camel_case_types,
2011    non_snake_case,
2012    clippy::pub_underscore_fields,
2013    clippy::style,
2014    clippy::empty_structs_with_brackets
2015)]
2016pub mod StakeRegistry {
2017    use super::*;
2018    use alloy::sol_types as alloy_sol_types;
2019    /// The creation / init bytecode of the contract.
2020    ///
2021    /// ```text
2022    ///0x610100604052348015610010575f5ffd5b50604051613cee380380613cee83398101604081905261002f91610068565b6001600160a01b0393841660e052918316608052821660a0521660c0526100c4565b6001600160a01b0381168114610065575f5ffd5b50565b5f5f5f5f6080858703121561007b575f5ffd5b845161008681610051565b602086015190945061009781610051565b60408601519093506100a881610051565b60608601519092506100b981610051565b939692955090935050565b60805160a05160c05160e051613baa6101445f395f81816103da01528181610dff015281816115eb01528181611cc501528181611d810152612c3401525f818161058201528181610ead01528181610f3d01528181611699015281816117c80152612bfa01525f61038601525f81816105e201526123510152613baa5ff3fe608060405234801561000f575f5ffd5b50600436106101f1575f3560e01c80639ab4d6ff1161011b578063c8294c56116100b4578063df5cf72311610079578063df5cf723146105dd578063e086adb314610604578063f2be94ae14610617578063f851e1981461062a578063fa28c6271461063d575f5ffd5b8063c8294c561461056a578063ca8aa7c71461057d578063cc5a7c20146105a4578063d5eccc05146105b7578063dd9846b9146105ca575f5ffd5b80639ab4d6ff146104495780639f3ccf6514610483578063ac6bfb0314610496578063adc804da146104b6578063b6904b78146104f6578063bc9a40c314610509578063bd29b8cd1461051c578063c46778a51461052f578063c601527d14610557575f5ffd5b80635e5a67751161018d5780635e5a6775146103305780635f1f2d771461033f578063697fbd93146103525780636b3aa72e146103815780636c3fb4bf146103b55780636d14a987146103d557806375d4173a146103fc5780637c1723471461040f57806381c0750214610429575f5ffd5b80630491b41c146101f5578063087324611461022a5780631f9b74e01461024b57806320b6629814610276578063255047771461028b5780632cd95940146102ac5780633ca5a5f5146102cc5780634bd26e09146102ee5780635401ed271461031d575b5f5ffd5b610217610203366004612d71565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61023d610238366004612d8a565b610650565b604051610221929190612db2565b61025e610259366004612de8565b610695565b6040516001600160601b039091168152602001610221565b610289610284366004612e5d565b6106b7565b005b61029e610299366004612f18565b610842565b604051610221929190612fb2565b6102bf6102ba366004612fd6565b6109ca565b6040516102219190613031565b6102176102da366004612d71565b60ff165f9081526003602052604090205490565b6102176102fc366004612fd6565b5f91825260026020908152604080842060ff93909316845291905290205490565b61025e61032b366004612fd6565b610a67565b610217670de0b6b3a764000081565b61028961034d36600461310c565b610a7f565b610374610360366004612d71565b60056020525f908152604090205460ff1681565b60405161022191906131c8565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b60405161022191906131ee565b6103c86103c3366004613267565b610fae565b6040516102219190613339565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61028961040a36600461341d565b611109565b610417602081565b60405160ff9091168152602001610221565b61043c610437366004613489565b6111ef565b60405161022191906134d7565b61046e610457366004612d71565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610221565b6103a8610491366004612d8a565b611395565b6104a96104a4366004613514565b6113c9565b6040516102219190613544565b6104c96104c4366004612d8a565b611450565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610221565b6104a9610504366004612d8a565b6114c7565b610289610517366004613552565b611543565b61028961052a36600461357a565b611564565b61025e61053d366004612d71565b5f602081905290815260409020546001600160601b031681565b6102896105653660046135a8565b6115c7565b61025e6105783660046135f2565b611837565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6102896105b236600461362c565b6118b3565b61025e6105c5366004612d71565b6119a5565b61046e6105d8366004613696565b6119f6565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6102896106123660046136c6565b611a0a565b61025e6106253660046136ee565b611a26565b6104a9610638366004612fd6565b611ab9565b61025e61064b366004613696565b611b87565b6003602052815f5260405f208181548110610669575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106a081611be6565b5f6106ab8585611c18565b509250505b5092915050565b6106bf611cc3565b846106c981611be6565b83806106e85760405163796cc52560e01b815260040160405180910390fd5b828114610708576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b82811015610837578585828181106107355761073561372d565b905060200201602081019061074a9190613741565b8289898481811061075d5761075d61372d565b90506020020135815481106107745761077461372d565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff165f516020613b555f395f51905f52838a8a858181106107c7576107c761372d565b90506020020135815481106107de576107de61372d565b5f918252602090912001546001600160a01b03168888858181106108045761080461372d565b90506020020160208101906108199190613741565b604051610827929190612db2565b60405180910390a260010161071b565b505050505050505050565b60608061084d611d76565b5f836001600160401b038111156108665761086661307e565b60405190808252806020026020018201604052801561088f578160200160208202803683370190505b5090505f846001600160401b038111156108ab576108ab61307e565b6040519080825280602002602001820160405280156108d4578160200160208202803683370190505b5090505f5b858110156109bc575f8787838181106108f4576108f461372d565b919091013560f81c9150610909905081611be6565b5f5f610915838d611c18565b91509150806109375760405163207f13e360e11b815260040160405180910390fd5b5f6109438c8585611dbf565b9050828786815181106109585761095861372d565b60200260200101906001600160601b031690816001600160601b0316815250506109828482612038565b8686815181106109945761099461372d565b6001600160601b03909216602092830291909101909101525050600190920191506108d99050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610a5a575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a02565b5050505090505b92915050565b5f5f610a738484611ab9565b60400151949350505050565b610a87611cc3565b81610a9181611be6565b815180610ab15760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610ae657610ae661307e565b604051908082528060200260200182016040528015610b0f578160200160208202803683370190505b5090505f5b84811015610dfb5783878281518110610b2f57610b2f61372d565b602002602001015181548110610b4757610b4761372d565b5f9182526020909120015482516001600160a01b0390911690839083908110610b7257610b7261372d565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610bca57610bca61372d565b602002602001015181548110610be257610be261372d565b5f91825260209091200154604051610c03916001600160a01b0316906131ee565b60405180910390a28760ff165f516020613b555f395f51905f5285898481518110610c3057610c3061372d565b602002602001015181548110610c4857610c4861372d565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610c879060019061376e565b81548110610c9757610c9761372d565b905f5260205f200184888381518110610cb257610cb261372d565b602002602001015181548110610cca57610cca61372d565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d1c57610d1c613781565b5f8281526020812082015f199081019190915501905582548390610d429060019061376e565b81548110610d5257610d5261372d565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610d8057610d8061372d565b602002602001015181548110610d9857610d9861372d565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610dd357610dd3613781565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b14565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7d9190613795565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610ee2916004016137b0565b602060405180830381865afa158015610efd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2191906137d6565b15610fa45760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610f769084908c9087906004016137f5565b5f604051808303815f87803b158015610f8d575f5ffd5b505af1158015610f9f573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060610fb8611d76565b5f84516001600160401b03811115610fd257610fd261307e565b604051908082528060200260200182016040528015610ffb578160200160208202803683370190505b50905061100783611be6565b5f5f61101385886121a9565b90925090505f805b88518110156110ef578281815181106110365761103661372d565b602002602001015161109a575f8482815181106110555761105561372d565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110895761108961372d565b911515602092830291909101909101525b5f6110d88983815181106110b0576110b061372d565b6020026020010151898785815181106110cb576110cb61372d565b6020026020010151611dbf565b90506110e4818461385f565b92505060010161101b565b506110fa8682612038565b509293505050505b9392505050565b611111611d76565b60ff83165f9081526001602052604090205415611141576040516310cda51760e21b815260040160405180910390fd5b61114b838261254f565b6111558383612827565b61115f835f61288f565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b0381111561120a5761120a61307e565b604051908082528060200260200182016040528015611233578160200160208202803683370190505b5090505f5b8381101561138c575f8585838181106112535761125361372d565b919091013560f81c9150611268905081611be6565b60ff81165f908152600160205260408120805463ffffffff8a1692906112905761129061372d565b5f9182526020909120015463ffffffff1611156112c05760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113815760ff83165f90815260016020819052604090912063ffffffff8b1691611302848661376e565b61130c919061376e565b8154811061131c5761131c61372d565b5f9182526020909120015463ffffffff161161137957600161133e828461376e565b611348919061376e565b85858151811061135a5761135a61372d565b602002602001019063ffffffff16908163ffffffff1681525050611381565b6001016112d4565b505050600101611238565b50949350505050565b6004602052815f5260405f2081815481106113ae575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6113d1612d3d565b5f83815260026020908152604080832060ff8816845290915290208054839081106113fe576113fe61372d565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114865761148661372d565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b6114cf612d3d565b60ff83165f9081526001602052604090208054839081106114f2576114f261372d565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b61154b611cc3565b8161155581611be6565b61155f8383612827565b505050565b61156c611d76565b5f5b818110156115c1575f8383838181106115895761158961372d565b919091013560f81c915061159e905081611be6565b5f6115aa86835f611dbf565b90506115b68282612038565b50505060010161156e565b50505050565b6115cf611cc3565b816115d981611be6565b6115e3838361254f565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611645573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116699190613795565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc758916116ce916004016137b0565b602060405180830381865afa1580156116e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170d91906137d6565b15611830575f826001600160401b0381111561172b5761172b61307e565b604051908082528060200260200182016040528015611754578160200160208202803683370190505b5090505f5b838110156117b0578581815181106117735761177361372d565b60200260200101515f01518282815181106117905761179061372d565b6001600160a01b0390921660209283029190910190910152600101611759565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea20906118019085908a9086906004016137f5565b5f604051808303815f87803b158015611818575f5ffd5b505af115801561182a573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f90815260016020526040812080548291908490811061185d5761185d61372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610a7381856128fc565b6118bb611d76565b60ff84165f90815260016020526040902054156118eb576040516310cda51760e21b815260040160405180910390fd5b6118f5848261254f565b6118ff8484612827565b61190a84600161288f565b6119148483612973565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f9081526001602081905260408220805490916119c59161376e565b815481106119d5576119d561372d565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a02848484612a24565b949350505050565b611a12611cc3565b81611a1c81611be6565b61155f8383612973565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611a5657611a5661372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611aac81866128fc565b6040015195945050505050565b611ac1612d3d565b5f83815260026020908152604080832060ff86168452909152902054611ae5612d3d565b815f03611af5579150610a619050565b5f85815260026020908152604080832060ff881684529091529020611b1b60018461376e565b81548110611b2b57611b2b61372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610a61915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611bad858585612a24565b63ffffffff1681548110611bc357611bc361372d565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611c1557604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611c5057611c5061372d565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611c7c87846121a9565b91509150815f81518110611c9257611c9261372d565b6020026020010151815f81518110611cac57611cac61372d565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d439190613795565b6001600160a01b0316336001600160a01b031614611d745760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d7457604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611e83575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611fde565b5f86815260026020908152604080832060ff891684529091528120611ea960018461376e565b81548110611eb957611eb961372d565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611eef575f9350505050611102565b805463ffffffff438116911603611f27578054600160401b600160a01b031916600160401b6001600160601b03871602178155611fdc565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a261202e8285612b8b565b9695505050505050565b60ff82165f908152600160208190526040822080549183919061205b908461376e565b8154811061206b5761206b61372d565b905f5260205f20019050835f036120965754600160401b90046001600160601b03169150610a619050565b80545f906120b490600160401b90046001600160601b031686612ba2565b825490915063ffffffff4381169116036120ef578154600160401b600160a01b031916600160401b6001600160601b038316021782556121a0565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b038111156121c6576121c661307e565b6040519080825280602002602001820160405280156121ef578160200160208202803683370190505b5090505f84516001600160401b0381111561220c5761220c61307e565b604051908082528060200260200182016040528015612235578160200160208202803683370190505b5090505f6122518760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b828210156122d1575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101612283565b50505050905060606001808111156122eb576122eb6131b4565b60ff808b165f90815260056020526040902054166001811115612310576123106131b4565b036123265761231f8989612bcf565b90506123c9565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e67692612385928d9291016138f3565b5f60405180830381865afa15801561239f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c69190810190613917565b90505b5f5b885181101561253f575f5b848110156124cf575f8482815181106123f1576123f161372d565b602002602001015190505f84848151811061240e5761240e61372d565b602002602001015183815181106124275761242761372d565b602002602001015111156124c657670de0b6b3a764000081602001516001600160601b031685858151811061245e5761245e61372d565b602002602001015184815181106124775761247761372d565b60200260200101516124899190613a23565b6124939190613a3a565b8884815181106124a5576124a561372d565b602002602001018181516124b99190613a59565b6001600160601b03169052505b506001016123d6565b5060ff8a165f9081526020819052604090205486516001600160601b03909116908790839081106125025761250261372d565b60200260200101516001600160601b031610158582815181106125275761252761372d565b911515602092830291909101909101526001016123cb565b5093989297509195505050505050565b5f8151116125705760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f90815260036020908152604090912054906125928383613a78565b11156125b1576040516343714afd60e01b815260040160405180910390fd5b5f5b82811015611830575f5b6125c78284613a78565b811015612656578482815181106125e0576125e061372d565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f20828154811061261c5761261c61372d565b5f918252602090912001546001600160a01b03160361264e57604051637b74340b60e01b815260040160405180910390fd5b6001016125bd565b505f84828151811061266a5761266a61372d565b6020026020010151602001516001600160601b03161161269d57604051637257125160e01b815260040160405180910390fd5b60ff85165f90815260036020526040902084518590839081106126c2576126c261372d565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127265761272661372d565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061279c5761279c61372d565b60200260200101515f01516040516127b491906131ee565b60405180910390a28460ff165f516020613b555f395f51905f528583815181106127e0576127e061372d565b60200260200101515f01518684815181106127fd576127fd61372d565b602002602001015160200151604051612817929190612db2565b60405180910390a26001016125b3565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff1916600183818111156128bc576128bc6131b4565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516128f091906131c8565b60405180910390a15050565b815f015163ffffffff168163ffffffff16101561292c57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff1615806129525750816020015163ffffffff168163ffffffff16105b61296f57604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f9081526005602052604090205416600181111561299a5761299a6131b4565b146129b85760405163a3be258360e01b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612ac2575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612a7660018461376e565b81548110612a8657612a8661372d565b5f9182526020909120015463ffffffff1611612ab057612aa760018261376e565b92505050611102565b80612aba81613a8b565b915050612a42565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f6111026001600160601b03808516908416613aa0565b5f5f821215612bc557612bb482613abf565b612bbe9084613ad9565b9050610a61565b612bbe8284613a59565b60ff82165f9081526006602052604081205460609190612bf59063ffffffff1643613a78565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb29190613795565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612cfc93928a9291899101613af8565b5f60405180830381865afa158015612d16573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121a09190810190613917565b604080516060810182525f808252602082018190529181019190915290565b803560ff81168114612d6c575f5ffd5b919050565b5f60208284031215612d81575f5ffd5b61110282612d5c565b5f5f60408385031215612d9b575f5ffd5b612da483612d5c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611c15575f5ffd5b5f5f60408385031215612df9575f5ffd5b612e0283612d5c565b91506020830135612e1281612dd4565b809150509250929050565b5f5f83601f840112612e2d575f5ffd5b5081356001600160401b03811115612e43575f5ffd5b6020830191508360208260051b8501011115611cbc575f5ffd5b5f5f5f5f5f60608688031215612e71575f5ffd5b612e7a86612d5c565b945060208601356001600160401b03811115612e94575f5ffd5b612ea088828901612e1d565b90955093505060408601356001600160401b03811115612ebe575f5ffd5b612eca88828901612e1d565b969995985093965092949392505050565b5f5f83601f840112612eeb575f5ffd5b5081356001600160401b03811115612f01575f5ffd5b602083019150836020828501011115611cbc575f5ffd5b5f5f5f5f60608587031215612f2b575f5ffd5b8435612f3681612dd4565b93506020850135925060408501356001600160401b03811115612f57575f5ffd5b612f6387828801612edb565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015612fa85781516001600160601b0316865260209586019590910190600101612f81565b5093949350505050565b604081525f612fc46040830185612f6f565b82810360208401526121a08185612f6f565b5f5f60408385031215612fe7575f5ffd5b82359150612ff760208401612d5c565b90509250929050565b63ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b602080825282518282018190525f918401906040840190835b818110156130735761305d838551613000565b602093909301926060929092019160010161304a565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156130b4576130b461307e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156130e2576130e261307e565b604052919050565b5f6001600160401b038211156131025761310261307e565b5060051b60200190565b5f5f6040838503121561311d575f5ffd5b61312683612d5c565b915060208301356001600160401b03811115613140575f5ffd5b8301601f81018513613150575f5ffd5b803561316361315e826130ea565b6130ba565b8082825260208201915060208360051b850101925087831115613184575f5ffd5b6020840193505b828410156131a657833582526020938401939091019061318b565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600283106131e857634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0391909116815260200190565b5f82601f830112613211575f5ffd5b813561321f61315e826130ea565b8082825260208201915060208360051b860101925085831115613240575f5ffd5b602085015b8381101561325d578035835260209283019201613245565b5095945050505050565b5f5f5f60608486031215613279575f5ffd5b83356001600160401b0381111561328e575f5ffd5b8401601f8101861361329e575f5ffd5b80356132ac61315e826130ea565b8082825260208201915060208360051b8501019250888311156132cd575f5ffd5b6020840193505b828410156132f85783356132e781612dd4565b8252602093840193909101906132d4565b955050505060208401356001600160401b03811115613315575f5ffd5b61332186828701613202565b92505061333060408501612d5c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156130735783511515835260209384019390920191600101613352565b80356001600160601b0381168114612d6c575f5ffd5b5f82601f830112613397575f5ffd5b81356133a561315e826130ea565b8082825260208201915060208360061b8601019250858311156133c6575f5ffd5b602085015b8381101561325d57604081880312156133e2575f5ffd5b6133ea613092565b81356133f581612dd4565b815261340360208301613372565b6020820152808452506020830192506040810190506133cb565b5f5f5f6060848603121561342f575f5ffd5b61343884612d5c565b925061344660208501613372565b915060408401356001600160401b03811115613460575f5ffd5b61346c86828701613388565b9150509250925092565b803563ffffffff81168114612d6c575f5ffd5b5f5f5f6040848603121561349b575f5ffd5b6134a484613476565b925060208401356001600160401b038111156134be575f5ffd5b6134ca86828701612edb565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b8181101561307357835163ffffffff168352602093840193909201916001016134f0565b5f5f5f60608486031215613526575f5ffd5b61352f84612d5c565b95602085013595506040909401359392505050565b60608101610a618284613000565b5f5f60408385031215613563575f5ffd5b61356c83612d5c565b9150612ff760208401613372565b5f5f5f6040848603121561358c575f5ffd5b8335925060208401356001600160401b038111156134be575f5ffd5b5f5f604083850312156135b9575f5ffd5b6135c283612d5c565b915060208301356001600160401b038111156135dc575f5ffd5b6135e885828601613388565b9150509250929050565b5f5f5f60608486031215613604575f5ffd5b61360d84612d5c565b925061361b60208501613476565b929592945050506040919091013590565b5f5f5f5f6080858703121561363f575f5ffd5b61364885612d5c565b935061365660208601613372565b925061366460408601613476565b915060608501356001600160401b0381111561367e575f5ffd5b61368a87828801613388565b91505092959194509250565b5f5f5f606084860312156136a8575f5ffd5b833592506136b860208501612d5c565b915061333060408501613476565b5f5f604083850312156136d7575f5ffd5b6136e083612d5c565b9150612ff760208401613476565b5f5f5f5f60808587031215613701575f5ffd5b61370a85612d5c565b935061371860208601613476565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613751575f5ffd5b61110282613372565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a6157610a6161375a565b634e487b7160e01b5f52603160045260245ffd5b5f602082840312156137a5575f5ffd5b815161110281612dd4565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610a61565b5f602082840312156137e6575f5ffd5b81518015158114611102575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156138525783516001600160a01b031683526020938401939092019160010161382b565b5090979650505050505050565b8082018281125f831280158216821582161715611b7f57611b7f61375a565b5f8151808452602084019350602083015f5b82811015612fa85781516001600160a01b0316865260209586019590910190600101613890565b5f8154808452602084019350825f5260205f205f5b82811015612fa85781546001600160a01b03168652602090950194600191820191016138cc565b604081525f613905604083018561387e565b82810360208401526121a081856138b7565b5f60208284031215613927575f5ffd5b81516001600160401b0381111561393c575f5ffd5b8201601f8101841361394c575f5ffd5b805161395a61315e826130ea565b8082825260208201915060208360051b85010192508683111561397b575f5ffd5b602084015b83811015613a185780516001600160401b0381111561399d575f5ffd5b8501603f810189136139ad575f5ffd5b60208101516139be61315e826130ea565b808282526020820191506020808460051b8601010192508b8311156139e1575f5ffd5b6040840193505b82841015613a035783518252602093840193909101906139e8565b86525050602093840193919091019050613980565b509695505050505050565b8082028115828204841417610a6157610a6161375a565b5f82613a5457634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610a6157610a6161375a565b80820180821115610a6157610a6161375a565b5f81613a9957613a9961375a565b505f190190565b8181035f8312801583831316838312821617156106b0576106b061375a565b5f600160ff1b8201613ad357613ad361375a565b505f0390565b6001600160601b038281168282160390811115610a6157610a6161375a565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613b2a60a083018661387e565b8281036060840152613b3c81866138b7565b91505063ffffffff831660808301529594505050505056fe11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75a26469706673582212203d9e7b3f65c3e080b615c722ec1f1f889a79c4195fd027f22d3f1a10a052aa7964736f6c634300081b0033
2023    /// ```
2024    #[rustfmt::skip]
2025    #[allow(clippy::all)]
2026    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2027        b"a\x01\0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa<\xEE8\x03\x80a<\xEE\x839\x81\x01`@\x81\x90Ra\0/\x91a\0hV[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\xE0R\x91\x83\x16`\x80R\x82\x16`\xA0R\x16`\xC0Ra\0\xC4V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW__\xFD[PV[____`\x80\x85\x87\x03\x12\x15a\0{W__\xFD[\x84Qa\0\x86\x81a\0QV[` \x86\x01Q\x90\x94Pa\0\x97\x81a\0QV[`@\x86\x01Q\x90\x93Pa\0\xA8\x81a\0QV[``\x86\x01Q\x90\x92Pa\0\xB9\x81a\0QV[\x93\x96\x92\x95P\x90\x93PPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa;\xAAa\x01D_9_\x81\x81a\x03\xDA\x01R\x81\x81a\r\xFF\x01R\x81\x81a\x15\xEB\x01R\x81\x81a\x1C\xC5\x01R\x81\x81a\x1D\x81\x01Ra,4\x01R_\x81\x81a\x05\x82\x01R\x81\x81a\x0E\xAD\x01R\x81\x81a\x0F=\x01R\x81\x81a\x16\x99\x01R\x81\x81a\x17\xC8\x01Ra+\xFA\x01R_a\x03\x86\x01R_\x81\x81a\x05\xE2\x01Ra#Q\x01Ra;\xAA_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xF1W_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01\x1BW\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x05\xDDW\x80c\xE0\x86\xAD\xB3\x14a\x06\x04W\x80c\xF2\xBE\x94\xAE\x14a\x06\x17W\x80c\xF8Q\xE1\x98\x14a\x06*W\x80c\xFA(\xC6'\x14a\x06=W__\xFD[\x80c\xC8)LV\x14a\x05jW\x80c\xCA\x8A\xA7\xC7\x14a\x05}W\x80c\xCCZ| \x14a\x05\xA4W\x80c\xD5\xEC\xCC\x05\x14a\x05\xB7W\x80c\xDD\x98F\xB9\x14a\x05\xCAW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04IW\x80c\x9F<\xCFe\x14a\x04\x83W\x80c\xACk\xFB\x03\x14a\x04\x96W\x80c\xAD\xC8\x04\xDA\x14a\x04\xB6W\x80c\xB6\x90Kx\x14a\x04\xF6W\x80c\xBC\x9A@\xC3\x14a\x05\tW\x80c\xBD)\xB8\xCD\x14a\x05\x1CW\x80c\xC4gx\xA5\x14a\x05/W\x80c\xC6\x01R}\x14a\x05WW__\xFD[\x80c^Zgu\x11a\x01\x8DW\x80c^Zgu\x14a\x030W\x80c_\x1F-w\x14a\x03?W\x80ci\x7F\xBD\x93\x14a\x03RW\x80ck:\xA7.\x14a\x03\x81W\x80cl?\xB4\xBF\x14a\x03\xB5W\x80cm\x14\xA9\x87\x14a\x03\xD5W\x80cu\xD4\x17:\x14a\x03\xFCW\x80c|\x17#G\x14a\x04\x0FW\x80c\x81\xC0u\x02\x14a\x04)W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xF5W\x80c\x08s$a\x14a\x02*W\x80c\x1F\x9Bt\xE0\x14a\x02KW\x80c \xB6b\x98\x14a\x02vW\x80c%PGw\x14a\x02\x8BW\x80c,\xD9Y@\x14a\x02\xACW\x80c<\xA5\xA5\xF5\x14a\x02\xCCW\x80cK\xD2n\t\x14a\x02\xEEW\x80cT\x01\xED'\x14a\x03\x1DW[__\xFD[a\x02\x17a\x02\x036`\x04a-qV[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02=a\x0286`\x04a-\x8AV[a\x06PV[`@Qa\x02!\x92\x91\x90a-\xB2V[a\x02^a\x02Y6`\x04a-\xE8V[a\x06\x95V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02!V[a\x02\x89a\x02\x846`\x04a.]V[a\x06\xB7V[\0[a\x02\x9Ea\x02\x996`\x04a/\x18V[a\x08BV[`@Qa\x02!\x92\x91\x90a/\xB2V[a\x02\xBFa\x02\xBA6`\x04a/\xD6V[a\t\xCAV[`@Qa\x02!\x91\x90a01V[a\x02\x17a\x02\xDA6`\x04a-qV[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x17a\x02\xFC6`\x04a/\xD6V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02^a\x03+6`\x04a/\xD6V[a\ngV[a\x02\x17g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x89a\x03M6`\x04a1\x0CV[a\n\x7FV[a\x03ta\x03`6`\x04a-qV[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02!\x91\x90a1\xC8V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qa\x02!\x91\x90a1\xEEV[a\x03\xC8a\x03\xC36`\x04a2gV[a\x0F\xAEV[`@Qa\x02!\x91\x90a39V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x04\n6`\x04a4\x1DV[a\x11\tV[a\x04\x17` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02!V[a\x04<a\x0476`\x04a4\x89V[a\x11\xEFV[`@Qa\x02!\x91\x90a4\xD7V[a\x04na\x04W6`\x04a-qV[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02!V[a\x03\xA8a\x04\x916`\x04a-\x8AV[a\x13\x95V[a\x04\xA9a\x04\xA46`\x04a5\x14V[a\x13\xC9V[`@Qa\x02!\x91\x90a5DV[a\x04\xC9a\x04\xC46`\x04a-\x8AV[a\x14PV[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02!V[a\x04\xA9a\x05\x046`\x04a-\x8AV[a\x14\xC7V[a\x02\x89a\x05\x176`\x04a5RV[a\x15CV[a\x02\x89a\x05*6`\x04a5zV[a\x15dV[a\x02^a\x05=6`\x04a-qV[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x89a\x05e6`\x04a5\xA8V[a\x15\xC7V[a\x02^a\x05x6`\x04a5\xF2V[a\x187V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x05\xB26`\x04a6,V[a\x18\xB3V[a\x02^a\x05\xC56`\x04a-qV[a\x19\xA5V[a\x04na\x05\xD86`\x04a6\x96V[a\x19\xF6V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x06\x126`\x04a6\xC6V[a\x1A\nV[a\x02^a\x06%6`\x04a6\xEEV[a\x1A&V[a\x04\xA9a\x0686`\x04a/\xD6V[a\x1A\xB9V[a\x02^a\x06K6`\x04a6\x96V[a\x1B\x87V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06iW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[_\x82a\x06\xA0\x81a\x1B\xE6V[_a\x06\xAB\x85\x85a\x1C\x18V[P\x92PP[P\x92\x91PPV[a\x06\xBFa\x1C\xC3V[\x84a\x06\xC9\x81a\x1B\xE6V[\x83\x80a\x06\xE8W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x08W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x087W\x85\x85\x82\x81\x81\x10a\x075Wa\x075a7-V[\x90P` \x02\x01` \x81\x01\x90a\x07J\x91\x90a7AV[\x82\x89\x89\x84\x81\x81\x10a\x07]Wa\x07]a7-V[\x90P` \x02\x015\x81T\x81\x10a\x07tWa\x07ta7-V[\x90_R` _ \x01_\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16_Q` a;U_9_Q\x90_R\x83\x8A\x8A\x85\x81\x81\x10a\x07\xC7Wa\x07\xC7a7-V[\x90P` \x02\x015\x81T\x81\x10a\x07\xDEWa\x07\xDEa7-V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x04Wa\x08\x04a7-V[\x90P` \x02\x01` \x81\x01\x90a\x08\x19\x91\x90a7AV[`@Qa\x08'\x92\x91\x90a-\xB2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07\x1BV[PPPPPPPPPV[``\x80a\x08Ma\x1DvV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08fWa\x08fa0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x8FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xABWa\x08\xABa0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xD4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\t\xBCW_\x87\x87\x83\x81\x81\x10a\x08\xF4Wa\x08\xF4a7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t\t\x90P\x81a\x1B\xE6V[__a\t\x15\x83\x8Da\x1C\x18V[\x91P\x91P\x80a\t7W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\tC\x8C\x85\x85a\x1D\xBFV[\x90P\x82\x87\x86\x81Q\x81\x10a\tXWa\tXa7-V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\x82\x84\x82a 8V[\x86\x86\x81Q\x81\x10a\t\x94Wa\t\x94a7-V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\x08\xD9\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\nZW_\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\x02V[PPPP\x90P[\x92\x91PPV[__a\ns\x84\x84a\x1A\xB9V[`@\x01Q\x94\x93PPPPV[a\n\x87a\x1C\xC3V[\x81a\n\x91\x81a\x1B\xE6V[\x81Q\x80a\n\xB1W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE6Wa\n\xE6a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\r\xFBW\x83\x87\x82\x81Q\x81\x10a\x0B/Wa\x0B/a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0BGWa\x0BGa7-V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0BrWa\x0Bra7-V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x87`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x85\x89\x84\x81Q\x81\x10a\x0B\xCAWa\x0B\xCAa7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\xE2Wa\x0B\xE2a7-V[_\x91\x82R` \x90\x91 \x01T`@Qa\x0C\x03\x91`\x01`\x01`\xA0\x1B\x03\x16\x90a1\xEEV[`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16_Q` a;U_9_Q\x90_R\x85\x89\x84\x81Q\x81\x10a\x0C0Wa\x0C0a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0CHWa\x0CHa7-V[_\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x83T\x84\x90a\x0C\x87\x90`\x01\x90a7nV[\x81T\x81\x10a\x0C\x97Wa\x0C\x97a7-V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\x0C\xB2Wa\x0C\xB2a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xCAWa\x0C\xCAa7-V[_\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x83T\x84\x90\x80a\r\x1CWa\r\x1Ca7\x81V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\rB\x90`\x01\x90a7nV[\x81T\x81\x10a\rRWa\rRa7-V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\x80Wa\r\x80a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\r\x98Wa\r\x98a7-V[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x82\x80T\x80a\r\xD3Wa\r\xD3a7\x81V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B\x14V[P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EYW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E}\x91\x90a7\x95V[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x8C\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x0E\xE2\x91`\x04\x01a7\xB0V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xFDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F!\x91\x90a7\xD6V[\x15a\x0F\xA4W`@Qc\xB6k\xD9\x89`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xB6k\xD9\x89\x90a\x0Fv\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a7\xF5V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\x8DW__\xFD[PZ\xF1\x15\x80\x15a\x0F\x9FW=__>=_\xFD[PPPP[PPPPPPPPV[``a\x0F\xB8a\x1DvV[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xD2Wa\x0F\xD2a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xFBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10\x07\x83a\x1B\xE6V[__a\x10\x13\x85\x88a!\xA9V[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x10\xEFW\x82\x81\x81Q\x81\x10a\x106Wa\x106a7-V[` \x02` \x01\x01Qa\x10\x9AW_\x84\x82\x81Q\x81\x10a\x10UWa\x10Ua7-V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\x89Wa\x10\x89a7-V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x10\xD8\x89\x83\x81Q\x81\x10a\x10\xB0Wa\x10\xB0a7-V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x10\xCBWa\x10\xCBa7-V[` \x02` \x01\x01Qa\x1D\xBFV[\x90Pa\x10\xE4\x81\x84a8_V[\x92PP`\x01\x01a\x10\x1BV[Pa\x10\xFA\x86\x82a 8V[P\x92\x93PPPP[\x93\x92PPPV[a\x11\x11a\x1DvV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11AW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11K\x83\x82a%OV[a\x11U\x83\x83a('V[a\x11_\x83_a(\x8FV[PP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\nWa\x12\na0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x123W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\x8CW_\x85\x85\x83\x81\x81\x10a\x12SWa\x12Sa7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12h\x90P\x81a\x1B\xE6V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\x90Wa\x12\x90a7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x12\xC0W`@Qc\xCCdes`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x13\x81W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\x02\x84\x86a7nV[a\x13\x0C\x91\x90a7nV[\x81T\x81\x10a\x13\x1CWa\x13\x1Ca7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13yW`\x01a\x13>\x82\x84a7nV[a\x13H\x91\x90a7nV[\x85\x85\x81Q\x81\x10a\x13ZWa\x13Za7-V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\x81V[`\x01\x01a\x12\xD4V[PPP`\x01\x01a\x128V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x13\xAEW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[a\x13\xD1a-=V[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 \x80T\x83\x90\x81\x10a\x13\xFEWa\x13\xFEa7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x14\x86Wa\x14\x86a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x14\xCFa-=V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 \x80T\x83\x90\x81\x10a\x14\xF2Wa\x14\xF2a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x15Ka\x1C\xC3V[\x81a\x15U\x81a\x1B\xE6V[a\x15_\x83\x83a('V[PPPV[a\x15la\x1DvV[_[\x81\x81\x10\x15a\x15\xC1W_\x83\x83\x83\x81\x81\x10a\x15\x89Wa\x15\x89a7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x15\x9E\x90P\x81a\x1B\xE6V[_a\x15\xAA\x86\x83_a\x1D\xBFV[\x90Pa\x15\xB6\x82\x82a 8V[PPP`\x01\x01a\x15nV[PPPPV[a\x15\xCFa\x1C\xC3V[\x81a\x15\xD9\x81a\x1B\xE6V[a\x15\xE3\x83\x83a%OV[_\x82Q\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16i\x91\x90a7\x95V[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x89\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x16\xCE\x91`\x04\x01a7\xB0V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\r\x91\x90a7\xD6V[\x15a\x180W_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17+Wa\x17+a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17TW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x17\xB0W\x85\x81\x81Q\x81\x10a\x17sWa\x17sa7-V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x17\x90Wa\x17\x90a7-V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17YV[P`@Qc\x02\x87\xF7Q`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cP\xFE\xEA \x90a\x18\x01\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a7\xF5V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x18W__\xFD[PZ\xF1\x15\x80\x15a\x18*W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18]Wa\x18]a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\ns\x81\x85a(\xFCV[a\x18\xBBa\x1DvV[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x18\xEBW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xF5\x84\x82a%OV[a\x18\xFF\x84\x84a('V[a\x19\n\x84`\x01a(\x8FV[a\x19\x14\x84\x83a)sV[PPP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x19\xC5\x91a7nV[\x81T\x81\x10a\x19\xD5Wa\x19\xD5a7-V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A\x02\x84\x84\x84a*$V[\x94\x93PPPPV[a\x1A\x12a\x1C\xC3V[\x81a\x1A\x1C\x81a\x1B\xE6V[a\x15_\x83\x83a)sV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1AVWa\x1AVa7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x1A\xAC\x81\x86a(\xFCV[`@\x01Q\x95\x94PPPPPV[a\x1A\xC1a-=V[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x90 Ta\x1A\xE5a-=V[\x81_\x03a\x1A\xF5W\x91Pa\na\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\x1B`\x01\x84a7nV[\x81T\x81\x10a\x1B+Wa\x1B+a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\na\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xAD\x85\x85\x85a*$V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1B\xC3Wa\x1B\xC3a7-V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x90 Ta\x1C\x15W`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x82\x91\x82\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x83\x81_\x81Q\x81\x10a\x1CPWa\x1CPa7-V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1C|\x87\x84a!\xA9V[\x91P\x91P\x81_\x81Q\x81\x10a\x1C\x92Wa\x1C\x92a7-V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1C\xACWa\x1C\xACa7-V[` \x02` \x01\x01Q\x94P\x94PPPP[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\x1FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DC\x91\x90a7\x95V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1DtW`@Qc\xCE\x98\xC2K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1DtW`@Qc,\x01\xB2\x05`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a\x1E\x83W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1F\xDEV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1E\xA9`\x01\x84a7nV[\x81T\x81\x10a\x1E\xB9Wa\x1E\xB9a7-V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1E\xEFW_\x93PPPPa\x11\x02V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F'W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1F\xDCV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U_\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a .\x82\x85a+\x8BV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a [\x90\x84a7nV[\x81T\x81\x10a kWa ka7-V[\x90_R` _ \x01\x90P\x83_\x03a \x96WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\na\x90PV[\x80T_\x90a \xB4\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xA2V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua!\xA0V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[``\x80_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xC6Wa!\xC6a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a!\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0CWa\"\x0Ca0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"Q\x87`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`\xFF\x88\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R\x94\x95P\x92\x93\x90\x92\x91\x84\x90\x84\x01[\x82\x82\x10\x15a\"\xD1W_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\"\x83V[PPPP\x90P```\x01\x80\x81\x11\x15a\"\xEBWa\"\xEBa1\xB4V[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\x10Wa#\x10a1\xB4V[\x03a#&Wa#\x1F\x89\x89a+\xCFV[\x90Pa#\xC9V[`\xFF\x89\x16_\x90\x81R`\x04` \x81\x90R`@\x91\x82\x90 \x91Qcxps;`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\xF0\xE0\xE6v\x92a#\x85\x92\x8D\x92\x91\x01a8\xF3V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x9FW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra#\xC6\x91\x90\x81\x01\x90a9\x17V[\x90P[_[\x88Q\x81\x10\x15a%?W_[\x84\x81\x10\x15a$\xCFW_\x84\x82\x81Q\x81\x10a#\xF1Wa#\xF1a7-V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\x0EWa$\x0Ea7-V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$'Wa$'a7-V[` \x02` \x01\x01Q\x11\x15a$\xC6Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$^Wa$^a7-V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a$wWa$wa7-V[` \x02` \x01\x01Qa$\x89\x91\x90a:#V[a$\x93\x91\x90a::V[\x88\x84\x81Q\x81\x10a$\xA5Wa$\xA5a7-V[` \x02` \x01\x01\x81\x81Qa$\xB9\x91\x90a:YV[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a#\xD6V[P`\xFF\x8A\x16_\x90\x81R` \x81\x90R`@\x90 T\x86Q`\x01`\x01``\x1B\x03\x90\x91\x16\x90\x87\x90\x83\x90\x81\x10a%\x02Wa%\x02a7-V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%'Wa%'a7-V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a#\xCBV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a%pW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xFF\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%\x92\x83\x83a:xV[\x11\x15a%\xB1W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x180W_[a%\xC7\x82\x84a:xV[\x81\x10\x15a&VW\x84\x82\x81Q\x81\x10a%\xE0Wa%\xE0a7-V[` \x02` \x01\x01Q_\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03_\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x82\x81T\x81\x10a&\x1CWa&\x1Ca7-V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&NW`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a%\xBDV[P_\x84\x82\x81Q\x81\x10a&jWa&ja7-V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a&\x9DW`@QcrW\x12Q`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x85\x16_\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a&\xC2Wa&\xC2a7-V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U_\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'&Wa'&a7-V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U_\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a'\x9CWa'\x9Ca7-V[` \x02` \x01\x01Q_\x01Q`@Qa'\xB4\x91\x90a1\xEEV[`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16_Q` a;U_9_Q\x90_R\x85\x83\x81Q\x81\x10a'\xE0Wa'\xE0a7-V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a'\xFDWa'\xFDa7-V[` \x02` \x01\x01Q` \x01Q`@Qa(\x17\x92\x91\x90a-\xB2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a%\xB3V[`\xFF\x82\x16_\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\xFF\x82\x16_\x90\x81R`\x05` R`@\x90 \x80T\x82\x91\x90`\xFF\x19\x16`\x01\x83\x81\x81\x11\x15a(\xBCWa(\xBCa1\xB4V[\x02\x17\x90UP\x7F|\x11.\x86<\xCF\0xb\xE2\xC9\xE2X\x19\xC93\xFE\xDB\xC95\ndCB;J\x85\x99\xC2\xE8\xA5-\x81`@Qa(\xF0\x91\x90a1\xC8V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a),W`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)RWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a)oW`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\x01`\xFF\x80\x84\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a)\x9AWa)\x9Aa1\xB4V[\x14a)\xB8W`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x06` \x90\x81R`@\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x81\x16c\xFF\xFF\xFF\xFF\x86\x81\x16\x91\x82\x17\x90\x93U\x84Q\x92\x90\x91\x16\x80\x83R\x92\x82\x01R\x90\x91\x7F(\xD75\x8By\xF0-!\xB8\xB7\xE1z\xEF\xC4\x18Zd0\x8A\xA3t\x06\xFA[\xEF\xC0[\x91\x93,9\xC7\x91\x01`@Q\x80\x91\x03\x90\xA1PPPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a*\xC2W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*v`\x01\x84a7nV[\x81T\x81\x10a*\x86Wa*\x86a7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xB0Wa*\xA7`\x01\x82a7nV[\x92PPPa\x11\x02V[\x80a*\xBA\x81a:\x8BV[\x91PPa*BV[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\x02`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a:\xA0V[__\x82\x12\x15a+\xC5Wa+\xB4\x82a:\xBFV[a+\xBE\x90\x84a:\xD9V[\x90Pa\naV[a+\xBE\x82\x84a:YV[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a+\xF5\x90c\xFF\xFF\xFF\xFF\x16Ca:xV[\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c+\xAB,J`@Q\x80`@\x01`@R\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a,\x8EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\xB2\x91\x90a7\x95V[`\x01`\x01`\xA0\x1B\x03\x16\x81R`\xFF\x89\x16` \x91\x82\x01\x81\x90R_\x90\x81R`\x04\x91\x82\x90R`@\x90\x81\x90 \x90Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81Ra,\xFC\x93\x92\x8A\x92\x91\x89\x91\x01a:\xF8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\x16W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!\xA0\x91\x90\x81\x01\x90a9\x17V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x90V[\x805`\xFF\x81\x16\x81\x14a-lW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a-\x81W__\xFD[a\x11\x02\x82a-\\V[__`@\x83\x85\x03\x12\x15a-\x9BW__\xFD[a-\xA4\x83a-\\V[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\x15W__\xFD[__`@\x83\x85\x03\x12\x15a-\xF9W__\xFD[a.\x02\x83a-\\V[\x91P` \x83\x015a.\x12\x81a-\xD4V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a.-W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.CW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1C\xBCW__\xFD[_____``\x86\x88\x03\x12\x15a.qW__\xFD[a.z\x86a-\\V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x94W__\xFD[a.\xA0\x88\x82\x89\x01a.\x1DV[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xBEW__\xFD[a.\xCA\x88\x82\x89\x01a.\x1DV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a.\xEBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x01W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1C\xBCW__\xFD[____``\x85\x87\x03\x12\x15a/+W__\xFD[\x845a/6\x81a-\xD4V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/WW__\xFD[a/c\x87\x82\x88\x01a.\xDBV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a/\xA8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a/\x81V[P\x93\x94\x93PPPPV[`@\x81R_a/\xC4`@\x83\x01\x85a/oV[\x82\x81\x03` \x84\x01Ra!\xA0\x81\x85a/oV[__`@\x83\x85\x03\x12\x15a/\xE7W__\xFD[\x825\x91Pa/\xF7` \x84\x01a-\\V[\x90P\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sWa0]\x83\x85Qa0\0V[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a0JV[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0\xB4Wa0\xB4a0~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0\xE2Wa0\xE2a0~V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a1\x02Wa1\x02a0~V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a1\x1DW__\xFD[a1&\x83a-\\V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1@W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1PW__\xFD[\x805a1ca1^\x82a0\xEAV[a0\xBAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a1\x84W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a1\xA6W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a1\x8BV[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a1\xE8WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[_\x82`\x1F\x83\x01\x12a2\x11W__\xFD[\x815a2\x1Fa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2@W__\xFD[` \x85\x01[\x83\x81\x10\x15a2]W\x805\x83R` \x92\x83\x01\x92\x01a2EV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a2yW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x8EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a2\x9EW__\xFD[\x805a2\xACa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a2\xCDW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xF8W\x835a2\xE7\x81a-\xD4V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xD4V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W__\xFD[a3!\x86\x82\x87\x01a2\x02V[\x92PPa30`@\x85\x01a-\\V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a3RV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a-lW__\xFD[_\x82`\x1F\x83\x01\x12a3\x97W__\xFD[\x815a3\xA5a1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3\xC6W__\xFD[` \x85\x01[\x83\x81\x10\x15a2]W`@\x81\x88\x03\x12\x15a3\xE2W__\xFD[a3\xEAa0\x92V[\x815a3\xF5\x81a-\xD4V[\x81Ra4\x03` \x83\x01a3rV[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa3\xCBV[___``\x84\x86\x03\x12\x15a4/W__\xFD[a48\x84a-\\V[\x92Pa4F` \x85\x01a3rV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4`W__\xFD[a4l\x86\x82\x87\x01a3\x88V[\x91PP\x92P\x92P\x92V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-lW__\xFD[___`@\x84\x86\x03\x12\x15a4\x9BW__\xFD[a4\xA4\x84a4vV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xBEW__\xFD[a4\xCA\x86\x82\x87\x01a.\xDBV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4\xF0V[___``\x84\x86\x03\x12\x15a5&W__\xFD[a5/\x84a-\\V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\na\x82\x84a0\0V[__`@\x83\x85\x03\x12\x15a5cW__\xFD[a5l\x83a-\\V[\x91Pa/\xF7` \x84\x01a3rV[___`@\x84\x86\x03\x12\x15a5\x8CW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xBEW__\xFD[__`@\x83\x85\x03\x12\x15a5\xB9W__\xFD[a5\xC2\x83a-\\V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xDCW__\xFD[a5\xE8\x85\x82\x86\x01a3\x88V[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a6\x04W__\xFD[a6\r\x84a-\\V[\x92Pa6\x1B` \x85\x01a4vV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a6?W__\xFD[a6H\x85a-\\V[\x93Pa6V` \x86\x01a3rV[\x92Pa6d`@\x86\x01a4vV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6~W__\xFD[a6\x8A\x87\x82\x88\x01a3\x88V[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a6\xA8W__\xFD[\x835\x92Pa6\xB8` \x85\x01a-\\V[\x91Pa30`@\x85\x01a4vV[__`@\x83\x85\x03\x12\x15a6\xD7W__\xFD[a6\xE0\x83a-\\V[\x91Pa/\xF7` \x84\x01a4vV[____`\x80\x85\x87\x03\x12\x15a7\x01W__\xFD[a7\n\x85a-\\V[\x93Pa7\x18` \x86\x01a4vV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7QW__\xFD[a\x11\x02\x82a3rV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\naWa\naa7ZV[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xA5W__\xFD[\x81Qa\x11\x02\x81a-\xD4V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\naV[_` \x82\x84\x03\x12\x15a7\xE6W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\x02W__\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`\xFF\x83\x16` \x80\x83\x01\x91\x90\x91R```@\x83\x01\x81\x90R\x83Q\x90\x83\x01\x81\x90R_\x91\x84\x01\x90`\x80\x84\x01\x90\x83[\x81\x81\x10\x15a8RW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a8+V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1B\x7FWa\x1B\x7Fa7ZV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a/\xA8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a8\x90V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a/\xA8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a8\xCCV[`@\x81R_a9\x05`@\x83\x01\x85a8~V[\x82\x81\x03` \x84\x01Ra!\xA0\x81\x85a8\xB7V[_` \x82\x84\x03\x12\x15a9'W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a9<W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9LW__\xFD[\x80Qa9Za1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a9{W__\xFD[` \x84\x01[\x83\x81\x10\x15a:\x18W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a9\x9DW__\xFD[\x85\x01`?\x81\x01\x89\x13a9\xADW__\xFD[` \x81\x01Qa9\xBEa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a9\xE1W__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a:\x03W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a9\xE8V[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa9\x80V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\naWa\naa7ZV[_\x82a:TWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\naWa\naa7ZV[\x80\x82\x01\x80\x82\x11\x15a\naWa\naa7ZV[_\x81a:\x99Wa:\x99a7ZV[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xB0Wa\x06\xB0a7ZV[_`\x01`\xFF\x1B\x82\x01a:\xD3Wa:\xD3a7ZV[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\naWa\naa7ZV[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a;*`\xA0\x83\x01\x86a8~V[\x82\x81\x03``\x84\x01Ra;<\x81\x86a8\xB7V[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\xA2dipfsX\"\x12 =\x9E{?e\xC3\xE0\x80\xB6\x15\xC7\"\xEC\x1F\x1F\x88\x9Ay\xC4\x19_\xD0'\xF2-?\x1A\x10\xA0R\xAAydsolcC\0\x08\x1B\x003",
2028    );
2029    /// The runtime bytecode of the contract, as deployed on the network.
2030    ///
2031    /// ```text
2032    ///0x608060405234801561000f575f5ffd5b50600436106101f1575f3560e01c80639ab4d6ff1161011b578063c8294c56116100b4578063df5cf72311610079578063df5cf723146105dd578063e086adb314610604578063f2be94ae14610617578063f851e1981461062a578063fa28c6271461063d575f5ffd5b8063c8294c561461056a578063ca8aa7c71461057d578063cc5a7c20146105a4578063d5eccc05146105b7578063dd9846b9146105ca575f5ffd5b80639ab4d6ff146104495780639f3ccf6514610483578063ac6bfb0314610496578063adc804da146104b6578063b6904b78146104f6578063bc9a40c314610509578063bd29b8cd1461051c578063c46778a51461052f578063c601527d14610557575f5ffd5b80635e5a67751161018d5780635e5a6775146103305780635f1f2d771461033f578063697fbd93146103525780636b3aa72e146103815780636c3fb4bf146103b55780636d14a987146103d557806375d4173a146103fc5780637c1723471461040f57806381c0750214610429575f5ffd5b80630491b41c146101f5578063087324611461022a5780631f9b74e01461024b57806320b6629814610276578063255047771461028b5780632cd95940146102ac5780633ca5a5f5146102cc5780634bd26e09146102ee5780635401ed271461031d575b5f5ffd5b610217610203366004612d71565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61023d610238366004612d8a565b610650565b604051610221929190612db2565b61025e610259366004612de8565b610695565b6040516001600160601b039091168152602001610221565b610289610284366004612e5d565b6106b7565b005b61029e610299366004612f18565b610842565b604051610221929190612fb2565b6102bf6102ba366004612fd6565b6109ca565b6040516102219190613031565b6102176102da366004612d71565b60ff165f9081526003602052604090205490565b6102176102fc366004612fd6565b5f91825260026020908152604080842060ff93909316845291905290205490565b61025e61032b366004612fd6565b610a67565b610217670de0b6b3a764000081565b61028961034d36600461310c565b610a7f565b610374610360366004612d71565b60056020525f908152604090205460ff1681565b60405161022191906131c8565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b60405161022191906131ee565b6103c86103c3366004613267565b610fae565b6040516102219190613339565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b61028961040a36600461341d565b611109565b610417602081565b60405160ff9091168152602001610221565b61043c610437366004613489565b6111ef565b60405161022191906134d7565b61046e610457366004612d71565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff9091168152602001610221565b6103a8610491366004612d8a565b611395565b6104a96104a4366004613514565b6113c9565b6040516102219190613544565b6104c96104c4366004612d8a565b611450565b6040805182516001600160a01b031681526020928301516001600160601b03169281019290925201610221565b6104a9610504366004612d8a565b6114c7565b610289610517366004613552565b611543565b61028961052a36600461357a565b611564565b61025e61053d366004612d71565b5f602081905290815260409020546001600160601b031681565b6102896105653660046135a8565b6115c7565b61025e6105783660046135f2565b611837565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6102896105b236600461362c565b6118b3565b61025e6105c5366004612d71565b6119a5565b61046e6105d8366004613696565b6119f6565b6103a87f000000000000000000000000000000000000000000000000000000000000000081565b6102896106123660046136c6565b611a0a565b61025e6106253660046136ee565b611a26565b6104a9610638366004612fd6565b611ab9565b61025e61064b366004613696565b611b87565b6003602052815f5260405f208181548110610669575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106a081611be6565b5f6106ab8585611c18565b509250505b5092915050565b6106bf611cc3565b846106c981611be6565b83806106e85760405163796cc52560e01b815260040160405180910390fd5b828114610708576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b82811015610837578585828181106107355761073561372d565b905060200201602081019061074a9190613741565b8289898481811061075d5761075d61372d565b90506020020135815481106107745761077461372d565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff165f516020613b555f395f51905f52838a8a858181106107c7576107c761372d565b90506020020135815481106107de576107de61372d565b5f918252602090912001546001600160a01b03168888858181106108045761080461372d565b90506020020160208101906108199190613741565b604051610827929190612db2565b60405180910390a260010161071b565b505050505050505050565b60608061084d611d76565b5f836001600160401b038111156108665761086661307e565b60405190808252806020026020018201604052801561088f578160200160208202803683370190505b5090505f846001600160401b038111156108ab576108ab61307e565b6040519080825280602002602001820160405280156108d4578160200160208202803683370190505b5090505f5b858110156109bc575f8787838181106108f4576108f461372d565b919091013560f81c9150610909905081611be6565b5f5f610915838d611c18565b91509150806109375760405163207f13e360e11b815260040160405180910390fd5b5f6109438c8585611dbf565b9050828786815181106109585761095861372d565b60200260200101906001600160601b031690816001600160601b0316815250506109828482612038565b8686815181106109945761099461372d565b6001600160601b03909216602092830291909101909101525050600190920191506108d99050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610a5a575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a02565b5050505090505b92915050565b5f5f610a738484611ab9565b60400151949350505050565b610a87611cc3565b81610a9181611be6565b815180610ab15760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610ae657610ae661307e565b604051908082528060200260200182016040528015610b0f578160200160208202803683370190505b5090505f5b84811015610dfb5783878281518110610b2f57610b2f61372d565b602002602001015181548110610b4757610b4761372d565b5f9182526020909120015482516001600160a01b0390911690839083908110610b7257610b7261372d565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610bca57610bca61372d565b602002602001015181548110610be257610be261372d565b5f91825260209091200154604051610c03916001600160a01b0316906131ee565b60405180910390a28760ff165f516020613b555f395f51905f5285898481518110610c3057610c3061372d565b602002602001015181548110610c4857610c4861372d565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610c879060019061376e565b81548110610c9757610c9761372d565b905f5260205f200184888381518110610cb257610cb261372d565b602002602001015181548110610cca57610cca61372d565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d1c57610d1c613781565b5f8281526020812082015f199081019190915501905582548390610d429060019061376e565b81548110610d5257610d5261372d565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610d8057610d8061372d565b602002602001015181548110610d9857610d9861372d565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610dd357610dd3613781565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b14565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7d9190613795565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610ee2916004016137b0565b602060405180830381865afa158015610efd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2191906137d6565b15610fa45760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610f769084908c9087906004016137f5565b5f604051808303815f87803b158015610f8d575f5ffd5b505af1158015610f9f573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060610fb8611d76565b5f84516001600160401b03811115610fd257610fd261307e565b604051908082528060200260200182016040528015610ffb578160200160208202803683370190505b50905061100783611be6565b5f5f61101385886121a9565b90925090505f805b88518110156110ef578281815181106110365761103661372d565b602002602001015161109a575f8482815181106110555761105561372d565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110895761108961372d565b911515602092830291909101909101525b5f6110d88983815181106110b0576110b061372d565b6020026020010151898785815181106110cb576110cb61372d565b6020026020010151611dbf565b90506110e4818461385f565b92505060010161101b565b506110fa8682612038565b509293505050505b9392505050565b611111611d76565b60ff83165f9081526001602052604090205415611141576040516310cda51760e21b815260040160405180910390fd5b61114b838261254f565b6111558383612827565b61115f835f61288f565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b0381111561120a5761120a61307e565b604051908082528060200260200182016040528015611233578160200160208202803683370190505b5090505f5b8381101561138c575f8585838181106112535761125361372d565b919091013560f81c9150611268905081611be6565b60ff81165f908152600160205260408120805463ffffffff8a1692906112905761129061372d565b5f9182526020909120015463ffffffff1611156112c05760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113815760ff83165f90815260016020819052604090912063ffffffff8b1691611302848661376e565b61130c919061376e565b8154811061131c5761131c61372d565b5f9182526020909120015463ffffffff161161137957600161133e828461376e565b611348919061376e565b85858151811061135a5761135a61372d565b602002602001019063ffffffff16908163ffffffff1681525050611381565b6001016112d4565b505050600101611238565b50949350505050565b6004602052815f5260405f2081815481106113ae575f80fd5b5f918252602090912001546001600160a01b03169150829050565b6113d1612d3d565b5f83815260026020908152604080832060ff8816845290915290208054839081106113fe576113fe61372d565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114865761148661372d565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b6114cf612d3d565b60ff83165f9081526001602052604090208054839081106114f2576114f261372d565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b61154b611cc3565b8161155581611be6565b61155f8383612827565b505050565b61156c611d76565b5f5b818110156115c1575f8383838181106115895761158961372d565b919091013560f81c915061159e905081611be6565b5f6115aa86835f611dbf565b90506115b68282612038565b50505060010161156e565b50505050565b6115cf611cc3565b816115d981611be6565b6115e3838361254f565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611645573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116699190613795565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc758916116ce916004016137b0565b602060405180830381865afa1580156116e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170d91906137d6565b15611830575f826001600160401b0381111561172b5761172b61307e565b604051908082528060200260200182016040528015611754578160200160208202803683370190505b5090505f5b838110156117b0578581815181106117735761177361372d565b60200260200101515f01518282815181106117905761179061372d565b6001600160a01b0390921660209283029190910190910152600101611759565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea20906118019085908a9086906004016137f5565b5f604051808303815f87803b158015611818575f5ffd5b505af115801561182a573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f90815260016020526040812080548291908490811061185d5761185d61372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610a7381856128fc565b6118bb611d76565b60ff84165f90815260016020526040902054156118eb576040516310cda51760e21b815260040160405180910390fd5b6118f5848261254f565b6118ff8484612827565b61190a84600161288f565b6119148483612973565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f9081526001602081905260408220805490916119c59161376e565b815481106119d5576119d561372d565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a02848484612a24565b949350505050565b611a12611cc3565b81611a1c81611be6565b61155f8383612973565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611a5657611a5661372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611aac81866128fc565b6040015195945050505050565b611ac1612d3d565b5f83815260026020908152604080832060ff86168452909152902054611ae5612d3d565b815f03611af5579150610a619050565b5f85815260026020908152604080832060ff881684529091529020611b1b60018461376e565b81548110611b2b57611b2b61372d565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610a61915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611bad858585612a24565b63ffffffff1681548110611bc357611bc361372d565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611c1557604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611c5057611c5061372d565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611c7c87846121a9565b91509150815f81518110611c9257611c9261372d565b6020026020010151815f81518110611cac57611cac61372d565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d1f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d439190613795565b6001600160a01b0316336001600160a01b031614611d745760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d7457604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611e83575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055611fde565b5f86815260026020908152604080832060ff891684529091528120611ea960018461376e565b81548110611eb957611eb961372d565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611eef575f9350505050611102565b805463ffffffff438116911603611f27578054600160401b600160a01b031916600160401b6001600160601b03871602178155611fdc565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a261202e8285612b8b565b9695505050505050565b60ff82165f908152600160208190526040822080549183919061205b908461376e565b8154811061206b5761206b61372d565b905f5260205f20019050835f036120965754600160401b90046001600160601b03169150610a619050565b80545f906120b490600160401b90046001600160601b031686612ba2565b825490915063ffffffff4381169116036120ef578154600160401b600160a01b031916600160401b6001600160601b038316021782556121a0565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b038111156121c6576121c661307e565b6040519080825280602002602001820160405280156121ef578160200160208202803683370190505b5090505f84516001600160401b0381111561220c5761220c61307e565b604051908082528060200260200182016040528015612235578160200160208202803683370190505b5090505f6122518760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b828210156122d1575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101612283565b50505050905060606001808111156122eb576122eb6131b4565b60ff808b165f90815260056020526040902054166001811115612310576123106131b4565b036123265761231f8989612bcf565b90506123c9565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e67692612385928d9291016138f3565b5f60405180830381865afa15801561239f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c69190810190613917565b90505b5f5b885181101561253f575f5b848110156124cf575f8482815181106123f1576123f161372d565b602002602001015190505f84848151811061240e5761240e61372d565b602002602001015183815181106124275761242761372d565b602002602001015111156124c657670de0b6b3a764000081602001516001600160601b031685858151811061245e5761245e61372d565b602002602001015184815181106124775761247761372d565b60200260200101516124899190613a23565b6124939190613a3a565b8884815181106124a5576124a561372d565b602002602001018181516124b99190613a59565b6001600160601b03169052505b506001016123d6565b5060ff8a165f9081526020819052604090205486516001600160601b03909116908790839081106125025761250261372d565b60200260200101516001600160601b031610158582815181106125275761252761372d565b911515602092830291909101909101526001016123cb565b5093989297509195505050505050565b5f8151116125705760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f90815260036020908152604090912054906125928383613a78565b11156125b1576040516343714afd60e01b815260040160405180910390fd5b5f5b82811015611830575f5b6125c78284613a78565b811015612656578482815181106125e0576125e061372d565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f20828154811061261c5761261c61372d565b5f918252602090912001546001600160a01b03160361264e57604051637b74340b60e01b815260040160405180910390fd5b6001016125bd565b505f84828151811061266a5761266a61372d565b6020026020010151602001516001600160601b03161161269d57604051637257125160e01b815260040160405180910390fd5b60ff85165f90815260036020526040902084518590839081106126c2576126c261372d565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127265761272661372d565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061279c5761279c61372d565b60200260200101515f01516040516127b491906131ee565b60405180910390a28460ff165f516020613b555f395f51905f528583815181106127e0576127e061372d565b60200260200101515f01518684815181106127fd576127fd61372d565b602002602001015160200151604051612817929190612db2565b60405180910390a26001016125b3565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff1916600183818111156128bc576128bc6131b4565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516128f091906131c8565b60405180910390a15050565b815f015163ffffffff168163ffffffff16101561292c57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff1615806129525750816020015163ffffffff168163ffffffff16105b61296f57604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f9081526005602052604090205416600181111561299a5761299a6131b4565b146129b85760405163a3be258360e01b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612ac2575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612a7660018461376e565b81548110612a8657612a8661372d565b5f9182526020909120015463ffffffff1611612ab057612aa760018261376e565b92505050611102565b80612aba81613a8b565b915050612a42565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f6111026001600160601b03808516908416613aa0565b5f5f821215612bc557612bb482613abf565b612bbe9084613ad9565b9050610a61565b612bbe8284613a59565b60ff82165f9081526006602052604081205460609190612bf59063ffffffff1643613a78565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cb29190613795565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612cfc93928a9291899101613af8565b5f60405180830381865afa158015612d16573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121a09190810190613917565b604080516060810182525f808252602082018190529181019190915290565b803560ff81168114612d6c575f5ffd5b919050565b5f60208284031215612d81575f5ffd5b61110282612d5c565b5f5f60408385031215612d9b575f5ffd5b612da483612d5c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611c15575f5ffd5b5f5f60408385031215612df9575f5ffd5b612e0283612d5c565b91506020830135612e1281612dd4565b809150509250929050565b5f5f83601f840112612e2d575f5ffd5b5081356001600160401b03811115612e43575f5ffd5b6020830191508360208260051b8501011115611cbc575f5ffd5b5f5f5f5f5f60608688031215612e71575f5ffd5b612e7a86612d5c565b945060208601356001600160401b03811115612e94575f5ffd5b612ea088828901612e1d565b90955093505060408601356001600160401b03811115612ebe575f5ffd5b612eca88828901612e1d565b969995985093965092949392505050565b5f5f83601f840112612eeb575f5ffd5b5081356001600160401b03811115612f01575f5ffd5b602083019150836020828501011115611cbc575f5ffd5b5f5f5f5f60608587031215612f2b575f5ffd5b8435612f3681612dd4565b93506020850135925060408501356001600160401b03811115612f57575f5ffd5b612f6387828801612edb565b95989497509550505050565b5f8151808452602084019350602083015f5b82811015612fa85781516001600160601b0316865260209586019590910190600101612f81565b5093949350505050565b604081525f612fc46040830185612f6f565b82810360208401526121a08185612f6f565b5f5f60408385031215612fe7575f5ffd5b82359150612ff760208401612d5c565b90509250929050565b63ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b602080825282518282018190525f918401906040840190835b818110156130735761305d838551613000565b602093909301926060929092019160010161304a565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156130b4576130b461307e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156130e2576130e261307e565b604052919050565b5f6001600160401b038211156131025761310261307e565b5060051b60200190565b5f5f6040838503121561311d575f5ffd5b61312683612d5c565b915060208301356001600160401b03811115613140575f5ffd5b8301601f81018513613150575f5ffd5b803561316361315e826130ea565b6130ba565b8082825260208201915060208360051b850101925087831115613184575f5ffd5b6020840193505b828410156131a657833582526020938401939091019061318b565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600283106131e857634e487b7160e01b5f52602160045260245ffd5b91905290565b6001600160a01b0391909116815260200190565b5f82601f830112613211575f5ffd5b813561321f61315e826130ea565b8082825260208201915060208360051b860101925085831115613240575f5ffd5b602085015b8381101561325d578035835260209283019201613245565b5095945050505050565b5f5f5f60608486031215613279575f5ffd5b83356001600160401b0381111561328e575f5ffd5b8401601f8101861361329e575f5ffd5b80356132ac61315e826130ea565b8082825260208201915060208360051b8501019250888311156132cd575f5ffd5b6020840193505b828410156132f85783356132e781612dd4565b8252602093840193909101906132d4565b955050505060208401356001600160401b03811115613315575f5ffd5b61332186828701613202565b92505061333060408501612d5c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156130735783511515835260209384019390920191600101613352565b80356001600160601b0381168114612d6c575f5ffd5b5f82601f830112613397575f5ffd5b81356133a561315e826130ea565b8082825260208201915060208360061b8601019250858311156133c6575f5ffd5b602085015b8381101561325d57604081880312156133e2575f5ffd5b6133ea613092565b81356133f581612dd4565b815261340360208301613372565b6020820152808452506020830192506040810190506133cb565b5f5f5f6060848603121561342f575f5ffd5b61343884612d5c565b925061344660208501613372565b915060408401356001600160401b03811115613460575f5ffd5b61346c86828701613388565b9150509250925092565b803563ffffffff81168114612d6c575f5ffd5b5f5f5f6040848603121561349b575f5ffd5b6134a484613476565b925060208401356001600160401b038111156134be575f5ffd5b6134ca86828701612edb565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b8181101561307357835163ffffffff168352602093840193909201916001016134f0565b5f5f5f60608486031215613526575f5ffd5b61352f84612d5c565b95602085013595506040909401359392505050565b60608101610a618284613000565b5f5f60408385031215613563575f5ffd5b61356c83612d5c565b9150612ff760208401613372565b5f5f5f6040848603121561358c575f5ffd5b8335925060208401356001600160401b038111156134be575f5ffd5b5f5f604083850312156135b9575f5ffd5b6135c283612d5c565b915060208301356001600160401b038111156135dc575f5ffd5b6135e885828601613388565b9150509250929050565b5f5f5f60608486031215613604575f5ffd5b61360d84612d5c565b925061361b60208501613476565b929592945050506040919091013590565b5f5f5f5f6080858703121561363f575f5ffd5b61364885612d5c565b935061365660208601613372565b925061366460408601613476565b915060608501356001600160401b0381111561367e575f5ffd5b61368a87828801613388565b91505092959194509250565b5f5f5f606084860312156136a8575f5ffd5b833592506136b860208501612d5c565b915061333060408501613476565b5f5f604083850312156136d7575f5ffd5b6136e083612d5c565b9150612ff760208401613476565b5f5f5f5f60808587031215613701575f5ffd5b61370a85612d5c565b935061371860208601613476565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613751575f5ffd5b61110282613372565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a6157610a6161375a565b634e487b7160e01b5f52603160045260245ffd5b5f602082840312156137a5575f5ffd5b815161110281612dd4565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610a61565b5f602082840312156137e6575f5ffd5b81518015158114611102575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156138525783516001600160a01b031683526020938401939092019160010161382b565b5090979650505050505050565b8082018281125f831280158216821582161715611b7f57611b7f61375a565b5f8151808452602084019350602083015f5b82811015612fa85781516001600160a01b0316865260209586019590910190600101613890565b5f8154808452602084019350825f5260205f205f5b82811015612fa85781546001600160a01b03168652602090950194600191820191016138cc565b604081525f613905604083018561387e565b82810360208401526121a081856138b7565b5f60208284031215613927575f5ffd5b81516001600160401b0381111561393c575f5ffd5b8201601f8101841361394c575f5ffd5b805161395a61315e826130ea565b8082825260208201915060208360051b85010192508683111561397b575f5ffd5b602084015b83811015613a185780516001600160401b0381111561399d575f5ffd5b8501603f810189136139ad575f5ffd5b60208101516139be61315e826130ea565b808282526020820191506020808460051b8601010192508b8311156139e1575f5ffd5b6040840193505b82841015613a035783518252602093840193909101906139e8565b86525050602093840193919091019050613980565b509695505050505050565b8082028115828204841417610a6157610a6161375a565b5f82613a5457634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610a6157610a6161375a565b80820180821115610a6157610a6161375a565b5f81613a9957613a9961375a565b505f190190565b8181035f8312801583831316838312821617156106b0576106b061375a565b5f600160ff1b8201613ad357613ad361375a565b505f0390565b6001600160601b038281168282160390811115610a6157610a6161375a565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613b2a60a083018661387e565b8281036060840152613b3c81866138b7565b91505063ffffffff831660808301529594505050505056fe11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75a26469706673582212203d9e7b3f65c3e080b615c722ec1f1f889a79c4195fd027f22d3f1a10a052aa7964736f6c634300081b0033
2033    /// ```
2034    #[rustfmt::skip]
2035    #[allow(clippy::all)]
2036    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2037        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x01\xF1W_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01\x1BW\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x05\xDDW\x80c\xE0\x86\xAD\xB3\x14a\x06\x04W\x80c\xF2\xBE\x94\xAE\x14a\x06\x17W\x80c\xF8Q\xE1\x98\x14a\x06*W\x80c\xFA(\xC6'\x14a\x06=W__\xFD[\x80c\xC8)LV\x14a\x05jW\x80c\xCA\x8A\xA7\xC7\x14a\x05}W\x80c\xCCZ| \x14a\x05\xA4W\x80c\xD5\xEC\xCC\x05\x14a\x05\xB7W\x80c\xDD\x98F\xB9\x14a\x05\xCAW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04IW\x80c\x9F<\xCFe\x14a\x04\x83W\x80c\xACk\xFB\x03\x14a\x04\x96W\x80c\xAD\xC8\x04\xDA\x14a\x04\xB6W\x80c\xB6\x90Kx\x14a\x04\xF6W\x80c\xBC\x9A@\xC3\x14a\x05\tW\x80c\xBD)\xB8\xCD\x14a\x05\x1CW\x80c\xC4gx\xA5\x14a\x05/W\x80c\xC6\x01R}\x14a\x05WW__\xFD[\x80c^Zgu\x11a\x01\x8DW\x80c^Zgu\x14a\x030W\x80c_\x1F-w\x14a\x03?W\x80ci\x7F\xBD\x93\x14a\x03RW\x80ck:\xA7.\x14a\x03\x81W\x80cl?\xB4\xBF\x14a\x03\xB5W\x80cm\x14\xA9\x87\x14a\x03\xD5W\x80cu\xD4\x17:\x14a\x03\xFCW\x80c|\x17#G\x14a\x04\x0FW\x80c\x81\xC0u\x02\x14a\x04)W__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x01\xF5W\x80c\x08s$a\x14a\x02*W\x80c\x1F\x9Bt\xE0\x14a\x02KW\x80c \xB6b\x98\x14a\x02vW\x80c%PGw\x14a\x02\x8BW\x80c,\xD9Y@\x14a\x02\xACW\x80c<\xA5\xA5\xF5\x14a\x02\xCCW\x80cK\xD2n\t\x14a\x02\xEEW\x80cT\x01\xED'\x14a\x03\x1DW[__\xFD[a\x02\x17a\x02\x036`\x04a-qV[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02=a\x0286`\x04a-\x8AV[a\x06PV[`@Qa\x02!\x92\x91\x90a-\xB2V[a\x02^a\x02Y6`\x04a-\xE8V[a\x06\x95V[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02!V[a\x02\x89a\x02\x846`\x04a.]V[a\x06\xB7V[\0[a\x02\x9Ea\x02\x996`\x04a/\x18V[a\x08BV[`@Qa\x02!\x92\x91\x90a/\xB2V[a\x02\xBFa\x02\xBA6`\x04a/\xD6V[a\t\xCAV[`@Qa\x02!\x91\x90a01V[a\x02\x17a\x02\xDA6`\x04a-qV[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02\x17a\x02\xFC6`\x04a/\xD6V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02^a\x03+6`\x04a/\xD6V[a\ngV[a\x02\x17g\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\x89a\x03M6`\x04a1\x0CV[a\n\x7FV[a\x03ta\x03`6`\x04a-qV[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02!\x91\x90a1\xC8V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qa\x02!\x91\x90a1\xEEV[a\x03\xC8a\x03\xC36`\x04a2gV[a\x0F\xAEV[`@Qa\x02!\x91\x90a39V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x04\n6`\x04a4\x1DV[a\x11\tV[a\x04\x17` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02!V[a\x04<a\x0476`\x04a4\x89V[a\x11\xEFV[`@Qa\x02!\x91\x90a4\xD7V[a\x04na\x04W6`\x04a-qV[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02!V[a\x03\xA8a\x04\x916`\x04a-\x8AV[a\x13\x95V[a\x04\xA9a\x04\xA46`\x04a5\x14V[a\x13\xC9V[`@Qa\x02!\x91\x90a5DV[a\x04\xC9a\x04\xC46`\x04a-\x8AV[a\x14PV[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02!V[a\x04\xA9a\x05\x046`\x04a-\x8AV[a\x14\xC7V[a\x02\x89a\x05\x176`\x04a5RV[a\x15CV[a\x02\x89a\x05*6`\x04a5zV[a\x15dV[a\x02^a\x05=6`\x04a-qV[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\x89a\x05e6`\x04a5\xA8V[a\x15\xC7V[a\x02^a\x05x6`\x04a5\xF2V[a\x187V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x05\xB26`\x04a6,V[a\x18\xB3V[a\x02^a\x05\xC56`\x04a-qV[a\x19\xA5V[a\x04na\x05\xD86`\x04a6\x96V[a\x19\xF6V[a\x03\xA8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02\x89a\x06\x126`\x04a6\xC6V[a\x1A\nV[a\x02^a\x06%6`\x04a6\xEEV[a\x1A&V[a\x04\xA9a\x0686`\x04a/\xD6V[a\x1A\xB9V[a\x02^a\x06K6`\x04a6\x96V[a\x1B\x87V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06iW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x92P`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90P\x82V[_\x82a\x06\xA0\x81a\x1B\xE6V[_a\x06\xAB\x85\x85a\x1C\x18V[P\x92PP[P\x92\x91PPV[a\x06\xBFa\x1C\xC3V[\x84a\x06\xC9\x81a\x1B\xE6V[\x83\x80a\x06\xE8W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07\x08W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x87\x16_\x90\x81R`\x03` R`@\x81 \x90[\x82\x81\x10\x15a\x087W\x85\x85\x82\x81\x81\x10a\x075Wa\x075a7-V[\x90P` \x02\x01` \x81\x01\x90a\x07J\x91\x90a7AV[\x82\x89\x89\x84\x81\x81\x10a\x07]Wa\x07]a7-V[\x90P` \x02\x015\x81T\x81\x10a\x07tWa\x07ta7-V[\x90_R` _ \x01_\x01`\x14a\x01\0\n\x81T\x81`\x01`\x01``\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01``\x1B\x03\x16\x02\x17\x90UP\x88`\xFF\x16_Q` a;U_9_Q\x90_R\x83\x8A\x8A\x85\x81\x81\x10a\x07\xC7Wa\x07\xC7a7-V[\x90P` \x02\x015\x81T\x81\x10a\x07\xDEWa\x07\xDEa7-V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08\x04Wa\x08\x04a7-V[\x90P` \x02\x01` \x81\x01\x90a\x08\x19\x91\x90a7AV[`@Qa\x08'\x92\x91\x90a-\xB2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07\x1BV[PPPPPPPPPV[``\x80a\x08Ma\x1DvV[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08fWa\x08fa0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\x8FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xABWa\x08\xABa0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xD4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\t\xBCW_\x87\x87\x83\x81\x81\x10a\x08\xF4Wa\x08\xF4a7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\t\t\x90P\x81a\x1B\xE6V[__a\t\x15\x83\x8Da\x1C\x18V[\x91P\x91P\x80a\t7W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\tC\x8C\x85\x85a\x1D\xBFV[\x90P\x82\x87\x86\x81Q\x81\x10a\tXWa\tXa7-V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\x82\x84\x82a 8V[\x86\x86\x81Q\x81\x10a\t\x94Wa\t\x94a7-V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\x08\xD9\x90PV[P\x90\x97\x90\x96P\x94PPPPPV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x85\x16\x84R\x82R\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R``\x94\x92\x93\x91\x92\x90\x91\x84\x01[\x82\x82\x10\x15a\nZW_\x84\x81R` \x90\x81\x90 `@\x80Q``\x81\x01\x82R\x91\x85\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x83\x85\x01R`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x90\x82\x01R\x82R`\x01\x90\x92\x01\x91\x01a\n\x02V[PPPP\x90P[\x92\x91PPV[__a\ns\x84\x84a\x1A\xB9V[`@\x01Q\x94\x93PPPPV[a\n\x87a\x1C\xC3V[\x81a\n\x91\x81a\x1B\xE6V[\x81Q\x80a\n\xB1W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x84\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 `\x04\x90\x92R\x82 \x90\x91\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\n\xE6Wa\n\xE6a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0B\x0FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\r\xFBW\x83\x87\x82\x81Q\x81\x10a\x0B/Wa\x0B/a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0BGWa\x0BGa7-V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0BrWa\x0Bra7-V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP\x87`\xFF\x16\x7F1\xFA.,\xD2\x80\xC97^\x13\xFF\xCF=\x81\xE27\x81\0\x18n@X\xF8\xD3\xDD\xB6\x90\xB8-\xCD1\xF7\x85\x89\x84\x81Q\x81\x10a\x0B\xCAWa\x0B\xCAa7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\xE2Wa\x0B\xE2a7-V[_\x91\x82R` \x90\x91 \x01T`@Qa\x0C\x03\x91`\x01`\x01`\xA0\x1B\x03\x16\x90a1\xEEV[`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16_Q` a;U_9_Q\x90_R\x85\x89\x84\x81Q\x81\x10a\x0C0Wa\x0C0a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0CHWa\x0CHa7-V[_\x91\x82R` \x80\x83 \x91\x90\x91\x01T`@\x80Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x82R\x91\x81\x01\x92\x90\x92R\x01`@Q\x80\x91\x03\x90\xA2\x83T\x84\x90a\x0C\x87\x90`\x01\x90a7nV[\x81T\x81\x10a\x0C\x97Wa\x0C\x97a7-V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\x0C\xB2Wa\x0C\xB2a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xCAWa\x0C\xCAa7-V[_\x91\x82R` \x90\x91 \x82T\x91\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x82\x17\x81U\x91T`\x01`\x01``\x1B\x03`\x01`\xA0\x1B\x91\x82\x90\x04\x16\x02\x17\x90U\x83T\x84\x90\x80a\r\x1CWa\r\x1Ca7\x81V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\rB\x90`\x01\x90a7nV[\x81T\x81\x10a\rRWa\rRa7-V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\x80Wa\r\x80a7-V[` \x02` \x01\x01Q\x81T\x81\x10a\r\x98Wa\r\x98a7-V[\x90_R` _ \x01_a\x01\0\n\x81T\x81`\x01`\x01`\xA0\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`\xA0\x1B\x03\x16\x02\x17\x90UP\x82\x80T\x80a\r\xD3Wa\r\xD3a7\x81V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B\x14V[P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0EYW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E}\x91\x90a7\x95V[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x8C\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x0E\xE2\x91`\x04\x01a7\xB0V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xFDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F!\x91\x90a7\xD6V[\x15a\x0F\xA4W`@Qc\xB6k\xD9\x89`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\xB6k\xD9\x89\x90a\x0Fv\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a7\xF5V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\x8DW__\xFD[PZ\xF1\x15\x80\x15a\x0F\x9FW=__>=_\xFD[PPPP[PPPPPPPPV[``a\x0F\xB8a\x1DvV[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x0F\xD2Wa\x0F\xD2a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\xFBW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10\x07\x83a\x1B\xE6V[__a\x10\x13\x85\x88a!\xA9V[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x10\xEFW\x82\x81\x81Q\x81\x10a\x106Wa\x106a7-V[` \x02` \x01\x01Qa\x10\x9AW_\x84\x82\x81Q\x81\x10a\x10UWa\x10Ua7-V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\x89Wa\x10\x89a7-V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x10\xD8\x89\x83\x81Q\x81\x10a\x10\xB0Wa\x10\xB0a7-V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x10\xCBWa\x10\xCBa7-V[` \x02` \x01\x01Qa\x1D\xBFV[\x90Pa\x10\xE4\x81\x84a8_V[\x92PP`\x01\x01a\x10\x1BV[Pa\x10\xFA\x86\x82a 8V[P\x92\x93PPPP[\x93\x92PPPV[a\x11\x11a\x1DvV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11AW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11K\x83\x82a%OV[a\x11U\x83\x83a('V[a\x11_\x83_a(\x8FV[PP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[``_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\nWa\x12\na0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x123W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\x8CW_\x85\x85\x83\x81\x81\x10a\x12SWa\x12Sa7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12h\x90P\x81a\x1B\xE6V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\x90Wa\x12\x90a7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x12\xC0W`@Qc\xCCdes`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 T\x90[\x81\x81\x10\x15a\x13\x81W`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\x02\x84\x86a7nV[a\x13\x0C\x91\x90a7nV[\x81T\x81\x10a\x13\x1CWa\x13\x1Ca7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13yW`\x01a\x13>\x82\x84a7nV[a\x13H\x91\x90a7nV[\x85\x85\x81Q\x81\x10a\x13ZWa\x13Za7-V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\x81V[`\x01\x01a\x12\xD4V[PPP`\x01\x01a\x128V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x13\xAEW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[a\x13\xD1a-=V[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 \x80T\x83\x90\x81\x10a\x13\xFEWa\x13\xFEa7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\xFF\x83\x16_\x90\x81R`\x03` R`@\x90 \x80T\x83\x90\x81\x10a\x14\x86Wa\x14\x86a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q\x80\x82\x01\x90\x91R\x91\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x14\xCFa-=V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 \x80T\x83\x90\x81\x10a\x14\xF2Wa\x14\xF2a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x92\x90\x91\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x84R`\x01` \x1B\x82\x04\x16\x93\x83\x01\x93\x90\x93R`\x01`@\x1B\x90\x92\x04`\x01`\x01``\x1B\x03\x16\x91\x81\x01\x91\x90\x91R\x93\x92PPPV[a\x15Ka\x1C\xC3V[\x81a\x15U\x81a\x1B\xE6V[a\x15_\x83\x83a('V[PPPV[a\x15la\x1DvV[_[\x81\x81\x10\x15a\x15\xC1W_\x83\x83\x83\x81\x81\x10a\x15\x89Wa\x15\x89a7-V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x15\x9E\x90P\x81a\x1B\xE6V[_a\x15\xAA\x86\x83_a\x1D\xBFV[\x90Pa\x15\xB6\x82\x82a 8V[PPP`\x01\x01a\x15nV[PPPPV[a\x15\xCFa\x1C\xC3V[\x81a\x15\xD9\x81a\x1B\xE6V[a\x15\xE3\x83\x83a%OV[_\x82Q\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16i\x91\x90a7\x95V[`@\x80Q\x80\x82\x01\x82R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16\x82R`\xFF\x89\x16` \x83\x01R\x91Qc\x04\xC1\xB8\xEB`\xE3\x1B\x81R\x92\x93P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x91c&\r\xC7X\x91a\x16\xCE\x91`\x04\x01a7\xB0V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\xE9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\r\x91\x90a7\xD6V[\x15a\x180W_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17+Wa\x17+a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17TW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x17\xB0W\x85\x81\x81Q\x81\x10a\x17sWa\x17sa7-V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x17\x90Wa\x17\x90a7-V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17YV[P`@Qc\x02\x87\xF7Q`\xE5\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cP\xFE\xEA \x90a\x18\x01\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a7\xF5V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x18W__\xFD[PZ\xF1\x15\x80\x15a\x18*W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18]Wa\x18]a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\ns\x81\x85a(\xFCV[a\x18\xBBa\x1DvV[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x18\xEBW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xF5\x84\x82a%OV[a\x18\xFF\x84\x84a('V[a\x19\n\x84`\x01a(\x8FV[a\x19\x14\x84\x83a)sV[PPP`\xFF\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x87\x81R\x93\x82\x01\x87\x81R\x83T\x96\x87\x01\x84U\x92\x87R\x93\x90\x95 \x94Q\x94\x90\x93\x01\x80T\x91Q\x93Q`\x01`\x01``\x1B\x03\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x94\x84\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x93\x16\x95\x90\x93\x16\x94\x90\x94\x17\x17\x91\x90\x91\x16\x17\x90UV[`\xFF\x81\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x90\x91a\x19\xC5\x91a7nV[\x81T\x81\x10a\x19\xD5Wa\x19\xD5a7-V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A\x02\x84\x84\x84a*$V[\x94\x93PPPPV[a\x1A\x12a\x1C\xC3V[\x81a\x1A\x1C\x81a\x1B\xE6V[a\x15_\x83\x83a)sV[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1AVWa\x1AVa7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x90Pa\x1A\xAC\x81\x86a(\xFCV[`@\x01Q\x95\x94PPPPPV[a\x1A\xC1a-=V[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x90 Ta\x1A\xE5a-=V[\x81_\x03a\x1A\xF5W\x91Pa\na\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\x1B`\x01\x84a7nV[\x81T\x81\x10a\x1B+Wa\x1B+a7-V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tc\xFF\xFF\xFF\xFF\x80\x82\x16\x83R`\x01` \x1B\x82\x04\x16\x93\x82\x01\x93\x90\x93R`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x93\x04\x92\x90\x92\x16\x90\x82\x01R\x92Pa\na\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1B\xAD\x85\x85\x85a*$V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1B\xC3Wa\x1B\xC3a7-V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x94\x93PPPPV[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x90 Ta\x1C\x15W`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x82\x91\x82\x91` \x80\x83\x01\x90\x806\x837\x01\x90PP\x90P\x83\x81_\x81Q\x81\x10a\x1CPWa\x1CPa7-V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1C|\x87\x84a!\xA9V[\x91P\x91P\x81_\x81Q\x81\x10a\x1C\x92Wa\x1C\x92a7-V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1C\xACWa\x1C\xACa7-V[` \x02` \x01\x01Q\x94P\x94PPPP[\x92P\x92\x90PV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D\x1FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DC\x91\x90a7\x95V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1DtW`@Qc\xCE\x98\xC2K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x1DtW`@Qc,\x01\xB2\x05`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x81\x90\x80\x82\x03a\x1E\x83W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83Rc\xFF\xFF\xFF\xFFC\x81\x16\x82R\x81\x85\x01\x86\x81R`\x01`\x01``\x1B\x03\x80\x8C\x16\x95\x84\x01\x95\x86R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x93Q\x90\x94\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x93\x83\x16`\x01` \x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x96\x16\x91\x90\x92\x16\x17\x93\x90\x93\x17\x16\x91\x90\x91\x17\x90Ua\x1F\xDEV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1E\xA9`\x01\x84a7nV[\x81T\x81\x10a\x1E\xB9Wa\x1E\xB9a7-V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1E\xEFW_\x93PPPPa\x11\x02V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F'W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua\x1F\xDCV[\x80Tg\xFF\xFF\xFF\xFF\0\0\0\0\x19\x16`\x01` \x1BCc\xFF\xFF\xFF\xFF\x90\x81\x16\x82\x81\x02\x93\x90\x93\x17\x84U_\x8A\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x8D\x16\x84R\x82R\x80\x83 \x81Q``\x81\x01\x83R\x96\x87R\x86\x83\x01\x84\x81R`\x01`\x01``\x1B\x03\x8D\x81\x16\x93\x89\x01\x93\x84R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x96Q\x96\x01\x80T\x93Q\x91Q\x96\x85\x16g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x93\x90\x93\x17\x93\x16\x90\x93\x02\x91\x90\x91\x17`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B\x93\x90\x92\x16\x92\x90\x92\x02\x17\x90U[P[`@\x80Q`\xFF\x87\x16\x81R`\x01`\x01``\x1B\x03\x86\x16` \x82\x01R\x87\x91\x7F/R}R~\x95\xD8\xFE@\xAE\xC5Swt;\xB7y\x08}\xA3\xF6\xD0\xD0\x8F\x12\xE3dD\xDAb2}\x91\x01`@Q\x80\x91\x03\x90\xA2a .\x82\x85a+\x8BV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a [\x90\x84a7nV[\x81T\x81\x10a kWa ka7-V[\x90_R` _ \x01\x90P\x83_\x03a \x96WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\na\x90PV[\x80T_\x90a \xB4\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a+\xA2V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a \xEFW\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua!\xA0V[\x81Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01` \x1B\x81\x81\x02g\xFF\xFF\xFF\xFF\0\0\0\0\x19\x90\x94\x16\x93\x90\x93\x17\x85U`\xFF\x89\x16_\x90\x81R`\x01` \x81\x81R`@\x80\x84 \x81Q``\x81\x01\x83R\x95\x86R\x85\x83\x01\x85\x81R`\x01`\x01``\x1B\x03\x80\x8B\x16\x93\x88\x01\x93\x84R\x82T\x95\x86\x01\x83U\x91\x86R\x92\x90\x94 \x94Q\x94\x90\x92\x01\x80T\x91Q\x92Q\x90\x93\x16`\x01`@\x1B\x02`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x92\x86\x16\x90\x96\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x93\x90\x94\x16\x92\x90\x92\x17\x92\x90\x92\x17\x16\x91\x90\x91\x17\x90U[\x95\x94PPPPPV[``\x80_\x83Q`\x01`\x01`@\x1B\x03\x81\x11\x15a!\xC6Wa!\xC6a0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a!\xEFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\x0CWa\"\x0Ca0~V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"5W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"Q\x87`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[`\xFF\x88\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x82Q\x81\x85\x02\x81\x01\x85\x01\x90\x93R\x80\x83R\x94\x95P\x92\x93\x90\x92\x91\x84\x90\x84\x01[\x82\x82\x10\x15a\"\xD1W_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x90\x91R\x90\x84\x01T`\x01`\x01`\xA0\x1B\x03\x81\x16\x82R`\x01`\xA0\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x81\x83\x01R\x82R`\x01\x90\x92\x01\x91\x01a\"\x83V[PPPP\x90P```\x01\x80\x81\x11\x15a\"\xEBWa\"\xEBa1\xB4V[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\x10Wa#\x10a1\xB4V[\x03a#&Wa#\x1F\x89\x89a+\xCFV[\x90Pa#\xC9V[`\xFF\x89\x16_\x90\x81R`\x04` \x81\x90R`@\x91\x82\x90 \x91Qcxps;`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x92c\xF0\xE0\xE6v\x92a#\x85\x92\x8D\x92\x91\x01a8\xF3V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a#\x9FW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra#\xC6\x91\x90\x81\x01\x90a9\x17V[\x90P[_[\x88Q\x81\x10\x15a%?W_[\x84\x81\x10\x15a$\xCFW_\x84\x82\x81Q\x81\x10a#\xF1Wa#\xF1a7-V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\x0EWa$\x0Ea7-V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$'Wa$'a7-V[` \x02` \x01\x01Q\x11\x15a$\xC6Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$^Wa$^a7-V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a$wWa$wa7-V[` \x02` \x01\x01Qa$\x89\x91\x90a:#V[a$\x93\x91\x90a::V[\x88\x84\x81Q\x81\x10a$\xA5Wa$\xA5a7-V[` \x02` \x01\x01\x81\x81Qa$\xB9\x91\x90a:YV[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a#\xD6V[P`\xFF\x8A\x16_\x90\x81R` \x81\x90R`@\x90 T\x86Q`\x01`\x01``\x1B\x03\x90\x91\x16\x90\x87\x90\x83\x90\x81\x10a%\x02Wa%\x02a7-V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%'Wa%'a7-V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a#\xCBV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a%pW`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q`\xFF\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 T\x90a%\x92\x83\x83a:xV[\x11\x15a%\xB1W`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x180W_[a%\xC7\x82\x84a:xV[\x81\x10\x15a&VW\x84\x82\x81Q\x81\x10a%\xE0Wa%\xE0a7-V[` \x02` \x01\x01Q_\x01Q`\x01`\x01`\xA0\x1B\x03\x16`\x03_\x88`\xFF\x16`\xFF\x16\x81R` \x01\x90\x81R` \x01_ \x82\x81T\x81\x10a&\x1CWa&\x1Ca7-V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&NW`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a%\xBDV[P_\x84\x82\x81Q\x81\x10a&jWa&ja7-V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a&\x9DW`@QcrW\x12Q`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x85\x16_\x90\x81R`\x03` R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a&\xC2Wa&\xC2a7-V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x01\x84U_\x93\x84R\x82\x84 \x82Q\x92\x84\x01Q`\x01`\x01``\x1B\x03\x16`\x01`\xA0\x1B\x02`\x01`\x01`\xA0\x1B\x03\x90\x93\x16\x92\x90\x92\x17\x91\x01U`\xFF\x87\x16\x82R`\x04\x90R`@\x90 \x84Q\x85\x90\x83\x90\x81\x10a'&Wa'&a7-V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ\x82T`\x01\x81\x01\x84U_\x93\x84R\x91\x90\x92 \x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91\x90\x91\x17\x90U\x83Q`\xFF\x86\x16\x90\x7F\x10V^V\xCA\xCB\xF3.\xCA&yE\xF0T\xFE\xC0.Yu\x002\xD1\x13\xD30!\x82\xAD\x96\x7FT\x04\x90\x86\x90\x84\x90\x81\x10a'\x9CWa'\x9Ca7-V[` \x02` \x01\x01Q_\x01Q`@Qa'\xB4\x91\x90a1\xEEV[`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16_Q` a;U_9_Q\x90_R\x85\x83\x81Q\x81\x10a'\xE0Wa'\xE0a7-V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a'\xFDWa'\xFDa7-V[` \x02` \x01\x01Q` \x01Q`@Qa(\x17\x92\x91\x90a-\xB2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a%\xB3V[`\xFF\x82\x16_\x81\x81R` \x81\x81R`@\x91\x82\x90 \x80Tk\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01``\x1B\x03\x86\x16\x90\x81\x17\x90\x91U\x91Q\x91\x82R\x7F&\xEE\xCF\xF2\xB7\x0B\nq\x10O\xF4\xD9@\xBAqb\xD2:\x95\xC2Hw\x1F\xC4\x87\xA7\xBE\x17\xA5\x96\xB3\xCF\x91\x01`@Q\x80\x91\x03\x90\xA2PPV[`\xFF\x82\x16_\x90\x81R`\x05` R`@\x90 \x80T\x82\x91\x90`\xFF\x19\x16`\x01\x83\x81\x81\x11\x15a(\xBCWa(\xBCa1\xB4V[\x02\x17\x90UP\x7F|\x11.\x86<\xCF\0xb\xE2\xC9\xE2X\x19\xC93\xFE\xDB\xC95\ndCB;J\x85\x99\xC2\xE8\xA5-\x81`@Qa(\xF0\x91\x90a1\xC8V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a),W`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a)RWP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a)oW`@Qc\x13\x91\xE1\x1B`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\x01`\xFF\x80\x84\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a)\x9AWa)\x9Aa1\xB4V[\x14a)\xB8W`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x06` \x90\x81R`@\x91\x82\x90 \x80Tc\xFF\xFF\xFF\xFF\x19\x81\x16c\xFF\xFF\xFF\xFF\x86\x81\x16\x91\x82\x17\x90\x93U\x84Q\x92\x90\x91\x16\x80\x83R\x92\x82\x01R\x90\x91\x7F(\xD75\x8By\xF0-!\xB8\xB7\xE1z\xEF\xC4\x18Zd0\x8A\xA3t\x06\xFA[\xEF\xC0[\x91\x93,9\xC7\x91\x01`@Q\x80\x91\x03\x90\xA1PPPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 T\x80[\x80\x15a*\xC2W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a*v`\x01\x84a7nV[\x81T\x81\x10a*\x86Wa*\x86a7-V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a*\xB0Wa*\xA7`\x01\x82a7nV[\x92PPPa\x11\x02V[\x80a*\xBA\x81a:\x8BV[\x91PPa*BV[P`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x81`$\x82\x01R\x7FStakeRegistry._getStakeUpdateInd`D\x82\x01R\x7FexForOperatorAtBlockNumber: no s`d\x82\x01R\x7Ftake update found for operatorId`\x84\x82\x01R\x7F and quorumNumber at block numbe`\xA4\x82\x01R`9`\xF9\x1B`\xC4\x82\x01R`\xE4\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\x02`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a:\xA0V[__\x82\x12\x15a+\xC5Wa+\xB4\x82a:\xBFV[a+\xBE\x90\x84a:\xD9V[\x90Pa\naV[a+\xBE\x82\x84a:YV[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a+\xF5\x90c\xFF\xFF\xFF\xFF\x16Ca:xV[\x90P_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c+\xAB,J`@Q\x80`@\x01`@R\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\xDE\x11d\xBB`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a,\x8EW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a,\xB2\x91\x90a7\x95V[`\x01`\x01`\xA0\x1B\x03\x16\x81R`\xFF\x89\x16` \x91\x82\x01\x81\x90R_\x90\x81R`\x04\x91\x82\x90R`@\x90\x81\x90 \x90Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x86\x90\x1B\x16\x81Ra,\xFC\x93\x92\x8A\x92\x91\x89\x91\x01a:\xF8V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a-\x16W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra!\xA0\x91\x90\x81\x01\x90a9\x17V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x90V[\x805`\xFF\x81\x16\x81\x14a-lW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a-\x81W__\xFD[a\x11\x02\x82a-\\V[__`@\x83\x85\x03\x12\x15a-\x9BW__\xFD[a-\xA4\x83a-\\V[\x94` \x93\x90\x93\x015\x93PPPV[`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x82R`\x01`\x01``\x1B\x03\x16` \x82\x01R`@\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1C\x15W__\xFD[__`@\x83\x85\x03\x12\x15a-\xF9W__\xFD[a.\x02\x83a-\\V[\x91P` \x83\x015a.\x12\x81a-\xD4V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a.-W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a.CW__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1C\xBCW__\xFD[_____``\x86\x88\x03\x12\x15a.qW__\xFD[a.z\x86a-\\V[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x94W__\xFD[a.\xA0\x88\x82\x89\x01a.\x1DV[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xBEW__\xFD[a.\xCA\x88\x82\x89\x01a.\x1DV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a.\xEBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x01W__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1C\xBCW__\xFD[____``\x85\x87\x03\x12\x15a/+W__\xFD[\x845a/6\x81a-\xD4V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/WW__\xFD[a/c\x87\x82\x88\x01a.\xDBV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a/\xA8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a/\x81V[P\x93\x94\x93PPPPV[`@\x81R_a/\xC4`@\x83\x01\x85a/oV[\x82\x81\x03` \x84\x01Ra!\xA0\x81\x85a/oV[__`@\x83\x85\x03\x12\x15a/\xE7W__\xFD[\x825\x91Pa/\xF7` \x84\x01a-\\V[\x90P\x92P\x92\x90PV[c\xFF\xFF\xFF\xFF\x81Q\x16\x82Rc\xFF\xFF\xFF\xFF` \x82\x01Q\x16` \x83\x01R`\x01`\x01``\x1B\x03`@\x82\x01Q\x16`@\x83\x01RPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sWa0]\x83\x85Qa0\0V[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a0JV[P\x90\x95\x94PPPPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0\xB4Wa0\xB4a0~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a0\xE2Wa0\xE2a0~V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a1\x02Wa1\x02a0~V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a1\x1DW__\xFD[a1&\x83a-\\V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1@W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1PW__\xFD[\x805a1ca1^\x82a0\xEAV[a0\xBAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a1\x84W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a1\xA6W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a1\x8BV[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a1\xE8WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[_\x82`\x1F\x83\x01\x12a2\x11W__\xFD[\x815a2\x1Fa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a2@W__\xFD[` \x85\x01[\x83\x81\x10\x15a2]W\x805\x83R` \x92\x83\x01\x92\x01a2EV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a2yW__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x8EW__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a2\x9EW__\xFD[\x805a2\xACa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a2\xCDW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xF8W\x835a2\xE7\x81a-\xD4V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xD4V[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W__\xFD[a3!\x86\x82\x87\x01a2\x02V[\x92PPa30`@\x85\x01a-\\V[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a3RV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a-lW__\xFD[_\x82`\x1F\x83\x01\x12a3\x97W__\xFD[\x815a3\xA5a1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3\xC6W__\xFD[` \x85\x01[\x83\x81\x10\x15a2]W`@\x81\x88\x03\x12\x15a3\xE2W__\xFD[a3\xEAa0\x92V[\x815a3\xF5\x81a-\xD4V[\x81Ra4\x03` \x83\x01a3rV[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa3\xCBV[___``\x84\x86\x03\x12\x15a4/W__\xFD[a48\x84a-\\V[\x92Pa4F` \x85\x01a3rV[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4`W__\xFD[a4l\x86\x82\x87\x01a3\x88V[\x91PP\x92P\x92P\x92V[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a-lW__\xFD[___`@\x84\x86\x03\x12\x15a4\x9BW__\xFD[a4\xA4\x84a4vV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xBEW__\xFD[a4\xCA\x86\x82\x87\x01a.\xDBV[\x94\x97\x90\x96P\x93\x94PPPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a0sW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4\xF0V[___``\x84\x86\x03\x12\x15a5&W__\xFD[a5/\x84a-\\V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\na\x82\x84a0\0V[__`@\x83\x85\x03\x12\x15a5cW__\xFD[a5l\x83a-\\V[\x91Pa/\xF7` \x84\x01a3rV[___`@\x84\x86\x03\x12\x15a5\x8CW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4\xBEW__\xFD[__`@\x83\x85\x03\x12\x15a5\xB9W__\xFD[a5\xC2\x83a-\\V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xDCW__\xFD[a5\xE8\x85\x82\x86\x01a3\x88V[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a6\x04W__\xFD[a6\r\x84a-\\V[\x92Pa6\x1B` \x85\x01a4vV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a6?W__\xFD[a6H\x85a-\\V[\x93Pa6V` \x86\x01a3rV[\x92Pa6d`@\x86\x01a4vV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a6~W__\xFD[a6\x8A\x87\x82\x88\x01a3\x88V[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a6\xA8W__\xFD[\x835\x92Pa6\xB8` \x85\x01a-\\V[\x91Pa30`@\x85\x01a4vV[__`@\x83\x85\x03\x12\x15a6\xD7W__\xFD[a6\xE0\x83a-\\V[\x91Pa/\xF7` \x84\x01a4vV[____`\x80\x85\x87\x03\x12\x15a7\x01W__\xFD[a7\n\x85a-\\V[\x93Pa7\x18` \x86\x01a4vV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7QW__\xFD[a\x11\x02\x82a3rV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\naWa\naa7ZV[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a7\xA5W__\xFD[\x81Qa\x11\x02\x81a-\xD4V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\naV[_` \x82\x84\x03\x12\x15a7\xE6W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\x02W__\xFD[`\x01`\x01`\xA0\x1B\x03\x84\x16\x81R`\xFF\x83\x16` \x80\x83\x01\x91\x90\x91R```@\x83\x01\x81\x90R\x83Q\x90\x83\x01\x81\x90R_\x91\x84\x01\x90`\x80\x84\x01\x90\x83[\x81\x81\x10\x15a8RW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a8+V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1B\x7FWa\x1B\x7Fa7ZV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a/\xA8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a8\x90V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a/\xA8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a8\xCCV[`@\x81R_a9\x05`@\x83\x01\x85a8~V[\x82\x81\x03` \x84\x01Ra!\xA0\x81\x85a8\xB7V[_` \x82\x84\x03\x12\x15a9'W__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a9<W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a9LW__\xFD[\x80Qa9Za1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a9{W__\xFD[` \x84\x01[\x83\x81\x10\x15a:\x18W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a9\x9DW__\xFD[\x85\x01`?\x81\x01\x89\x13a9\xADW__\xFD[` \x81\x01Qa9\xBEa1^\x82a0\xEAV[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a9\xE1W__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a:\x03W\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a9\xE8V[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa9\x80V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\naWa\naa7ZV[_\x82a:TWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[`\x01`\x01``\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\naWa\naa7ZV[\x80\x82\x01\x80\x82\x11\x15a\naWa\naa7ZV[_\x81a:\x99Wa:\x99a7ZV[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xB0Wa\x06\xB0a7ZV[_`\x01`\xFF\x1B\x82\x01a:\xD3Wa:\xD3a7ZV[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\naWa\naa7ZV[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a;*`\xA0\x83\x01\x86a8~V[\x82\x81\x03``\x84\x01Ra;<\x81\x86a8\xB7V[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\xA2dipfsX\"\x12 =\x9E{?e\xC3\xE0\x80\xB6\x15\xC7\"\xEC\x1F\x1F\x88\x9Ay\xC4\x19_\xD0'\xF2-?\x1A\x10\xA0R\xAAydsolcC\0\x08\x1B\x003",
2038    );
2039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2040    /**Custom error with signature `BelowMinimumStakeRequirement()` and selector `0x40fe27c6`.
2041```solidity
2042error BelowMinimumStakeRequirement();
2043```*/
2044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2045    #[derive(Clone)]
2046    pub struct BelowMinimumStakeRequirement {}
2047    #[allow(
2048        non_camel_case_types,
2049        non_snake_case,
2050        clippy::pub_underscore_fields,
2051        clippy::style
2052    )]
2053    const _: () = {
2054        use alloy::sol_types as alloy_sol_types;
2055        #[doc(hidden)]
2056        type UnderlyingSolTuple<'a> = ();
2057        #[doc(hidden)]
2058        type UnderlyingRustTuple<'a> = ();
2059        #[cfg(test)]
2060        #[allow(dead_code, unreachable_patterns)]
2061        fn _type_assertion(
2062            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2063        ) {
2064            match _t {
2065                alloy_sol_types::private::AssertTypeEq::<
2066                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2067                >(_) => {}
2068            }
2069        }
2070        #[automatically_derived]
2071        #[doc(hidden)]
2072        impl ::core::convert::From<BelowMinimumStakeRequirement>
2073        for UnderlyingRustTuple<'_> {
2074            fn from(value: BelowMinimumStakeRequirement) -> Self {
2075                ()
2076            }
2077        }
2078        #[automatically_derived]
2079        #[doc(hidden)]
2080        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2081        for BelowMinimumStakeRequirement {
2082            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2083                Self {}
2084            }
2085        }
2086        #[automatically_derived]
2087        impl alloy_sol_types::SolError for BelowMinimumStakeRequirement {
2088            type Parameters<'a> = UnderlyingSolTuple<'a>;
2089            type Token<'a> = <Self::Parameters<
2090                'a,
2091            > as alloy_sol_types::SolType>::Token<'a>;
2092            const SIGNATURE: &'static str = "BelowMinimumStakeRequirement()";
2093            const SELECTOR: [u8; 4] = [64u8, 254u8, 39u8, 198u8];
2094            #[inline]
2095            fn new<'a>(
2096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2097            ) -> Self {
2098                tuple.into()
2099            }
2100            #[inline]
2101            fn tokenize(&self) -> Self::Token<'_> {
2102                ()
2103            }
2104        }
2105    };
2106    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2107    /**Custom error with signature `EmptyStakeHistory()` and selector `0xcc646573`.
2108```solidity
2109error EmptyStakeHistory();
2110```*/
2111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2112    #[derive(Clone)]
2113    pub struct EmptyStakeHistory {}
2114    #[allow(
2115        non_camel_case_types,
2116        non_snake_case,
2117        clippy::pub_underscore_fields,
2118        clippy::style
2119    )]
2120    const _: () = {
2121        use alloy::sol_types as alloy_sol_types;
2122        #[doc(hidden)]
2123        type UnderlyingSolTuple<'a> = ();
2124        #[doc(hidden)]
2125        type UnderlyingRustTuple<'a> = ();
2126        #[cfg(test)]
2127        #[allow(dead_code, unreachable_patterns)]
2128        fn _type_assertion(
2129            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2130        ) {
2131            match _t {
2132                alloy_sol_types::private::AssertTypeEq::<
2133                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2134                >(_) => {}
2135            }
2136        }
2137        #[automatically_derived]
2138        #[doc(hidden)]
2139        impl ::core::convert::From<EmptyStakeHistory> for UnderlyingRustTuple<'_> {
2140            fn from(value: EmptyStakeHistory) -> Self {
2141                ()
2142            }
2143        }
2144        #[automatically_derived]
2145        #[doc(hidden)]
2146        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EmptyStakeHistory {
2147            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2148                Self {}
2149            }
2150        }
2151        #[automatically_derived]
2152        impl alloy_sol_types::SolError for EmptyStakeHistory {
2153            type Parameters<'a> = UnderlyingSolTuple<'a>;
2154            type Token<'a> = <Self::Parameters<
2155                'a,
2156            > as alloy_sol_types::SolType>::Token<'a>;
2157            const SIGNATURE: &'static str = "EmptyStakeHistory()";
2158            const SELECTOR: [u8; 4] = [204u8, 100u8, 101u8, 115u8];
2159            #[inline]
2160            fn new<'a>(
2161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2162            ) -> Self {
2163                tuple.into()
2164            }
2165            #[inline]
2166            fn tokenize(&self) -> Self::Token<'_> {
2167                ()
2168            }
2169        }
2170    };
2171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2172    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
2173```solidity
2174error InputArrayLengthMismatch();
2175```*/
2176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2177    #[derive(Clone)]
2178    pub struct InputArrayLengthMismatch {}
2179    #[allow(
2180        non_camel_case_types,
2181        non_snake_case,
2182        clippy::pub_underscore_fields,
2183        clippy::style
2184    )]
2185    const _: () = {
2186        use alloy::sol_types as alloy_sol_types;
2187        #[doc(hidden)]
2188        type UnderlyingSolTuple<'a> = ();
2189        #[doc(hidden)]
2190        type UnderlyingRustTuple<'a> = ();
2191        #[cfg(test)]
2192        #[allow(dead_code, unreachable_patterns)]
2193        fn _type_assertion(
2194            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2195        ) {
2196            match _t {
2197                alloy_sol_types::private::AssertTypeEq::<
2198                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2199                >(_) => {}
2200            }
2201        }
2202        #[automatically_derived]
2203        #[doc(hidden)]
2204        impl ::core::convert::From<InputArrayLengthMismatch>
2205        for UnderlyingRustTuple<'_> {
2206            fn from(value: InputArrayLengthMismatch) -> Self {
2207                ()
2208            }
2209        }
2210        #[automatically_derived]
2211        #[doc(hidden)]
2212        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2213        for InputArrayLengthMismatch {
2214            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2215                Self {}
2216            }
2217        }
2218        #[automatically_derived]
2219        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
2220            type Parameters<'a> = UnderlyingSolTuple<'a>;
2221            type Token<'a> = <Self::Parameters<
2222                'a,
2223            > as alloy_sol_types::SolType>::Token<'a>;
2224            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
2225            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
2226            #[inline]
2227            fn new<'a>(
2228                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2229            ) -> Self {
2230                tuple.into()
2231            }
2232            #[inline]
2233            fn tokenize(&self) -> Self::Token<'_> {
2234                ()
2235            }
2236        }
2237    };
2238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2239    /**Custom error with signature `InputArrayLengthZero()` and selector `0x796cc525`.
2240```solidity
2241error InputArrayLengthZero();
2242```*/
2243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2244    #[derive(Clone)]
2245    pub struct InputArrayLengthZero {}
2246    #[allow(
2247        non_camel_case_types,
2248        non_snake_case,
2249        clippy::pub_underscore_fields,
2250        clippy::style
2251    )]
2252    const _: () = {
2253        use alloy::sol_types as alloy_sol_types;
2254        #[doc(hidden)]
2255        type UnderlyingSolTuple<'a> = ();
2256        #[doc(hidden)]
2257        type UnderlyingRustTuple<'a> = ();
2258        #[cfg(test)]
2259        #[allow(dead_code, unreachable_patterns)]
2260        fn _type_assertion(
2261            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2262        ) {
2263            match _t {
2264                alloy_sol_types::private::AssertTypeEq::<
2265                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2266                >(_) => {}
2267            }
2268        }
2269        #[automatically_derived]
2270        #[doc(hidden)]
2271        impl ::core::convert::From<InputArrayLengthZero> for UnderlyingRustTuple<'_> {
2272            fn from(value: InputArrayLengthZero) -> Self {
2273                ()
2274            }
2275        }
2276        #[automatically_derived]
2277        #[doc(hidden)]
2278        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthZero {
2279            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2280                Self {}
2281            }
2282        }
2283        #[automatically_derived]
2284        impl alloy_sol_types::SolError for InputArrayLengthZero {
2285            type Parameters<'a> = UnderlyingSolTuple<'a>;
2286            type Token<'a> = <Self::Parameters<
2287                'a,
2288            > as alloy_sol_types::SolType>::Token<'a>;
2289            const SIGNATURE: &'static str = "InputArrayLengthZero()";
2290            const SELECTOR: [u8; 4] = [121u8, 108u8, 197u8, 37u8];
2291            #[inline]
2292            fn new<'a>(
2293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2294            ) -> Self {
2295                tuple.into()
2296            }
2297            #[inline]
2298            fn tokenize(&self) -> Self::Token<'_> {
2299                ()
2300            }
2301        }
2302    };
2303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2304    /**Custom error with signature `InputDuplicateStrategy()` and selector `0x7b74340b`.
2305```solidity
2306error InputDuplicateStrategy();
2307```*/
2308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2309    #[derive(Clone)]
2310    pub struct InputDuplicateStrategy {}
2311    #[allow(
2312        non_camel_case_types,
2313        non_snake_case,
2314        clippy::pub_underscore_fields,
2315        clippy::style
2316    )]
2317    const _: () = {
2318        use alloy::sol_types as alloy_sol_types;
2319        #[doc(hidden)]
2320        type UnderlyingSolTuple<'a> = ();
2321        #[doc(hidden)]
2322        type UnderlyingRustTuple<'a> = ();
2323        #[cfg(test)]
2324        #[allow(dead_code, unreachable_patterns)]
2325        fn _type_assertion(
2326            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2327        ) {
2328            match _t {
2329                alloy_sol_types::private::AssertTypeEq::<
2330                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2331                >(_) => {}
2332            }
2333        }
2334        #[automatically_derived]
2335        #[doc(hidden)]
2336        impl ::core::convert::From<InputDuplicateStrategy> for UnderlyingRustTuple<'_> {
2337            fn from(value: InputDuplicateStrategy) -> Self {
2338                ()
2339            }
2340        }
2341        #[automatically_derived]
2342        #[doc(hidden)]
2343        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputDuplicateStrategy {
2344            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2345                Self {}
2346            }
2347        }
2348        #[automatically_derived]
2349        impl alloy_sol_types::SolError for InputDuplicateStrategy {
2350            type Parameters<'a> = UnderlyingSolTuple<'a>;
2351            type Token<'a> = <Self::Parameters<
2352                'a,
2353            > as alloy_sol_types::SolType>::Token<'a>;
2354            const SIGNATURE: &'static str = "InputDuplicateStrategy()";
2355            const SELECTOR: [u8; 4] = [123u8, 116u8, 52u8, 11u8];
2356            #[inline]
2357            fn new<'a>(
2358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2359            ) -> Self {
2360                tuple.into()
2361            }
2362            #[inline]
2363            fn tokenize(&self) -> Self::Token<'_> {
2364                ()
2365            }
2366        }
2367    };
2368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2369    /**Custom error with signature `InputMultiplierZero()` and selector `0x72571251`.
2370```solidity
2371error InputMultiplierZero();
2372```*/
2373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2374    #[derive(Clone)]
2375    pub struct InputMultiplierZero {}
2376    #[allow(
2377        non_camel_case_types,
2378        non_snake_case,
2379        clippy::pub_underscore_fields,
2380        clippy::style
2381    )]
2382    const _: () = {
2383        use alloy::sol_types as alloy_sol_types;
2384        #[doc(hidden)]
2385        type UnderlyingSolTuple<'a> = ();
2386        #[doc(hidden)]
2387        type UnderlyingRustTuple<'a> = ();
2388        #[cfg(test)]
2389        #[allow(dead_code, unreachable_patterns)]
2390        fn _type_assertion(
2391            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2392        ) {
2393            match _t {
2394                alloy_sol_types::private::AssertTypeEq::<
2395                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2396                >(_) => {}
2397            }
2398        }
2399        #[automatically_derived]
2400        #[doc(hidden)]
2401        impl ::core::convert::From<InputMultiplierZero> for UnderlyingRustTuple<'_> {
2402            fn from(value: InputMultiplierZero) -> Self {
2403                ()
2404            }
2405        }
2406        #[automatically_derived]
2407        #[doc(hidden)]
2408        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputMultiplierZero {
2409            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2410                Self {}
2411            }
2412        }
2413        #[automatically_derived]
2414        impl alloy_sol_types::SolError for InputMultiplierZero {
2415            type Parameters<'a> = UnderlyingSolTuple<'a>;
2416            type Token<'a> = <Self::Parameters<
2417                'a,
2418            > as alloy_sol_types::SolType>::Token<'a>;
2419            const SIGNATURE: &'static str = "InputMultiplierZero()";
2420            const SELECTOR: [u8; 4] = [114u8, 87u8, 18u8, 81u8];
2421            #[inline]
2422            fn new<'a>(
2423                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2424            ) -> Self {
2425                tuple.into()
2426            }
2427            #[inline]
2428            fn tokenize(&self) -> Self::Token<'_> {
2429                ()
2430            }
2431        }
2432    };
2433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2434    /**Custom error with signature `InvalidBlockNumber()` and selector `0x4e47846c`.
2435```solidity
2436error InvalidBlockNumber();
2437```*/
2438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2439    #[derive(Clone)]
2440    pub struct InvalidBlockNumber {}
2441    #[allow(
2442        non_camel_case_types,
2443        non_snake_case,
2444        clippy::pub_underscore_fields,
2445        clippy::style
2446    )]
2447    const _: () = {
2448        use alloy::sol_types as alloy_sol_types;
2449        #[doc(hidden)]
2450        type UnderlyingSolTuple<'a> = ();
2451        #[doc(hidden)]
2452        type UnderlyingRustTuple<'a> = ();
2453        #[cfg(test)]
2454        #[allow(dead_code, unreachable_patterns)]
2455        fn _type_assertion(
2456            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2457        ) {
2458            match _t {
2459                alloy_sol_types::private::AssertTypeEq::<
2460                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2461                >(_) => {}
2462            }
2463        }
2464        #[automatically_derived]
2465        #[doc(hidden)]
2466        impl ::core::convert::From<InvalidBlockNumber> for UnderlyingRustTuple<'_> {
2467            fn from(value: InvalidBlockNumber) -> Self {
2468                ()
2469            }
2470        }
2471        #[automatically_derived]
2472        #[doc(hidden)]
2473        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBlockNumber {
2474            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2475                Self {}
2476            }
2477        }
2478        #[automatically_derived]
2479        impl alloy_sol_types::SolError for InvalidBlockNumber {
2480            type Parameters<'a> = UnderlyingSolTuple<'a>;
2481            type Token<'a> = <Self::Parameters<
2482                'a,
2483            > as alloy_sol_types::SolType>::Token<'a>;
2484            const SIGNATURE: &'static str = "InvalidBlockNumber()";
2485            const SELECTOR: [u8; 4] = [78u8, 71u8, 132u8, 108u8];
2486            #[inline]
2487            fn new<'a>(
2488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2489            ) -> Self {
2490                tuple.into()
2491            }
2492            #[inline]
2493            fn tokenize(&self) -> Self::Token<'_> {
2494                ()
2495            }
2496        }
2497    };
2498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2499    /**Custom error with signature `OnlySlashingRegistryCoordinator()` and selector `0xb006c814`.
2500```solidity
2501error OnlySlashingRegistryCoordinator();
2502```*/
2503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2504    #[derive(Clone)]
2505    pub struct OnlySlashingRegistryCoordinator {}
2506    #[allow(
2507        non_camel_case_types,
2508        non_snake_case,
2509        clippy::pub_underscore_fields,
2510        clippy::style
2511    )]
2512    const _: () = {
2513        use alloy::sol_types as alloy_sol_types;
2514        #[doc(hidden)]
2515        type UnderlyingSolTuple<'a> = ();
2516        #[doc(hidden)]
2517        type UnderlyingRustTuple<'a> = ();
2518        #[cfg(test)]
2519        #[allow(dead_code, unreachable_patterns)]
2520        fn _type_assertion(
2521            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2522        ) {
2523            match _t {
2524                alloy_sol_types::private::AssertTypeEq::<
2525                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2526                >(_) => {}
2527            }
2528        }
2529        #[automatically_derived]
2530        #[doc(hidden)]
2531        impl ::core::convert::From<OnlySlashingRegistryCoordinator>
2532        for UnderlyingRustTuple<'_> {
2533            fn from(value: OnlySlashingRegistryCoordinator) -> Self {
2534                ()
2535            }
2536        }
2537        #[automatically_derived]
2538        #[doc(hidden)]
2539        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2540        for OnlySlashingRegistryCoordinator {
2541            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2542                Self {}
2543            }
2544        }
2545        #[automatically_derived]
2546        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinator {
2547            type Parameters<'a> = UnderlyingSolTuple<'a>;
2548            type Token<'a> = <Self::Parameters<
2549                'a,
2550            > as alloy_sol_types::SolType>::Token<'a>;
2551            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinator()";
2552            const SELECTOR: [u8; 4] = [176u8, 6u8, 200u8, 20u8];
2553            #[inline]
2554            fn new<'a>(
2555                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2556            ) -> Self {
2557                tuple.into()
2558            }
2559            #[inline]
2560            fn tokenize(&self) -> Self::Token<'_> {
2561                ()
2562            }
2563        }
2564    };
2565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2566    /**Custom error with signature `OnlySlashingRegistryCoordinatorOwner()` and selector `0xce98c24b`.
2567```solidity
2568error OnlySlashingRegistryCoordinatorOwner();
2569```*/
2570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2571    #[derive(Clone)]
2572    pub struct OnlySlashingRegistryCoordinatorOwner {}
2573    #[allow(
2574        non_camel_case_types,
2575        non_snake_case,
2576        clippy::pub_underscore_fields,
2577        clippy::style
2578    )]
2579    const _: () = {
2580        use alloy::sol_types as alloy_sol_types;
2581        #[doc(hidden)]
2582        type UnderlyingSolTuple<'a> = ();
2583        #[doc(hidden)]
2584        type UnderlyingRustTuple<'a> = ();
2585        #[cfg(test)]
2586        #[allow(dead_code, unreachable_patterns)]
2587        fn _type_assertion(
2588            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2589        ) {
2590            match _t {
2591                alloy_sol_types::private::AssertTypeEq::<
2592                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2593                >(_) => {}
2594            }
2595        }
2596        #[automatically_derived]
2597        #[doc(hidden)]
2598        impl ::core::convert::From<OnlySlashingRegistryCoordinatorOwner>
2599        for UnderlyingRustTuple<'_> {
2600            fn from(value: OnlySlashingRegistryCoordinatorOwner) -> Self {
2601                ()
2602            }
2603        }
2604        #[automatically_derived]
2605        #[doc(hidden)]
2606        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2607        for OnlySlashingRegistryCoordinatorOwner {
2608            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2609                Self {}
2610            }
2611        }
2612        #[automatically_derived]
2613        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinatorOwner {
2614            type Parameters<'a> = UnderlyingSolTuple<'a>;
2615            type Token<'a> = <Self::Parameters<
2616                'a,
2617            > as alloy_sol_types::SolType>::Token<'a>;
2618            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinatorOwner()";
2619            const SELECTOR: [u8; 4] = [206u8, 152u8, 194u8, 75u8];
2620            #[inline]
2621            fn new<'a>(
2622                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2623            ) -> Self {
2624                tuple.into()
2625            }
2626            #[inline]
2627            fn tokenize(&self) -> Self::Token<'_> {
2628                ()
2629            }
2630        }
2631    };
2632    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2633    /**Custom error with signature `QuorumAlreadyExists()` and selector `0x4336945c`.
2634```solidity
2635error QuorumAlreadyExists();
2636```*/
2637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2638    #[derive(Clone)]
2639    pub struct QuorumAlreadyExists {}
2640    #[allow(
2641        non_camel_case_types,
2642        non_snake_case,
2643        clippy::pub_underscore_fields,
2644        clippy::style
2645    )]
2646    const _: () = {
2647        use alloy::sol_types as alloy_sol_types;
2648        #[doc(hidden)]
2649        type UnderlyingSolTuple<'a> = ();
2650        #[doc(hidden)]
2651        type UnderlyingRustTuple<'a> = ();
2652        #[cfg(test)]
2653        #[allow(dead_code, unreachable_patterns)]
2654        fn _type_assertion(
2655            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2656        ) {
2657            match _t {
2658                alloy_sol_types::private::AssertTypeEq::<
2659                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2660                >(_) => {}
2661            }
2662        }
2663        #[automatically_derived]
2664        #[doc(hidden)]
2665        impl ::core::convert::From<QuorumAlreadyExists> for UnderlyingRustTuple<'_> {
2666            fn from(value: QuorumAlreadyExists) -> Self {
2667                ()
2668            }
2669        }
2670        #[automatically_derived]
2671        #[doc(hidden)]
2672        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumAlreadyExists {
2673            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2674                Self {}
2675            }
2676        }
2677        #[automatically_derived]
2678        impl alloy_sol_types::SolError for QuorumAlreadyExists {
2679            type Parameters<'a> = UnderlyingSolTuple<'a>;
2680            type Token<'a> = <Self::Parameters<
2681                'a,
2682            > as alloy_sol_types::SolType>::Token<'a>;
2683            const SIGNATURE: &'static str = "QuorumAlreadyExists()";
2684            const SELECTOR: [u8; 4] = [67u8, 54u8, 148u8, 92u8];
2685            #[inline]
2686            fn new<'a>(
2687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2688            ) -> Self {
2689                tuple.into()
2690            }
2691            #[inline]
2692            fn tokenize(&self) -> Self::Token<'_> {
2693                ()
2694            }
2695        }
2696    };
2697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2698    /**Custom error with signature `QuorumDoesNotExist()` and selector `0xe6219fea`.
2699```solidity
2700error QuorumDoesNotExist();
2701```*/
2702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2703    #[derive(Clone)]
2704    pub struct QuorumDoesNotExist {}
2705    #[allow(
2706        non_camel_case_types,
2707        non_snake_case,
2708        clippy::pub_underscore_fields,
2709        clippy::style
2710    )]
2711    const _: () = {
2712        use alloy::sol_types as alloy_sol_types;
2713        #[doc(hidden)]
2714        type UnderlyingSolTuple<'a> = ();
2715        #[doc(hidden)]
2716        type UnderlyingRustTuple<'a> = ();
2717        #[cfg(test)]
2718        #[allow(dead_code, unreachable_patterns)]
2719        fn _type_assertion(
2720            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2721        ) {
2722            match _t {
2723                alloy_sol_types::private::AssertTypeEq::<
2724                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2725                >(_) => {}
2726            }
2727        }
2728        #[automatically_derived]
2729        #[doc(hidden)]
2730        impl ::core::convert::From<QuorumDoesNotExist> for UnderlyingRustTuple<'_> {
2731            fn from(value: QuorumDoesNotExist) -> Self {
2732                ()
2733            }
2734        }
2735        #[automatically_derived]
2736        #[doc(hidden)]
2737        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumDoesNotExist {
2738            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2739                Self {}
2740            }
2741        }
2742        #[automatically_derived]
2743        impl alloy_sol_types::SolError for QuorumDoesNotExist {
2744            type Parameters<'a> = UnderlyingSolTuple<'a>;
2745            type Token<'a> = <Self::Parameters<
2746                'a,
2747            > as alloy_sol_types::SolType>::Token<'a>;
2748            const SIGNATURE: &'static str = "QuorumDoesNotExist()";
2749            const SELECTOR: [u8; 4] = [230u8, 33u8, 159u8, 234u8];
2750            #[inline]
2751            fn new<'a>(
2752                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2753            ) -> Self {
2754                tuple.into()
2755            }
2756            #[inline]
2757            fn tokenize(&self) -> Self::Token<'_> {
2758                ()
2759            }
2760        }
2761    };
2762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2763    /**Custom error with signature `QuorumNotSlashable()` and selector `0xa3be2583`.
2764```solidity
2765error QuorumNotSlashable();
2766```*/
2767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2768    #[derive(Clone)]
2769    pub struct QuorumNotSlashable {}
2770    #[allow(
2771        non_camel_case_types,
2772        non_snake_case,
2773        clippy::pub_underscore_fields,
2774        clippy::style
2775    )]
2776    const _: () = {
2777        use alloy::sol_types as alloy_sol_types;
2778        #[doc(hidden)]
2779        type UnderlyingSolTuple<'a> = ();
2780        #[doc(hidden)]
2781        type UnderlyingRustTuple<'a> = ();
2782        #[cfg(test)]
2783        #[allow(dead_code, unreachable_patterns)]
2784        fn _type_assertion(
2785            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2786        ) {
2787            match _t {
2788                alloy_sol_types::private::AssertTypeEq::<
2789                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2790                >(_) => {}
2791            }
2792        }
2793        #[automatically_derived]
2794        #[doc(hidden)]
2795        impl ::core::convert::From<QuorumNotSlashable> for UnderlyingRustTuple<'_> {
2796            fn from(value: QuorumNotSlashable) -> Self {
2797                ()
2798            }
2799        }
2800        #[automatically_derived]
2801        #[doc(hidden)]
2802        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumNotSlashable {
2803            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2804                Self {}
2805            }
2806        }
2807        #[automatically_derived]
2808        impl alloy_sol_types::SolError for QuorumNotSlashable {
2809            type Parameters<'a> = UnderlyingSolTuple<'a>;
2810            type Token<'a> = <Self::Parameters<
2811                'a,
2812            > as alloy_sol_types::SolType>::Token<'a>;
2813            const SIGNATURE: &'static str = "QuorumNotSlashable()";
2814            const SELECTOR: [u8; 4] = [163u8, 190u8, 37u8, 131u8];
2815            #[inline]
2816            fn new<'a>(
2817                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2818            ) -> Self {
2819                tuple.into()
2820            }
2821            #[inline]
2822            fn tokenize(&self) -> Self::Token<'_> {
2823                ()
2824            }
2825        }
2826    };
2827    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2828    /**Event with signature `LookAheadPeriodChanged(uint32,uint32)` and selector `0x28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7`.
2829```solidity
2830event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
2831```*/
2832    #[allow(
2833        non_camel_case_types,
2834        non_snake_case,
2835        clippy::pub_underscore_fields,
2836        clippy::style
2837    )]
2838    #[derive(Clone)]
2839    pub struct LookAheadPeriodChanged {
2840        #[allow(missing_docs)]
2841        pub oldLookAheadBlocks: u32,
2842        #[allow(missing_docs)]
2843        pub newLookAheadBlocks: u32,
2844    }
2845    #[allow(
2846        non_camel_case_types,
2847        non_snake_case,
2848        clippy::pub_underscore_fields,
2849        clippy::style
2850    )]
2851    const _: () = {
2852        use alloy::sol_types as alloy_sol_types;
2853        #[automatically_derived]
2854        impl alloy_sol_types::SolEvent for LookAheadPeriodChanged {
2855            type DataTuple<'a> = (
2856                alloy::sol_types::sol_data::Uint<32>,
2857                alloy::sol_types::sol_data::Uint<32>,
2858            );
2859            type DataToken<'a> = <Self::DataTuple<
2860                'a,
2861            > as alloy_sol_types::SolType>::Token<'a>;
2862            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2863            const SIGNATURE: &'static str = "LookAheadPeriodChanged(uint32,uint32)";
2864            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2865                40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8,
2866                122u8, 239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8,
2867                250u8, 91u8, 239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
2868            ]);
2869            const ANONYMOUS: bool = false;
2870            #[allow(unused_variables)]
2871            #[inline]
2872            fn new(
2873                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2874                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2875            ) -> Self {
2876                Self {
2877                    oldLookAheadBlocks: data.0,
2878                    newLookAheadBlocks: data.1,
2879                }
2880            }
2881            #[inline]
2882            fn check_signature(
2883                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2884            ) -> alloy_sol_types::Result<()> {
2885                if topics.0 != Self::SIGNATURE_HASH {
2886                    return Err(
2887                        alloy_sol_types::Error::invalid_event_signature_hash(
2888                            Self::SIGNATURE,
2889                            topics.0,
2890                            Self::SIGNATURE_HASH,
2891                        ),
2892                    );
2893                }
2894                Ok(())
2895            }
2896            #[inline]
2897            fn tokenize_body(&self) -> Self::DataToken<'_> {
2898                (
2899                    <alloy::sol_types::sol_data::Uint<
2900                        32,
2901                    > as alloy_sol_types::SolType>::tokenize(&self.oldLookAheadBlocks),
2902                    <alloy::sol_types::sol_data::Uint<
2903                        32,
2904                    > as alloy_sol_types::SolType>::tokenize(&self.newLookAheadBlocks),
2905                )
2906            }
2907            #[inline]
2908            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2909                (Self::SIGNATURE_HASH.into(),)
2910            }
2911            #[inline]
2912            fn encode_topics_raw(
2913                &self,
2914                out: &mut [alloy_sol_types::abi::token::WordToken],
2915            ) -> alloy_sol_types::Result<()> {
2916                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2917                    return Err(alloy_sol_types::Error::Overrun);
2918                }
2919                out[0usize] = alloy_sol_types::abi::token::WordToken(
2920                    Self::SIGNATURE_HASH,
2921                );
2922                Ok(())
2923            }
2924        }
2925        #[automatically_derived]
2926        impl alloy_sol_types::private::IntoLogData for LookAheadPeriodChanged {
2927            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2928                From::from(self)
2929            }
2930            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2931                From::from(&self)
2932            }
2933        }
2934        #[automatically_derived]
2935        impl From<&LookAheadPeriodChanged> for alloy_sol_types::private::LogData {
2936            #[inline]
2937            fn from(this: &LookAheadPeriodChanged) -> alloy_sol_types::private::LogData {
2938                alloy_sol_types::SolEvent::encode_log_data(this)
2939            }
2940        }
2941    };
2942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2943    /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`.
2944```solidity
2945event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
2946```*/
2947    #[allow(
2948        non_camel_case_types,
2949        non_snake_case,
2950        clippy::pub_underscore_fields,
2951        clippy::style
2952    )]
2953    #[derive(Clone)]
2954    pub struct MinimumStakeForQuorumUpdated {
2955        #[allow(missing_docs)]
2956        pub quorumNumber: u8,
2957        #[allow(missing_docs)]
2958        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
2959    }
2960    #[allow(
2961        non_camel_case_types,
2962        non_snake_case,
2963        clippy::pub_underscore_fields,
2964        clippy::style
2965    )]
2966    const _: () = {
2967        use alloy::sol_types as alloy_sol_types;
2968        #[automatically_derived]
2969        impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated {
2970            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
2971            type DataToken<'a> = <Self::DataTuple<
2972                'a,
2973            > as alloy_sol_types::SolType>::Token<'a>;
2974            type TopicList = (
2975                alloy_sol_types::sol_data::FixedBytes<32>,
2976                alloy::sol_types::sol_data::Uint<8>,
2977            );
2978            const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)";
2979            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2980                38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8,
2981                217u8, 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8,
2982                31u8, 196u8, 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
2983            ]);
2984            const ANONYMOUS: bool = false;
2985            #[allow(unused_variables)]
2986            #[inline]
2987            fn new(
2988                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2989                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2990            ) -> Self {
2991                Self {
2992                    quorumNumber: topics.1,
2993                    minimumStake: data.0,
2994                }
2995            }
2996            #[inline]
2997            fn check_signature(
2998                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2999            ) -> alloy_sol_types::Result<()> {
3000                if topics.0 != Self::SIGNATURE_HASH {
3001                    return Err(
3002                        alloy_sol_types::Error::invalid_event_signature_hash(
3003                            Self::SIGNATURE,
3004                            topics.0,
3005                            Self::SIGNATURE_HASH,
3006                        ),
3007                    );
3008                }
3009                Ok(())
3010            }
3011            #[inline]
3012            fn tokenize_body(&self) -> Self::DataToken<'_> {
3013                (
3014                    <alloy::sol_types::sol_data::Uint<
3015                        96,
3016                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
3017                )
3018            }
3019            #[inline]
3020            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3021                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3022            }
3023            #[inline]
3024            fn encode_topics_raw(
3025                &self,
3026                out: &mut [alloy_sol_types::abi::token::WordToken],
3027            ) -> alloy_sol_types::Result<()> {
3028                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3029                    return Err(alloy_sol_types::Error::Overrun);
3030                }
3031                out[0usize] = alloy_sol_types::abi::token::WordToken(
3032                    Self::SIGNATURE_HASH,
3033                );
3034                out[1usize] = <alloy::sol_types::sol_data::Uint<
3035                    8,
3036                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3037                Ok(())
3038            }
3039        }
3040        #[automatically_derived]
3041        impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated {
3042            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3043                From::from(self)
3044            }
3045            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3046                From::from(&self)
3047            }
3048        }
3049        #[automatically_derived]
3050        impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData {
3051            #[inline]
3052            fn from(
3053                this: &MinimumStakeForQuorumUpdated,
3054            ) -> alloy_sol_types::private::LogData {
3055                alloy_sol_types::SolEvent::encode_log_data(this)
3056            }
3057        }
3058    };
3059    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3060    /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`.
3061```solidity
3062event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
3063```*/
3064    #[allow(
3065        non_camel_case_types,
3066        non_snake_case,
3067        clippy::pub_underscore_fields,
3068        clippy::style
3069    )]
3070    #[derive(Clone)]
3071    pub struct OperatorStakeUpdate {
3072        #[allow(missing_docs)]
3073        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
3074        #[allow(missing_docs)]
3075        pub quorumNumber: u8,
3076        #[allow(missing_docs)]
3077        pub stake: alloy::sol_types::private::primitives::aliases::U96,
3078    }
3079    #[allow(
3080        non_camel_case_types,
3081        non_snake_case,
3082        clippy::pub_underscore_fields,
3083        clippy::style
3084    )]
3085    const _: () = {
3086        use alloy::sol_types as alloy_sol_types;
3087        #[automatically_derived]
3088        impl alloy_sol_types::SolEvent for OperatorStakeUpdate {
3089            type DataTuple<'a> = (
3090                alloy::sol_types::sol_data::Uint<8>,
3091                alloy::sol_types::sol_data::Uint<96>,
3092            );
3093            type DataToken<'a> = <Self::DataTuple<
3094                'a,
3095            > as alloy_sol_types::SolType>::Token<'a>;
3096            type TopicList = (
3097                alloy_sol_types::sol_data::FixedBytes<32>,
3098                alloy::sol_types::sol_data::FixedBytes<32>,
3099            );
3100            const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)";
3101            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3102                47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8,
3103                83u8, 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8,
3104                208u8, 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
3105            ]);
3106            const ANONYMOUS: bool = false;
3107            #[allow(unused_variables)]
3108            #[inline]
3109            fn new(
3110                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3111                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3112            ) -> Self {
3113                Self {
3114                    operatorId: topics.1,
3115                    quorumNumber: data.0,
3116                    stake: data.1,
3117                }
3118            }
3119            #[inline]
3120            fn check_signature(
3121                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3122            ) -> alloy_sol_types::Result<()> {
3123                if topics.0 != Self::SIGNATURE_HASH {
3124                    return Err(
3125                        alloy_sol_types::Error::invalid_event_signature_hash(
3126                            Self::SIGNATURE,
3127                            topics.0,
3128                            Self::SIGNATURE_HASH,
3129                        ),
3130                    );
3131                }
3132                Ok(())
3133            }
3134            #[inline]
3135            fn tokenize_body(&self) -> Self::DataToken<'_> {
3136                (
3137                    <alloy::sol_types::sol_data::Uint<
3138                        8,
3139                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
3140                    <alloy::sol_types::sol_data::Uint<
3141                        96,
3142                    > as alloy_sol_types::SolType>::tokenize(&self.stake),
3143                )
3144            }
3145            #[inline]
3146            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3147                (Self::SIGNATURE_HASH.into(), self.operatorId.clone())
3148            }
3149            #[inline]
3150            fn encode_topics_raw(
3151                &self,
3152                out: &mut [alloy_sol_types::abi::token::WordToken],
3153            ) -> alloy_sol_types::Result<()> {
3154                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3155                    return Err(alloy_sol_types::Error::Overrun);
3156                }
3157                out[0usize] = alloy_sol_types::abi::token::WordToken(
3158                    Self::SIGNATURE_HASH,
3159                );
3160                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3161                    32,
3162                > as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId);
3163                Ok(())
3164            }
3165        }
3166        #[automatically_derived]
3167        impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate {
3168            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3169                From::from(self)
3170            }
3171            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3172                From::from(&self)
3173            }
3174        }
3175        #[automatically_derived]
3176        impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData {
3177            #[inline]
3178            fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData {
3179                alloy_sol_types::SolEvent::encode_log_data(this)
3180            }
3181        }
3182    };
3183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3184    /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`.
3185```solidity
3186event QuorumCreated(uint8 indexed quorumNumber);
3187```*/
3188    #[allow(
3189        non_camel_case_types,
3190        non_snake_case,
3191        clippy::pub_underscore_fields,
3192        clippy::style
3193    )]
3194    #[derive(Clone)]
3195    pub struct QuorumCreated {
3196        #[allow(missing_docs)]
3197        pub quorumNumber: u8,
3198    }
3199    #[allow(
3200        non_camel_case_types,
3201        non_snake_case,
3202        clippy::pub_underscore_fields,
3203        clippy::style
3204    )]
3205    const _: () = {
3206        use alloy::sol_types as alloy_sol_types;
3207        #[automatically_derived]
3208        impl alloy_sol_types::SolEvent for QuorumCreated {
3209            type DataTuple<'a> = ();
3210            type DataToken<'a> = <Self::DataTuple<
3211                'a,
3212            > as alloy_sol_types::SolType>::Token<'a>;
3213            type TopicList = (
3214                alloy_sol_types::sol_data::FixedBytes<32>,
3215                alloy::sol_types::sol_data::Uint<8>,
3216            );
3217            const SIGNATURE: &'static str = "QuorumCreated(uint8)";
3218            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3219                131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8,
3220                100u8, 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8,
3221                74u8, 192u8, 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
3222            ]);
3223            const ANONYMOUS: bool = false;
3224            #[allow(unused_variables)]
3225            #[inline]
3226            fn new(
3227                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3228                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3229            ) -> Self {
3230                Self { quorumNumber: topics.1 }
3231            }
3232            #[inline]
3233            fn check_signature(
3234                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3235            ) -> alloy_sol_types::Result<()> {
3236                if topics.0 != Self::SIGNATURE_HASH {
3237                    return Err(
3238                        alloy_sol_types::Error::invalid_event_signature_hash(
3239                            Self::SIGNATURE,
3240                            topics.0,
3241                            Self::SIGNATURE_HASH,
3242                        ),
3243                    );
3244                }
3245                Ok(())
3246            }
3247            #[inline]
3248            fn tokenize_body(&self) -> Self::DataToken<'_> {
3249                ()
3250            }
3251            #[inline]
3252            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3253                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3254            }
3255            #[inline]
3256            fn encode_topics_raw(
3257                &self,
3258                out: &mut [alloy_sol_types::abi::token::WordToken],
3259            ) -> alloy_sol_types::Result<()> {
3260                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3261                    return Err(alloy_sol_types::Error::Overrun);
3262                }
3263                out[0usize] = alloy_sol_types::abi::token::WordToken(
3264                    Self::SIGNATURE_HASH,
3265                );
3266                out[1usize] = <alloy::sol_types::sol_data::Uint<
3267                    8,
3268                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3269                Ok(())
3270            }
3271        }
3272        #[automatically_derived]
3273        impl alloy_sol_types::private::IntoLogData for QuorumCreated {
3274            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3275                From::from(self)
3276            }
3277            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3278                From::from(&self)
3279            }
3280        }
3281        #[automatically_derived]
3282        impl From<&QuorumCreated> for alloy_sol_types::private::LogData {
3283            #[inline]
3284            fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData {
3285                alloy_sol_types::SolEvent::encode_log_data(this)
3286            }
3287        }
3288    };
3289    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3290    /**Event with signature `StakeTypeSet(uint8)` and selector `0x7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d`.
3291```solidity
3292event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
3293```*/
3294    #[allow(
3295        non_camel_case_types,
3296        non_snake_case,
3297        clippy::pub_underscore_fields,
3298        clippy::style
3299    )]
3300    #[derive(Clone)]
3301    pub struct StakeTypeSet {
3302        #[allow(missing_docs)]
3303        pub newStakeType: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
3304    }
3305    #[allow(
3306        non_camel_case_types,
3307        non_snake_case,
3308        clippy::pub_underscore_fields,
3309        clippy::style
3310    )]
3311    const _: () = {
3312        use alloy::sol_types as alloy_sol_types;
3313        #[automatically_derived]
3314        impl alloy_sol_types::SolEvent for StakeTypeSet {
3315            type DataTuple<'a> = (IStakeRegistryTypes::StakeType,);
3316            type DataToken<'a> = <Self::DataTuple<
3317                'a,
3318            > as alloy_sol_types::SolType>::Token<'a>;
3319            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3320            const SIGNATURE: &'static str = "StakeTypeSet(uint8)";
3321            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3322                124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8,
3323                226u8, 88u8, 25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8,
3324                67u8, 66u8, 59u8, 74u8, 133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
3325            ]);
3326            const ANONYMOUS: bool = false;
3327            #[allow(unused_variables)]
3328            #[inline]
3329            fn new(
3330                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3331                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3332            ) -> Self {
3333                Self { newStakeType: data.0 }
3334            }
3335            #[inline]
3336            fn check_signature(
3337                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3338            ) -> alloy_sol_types::Result<()> {
3339                if topics.0 != Self::SIGNATURE_HASH {
3340                    return Err(
3341                        alloy_sol_types::Error::invalid_event_signature_hash(
3342                            Self::SIGNATURE,
3343                            topics.0,
3344                            Self::SIGNATURE_HASH,
3345                        ),
3346                    );
3347                }
3348                Ok(())
3349            }
3350            #[inline]
3351            fn tokenize_body(&self) -> Self::DataToken<'_> {
3352                (
3353                    <IStakeRegistryTypes::StakeType as alloy_sol_types::SolType>::tokenize(
3354                        &self.newStakeType,
3355                    ),
3356                )
3357            }
3358            #[inline]
3359            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3360                (Self::SIGNATURE_HASH.into(),)
3361            }
3362            #[inline]
3363            fn encode_topics_raw(
3364                &self,
3365                out: &mut [alloy_sol_types::abi::token::WordToken],
3366            ) -> alloy_sol_types::Result<()> {
3367                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3368                    return Err(alloy_sol_types::Error::Overrun);
3369                }
3370                out[0usize] = alloy_sol_types::abi::token::WordToken(
3371                    Self::SIGNATURE_HASH,
3372                );
3373                Ok(())
3374            }
3375        }
3376        #[automatically_derived]
3377        impl alloy_sol_types::private::IntoLogData for StakeTypeSet {
3378            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3379                From::from(self)
3380            }
3381            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3382                From::from(&self)
3383            }
3384        }
3385        #[automatically_derived]
3386        impl From<&StakeTypeSet> for alloy_sol_types::private::LogData {
3387            #[inline]
3388            fn from(this: &StakeTypeSet) -> alloy_sol_types::private::LogData {
3389                alloy_sol_types::SolEvent::encode_log_data(this)
3390            }
3391        }
3392    };
3393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3394    /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`.
3395```solidity
3396event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
3397```*/
3398    #[allow(
3399        non_camel_case_types,
3400        non_snake_case,
3401        clippy::pub_underscore_fields,
3402        clippy::style
3403    )]
3404    #[derive(Clone)]
3405    pub struct StrategyAddedToQuorum {
3406        #[allow(missing_docs)]
3407        pub quorumNumber: u8,
3408        #[allow(missing_docs)]
3409        pub strategy: alloy::sol_types::private::Address,
3410    }
3411    #[allow(
3412        non_camel_case_types,
3413        non_snake_case,
3414        clippy::pub_underscore_fields,
3415        clippy::style
3416    )]
3417    const _: () = {
3418        use alloy::sol_types as alloy_sol_types;
3419        #[automatically_derived]
3420        impl alloy_sol_types::SolEvent for StrategyAddedToQuorum {
3421            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3422            type DataToken<'a> = <Self::DataTuple<
3423                'a,
3424            > as alloy_sol_types::SolType>::Token<'a>;
3425            type TopicList = (
3426                alloy_sol_types::sol_data::FixedBytes<32>,
3427                alloy::sol_types::sol_data::Uint<8>,
3428            );
3429            const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)";
3430            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3431                16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8,
3432                69u8, 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8,
3433                19u8, 211u8, 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
3434            ]);
3435            const ANONYMOUS: bool = false;
3436            #[allow(unused_variables)]
3437            #[inline]
3438            fn new(
3439                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3440                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3441            ) -> Self {
3442                Self {
3443                    quorumNumber: topics.1,
3444                    strategy: data.0,
3445                }
3446            }
3447            #[inline]
3448            fn check_signature(
3449                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3450            ) -> alloy_sol_types::Result<()> {
3451                if topics.0 != Self::SIGNATURE_HASH {
3452                    return Err(
3453                        alloy_sol_types::Error::invalid_event_signature_hash(
3454                            Self::SIGNATURE,
3455                            topics.0,
3456                            Self::SIGNATURE_HASH,
3457                        ),
3458                    );
3459                }
3460                Ok(())
3461            }
3462            #[inline]
3463            fn tokenize_body(&self) -> Self::DataToken<'_> {
3464                (
3465                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3466                        &self.strategy,
3467                    ),
3468                )
3469            }
3470            #[inline]
3471            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3472                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3473            }
3474            #[inline]
3475            fn encode_topics_raw(
3476                &self,
3477                out: &mut [alloy_sol_types::abi::token::WordToken],
3478            ) -> alloy_sol_types::Result<()> {
3479                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3480                    return Err(alloy_sol_types::Error::Overrun);
3481                }
3482                out[0usize] = alloy_sol_types::abi::token::WordToken(
3483                    Self::SIGNATURE_HASH,
3484                );
3485                out[1usize] = <alloy::sol_types::sol_data::Uint<
3486                    8,
3487                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3488                Ok(())
3489            }
3490        }
3491        #[automatically_derived]
3492        impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum {
3493            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3494                From::from(self)
3495            }
3496            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3497                From::from(&self)
3498            }
3499        }
3500        #[automatically_derived]
3501        impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData {
3502            #[inline]
3503            fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData {
3504                alloy_sol_types::SolEvent::encode_log_data(this)
3505            }
3506        }
3507    };
3508    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3509    /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`.
3510```solidity
3511event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
3512```*/
3513    #[allow(
3514        non_camel_case_types,
3515        non_snake_case,
3516        clippy::pub_underscore_fields,
3517        clippy::style
3518    )]
3519    #[derive(Clone)]
3520    pub struct StrategyMultiplierUpdated {
3521        #[allow(missing_docs)]
3522        pub quorumNumber: u8,
3523        #[allow(missing_docs)]
3524        pub strategy: alloy::sol_types::private::Address,
3525        #[allow(missing_docs)]
3526        pub multiplier: alloy::sol_types::private::primitives::aliases::U256,
3527    }
3528    #[allow(
3529        non_camel_case_types,
3530        non_snake_case,
3531        clippy::pub_underscore_fields,
3532        clippy::style
3533    )]
3534    const _: () = {
3535        use alloy::sol_types as alloy_sol_types;
3536        #[automatically_derived]
3537        impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated {
3538            type DataTuple<'a> = (
3539                alloy::sol_types::sol_data::Address,
3540                alloy::sol_types::sol_data::Uint<256>,
3541            );
3542            type DataToken<'a> = <Self::DataTuple<
3543                'a,
3544            > as alloy_sol_types::SolType>::Token<'a>;
3545            type TopicList = (
3546                alloy_sol_types::sol_data::FixedBytes<32>,
3547                alloy::sol_types::sol_data::Uint<8>,
3548            );
3549            const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)";
3550            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3551                17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8,
3552                110u8, 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8,
3553                205u8, 22u8, 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
3554            ]);
3555            const ANONYMOUS: bool = false;
3556            #[allow(unused_variables)]
3557            #[inline]
3558            fn new(
3559                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3560                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3561            ) -> Self {
3562                Self {
3563                    quorumNumber: topics.1,
3564                    strategy: data.0,
3565                    multiplier: data.1,
3566                }
3567            }
3568            #[inline]
3569            fn check_signature(
3570                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3571            ) -> alloy_sol_types::Result<()> {
3572                if topics.0 != Self::SIGNATURE_HASH {
3573                    return Err(
3574                        alloy_sol_types::Error::invalid_event_signature_hash(
3575                            Self::SIGNATURE,
3576                            topics.0,
3577                            Self::SIGNATURE_HASH,
3578                        ),
3579                    );
3580                }
3581                Ok(())
3582            }
3583            #[inline]
3584            fn tokenize_body(&self) -> Self::DataToken<'_> {
3585                (
3586                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3587                        &self.strategy,
3588                    ),
3589                    <alloy::sol_types::sol_data::Uint<
3590                        256,
3591                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
3592                )
3593            }
3594            #[inline]
3595            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3596                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3597            }
3598            #[inline]
3599            fn encode_topics_raw(
3600                &self,
3601                out: &mut [alloy_sol_types::abi::token::WordToken],
3602            ) -> alloy_sol_types::Result<()> {
3603                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3604                    return Err(alloy_sol_types::Error::Overrun);
3605                }
3606                out[0usize] = alloy_sol_types::abi::token::WordToken(
3607                    Self::SIGNATURE_HASH,
3608                );
3609                out[1usize] = <alloy::sol_types::sol_data::Uint<
3610                    8,
3611                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3612                Ok(())
3613            }
3614        }
3615        #[automatically_derived]
3616        impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated {
3617            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3618                From::from(self)
3619            }
3620            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3621                From::from(&self)
3622            }
3623        }
3624        #[automatically_derived]
3625        impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData {
3626            #[inline]
3627            fn from(
3628                this: &StrategyMultiplierUpdated,
3629            ) -> alloy_sol_types::private::LogData {
3630                alloy_sol_types::SolEvent::encode_log_data(this)
3631            }
3632        }
3633    };
3634    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3635    /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`.
3636```solidity
3637event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
3638```*/
3639    #[allow(
3640        non_camel_case_types,
3641        non_snake_case,
3642        clippy::pub_underscore_fields,
3643        clippy::style
3644    )]
3645    #[derive(Clone)]
3646    pub struct StrategyRemovedFromQuorum {
3647        #[allow(missing_docs)]
3648        pub quorumNumber: u8,
3649        #[allow(missing_docs)]
3650        pub strategy: alloy::sol_types::private::Address,
3651    }
3652    #[allow(
3653        non_camel_case_types,
3654        non_snake_case,
3655        clippy::pub_underscore_fields,
3656        clippy::style
3657    )]
3658    const _: () = {
3659        use alloy::sol_types as alloy_sol_types;
3660        #[automatically_derived]
3661        impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum {
3662            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3663            type DataToken<'a> = <Self::DataTuple<
3664                'a,
3665            > as alloy_sol_types::SolType>::Token<'a>;
3666            type TopicList = (
3667                alloy_sol_types::sol_data::FixedBytes<32>,
3668                alloy::sol_types::sol_data::Uint<8>,
3669            );
3670            const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)";
3671            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3672                49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8,
3673                207u8, 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8,
3674                248u8, 211u8, 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
3675            ]);
3676            const ANONYMOUS: bool = false;
3677            #[allow(unused_variables)]
3678            #[inline]
3679            fn new(
3680                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3681                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3682            ) -> Self {
3683                Self {
3684                    quorumNumber: topics.1,
3685                    strategy: data.0,
3686                }
3687            }
3688            #[inline]
3689            fn check_signature(
3690                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3691            ) -> alloy_sol_types::Result<()> {
3692                if topics.0 != Self::SIGNATURE_HASH {
3693                    return Err(
3694                        alloy_sol_types::Error::invalid_event_signature_hash(
3695                            Self::SIGNATURE,
3696                            topics.0,
3697                            Self::SIGNATURE_HASH,
3698                        ),
3699                    );
3700                }
3701                Ok(())
3702            }
3703            #[inline]
3704            fn tokenize_body(&self) -> Self::DataToken<'_> {
3705                (
3706                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3707                        &self.strategy,
3708                    ),
3709                )
3710            }
3711            #[inline]
3712            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3713                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3714            }
3715            #[inline]
3716            fn encode_topics_raw(
3717                &self,
3718                out: &mut [alloy_sol_types::abi::token::WordToken],
3719            ) -> alloy_sol_types::Result<()> {
3720                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3721                    return Err(alloy_sol_types::Error::Overrun);
3722                }
3723                out[0usize] = alloy_sol_types::abi::token::WordToken(
3724                    Self::SIGNATURE_HASH,
3725                );
3726                out[1usize] = <alloy::sol_types::sol_data::Uint<
3727                    8,
3728                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3729                Ok(())
3730            }
3731        }
3732        #[automatically_derived]
3733        impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum {
3734            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3735                From::from(self)
3736            }
3737            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3738                From::from(&self)
3739            }
3740        }
3741        #[automatically_derived]
3742        impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData {
3743            #[inline]
3744            fn from(
3745                this: &StrategyRemovedFromQuorum,
3746            ) -> alloy_sol_types::private::LogData {
3747                alloy_sol_types::SolEvent::encode_log_data(this)
3748            }
3749        }
3750    };
3751    /**Constructor`.
3752```solidity
3753constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
3754```*/
3755    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3756    #[derive(Clone)]
3757    pub struct constructorCall {
3758        #[allow(missing_docs)]
3759        pub _slashingRegistryCoordinator: alloy::sol_types::private::Address,
3760        #[allow(missing_docs)]
3761        pub _delegationManager: alloy::sol_types::private::Address,
3762        #[allow(missing_docs)]
3763        pub _avsDirectory: alloy::sol_types::private::Address,
3764        #[allow(missing_docs)]
3765        pub _allocationManager: alloy::sol_types::private::Address,
3766    }
3767    const _: () = {
3768        use alloy::sol_types as alloy_sol_types;
3769        {
3770            #[doc(hidden)]
3771            type UnderlyingSolTuple<'a> = (
3772                alloy::sol_types::sol_data::Address,
3773                alloy::sol_types::sol_data::Address,
3774                alloy::sol_types::sol_data::Address,
3775                alloy::sol_types::sol_data::Address,
3776            );
3777            #[doc(hidden)]
3778            type UnderlyingRustTuple<'a> = (
3779                alloy::sol_types::private::Address,
3780                alloy::sol_types::private::Address,
3781                alloy::sol_types::private::Address,
3782                alloy::sol_types::private::Address,
3783            );
3784            #[cfg(test)]
3785            #[allow(dead_code, unreachable_patterns)]
3786            fn _type_assertion(
3787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3788            ) {
3789                match _t {
3790                    alloy_sol_types::private::AssertTypeEq::<
3791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3792                    >(_) => {}
3793                }
3794            }
3795            #[automatically_derived]
3796            #[doc(hidden)]
3797            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3798                fn from(value: constructorCall) -> Self {
3799                    (
3800                        value._slashingRegistryCoordinator,
3801                        value._delegationManager,
3802                        value._avsDirectory,
3803                        value._allocationManager,
3804                    )
3805                }
3806            }
3807            #[automatically_derived]
3808            #[doc(hidden)]
3809            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3811                    Self {
3812                        _slashingRegistryCoordinator: tuple.0,
3813                        _delegationManager: tuple.1,
3814                        _avsDirectory: tuple.2,
3815                        _allocationManager: tuple.3,
3816                    }
3817                }
3818            }
3819        }
3820        #[automatically_derived]
3821        impl alloy_sol_types::SolConstructor for constructorCall {
3822            type Parameters<'a> = (
3823                alloy::sol_types::sol_data::Address,
3824                alloy::sol_types::sol_data::Address,
3825                alloy::sol_types::sol_data::Address,
3826                alloy::sol_types::sol_data::Address,
3827            );
3828            type Token<'a> = <Self::Parameters<
3829                'a,
3830            > as alloy_sol_types::SolType>::Token<'a>;
3831            #[inline]
3832            fn new<'a>(
3833                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3834            ) -> Self {
3835                tuple.into()
3836            }
3837            #[inline]
3838            fn tokenize(&self) -> Self::Token<'_> {
3839                (
3840                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3841                        &self._slashingRegistryCoordinator,
3842                    ),
3843                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3844                        &self._delegationManager,
3845                    ),
3846                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3847                        &self._avsDirectory,
3848                    ),
3849                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3850                        &self._allocationManager,
3851                    ),
3852                )
3853            }
3854        }
3855    };
3856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3857    /**Function with signature `MAX_WEIGHING_FUNCTION_LENGTH()` and selector `0x7c172347`.
3858```solidity
3859function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
3860```*/
3861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3862    #[derive(Clone)]
3863    pub struct MAX_WEIGHING_FUNCTION_LENGTHCall {}
3864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3865    ///Container type for the return parameters of the [`MAX_WEIGHING_FUNCTION_LENGTH()`](MAX_WEIGHING_FUNCTION_LENGTHCall) function.
3866    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3867    #[derive(Clone)]
3868    pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn {
3869        #[allow(missing_docs)]
3870        pub _0: u8,
3871    }
3872    #[allow(
3873        non_camel_case_types,
3874        non_snake_case,
3875        clippy::pub_underscore_fields,
3876        clippy::style
3877    )]
3878    const _: () = {
3879        use alloy::sol_types as alloy_sol_types;
3880        {
3881            #[doc(hidden)]
3882            type UnderlyingSolTuple<'a> = ();
3883            #[doc(hidden)]
3884            type UnderlyingRustTuple<'a> = ();
3885            #[cfg(test)]
3886            #[allow(dead_code, unreachable_patterns)]
3887            fn _type_assertion(
3888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3889            ) {
3890                match _t {
3891                    alloy_sol_types::private::AssertTypeEq::<
3892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3893                    >(_) => {}
3894                }
3895            }
3896            #[automatically_derived]
3897            #[doc(hidden)]
3898            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHCall>
3899            for UnderlyingRustTuple<'_> {
3900                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHCall) -> Self {
3901                    ()
3902                }
3903            }
3904            #[automatically_derived]
3905            #[doc(hidden)]
3906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3907            for MAX_WEIGHING_FUNCTION_LENGTHCall {
3908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3909                    Self {}
3910                }
3911            }
3912        }
3913        {
3914            #[doc(hidden)]
3915            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
3916            #[doc(hidden)]
3917            type UnderlyingRustTuple<'a> = (u8,);
3918            #[cfg(test)]
3919            #[allow(dead_code, unreachable_patterns)]
3920            fn _type_assertion(
3921                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3922            ) {
3923                match _t {
3924                    alloy_sol_types::private::AssertTypeEq::<
3925                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3926                    >(_) => {}
3927                }
3928            }
3929            #[automatically_derived]
3930            #[doc(hidden)]
3931            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHReturn>
3932            for UnderlyingRustTuple<'_> {
3933                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHReturn) -> Self {
3934                    (value._0,)
3935                }
3936            }
3937            #[automatically_derived]
3938            #[doc(hidden)]
3939            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3940            for MAX_WEIGHING_FUNCTION_LENGTHReturn {
3941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3942                    Self { _0: tuple.0 }
3943                }
3944            }
3945        }
3946        #[automatically_derived]
3947        impl alloy_sol_types::SolCall for MAX_WEIGHING_FUNCTION_LENGTHCall {
3948            type Parameters<'a> = ();
3949            type Token<'a> = <Self::Parameters<
3950                'a,
3951            > as alloy_sol_types::SolType>::Token<'a>;
3952            type Return = MAX_WEIGHING_FUNCTION_LENGTHReturn;
3953            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
3954            type ReturnToken<'a> = <Self::ReturnTuple<
3955                'a,
3956            > as alloy_sol_types::SolType>::Token<'a>;
3957            const SIGNATURE: &'static str = "MAX_WEIGHING_FUNCTION_LENGTH()";
3958            const SELECTOR: [u8; 4] = [124u8, 23u8, 35u8, 71u8];
3959            #[inline]
3960            fn new<'a>(
3961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3962            ) -> Self {
3963                tuple.into()
3964            }
3965            #[inline]
3966            fn tokenize(&self) -> Self::Token<'_> {
3967                ()
3968            }
3969            #[inline]
3970            fn abi_decode_returns(
3971                data: &[u8],
3972                validate: bool,
3973            ) -> alloy_sol_types::Result<Self::Return> {
3974                <Self::ReturnTuple<
3975                    '_,
3976                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
3977                    .map(Into::into)
3978            }
3979        }
3980    };
3981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3982    /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`.
3983```solidity
3984function WEIGHTING_DIVISOR() external view returns (uint256);
3985```*/
3986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3987    #[derive(Clone)]
3988    pub struct WEIGHTING_DIVISORCall {}
3989    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3990    ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function.
3991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3992    #[derive(Clone)]
3993    pub struct WEIGHTING_DIVISORReturn {
3994        #[allow(missing_docs)]
3995        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3996    }
3997    #[allow(
3998        non_camel_case_types,
3999        non_snake_case,
4000        clippy::pub_underscore_fields,
4001        clippy::style
4002    )]
4003    const _: () = {
4004        use alloy::sol_types as alloy_sol_types;
4005        {
4006            #[doc(hidden)]
4007            type UnderlyingSolTuple<'a> = ();
4008            #[doc(hidden)]
4009            type UnderlyingRustTuple<'a> = ();
4010            #[cfg(test)]
4011            #[allow(dead_code, unreachable_patterns)]
4012            fn _type_assertion(
4013                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4014            ) {
4015                match _t {
4016                    alloy_sol_types::private::AssertTypeEq::<
4017                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4018                    >(_) => {}
4019                }
4020            }
4021            #[automatically_derived]
4022            #[doc(hidden)]
4023            impl ::core::convert::From<WEIGHTING_DIVISORCall>
4024            for UnderlyingRustTuple<'_> {
4025                fn from(value: WEIGHTING_DIVISORCall) -> Self {
4026                    ()
4027                }
4028            }
4029            #[automatically_derived]
4030            #[doc(hidden)]
4031            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4032            for WEIGHTING_DIVISORCall {
4033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4034                    Self {}
4035                }
4036            }
4037        }
4038        {
4039            #[doc(hidden)]
4040            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4041            #[doc(hidden)]
4042            type UnderlyingRustTuple<'a> = (
4043                alloy::sol_types::private::primitives::aliases::U256,
4044            );
4045            #[cfg(test)]
4046            #[allow(dead_code, unreachable_patterns)]
4047            fn _type_assertion(
4048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4049            ) {
4050                match _t {
4051                    alloy_sol_types::private::AssertTypeEq::<
4052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4053                    >(_) => {}
4054                }
4055            }
4056            #[automatically_derived]
4057            #[doc(hidden)]
4058            impl ::core::convert::From<WEIGHTING_DIVISORReturn>
4059            for UnderlyingRustTuple<'_> {
4060                fn from(value: WEIGHTING_DIVISORReturn) -> Self {
4061                    (value._0,)
4062                }
4063            }
4064            #[automatically_derived]
4065            #[doc(hidden)]
4066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4067            for WEIGHTING_DIVISORReturn {
4068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4069                    Self { _0: tuple.0 }
4070                }
4071            }
4072        }
4073        #[automatically_derived]
4074        impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall {
4075            type Parameters<'a> = ();
4076            type Token<'a> = <Self::Parameters<
4077                'a,
4078            > as alloy_sol_types::SolType>::Token<'a>;
4079            type Return = WEIGHTING_DIVISORReturn;
4080            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4081            type ReturnToken<'a> = <Self::ReturnTuple<
4082                'a,
4083            > as alloy_sol_types::SolType>::Token<'a>;
4084            const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()";
4085            const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8];
4086            #[inline]
4087            fn new<'a>(
4088                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4089            ) -> Self {
4090                tuple.into()
4091            }
4092            #[inline]
4093            fn tokenize(&self) -> Self::Token<'_> {
4094                ()
4095            }
4096            #[inline]
4097            fn abi_decode_returns(
4098                data: &[u8],
4099                validate: bool,
4100            ) -> alloy_sol_types::Result<Self::Return> {
4101                <Self::ReturnTuple<
4102                    '_,
4103                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4104                    .map(Into::into)
4105            }
4106        }
4107    };
4108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4109    /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`.
4110```solidity
4111function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
4112```*/
4113    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4114    #[derive(Clone)]
4115    pub struct addStrategiesCall {
4116        #[allow(missing_docs)]
4117        pub quorumNumber: u8,
4118        #[allow(missing_docs)]
4119        pub _strategyParams: alloy::sol_types::private::Vec<
4120            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4121        >,
4122    }
4123    ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function.
4124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4125    #[derive(Clone)]
4126    pub struct addStrategiesReturn {}
4127    #[allow(
4128        non_camel_case_types,
4129        non_snake_case,
4130        clippy::pub_underscore_fields,
4131        clippy::style
4132    )]
4133    const _: () = {
4134        use alloy::sol_types as alloy_sol_types;
4135        {
4136            #[doc(hidden)]
4137            type UnderlyingSolTuple<'a> = (
4138                alloy::sol_types::sol_data::Uint<8>,
4139                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4140            );
4141            #[doc(hidden)]
4142            type UnderlyingRustTuple<'a> = (
4143                u8,
4144                alloy::sol_types::private::Vec<
4145                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4146                >,
4147            );
4148            #[cfg(test)]
4149            #[allow(dead_code, unreachable_patterns)]
4150            fn _type_assertion(
4151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4152            ) {
4153                match _t {
4154                    alloy_sol_types::private::AssertTypeEq::<
4155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4156                    >(_) => {}
4157                }
4158            }
4159            #[automatically_derived]
4160            #[doc(hidden)]
4161            impl ::core::convert::From<addStrategiesCall> for UnderlyingRustTuple<'_> {
4162                fn from(value: addStrategiesCall) -> Self {
4163                    (value.quorumNumber, value._strategyParams)
4164                }
4165            }
4166            #[automatically_derived]
4167            #[doc(hidden)]
4168            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesCall {
4169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4170                    Self {
4171                        quorumNumber: tuple.0,
4172                        _strategyParams: tuple.1,
4173                    }
4174                }
4175            }
4176        }
4177        {
4178            #[doc(hidden)]
4179            type UnderlyingSolTuple<'a> = ();
4180            #[doc(hidden)]
4181            type UnderlyingRustTuple<'a> = ();
4182            #[cfg(test)]
4183            #[allow(dead_code, unreachable_patterns)]
4184            fn _type_assertion(
4185                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4186            ) {
4187                match _t {
4188                    alloy_sol_types::private::AssertTypeEq::<
4189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4190                    >(_) => {}
4191                }
4192            }
4193            #[automatically_derived]
4194            #[doc(hidden)]
4195            impl ::core::convert::From<addStrategiesReturn> for UnderlyingRustTuple<'_> {
4196                fn from(value: addStrategiesReturn) -> Self {
4197                    ()
4198                }
4199            }
4200            #[automatically_derived]
4201            #[doc(hidden)]
4202            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesReturn {
4203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4204                    Self {}
4205                }
4206            }
4207        }
4208        #[automatically_derived]
4209        impl alloy_sol_types::SolCall for addStrategiesCall {
4210            type Parameters<'a> = (
4211                alloy::sol_types::sol_data::Uint<8>,
4212                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4213            );
4214            type Token<'a> = <Self::Parameters<
4215                'a,
4216            > as alloy_sol_types::SolType>::Token<'a>;
4217            type Return = addStrategiesReturn;
4218            type ReturnTuple<'a> = ();
4219            type ReturnToken<'a> = <Self::ReturnTuple<
4220                'a,
4221            > as alloy_sol_types::SolType>::Token<'a>;
4222            const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])";
4223            const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8];
4224            #[inline]
4225            fn new<'a>(
4226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4227            ) -> Self {
4228                tuple.into()
4229            }
4230            #[inline]
4231            fn tokenize(&self) -> Self::Token<'_> {
4232                (
4233                    <alloy::sol_types::sol_data::Uint<
4234                        8,
4235                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
4236                    <alloy::sol_types::sol_data::Array<
4237                        IStakeRegistryTypes::StrategyParams,
4238                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
4239                )
4240            }
4241            #[inline]
4242            fn abi_decode_returns(
4243                data: &[u8],
4244                validate: bool,
4245            ) -> alloy_sol_types::Result<Self::Return> {
4246                <Self::ReturnTuple<
4247                    '_,
4248                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4249                    .map(Into::into)
4250            }
4251        }
4252    };
4253    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4254    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
4255```solidity
4256function allocationManager() external view returns (address);
4257```*/
4258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4259    #[derive(Clone)]
4260    pub struct allocationManagerCall {}
4261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4262    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
4263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4264    #[derive(Clone)]
4265    pub struct allocationManagerReturn {
4266        #[allow(missing_docs)]
4267        pub _0: alloy::sol_types::private::Address,
4268    }
4269    #[allow(
4270        non_camel_case_types,
4271        non_snake_case,
4272        clippy::pub_underscore_fields,
4273        clippy::style
4274    )]
4275    const _: () = {
4276        use alloy::sol_types as alloy_sol_types;
4277        {
4278            #[doc(hidden)]
4279            type UnderlyingSolTuple<'a> = ();
4280            #[doc(hidden)]
4281            type UnderlyingRustTuple<'a> = ();
4282            #[cfg(test)]
4283            #[allow(dead_code, unreachable_patterns)]
4284            fn _type_assertion(
4285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4286            ) {
4287                match _t {
4288                    alloy_sol_types::private::AssertTypeEq::<
4289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4290                    >(_) => {}
4291                }
4292            }
4293            #[automatically_derived]
4294            #[doc(hidden)]
4295            impl ::core::convert::From<allocationManagerCall>
4296            for UnderlyingRustTuple<'_> {
4297                fn from(value: allocationManagerCall) -> Self {
4298                    ()
4299                }
4300            }
4301            #[automatically_derived]
4302            #[doc(hidden)]
4303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4304            for allocationManagerCall {
4305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4306                    Self {}
4307                }
4308            }
4309        }
4310        {
4311            #[doc(hidden)]
4312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4313            #[doc(hidden)]
4314            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4315            #[cfg(test)]
4316            #[allow(dead_code, unreachable_patterns)]
4317            fn _type_assertion(
4318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4319            ) {
4320                match _t {
4321                    alloy_sol_types::private::AssertTypeEq::<
4322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4323                    >(_) => {}
4324                }
4325            }
4326            #[automatically_derived]
4327            #[doc(hidden)]
4328            impl ::core::convert::From<allocationManagerReturn>
4329            for UnderlyingRustTuple<'_> {
4330                fn from(value: allocationManagerReturn) -> Self {
4331                    (value._0,)
4332                }
4333            }
4334            #[automatically_derived]
4335            #[doc(hidden)]
4336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4337            for allocationManagerReturn {
4338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4339                    Self { _0: tuple.0 }
4340                }
4341            }
4342        }
4343        #[automatically_derived]
4344        impl alloy_sol_types::SolCall for allocationManagerCall {
4345            type Parameters<'a> = ();
4346            type Token<'a> = <Self::Parameters<
4347                'a,
4348            > as alloy_sol_types::SolType>::Token<'a>;
4349            type Return = allocationManagerReturn;
4350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4351            type ReturnToken<'a> = <Self::ReturnTuple<
4352                'a,
4353            > as alloy_sol_types::SolType>::Token<'a>;
4354            const SIGNATURE: &'static str = "allocationManager()";
4355            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
4356            #[inline]
4357            fn new<'a>(
4358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4359            ) -> Self {
4360                tuple.into()
4361            }
4362            #[inline]
4363            fn tokenize(&self) -> Self::Token<'_> {
4364                ()
4365            }
4366            #[inline]
4367            fn abi_decode_returns(
4368                data: &[u8],
4369                validate: bool,
4370            ) -> alloy_sol_types::Result<Self::Return> {
4371                <Self::ReturnTuple<
4372                    '_,
4373                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4374                    .map(Into::into)
4375            }
4376        }
4377    };
4378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4379    /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`.
4380```solidity
4381function avsDirectory() external view returns (address);
4382```*/
4383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4384    #[derive(Clone)]
4385    pub struct avsDirectoryCall {}
4386    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4387    ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function.
4388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4389    #[derive(Clone)]
4390    pub struct avsDirectoryReturn {
4391        #[allow(missing_docs)]
4392        pub _0: alloy::sol_types::private::Address,
4393    }
4394    #[allow(
4395        non_camel_case_types,
4396        non_snake_case,
4397        clippy::pub_underscore_fields,
4398        clippy::style
4399    )]
4400    const _: () = {
4401        use alloy::sol_types as alloy_sol_types;
4402        {
4403            #[doc(hidden)]
4404            type UnderlyingSolTuple<'a> = ();
4405            #[doc(hidden)]
4406            type UnderlyingRustTuple<'a> = ();
4407            #[cfg(test)]
4408            #[allow(dead_code, unreachable_patterns)]
4409            fn _type_assertion(
4410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4411            ) {
4412                match _t {
4413                    alloy_sol_types::private::AssertTypeEq::<
4414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4415                    >(_) => {}
4416                }
4417            }
4418            #[automatically_derived]
4419            #[doc(hidden)]
4420            impl ::core::convert::From<avsDirectoryCall> for UnderlyingRustTuple<'_> {
4421                fn from(value: avsDirectoryCall) -> Self {
4422                    ()
4423                }
4424            }
4425            #[automatically_derived]
4426            #[doc(hidden)]
4427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryCall {
4428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4429                    Self {}
4430                }
4431            }
4432        }
4433        {
4434            #[doc(hidden)]
4435            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4436            #[doc(hidden)]
4437            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4438            #[cfg(test)]
4439            #[allow(dead_code, unreachable_patterns)]
4440            fn _type_assertion(
4441                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4442            ) {
4443                match _t {
4444                    alloy_sol_types::private::AssertTypeEq::<
4445                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4446                    >(_) => {}
4447                }
4448            }
4449            #[automatically_derived]
4450            #[doc(hidden)]
4451            impl ::core::convert::From<avsDirectoryReturn> for UnderlyingRustTuple<'_> {
4452                fn from(value: avsDirectoryReturn) -> Self {
4453                    (value._0,)
4454                }
4455            }
4456            #[automatically_derived]
4457            #[doc(hidden)]
4458            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryReturn {
4459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4460                    Self { _0: tuple.0 }
4461                }
4462            }
4463        }
4464        #[automatically_derived]
4465        impl alloy_sol_types::SolCall for avsDirectoryCall {
4466            type Parameters<'a> = ();
4467            type Token<'a> = <Self::Parameters<
4468                'a,
4469            > as alloy_sol_types::SolType>::Token<'a>;
4470            type Return = avsDirectoryReturn;
4471            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4472            type ReturnToken<'a> = <Self::ReturnTuple<
4473                'a,
4474            > as alloy_sol_types::SolType>::Token<'a>;
4475            const SIGNATURE: &'static str = "avsDirectory()";
4476            const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8];
4477            #[inline]
4478            fn new<'a>(
4479                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4480            ) -> Self {
4481                tuple.into()
4482            }
4483            #[inline]
4484            fn tokenize(&self) -> Self::Token<'_> {
4485                ()
4486            }
4487            #[inline]
4488            fn abi_decode_returns(
4489                data: &[u8],
4490                validate: bool,
4491            ) -> alloy_sol_types::Result<Self::Return> {
4492                <Self::ReturnTuple<
4493                    '_,
4494                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4495                    .map(Into::into)
4496            }
4497        }
4498    };
4499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4500    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4501```solidity
4502function delegation() external view returns (address);
4503```*/
4504    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4505    #[derive(Clone)]
4506    pub struct delegationCall {}
4507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4508    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4509    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4510    #[derive(Clone)]
4511    pub struct delegationReturn {
4512        #[allow(missing_docs)]
4513        pub _0: alloy::sol_types::private::Address,
4514    }
4515    #[allow(
4516        non_camel_case_types,
4517        non_snake_case,
4518        clippy::pub_underscore_fields,
4519        clippy::style
4520    )]
4521    const _: () = {
4522        use alloy::sol_types as alloy_sol_types;
4523        {
4524            #[doc(hidden)]
4525            type UnderlyingSolTuple<'a> = ();
4526            #[doc(hidden)]
4527            type UnderlyingRustTuple<'a> = ();
4528            #[cfg(test)]
4529            #[allow(dead_code, unreachable_patterns)]
4530            fn _type_assertion(
4531                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4532            ) {
4533                match _t {
4534                    alloy_sol_types::private::AssertTypeEq::<
4535                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4536                    >(_) => {}
4537                }
4538            }
4539            #[automatically_derived]
4540            #[doc(hidden)]
4541            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4542                fn from(value: delegationCall) -> Self {
4543                    ()
4544                }
4545            }
4546            #[automatically_derived]
4547            #[doc(hidden)]
4548            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4549                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4550                    Self {}
4551                }
4552            }
4553        }
4554        {
4555            #[doc(hidden)]
4556            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4557            #[doc(hidden)]
4558            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4559            #[cfg(test)]
4560            #[allow(dead_code, unreachable_patterns)]
4561            fn _type_assertion(
4562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4563            ) {
4564                match _t {
4565                    alloy_sol_types::private::AssertTypeEq::<
4566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4567                    >(_) => {}
4568                }
4569            }
4570            #[automatically_derived]
4571            #[doc(hidden)]
4572            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4573                fn from(value: delegationReturn) -> Self {
4574                    (value._0,)
4575                }
4576            }
4577            #[automatically_derived]
4578            #[doc(hidden)]
4579            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4581                    Self { _0: tuple.0 }
4582                }
4583            }
4584        }
4585        #[automatically_derived]
4586        impl alloy_sol_types::SolCall for delegationCall {
4587            type Parameters<'a> = ();
4588            type Token<'a> = <Self::Parameters<
4589                'a,
4590            > as alloy_sol_types::SolType>::Token<'a>;
4591            type Return = delegationReturn;
4592            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4593            type ReturnToken<'a> = <Self::ReturnTuple<
4594                'a,
4595            > as alloy_sol_types::SolType>::Token<'a>;
4596            const SIGNATURE: &'static str = "delegation()";
4597            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4598            #[inline]
4599            fn new<'a>(
4600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4601            ) -> Self {
4602                tuple.into()
4603            }
4604            #[inline]
4605            fn tokenize(&self) -> Self::Token<'_> {
4606                ()
4607            }
4608            #[inline]
4609            fn abi_decode_returns(
4610                data: &[u8],
4611                validate: bool,
4612            ) -> alloy_sol_types::Result<Self::Return> {
4613                <Self::ReturnTuple<
4614                    '_,
4615                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4616                    .map(Into::into)
4617            }
4618        }
4619    };
4620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4621    /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`.
4622```solidity
4623function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
4624```*/
4625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4626    #[derive(Clone)]
4627    pub struct deregisterOperatorCall {
4628        #[allow(missing_docs)]
4629        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
4630        #[allow(missing_docs)]
4631        pub quorumNumbers: alloy::sol_types::private::Bytes,
4632    }
4633    ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function.
4634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4635    #[derive(Clone)]
4636    pub struct deregisterOperatorReturn {}
4637    #[allow(
4638        non_camel_case_types,
4639        non_snake_case,
4640        clippy::pub_underscore_fields,
4641        clippy::style
4642    )]
4643    const _: () = {
4644        use alloy::sol_types as alloy_sol_types;
4645        {
4646            #[doc(hidden)]
4647            type UnderlyingSolTuple<'a> = (
4648                alloy::sol_types::sol_data::FixedBytes<32>,
4649                alloy::sol_types::sol_data::Bytes,
4650            );
4651            #[doc(hidden)]
4652            type UnderlyingRustTuple<'a> = (
4653                alloy::sol_types::private::FixedBytes<32>,
4654                alloy::sol_types::private::Bytes,
4655            );
4656            #[cfg(test)]
4657            #[allow(dead_code, unreachable_patterns)]
4658            fn _type_assertion(
4659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4660            ) {
4661                match _t {
4662                    alloy_sol_types::private::AssertTypeEq::<
4663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4664                    >(_) => {}
4665                }
4666            }
4667            #[automatically_derived]
4668            #[doc(hidden)]
4669            impl ::core::convert::From<deregisterOperatorCall>
4670            for UnderlyingRustTuple<'_> {
4671                fn from(value: deregisterOperatorCall) -> Self {
4672                    (value.operatorId, value.quorumNumbers)
4673                }
4674            }
4675            #[automatically_derived]
4676            #[doc(hidden)]
4677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4678            for deregisterOperatorCall {
4679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4680                    Self {
4681                        operatorId: tuple.0,
4682                        quorumNumbers: tuple.1,
4683                    }
4684                }
4685            }
4686        }
4687        {
4688            #[doc(hidden)]
4689            type UnderlyingSolTuple<'a> = ();
4690            #[doc(hidden)]
4691            type UnderlyingRustTuple<'a> = ();
4692            #[cfg(test)]
4693            #[allow(dead_code, unreachable_patterns)]
4694            fn _type_assertion(
4695                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4696            ) {
4697                match _t {
4698                    alloy_sol_types::private::AssertTypeEq::<
4699                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4700                    >(_) => {}
4701                }
4702            }
4703            #[automatically_derived]
4704            #[doc(hidden)]
4705            impl ::core::convert::From<deregisterOperatorReturn>
4706            for UnderlyingRustTuple<'_> {
4707                fn from(value: deregisterOperatorReturn) -> Self {
4708                    ()
4709                }
4710            }
4711            #[automatically_derived]
4712            #[doc(hidden)]
4713            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4714            for deregisterOperatorReturn {
4715                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4716                    Self {}
4717                }
4718            }
4719        }
4720        #[automatically_derived]
4721        impl alloy_sol_types::SolCall for deregisterOperatorCall {
4722            type Parameters<'a> = (
4723                alloy::sol_types::sol_data::FixedBytes<32>,
4724                alloy::sol_types::sol_data::Bytes,
4725            );
4726            type Token<'a> = <Self::Parameters<
4727                'a,
4728            > as alloy_sol_types::SolType>::Token<'a>;
4729            type Return = deregisterOperatorReturn;
4730            type ReturnTuple<'a> = ();
4731            type ReturnToken<'a> = <Self::ReturnTuple<
4732                'a,
4733            > as alloy_sol_types::SolType>::Token<'a>;
4734            const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)";
4735            const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8];
4736            #[inline]
4737            fn new<'a>(
4738                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4739            ) -> Self {
4740                tuple.into()
4741            }
4742            #[inline]
4743            fn tokenize(&self) -> Self::Token<'_> {
4744                (
4745                    <alloy::sol_types::sol_data::FixedBytes<
4746                        32,
4747                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
4748                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4749                        &self.quorumNumbers,
4750                    ),
4751                )
4752            }
4753            #[inline]
4754            fn abi_decode_returns(
4755                data: &[u8],
4756                validate: bool,
4757            ) -> alloy_sol_types::Result<Self::Return> {
4758                <Self::ReturnTuple<
4759                    '_,
4760                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4761                    .map(Into::into)
4762            }
4763        }
4764    };
4765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4766    /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`.
4767```solidity
4768function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
4769```*/
4770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4771    #[derive(Clone)]
4772    pub struct getCurrentStakeCall {
4773        #[allow(missing_docs)]
4774        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
4775        #[allow(missing_docs)]
4776        pub quorumNumber: u8,
4777    }
4778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4779    ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function.
4780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4781    #[derive(Clone)]
4782    pub struct getCurrentStakeReturn {
4783        #[allow(missing_docs)]
4784        pub _0: alloy::sol_types::private::primitives::aliases::U96,
4785    }
4786    #[allow(
4787        non_camel_case_types,
4788        non_snake_case,
4789        clippy::pub_underscore_fields,
4790        clippy::style
4791    )]
4792    const _: () = {
4793        use alloy::sol_types as alloy_sol_types;
4794        {
4795            #[doc(hidden)]
4796            type UnderlyingSolTuple<'a> = (
4797                alloy::sol_types::sol_data::FixedBytes<32>,
4798                alloy::sol_types::sol_data::Uint<8>,
4799            );
4800            #[doc(hidden)]
4801            type UnderlyingRustTuple<'a> = (
4802                alloy::sol_types::private::FixedBytes<32>,
4803                u8,
4804            );
4805            #[cfg(test)]
4806            #[allow(dead_code, unreachable_patterns)]
4807            fn _type_assertion(
4808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4809            ) {
4810                match _t {
4811                    alloy_sol_types::private::AssertTypeEq::<
4812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4813                    >(_) => {}
4814                }
4815            }
4816            #[automatically_derived]
4817            #[doc(hidden)]
4818            impl ::core::convert::From<getCurrentStakeCall> for UnderlyingRustTuple<'_> {
4819                fn from(value: getCurrentStakeCall) -> Self {
4820                    (value.operatorId, value.quorumNumber)
4821                }
4822            }
4823            #[automatically_derived]
4824            #[doc(hidden)]
4825            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentStakeCall {
4826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4827                    Self {
4828                        operatorId: tuple.0,
4829                        quorumNumber: tuple.1,
4830                    }
4831                }
4832            }
4833        }
4834        {
4835            #[doc(hidden)]
4836            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
4837            #[doc(hidden)]
4838            type UnderlyingRustTuple<'a> = (
4839                alloy::sol_types::private::primitives::aliases::U96,
4840            );
4841            #[cfg(test)]
4842            #[allow(dead_code, unreachable_patterns)]
4843            fn _type_assertion(
4844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4845            ) {
4846                match _t {
4847                    alloy_sol_types::private::AssertTypeEq::<
4848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4849                    >(_) => {}
4850                }
4851            }
4852            #[automatically_derived]
4853            #[doc(hidden)]
4854            impl ::core::convert::From<getCurrentStakeReturn>
4855            for UnderlyingRustTuple<'_> {
4856                fn from(value: getCurrentStakeReturn) -> Self {
4857                    (value._0,)
4858                }
4859            }
4860            #[automatically_derived]
4861            #[doc(hidden)]
4862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4863            for getCurrentStakeReturn {
4864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4865                    Self { _0: tuple.0 }
4866                }
4867            }
4868        }
4869        #[automatically_derived]
4870        impl alloy_sol_types::SolCall for getCurrentStakeCall {
4871            type Parameters<'a> = (
4872                alloy::sol_types::sol_data::FixedBytes<32>,
4873                alloy::sol_types::sol_data::Uint<8>,
4874            );
4875            type Token<'a> = <Self::Parameters<
4876                'a,
4877            > as alloy_sol_types::SolType>::Token<'a>;
4878            type Return = getCurrentStakeReturn;
4879            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
4880            type ReturnToken<'a> = <Self::ReturnTuple<
4881                'a,
4882            > as alloy_sol_types::SolType>::Token<'a>;
4883            const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)";
4884            const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8];
4885            #[inline]
4886            fn new<'a>(
4887                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4888            ) -> Self {
4889                tuple.into()
4890            }
4891            #[inline]
4892            fn tokenize(&self) -> Self::Token<'_> {
4893                (
4894                    <alloy::sol_types::sol_data::FixedBytes<
4895                        32,
4896                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
4897                    <alloy::sol_types::sol_data::Uint<
4898                        8,
4899                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
4900                )
4901            }
4902            #[inline]
4903            fn abi_decode_returns(
4904                data: &[u8],
4905                validate: bool,
4906            ) -> alloy_sol_types::Result<Self::Return> {
4907                <Self::ReturnTuple<
4908                    '_,
4909                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
4910                    .map(Into::into)
4911            }
4912        }
4913    };
4914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4915    /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`.
4916```solidity
4917function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
4918```*/
4919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4920    #[derive(Clone)]
4921    pub struct getCurrentTotalStakeCall {
4922        #[allow(missing_docs)]
4923        pub quorumNumber: u8,
4924    }
4925    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4926    ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function.
4927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4928    #[derive(Clone)]
4929    pub struct getCurrentTotalStakeReturn {
4930        #[allow(missing_docs)]
4931        pub _0: alloy::sol_types::private::primitives::aliases::U96,
4932    }
4933    #[allow(
4934        non_camel_case_types,
4935        non_snake_case,
4936        clippy::pub_underscore_fields,
4937        clippy::style
4938    )]
4939    const _: () = {
4940        use alloy::sol_types as alloy_sol_types;
4941        {
4942            #[doc(hidden)]
4943            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
4944            #[doc(hidden)]
4945            type UnderlyingRustTuple<'a> = (u8,);
4946            #[cfg(test)]
4947            #[allow(dead_code, unreachable_patterns)]
4948            fn _type_assertion(
4949                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4950            ) {
4951                match _t {
4952                    alloy_sol_types::private::AssertTypeEq::<
4953                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4954                    >(_) => {}
4955                }
4956            }
4957            #[automatically_derived]
4958            #[doc(hidden)]
4959            impl ::core::convert::From<getCurrentTotalStakeCall>
4960            for UnderlyingRustTuple<'_> {
4961                fn from(value: getCurrentTotalStakeCall) -> Self {
4962                    (value.quorumNumber,)
4963                }
4964            }
4965            #[automatically_derived]
4966            #[doc(hidden)]
4967            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4968            for getCurrentTotalStakeCall {
4969                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4970                    Self { quorumNumber: tuple.0 }
4971                }
4972            }
4973        }
4974        {
4975            #[doc(hidden)]
4976            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
4977            #[doc(hidden)]
4978            type UnderlyingRustTuple<'a> = (
4979                alloy::sol_types::private::primitives::aliases::U96,
4980            );
4981            #[cfg(test)]
4982            #[allow(dead_code, unreachable_patterns)]
4983            fn _type_assertion(
4984                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4985            ) {
4986                match _t {
4987                    alloy_sol_types::private::AssertTypeEq::<
4988                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4989                    >(_) => {}
4990                }
4991            }
4992            #[automatically_derived]
4993            #[doc(hidden)]
4994            impl ::core::convert::From<getCurrentTotalStakeReturn>
4995            for UnderlyingRustTuple<'_> {
4996                fn from(value: getCurrentTotalStakeReturn) -> Self {
4997                    (value._0,)
4998                }
4999            }
5000            #[automatically_derived]
5001            #[doc(hidden)]
5002            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5003            for getCurrentTotalStakeReturn {
5004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5005                    Self { _0: tuple.0 }
5006                }
5007            }
5008        }
5009        #[automatically_derived]
5010        impl alloy_sol_types::SolCall for getCurrentTotalStakeCall {
5011            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5012            type Token<'a> = <Self::Parameters<
5013                'a,
5014            > as alloy_sol_types::SolType>::Token<'a>;
5015            type Return = getCurrentTotalStakeReturn;
5016            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5017            type ReturnToken<'a> = <Self::ReturnTuple<
5018                'a,
5019            > as alloy_sol_types::SolType>::Token<'a>;
5020            const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)";
5021            const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8];
5022            #[inline]
5023            fn new<'a>(
5024                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5025            ) -> Self {
5026                tuple.into()
5027            }
5028            #[inline]
5029            fn tokenize(&self) -> Self::Token<'_> {
5030                (
5031                    <alloy::sol_types::sol_data::Uint<
5032                        8,
5033                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5034                )
5035            }
5036            #[inline]
5037            fn abi_decode_returns(
5038                data: &[u8],
5039                validate: bool,
5040            ) -> alloy_sol_types::Result<Self::Return> {
5041                <Self::ReturnTuple<
5042                    '_,
5043                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5044                    .map(Into::into)
5045            }
5046        }
5047    };
5048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5049    /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`.
5050```solidity
5051function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
5052```*/
5053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5054    #[derive(Clone)]
5055    pub struct getLatestStakeUpdateCall {
5056        #[allow(missing_docs)]
5057        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5058        #[allow(missing_docs)]
5059        pub quorumNumber: u8,
5060    }
5061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5062    ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function.
5063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5064    #[derive(Clone)]
5065    pub struct getLatestStakeUpdateReturn {
5066        #[allow(missing_docs)]
5067        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5068    }
5069    #[allow(
5070        non_camel_case_types,
5071        non_snake_case,
5072        clippy::pub_underscore_fields,
5073        clippy::style
5074    )]
5075    const _: () = {
5076        use alloy::sol_types as alloy_sol_types;
5077        {
5078            #[doc(hidden)]
5079            type UnderlyingSolTuple<'a> = (
5080                alloy::sol_types::sol_data::FixedBytes<32>,
5081                alloy::sol_types::sol_data::Uint<8>,
5082            );
5083            #[doc(hidden)]
5084            type UnderlyingRustTuple<'a> = (
5085                alloy::sol_types::private::FixedBytes<32>,
5086                u8,
5087            );
5088            #[cfg(test)]
5089            #[allow(dead_code, unreachable_patterns)]
5090            fn _type_assertion(
5091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5092            ) {
5093                match _t {
5094                    alloy_sol_types::private::AssertTypeEq::<
5095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5096                    >(_) => {}
5097                }
5098            }
5099            #[automatically_derived]
5100            #[doc(hidden)]
5101            impl ::core::convert::From<getLatestStakeUpdateCall>
5102            for UnderlyingRustTuple<'_> {
5103                fn from(value: getLatestStakeUpdateCall) -> Self {
5104                    (value.operatorId, value.quorumNumber)
5105                }
5106            }
5107            #[automatically_derived]
5108            #[doc(hidden)]
5109            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5110            for getLatestStakeUpdateCall {
5111                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5112                    Self {
5113                        operatorId: tuple.0,
5114                        quorumNumber: tuple.1,
5115                    }
5116                }
5117            }
5118        }
5119        {
5120            #[doc(hidden)]
5121            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5122            #[doc(hidden)]
5123            type UnderlyingRustTuple<'a> = (
5124                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5125            );
5126            #[cfg(test)]
5127            #[allow(dead_code, unreachable_patterns)]
5128            fn _type_assertion(
5129                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5130            ) {
5131                match _t {
5132                    alloy_sol_types::private::AssertTypeEq::<
5133                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5134                    >(_) => {}
5135                }
5136            }
5137            #[automatically_derived]
5138            #[doc(hidden)]
5139            impl ::core::convert::From<getLatestStakeUpdateReturn>
5140            for UnderlyingRustTuple<'_> {
5141                fn from(value: getLatestStakeUpdateReturn) -> Self {
5142                    (value._0,)
5143                }
5144            }
5145            #[automatically_derived]
5146            #[doc(hidden)]
5147            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5148            for getLatestStakeUpdateReturn {
5149                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5150                    Self { _0: tuple.0 }
5151                }
5152            }
5153        }
5154        #[automatically_derived]
5155        impl alloy_sol_types::SolCall for getLatestStakeUpdateCall {
5156            type Parameters<'a> = (
5157                alloy::sol_types::sol_data::FixedBytes<32>,
5158                alloy::sol_types::sol_data::Uint<8>,
5159            );
5160            type Token<'a> = <Self::Parameters<
5161                'a,
5162            > as alloy_sol_types::SolType>::Token<'a>;
5163            type Return = getLatestStakeUpdateReturn;
5164            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5165            type ReturnToken<'a> = <Self::ReturnTuple<
5166                'a,
5167            > as alloy_sol_types::SolType>::Token<'a>;
5168            const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)";
5169            const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8];
5170            #[inline]
5171            fn new<'a>(
5172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5173            ) -> Self {
5174                tuple.into()
5175            }
5176            #[inline]
5177            fn tokenize(&self) -> Self::Token<'_> {
5178                (
5179                    <alloy::sol_types::sol_data::FixedBytes<
5180                        32,
5181                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5182                    <alloy::sol_types::sol_data::Uint<
5183                        8,
5184                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5185                )
5186            }
5187            #[inline]
5188            fn abi_decode_returns(
5189                data: &[u8],
5190                validate: bool,
5191            ) -> alloy_sol_types::Result<Self::Return> {
5192                <Self::ReturnTuple<
5193                    '_,
5194                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5195                    .map(Into::into)
5196            }
5197        }
5198    };
5199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5200    /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`.
5201```solidity
5202function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
5203```*/
5204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5205    #[derive(Clone)]
5206    pub struct getStakeAtBlockNumberCall {
5207        #[allow(missing_docs)]
5208        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5209        #[allow(missing_docs)]
5210        pub quorumNumber: u8,
5211        #[allow(missing_docs)]
5212        pub blockNumber: u32,
5213    }
5214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5215    ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function.
5216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5217    #[derive(Clone)]
5218    pub struct getStakeAtBlockNumberReturn {
5219        #[allow(missing_docs)]
5220        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5221    }
5222    #[allow(
5223        non_camel_case_types,
5224        non_snake_case,
5225        clippy::pub_underscore_fields,
5226        clippy::style
5227    )]
5228    const _: () = {
5229        use alloy::sol_types as alloy_sol_types;
5230        {
5231            #[doc(hidden)]
5232            type UnderlyingSolTuple<'a> = (
5233                alloy::sol_types::sol_data::FixedBytes<32>,
5234                alloy::sol_types::sol_data::Uint<8>,
5235                alloy::sol_types::sol_data::Uint<32>,
5236            );
5237            #[doc(hidden)]
5238            type UnderlyingRustTuple<'a> = (
5239                alloy::sol_types::private::FixedBytes<32>,
5240                u8,
5241                u32,
5242            );
5243            #[cfg(test)]
5244            #[allow(dead_code, unreachable_patterns)]
5245            fn _type_assertion(
5246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5247            ) {
5248                match _t {
5249                    alloy_sol_types::private::AssertTypeEq::<
5250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5251                    >(_) => {}
5252                }
5253            }
5254            #[automatically_derived]
5255            #[doc(hidden)]
5256            impl ::core::convert::From<getStakeAtBlockNumberCall>
5257            for UnderlyingRustTuple<'_> {
5258                fn from(value: getStakeAtBlockNumberCall) -> Self {
5259                    (value.operatorId, value.quorumNumber, value.blockNumber)
5260                }
5261            }
5262            #[automatically_derived]
5263            #[doc(hidden)]
5264            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5265            for getStakeAtBlockNumberCall {
5266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5267                    Self {
5268                        operatorId: tuple.0,
5269                        quorumNumber: tuple.1,
5270                        blockNumber: tuple.2,
5271                    }
5272                }
5273            }
5274        }
5275        {
5276            #[doc(hidden)]
5277            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5278            #[doc(hidden)]
5279            type UnderlyingRustTuple<'a> = (
5280                alloy::sol_types::private::primitives::aliases::U96,
5281            );
5282            #[cfg(test)]
5283            #[allow(dead_code, unreachable_patterns)]
5284            fn _type_assertion(
5285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5286            ) {
5287                match _t {
5288                    alloy_sol_types::private::AssertTypeEq::<
5289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5290                    >(_) => {}
5291                }
5292            }
5293            #[automatically_derived]
5294            #[doc(hidden)]
5295            impl ::core::convert::From<getStakeAtBlockNumberReturn>
5296            for UnderlyingRustTuple<'_> {
5297                fn from(value: getStakeAtBlockNumberReturn) -> Self {
5298                    (value._0,)
5299                }
5300            }
5301            #[automatically_derived]
5302            #[doc(hidden)]
5303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5304            for getStakeAtBlockNumberReturn {
5305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5306                    Self { _0: tuple.0 }
5307                }
5308            }
5309        }
5310        #[automatically_derived]
5311        impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall {
5312            type Parameters<'a> = (
5313                alloy::sol_types::sol_data::FixedBytes<32>,
5314                alloy::sol_types::sol_data::Uint<8>,
5315                alloy::sol_types::sol_data::Uint<32>,
5316            );
5317            type Token<'a> = <Self::Parameters<
5318                'a,
5319            > as alloy_sol_types::SolType>::Token<'a>;
5320            type Return = getStakeAtBlockNumberReturn;
5321            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5322            type ReturnToken<'a> = <Self::ReturnTuple<
5323                'a,
5324            > as alloy_sol_types::SolType>::Token<'a>;
5325            const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)";
5326            const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8];
5327            #[inline]
5328            fn new<'a>(
5329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5330            ) -> Self {
5331                tuple.into()
5332            }
5333            #[inline]
5334            fn tokenize(&self) -> Self::Token<'_> {
5335                (
5336                    <alloy::sol_types::sol_data::FixedBytes<
5337                        32,
5338                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5339                    <alloy::sol_types::sol_data::Uint<
5340                        8,
5341                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5342                    <alloy::sol_types::sol_data::Uint<
5343                        32,
5344                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5345                )
5346            }
5347            #[inline]
5348            fn abi_decode_returns(
5349                data: &[u8],
5350                validate: bool,
5351            ) -> alloy_sol_types::Result<Self::Return> {
5352                <Self::ReturnTuple<
5353                    '_,
5354                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5355                    .map(Into::into)
5356            }
5357        }
5358    };
5359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5360    /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`.
5361```solidity
5362function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
5363```*/
5364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5365    #[derive(Clone)]
5366    pub struct getStakeAtBlockNumberAndIndexCall {
5367        #[allow(missing_docs)]
5368        pub quorumNumber: u8,
5369        #[allow(missing_docs)]
5370        pub blockNumber: u32,
5371        #[allow(missing_docs)]
5372        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5373        #[allow(missing_docs)]
5374        pub index: alloy::sol_types::private::primitives::aliases::U256,
5375    }
5376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5377    ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function.
5378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5379    #[derive(Clone)]
5380    pub struct getStakeAtBlockNumberAndIndexReturn {
5381        #[allow(missing_docs)]
5382        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5383    }
5384    #[allow(
5385        non_camel_case_types,
5386        non_snake_case,
5387        clippy::pub_underscore_fields,
5388        clippy::style
5389    )]
5390    const _: () = {
5391        use alloy::sol_types as alloy_sol_types;
5392        {
5393            #[doc(hidden)]
5394            type UnderlyingSolTuple<'a> = (
5395                alloy::sol_types::sol_data::Uint<8>,
5396                alloy::sol_types::sol_data::Uint<32>,
5397                alloy::sol_types::sol_data::FixedBytes<32>,
5398                alloy::sol_types::sol_data::Uint<256>,
5399            );
5400            #[doc(hidden)]
5401            type UnderlyingRustTuple<'a> = (
5402                u8,
5403                u32,
5404                alloy::sol_types::private::FixedBytes<32>,
5405                alloy::sol_types::private::primitives::aliases::U256,
5406            );
5407            #[cfg(test)]
5408            #[allow(dead_code, unreachable_patterns)]
5409            fn _type_assertion(
5410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5411            ) {
5412                match _t {
5413                    alloy_sol_types::private::AssertTypeEq::<
5414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5415                    >(_) => {}
5416                }
5417            }
5418            #[automatically_derived]
5419            #[doc(hidden)]
5420            impl ::core::convert::From<getStakeAtBlockNumberAndIndexCall>
5421            for UnderlyingRustTuple<'_> {
5422                fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self {
5423                    (
5424                        value.quorumNumber,
5425                        value.blockNumber,
5426                        value.operatorId,
5427                        value.index,
5428                    )
5429                }
5430            }
5431            #[automatically_derived]
5432            #[doc(hidden)]
5433            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5434            for getStakeAtBlockNumberAndIndexCall {
5435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5436                    Self {
5437                        quorumNumber: tuple.0,
5438                        blockNumber: tuple.1,
5439                        operatorId: tuple.2,
5440                        index: tuple.3,
5441                    }
5442                }
5443            }
5444        }
5445        {
5446            #[doc(hidden)]
5447            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5448            #[doc(hidden)]
5449            type UnderlyingRustTuple<'a> = (
5450                alloy::sol_types::private::primitives::aliases::U96,
5451            );
5452            #[cfg(test)]
5453            #[allow(dead_code, unreachable_patterns)]
5454            fn _type_assertion(
5455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5456            ) {
5457                match _t {
5458                    alloy_sol_types::private::AssertTypeEq::<
5459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5460                    >(_) => {}
5461                }
5462            }
5463            #[automatically_derived]
5464            #[doc(hidden)]
5465            impl ::core::convert::From<getStakeAtBlockNumberAndIndexReturn>
5466            for UnderlyingRustTuple<'_> {
5467                fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self {
5468                    (value._0,)
5469                }
5470            }
5471            #[automatically_derived]
5472            #[doc(hidden)]
5473            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5474            for getStakeAtBlockNumberAndIndexReturn {
5475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5476                    Self { _0: tuple.0 }
5477                }
5478            }
5479        }
5480        #[automatically_derived]
5481        impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall {
5482            type Parameters<'a> = (
5483                alloy::sol_types::sol_data::Uint<8>,
5484                alloy::sol_types::sol_data::Uint<32>,
5485                alloy::sol_types::sol_data::FixedBytes<32>,
5486                alloy::sol_types::sol_data::Uint<256>,
5487            );
5488            type Token<'a> = <Self::Parameters<
5489                'a,
5490            > as alloy_sol_types::SolType>::Token<'a>;
5491            type Return = getStakeAtBlockNumberAndIndexReturn;
5492            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5493            type ReturnToken<'a> = <Self::ReturnTuple<
5494                'a,
5495            > as alloy_sol_types::SolType>::Token<'a>;
5496            const SIGNATURE: &'static str = "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)";
5497            const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8];
5498            #[inline]
5499            fn new<'a>(
5500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5501            ) -> Self {
5502                tuple.into()
5503            }
5504            #[inline]
5505            fn tokenize(&self) -> Self::Token<'_> {
5506                (
5507                    <alloy::sol_types::sol_data::Uint<
5508                        8,
5509                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5510                    <alloy::sol_types::sol_data::Uint<
5511                        32,
5512                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5513                    <alloy::sol_types::sol_data::FixedBytes<
5514                        32,
5515                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5516                    <alloy::sol_types::sol_data::Uint<
5517                        256,
5518                    > as alloy_sol_types::SolType>::tokenize(&self.index),
5519                )
5520            }
5521            #[inline]
5522            fn abi_decode_returns(
5523                data: &[u8],
5524                validate: bool,
5525            ) -> alloy_sol_types::Result<Self::Return> {
5526                <Self::ReturnTuple<
5527                    '_,
5528                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5529                    .map(Into::into)
5530            }
5531        }
5532    };
5533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5534    /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`.
5535```solidity
5536function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
5537```*/
5538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5539    #[derive(Clone)]
5540    pub struct getStakeHistoryCall {
5541        #[allow(missing_docs)]
5542        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5543        #[allow(missing_docs)]
5544        pub quorumNumber: u8,
5545    }
5546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5547    ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function.
5548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5549    #[derive(Clone)]
5550    pub struct getStakeHistoryReturn {
5551        #[allow(missing_docs)]
5552        pub _0: alloy::sol_types::private::Vec<
5553            <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5554        >,
5555    }
5556    #[allow(
5557        non_camel_case_types,
5558        non_snake_case,
5559        clippy::pub_underscore_fields,
5560        clippy::style
5561    )]
5562    const _: () = {
5563        use alloy::sol_types as alloy_sol_types;
5564        {
5565            #[doc(hidden)]
5566            type UnderlyingSolTuple<'a> = (
5567                alloy::sol_types::sol_data::FixedBytes<32>,
5568                alloy::sol_types::sol_data::Uint<8>,
5569            );
5570            #[doc(hidden)]
5571            type UnderlyingRustTuple<'a> = (
5572                alloy::sol_types::private::FixedBytes<32>,
5573                u8,
5574            );
5575            #[cfg(test)]
5576            #[allow(dead_code, unreachable_patterns)]
5577            fn _type_assertion(
5578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5579            ) {
5580                match _t {
5581                    alloy_sol_types::private::AssertTypeEq::<
5582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5583                    >(_) => {}
5584                }
5585            }
5586            #[automatically_derived]
5587            #[doc(hidden)]
5588            impl ::core::convert::From<getStakeHistoryCall> for UnderlyingRustTuple<'_> {
5589                fn from(value: getStakeHistoryCall) -> Self {
5590                    (value.operatorId, value.quorumNumber)
5591                }
5592            }
5593            #[automatically_derived]
5594            #[doc(hidden)]
5595            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryCall {
5596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5597                    Self {
5598                        operatorId: tuple.0,
5599                        quorumNumber: tuple.1,
5600                    }
5601                }
5602            }
5603        }
5604        {
5605            #[doc(hidden)]
5606            type UnderlyingSolTuple<'a> = (
5607                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,
5608            );
5609            #[doc(hidden)]
5610            type UnderlyingRustTuple<'a> = (
5611                alloy::sol_types::private::Vec<
5612                    <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5613                >,
5614            );
5615            #[cfg(test)]
5616            #[allow(dead_code, unreachable_patterns)]
5617            fn _type_assertion(
5618                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5619            ) {
5620                match _t {
5621                    alloy_sol_types::private::AssertTypeEq::<
5622                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5623                    >(_) => {}
5624                }
5625            }
5626            #[automatically_derived]
5627            #[doc(hidden)]
5628            impl ::core::convert::From<getStakeHistoryReturn>
5629            for UnderlyingRustTuple<'_> {
5630                fn from(value: getStakeHistoryReturn) -> Self {
5631                    (value._0,)
5632                }
5633            }
5634            #[automatically_derived]
5635            #[doc(hidden)]
5636            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5637            for getStakeHistoryReturn {
5638                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5639                    Self { _0: tuple.0 }
5640                }
5641            }
5642        }
5643        #[automatically_derived]
5644        impl alloy_sol_types::SolCall for getStakeHistoryCall {
5645            type Parameters<'a> = (
5646                alloy::sol_types::sol_data::FixedBytes<32>,
5647                alloy::sol_types::sol_data::Uint<8>,
5648            );
5649            type Token<'a> = <Self::Parameters<
5650                'a,
5651            > as alloy_sol_types::SolType>::Token<'a>;
5652            type Return = getStakeHistoryReturn;
5653            type ReturnTuple<'a> = (
5654                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,
5655            );
5656            type ReturnToken<'a> = <Self::ReturnTuple<
5657                'a,
5658            > as alloy_sol_types::SolType>::Token<'a>;
5659            const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)";
5660            const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8];
5661            #[inline]
5662            fn new<'a>(
5663                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5664            ) -> Self {
5665                tuple.into()
5666            }
5667            #[inline]
5668            fn tokenize(&self) -> Self::Token<'_> {
5669                (
5670                    <alloy::sol_types::sol_data::FixedBytes<
5671                        32,
5672                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5673                    <alloy::sol_types::sol_data::Uint<
5674                        8,
5675                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5676                )
5677            }
5678            #[inline]
5679            fn abi_decode_returns(
5680                data: &[u8],
5681                validate: bool,
5682            ) -> alloy_sol_types::Result<Self::Return> {
5683                <Self::ReturnTuple<
5684                    '_,
5685                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5686                    .map(Into::into)
5687            }
5688        }
5689    };
5690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5691    /**Function with signature `getStakeHistoryLength(bytes32,uint8)` and selector `0x4bd26e09`.
5692```solidity
5693function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
5694```*/
5695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5696    #[derive(Clone)]
5697    pub struct getStakeHistoryLengthCall {
5698        #[allow(missing_docs)]
5699        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5700        #[allow(missing_docs)]
5701        pub quorumNumber: u8,
5702    }
5703    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5704    ///Container type for the return parameters of the [`getStakeHistoryLength(bytes32,uint8)`](getStakeHistoryLengthCall) function.
5705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5706    #[derive(Clone)]
5707    pub struct getStakeHistoryLengthReturn {
5708        #[allow(missing_docs)]
5709        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5710    }
5711    #[allow(
5712        non_camel_case_types,
5713        non_snake_case,
5714        clippy::pub_underscore_fields,
5715        clippy::style
5716    )]
5717    const _: () = {
5718        use alloy::sol_types as alloy_sol_types;
5719        {
5720            #[doc(hidden)]
5721            type UnderlyingSolTuple<'a> = (
5722                alloy::sol_types::sol_data::FixedBytes<32>,
5723                alloy::sol_types::sol_data::Uint<8>,
5724            );
5725            #[doc(hidden)]
5726            type UnderlyingRustTuple<'a> = (
5727                alloy::sol_types::private::FixedBytes<32>,
5728                u8,
5729            );
5730            #[cfg(test)]
5731            #[allow(dead_code, unreachable_patterns)]
5732            fn _type_assertion(
5733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5734            ) {
5735                match _t {
5736                    alloy_sol_types::private::AssertTypeEq::<
5737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5738                    >(_) => {}
5739                }
5740            }
5741            #[automatically_derived]
5742            #[doc(hidden)]
5743            impl ::core::convert::From<getStakeHistoryLengthCall>
5744            for UnderlyingRustTuple<'_> {
5745                fn from(value: getStakeHistoryLengthCall) -> Self {
5746                    (value.operatorId, value.quorumNumber)
5747                }
5748            }
5749            #[automatically_derived]
5750            #[doc(hidden)]
5751            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5752            for getStakeHistoryLengthCall {
5753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5754                    Self {
5755                        operatorId: tuple.0,
5756                        quorumNumber: tuple.1,
5757                    }
5758                }
5759            }
5760        }
5761        {
5762            #[doc(hidden)]
5763            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5764            #[doc(hidden)]
5765            type UnderlyingRustTuple<'a> = (
5766                alloy::sol_types::private::primitives::aliases::U256,
5767            );
5768            #[cfg(test)]
5769            #[allow(dead_code, unreachable_patterns)]
5770            fn _type_assertion(
5771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5772            ) {
5773                match _t {
5774                    alloy_sol_types::private::AssertTypeEq::<
5775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5776                    >(_) => {}
5777                }
5778            }
5779            #[automatically_derived]
5780            #[doc(hidden)]
5781            impl ::core::convert::From<getStakeHistoryLengthReturn>
5782            for UnderlyingRustTuple<'_> {
5783                fn from(value: getStakeHistoryLengthReturn) -> Self {
5784                    (value._0,)
5785                }
5786            }
5787            #[automatically_derived]
5788            #[doc(hidden)]
5789            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5790            for getStakeHistoryLengthReturn {
5791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5792                    Self { _0: tuple.0 }
5793                }
5794            }
5795        }
5796        #[automatically_derived]
5797        impl alloy_sol_types::SolCall for getStakeHistoryLengthCall {
5798            type Parameters<'a> = (
5799                alloy::sol_types::sol_data::FixedBytes<32>,
5800                alloy::sol_types::sol_data::Uint<8>,
5801            );
5802            type Token<'a> = <Self::Parameters<
5803                'a,
5804            > as alloy_sol_types::SolType>::Token<'a>;
5805            type Return = getStakeHistoryLengthReturn;
5806            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5807            type ReturnToken<'a> = <Self::ReturnTuple<
5808                'a,
5809            > as alloy_sol_types::SolType>::Token<'a>;
5810            const SIGNATURE: &'static str = "getStakeHistoryLength(bytes32,uint8)";
5811            const SELECTOR: [u8; 4] = [75u8, 210u8, 110u8, 9u8];
5812            #[inline]
5813            fn new<'a>(
5814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5815            ) -> Self {
5816                tuple.into()
5817            }
5818            #[inline]
5819            fn tokenize(&self) -> Self::Token<'_> {
5820                (
5821                    <alloy::sol_types::sol_data::FixedBytes<
5822                        32,
5823                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5824                    <alloy::sol_types::sol_data::Uint<
5825                        8,
5826                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5827                )
5828            }
5829            #[inline]
5830            fn abi_decode_returns(
5831                data: &[u8],
5832                validate: bool,
5833            ) -> alloy_sol_types::Result<Self::Return> {
5834                <Self::ReturnTuple<
5835                    '_,
5836                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5837                    .map(Into::into)
5838            }
5839        }
5840    };
5841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5842    /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`.
5843```solidity
5844function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
5845```*/
5846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5847    #[derive(Clone)]
5848    pub struct getStakeUpdateAtIndexCall {
5849        #[allow(missing_docs)]
5850        pub quorumNumber: u8,
5851        #[allow(missing_docs)]
5852        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5853        #[allow(missing_docs)]
5854        pub index: alloy::sol_types::private::primitives::aliases::U256,
5855    }
5856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5857    ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function.
5858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5859    #[derive(Clone)]
5860    pub struct getStakeUpdateAtIndexReturn {
5861        #[allow(missing_docs)]
5862        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5863    }
5864    #[allow(
5865        non_camel_case_types,
5866        non_snake_case,
5867        clippy::pub_underscore_fields,
5868        clippy::style
5869    )]
5870    const _: () = {
5871        use alloy::sol_types as alloy_sol_types;
5872        {
5873            #[doc(hidden)]
5874            type UnderlyingSolTuple<'a> = (
5875                alloy::sol_types::sol_data::Uint<8>,
5876                alloy::sol_types::sol_data::FixedBytes<32>,
5877                alloy::sol_types::sol_data::Uint<256>,
5878            );
5879            #[doc(hidden)]
5880            type UnderlyingRustTuple<'a> = (
5881                u8,
5882                alloy::sol_types::private::FixedBytes<32>,
5883                alloy::sol_types::private::primitives::aliases::U256,
5884            );
5885            #[cfg(test)]
5886            #[allow(dead_code, unreachable_patterns)]
5887            fn _type_assertion(
5888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5889            ) {
5890                match _t {
5891                    alloy_sol_types::private::AssertTypeEq::<
5892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5893                    >(_) => {}
5894                }
5895            }
5896            #[automatically_derived]
5897            #[doc(hidden)]
5898            impl ::core::convert::From<getStakeUpdateAtIndexCall>
5899            for UnderlyingRustTuple<'_> {
5900                fn from(value: getStakeUpdateAtIndexCall) -> Self {
5901                    (value.quorumNumber, value.operatorId, value.index)
5902                }
5903            }
5904            #[automatically_derived]
5905            #[doc(hidden)]
5906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5907            for getStakeUpdateAtIndexCall {
5908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5909                    Self {
5910                        quorumNumber: tuple.0,
5911                        operatorId: tuple.1,
5912                        index: tuple.2,
5913                    }
5914                }
5915            }
5916        }
5917        {
5918            #[doc(hidden)]
5919            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5920            #[doc(hidden)]
5921            type UnderlyingRustTuple<'a> = (
5922                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5923            );
5924            #[cfg(test)]
5925            #[allow(dead_code, unreachable_patterns)]
5926            fn _type_assertion(
5927                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5928            ) {
5929                match _t {
5930                    alloy_sol_types::private::AssertTypeEq::<
5931                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5932                    >(_) => {}
5933                }
5934            }
5935            #[automatically_derived]
5936            #[doc(hidden)]
5937            impl ::core::convert::From<getStakeUpdateAtIndexReturn>
5938            for UnderlyingRustTuple<'_> {
5939                fn from(value: getStakeUpdateAtIndexReturn) -> Self {
5940                    (value._0,)
5941                }
5942            }
5943            #[automatically_derived]
5944            #[doc(hidden)]
5945            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5946            for getStakeUpdateAtIndexReturn {
5947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5948                    Self { _0: tuple.0 }
5949                }
5950            }
5951        }
5952        #[automatically_derived]
5953        impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall {
5954            type Parameters<'a> = (
5955                alloy::sol_types::sol_data::Uint<8>,
5956                alloy::sol_types::sol_data::FixedBytes<32>,
5957                alloy::sol_types::sol_data::Uint<256>,
5958            );
5959            type Token<'a> = <Self::Parameters<
5960                'a,
5961            > as alloy_sol_types::SolType>::Token<'a>;
5962            type Return = getStakeUpdateAtIndexReturn;
5963            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5964            type ReturnToken<'a> = <Self::ReturnTuple<
5965                'a,
5966            > as alloy_sol_types::SolType>::Token<'a>;
5967            const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)";
5968            const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8];
5969            #[inline]
5970            fn new<'a>(
5971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5972            ) -> Self {
5973                tuple.into()
5974            }
5975            #[inline]
5976            fn tokenize(&self) -> Self::Token<'_> {
5977                (
5978                    <alloy::sol_types::sol_data::Uint<
5979                        8,
5980                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5981                    <alloy::sol_types::sol_data::FixedBytes<
5982                        32,
5983                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5984                    <alloy::sol_types::sol_data::Uint<
5985                        256,
5986                    > as alloy_sol_types::SolType>::tokenize(&self.index),
5987                )
5988            }
5989            #[inline]
5990            fn abi_decode_returns(
5991                data: &[u8],
5992                validate: bool,
5993            ) -> alloy_sol_types::Result<Self::Return> {
5994                <Self::ReturnTuple<
5995                    '_,
5996                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
5997                    .map(Into::into)
5998            }
5999        }
6000    };
6001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6002    /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`.
6003```solidity
6004function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
6005```*/
6006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6007    #[derive(Clone)]
6008    pub struct getStakeUpdateIndexAtBlockNumberCall {
6009        #[allow(missing_docs)]
6010        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
6011        #[allow(missing_docs)]
6012        pub quorumNumber: u8,
6013        #[allow(missing_docs)]
6014        pub blockNumber: u32,
6015    }
6016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6017    ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function.
6018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6019    #[derive(Clone)]
6020    pub struct getStakeUpdateIndexAtBlockNumberReturn {
6021        #[allow(missing_docs)]
6022        pub _0: u32,
6023    }
6024    #[allow(
6025        non_camel_case_types,
6026        non_snake_case,
6027        clippy::pub_underscore_fields,
6028        clippy::style
6029    )]
6030    const _: () = {
6031        use alloy::sol_types as alloy_sol_types;
6032        {
6033            #[doc(hidden)]
6034            type UnderlyingSolTuple<'a> = (
6035                alloy::sol_types::sol_data::FixedBytes<32>,
6036                alloy::sol_types::sol_data::Uint<8>,
6037                alloy::sol_types::sol_data::Uint<32>,
6038            );
6039            #[doc(hidden)]
6040            type UnderlyingRustTuple<'a> = (
6041                alloy::sol_types::private::FixedBytes<32>,
6042                u8,
6043                u32,
6044            );
6045            #[cfg(test)]
6046            #[allow(dead_code, unreachable_patterns)]
6047            fn _type_assertion(
6048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6049            ) {
6050                match _t {
6051                    alloy_sol_types::private::AssertTypeEq::<
6052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6053                    >(_) => {}
6054                }
6055            }
6056            #[automatically_derived]
6057            #[doc(hidden)]
6058            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberCall>
6059            for UnderlyingRustTuple<'_> {
6060                fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self {
6061                    (value.operatorId, value.quorumNumber, value.blockNumber)
6062                }
6063            }
6064            #[automatically_derived]
6065            #[doc(hidden)]
6066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6067            for getStakeUpdateIndexAtBlockNumberCall {
6068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6069                    Self {
6070                        operatorId: tuple.0,
6071                        quorumNumber: tuple.1,
6072                        blockNumber: tuple.2,
6073                    }
6074                }
6075            }
6076        }
6077        {
6078            #[doc(hidden)]
6079            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6080            #[doc(hidden)]
6081            type UnderlyingRustTuple<'a> = (u32,);
6082            #[cfg(test)]
6083            #[allow(dead_code, unreachable_patterns)]
6084            fn _type_assertion(
6085                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6086            ) {
6087                match _t {
6088                    alloy_sol_types::private::AssertTypeEq::<
6089                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6090                    >(_) => {}
6091                }
6092            }
6093            #[automatically_derived]
6094            #[doc(hidden)]
6095            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberReturn>
6096            for UnderlyingRustTuple<'_> {
6097                fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self {
6098                    (value._0,)
6099                }
6100            }
6101            #[automatically_derived]
6102            #[doc(hidden)]
6103            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6104            for getStakeUpdateIndexAtBlockNumberReturn {
6105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6106                    Self { _0: tuple.0 }
6107                }
6108            }
6109        }
6110        #[automatically_derived]
6111        impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall {
6112            type Parameters<'a> = (
6113                alloy::sol_types::sol_data::FixedBytes<32>,
6114                alloy::sol_types::sol_data::Uint<8>,
6115                alloy::sol_types::sol_data::Uint<32>,
6116            );
6117            type Token<'a> = <Self::Parameters<
6118                'a,
6119            > as alloy_sol_types::SolType>::Token<'a>;
6120            type Return = getStakeUpdateIndexAtBlockNumberReturn;
6121            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6122            type ReturnToken<'a> = <Self::ReturnTuple<
6123                'a,
6124            > as alloy_sol_types::SolType>::Token<'a>;
6125            const SIGNATURE: &'static str = "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)";
6126            const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8];
6127            #[inline]
6128            fn new<'a>(
6129                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6130            ) -> Self {
6131                tuple.into()
6132            }
6133            #[inline]
6134            fn tokenize(&self) -> Self::Token<'_> {
6135                (
6136                    <alloy::sol_types::sol_data::FixedBytes<
6137                        32,
6138                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6139                    <alloy::sol_types::sol_data::Uint<
6140                        8,
6141                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6142                    <alloy::sol_types::sol_data::Uint<
6143                        32,
6144                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6145                )
6146            }
6147            #[inline]
6148            fn abi_decode_returns(
6149                data: &[u8],
6150                validate: bool,
6151            ) -> alloy_sol_types::Result<Self::Return> {
6152                <Self::ReturnTuple<
6153                    '_,
6154                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6155                    .map(Into::into)
6156            }
6157        }
6158    };
6159    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6160    /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`.
6161```solidity
6162function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
6163```*/
6164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6165    #[derive(Clone)]
6166    pub struct getTotalStakeAtBlockNumberFromIndexCall {
6167        #[allow(missing_docs)]
6168        pub quorumNumber: u8,
6169        #[allow(missing_docs)]
6170        pub blockNumber: u32,
6171        #[allow(missing_docs)]
6172        pub index: alloy::sol_types::private::primitives::aliases::U256,
6173    }
6174    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6175    ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function.
6176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6177    #[derive(Clone)]
6178    pub struct getTotalStakeAtBlockNumberFromIndexReturn {
6179        #[allow(missing_docs)]
6180        pub _0: alloy::sol_types::private::primitives::aliases::U96,
6181    }
6182    #[allow(
6183        non_camel_case_types,
6184        non_snake_case,
6185        clippy::pub_underscore_fields,
6186        clippy::style
6187    )]
6188    const _: () = {
6189        use alloy::sol_types as alloy_sol_types;
6190        {
6191            #[doc(hidden)]
6192            type UnderlyingSolTuple<'a> = (
6193                alloy::sol_types::sol_data::Uint<8>,
6194                alloy::sol_types::sol_data::Uint<32>,
6195                alloy::sol_types::sol_data::Uint<256>,
6196            );
6197            #[doc(hidden)]
6198            type UnderlyingRustTuple<'a> = (
6199                u8,
6200                u32,
6201                alloy::sol_types::private::primitives::aliases::U256,
6202            );
6203            #[cfg(test)]
6204            #[allow(dead_code, unreachable_patterns)]
6205            fn _type_assertion(
6206                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6207            ) {
6208                match _t {
6209                    alloy_sol_types::private::AssertTypeEq::<
6210                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6211                    >(_) => {}
6212                }
6213            }
6214            #[automatically_derived]
6215            #[doc(hidden)]
6216            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexCall>
6217            for UnderlyingRustTuple<'_> {
6218                fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self {
6219                    (value.quorumNumber, value.blockNumber, value.index)
6220                }
6221            }
6222            #[automatically_derived]
6223            #[doc(hidden)]
6224            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6225            for getTotalStakeAtBlockNumberFromIndexCall {
6226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6227                    Self {
6228                        quorumNumber: tuple.0,
6229                        blockNumber: tuple.1,
6230                        index: tuple.2,
6231                    }
6232                }
6233            }
6234        }
6235        {
6236            #[doc(hidden)]
6237            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6238            #[doc(hidden)]
6239            type UnderlyingRustTuple<'a> = (
6240                alloy::sol_types::private::primitives::aliases::U96,
6241            );
6242            #[cfg(test)]
6243            #[allow(dead_code, unreachable_patterns)]
6244            fn _type_assertion(
6245                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6246            ) {
6247                match _t {
6248                    alloy_sol_types::private::AssertTypeEq::<
6249                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6250                    >(_) => {}
6251                }
6252            }
6253            #[automatically_derived]
6254            #[doc(hidden)]
6255            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexReturn>
6256            for UnderlyingRustTuple<'_> {
6257                fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self {
6258                    (value._0,)
6259                }
6260            }
6261            #[automatically_derived]
6262            #[doc(hidden)]
6263            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6264            for getTotalStakeAtBlockNumberFromIndexReturn {
6265                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6266                    Self { _0: tuple.0 }
6267                }
6268            }
6269        }
6270        #[automatically_derived]
6271        impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall {
6272            type Parameters<'a> = (
6273                alloy::sol_types::sol_data::Uint<8>,
6274                alloy::sol_types::sol_data::Uint<32>,
6275                alloy::sol_types::sol_data::Uint<256>,
6276            );
6277            type Token<'a> = <Self::Parameters<
6278                'a,
6279            > as alloy_sol_types::SolType>::Token<'a>;
6280            type Return = getTotalStakeAtBlockNumberFromIndexReturn;
6281            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6282            type ReturnToken<'a> = <Self::ReturnTuple<
6283                'a,
6284            > as alloy_sol_types::SolType>::Token<'a>;
6285            const SIGNATURE: &'static str = "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)";
6286            const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8];
6287            #[inline]
6288            fn new<'a>(
6289                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6290            ) -> Self {
6291                tuple.into()
6292            }
6293            #[inline]
6294            fn tokenize(&self) -> Self::Token<'_> {
6295                (
6296                    <alloy::sol_types::sol_data::Uint<
6297                        8,
6298                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6299                    <alloy::sol_types::sol_data::Uint<
6300                        32,
6301                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6302                    <alloy::sol_types::sol_data::Uint<
6303                        256,
6304                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6305                )
6306            }
6307            #[inline]
6308            fn abi_decode_returns(
6309                data: &[u8],
6310                validate: bool,
6311            ) -> alloy_sol_types::Result<Self::Return> {
6312                <Self::ReturnTuple<
6313                    '_,
6314                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6315                    .map(Into::into)
6316            }
6317        }
6318    };
6319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6320    /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`.
6321```solidity
6322function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
6323```*/
6324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6325    #[derive(Clone)]
6326    pub struct getTotalStakeHistoryLengthCall {
6327        #[allow(missing_docs)]
6328        pub quorumNumber: u8,
6329    }
6330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6331    ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function.
6332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6333    #[derive(Clone)]
6334    pub struct getTotalStakeHistoryLengthReturn {
6335        #[allow(missing_docs)]
6336        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6337    }
6338    #[allow(
6339        non_camel_case_types,
6340        non_snake_case,
6341        clippy::pub_underscore_fields,
6342        clippy::style
6343    )]
6344    const _: () = {
6345        use alloy::sol_types as alloy_sol_types;
6346        {
6347            #[doc(hidden)]
6348            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6349            #[doc(hidden)]
6350            type UnderlyingRustTuple<'a> = (u8,);
6351            #[cfg(test)]
6352            #[allow(dead_code, unreachable_patterns)]
6353            fn _type_assertion(
6354                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6355            ) {
6356                match _t {
6357                    alloy_sol_types::private::AssertTypeEq::<
6358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6359                    >(_) => {}
6360                }
6361            }
6362            #[automatically_derived]
6363            #[doc(hidden)]
6364            impl ::core::convert::From<getTotalStakeHistoryLengthCall>
6365            for UnderlyingRustTuple<'_> {
6366                fn from(value: getTotalStakeHistoryLengthCall) -> Self {
6367                    (value.quorumNumber,)
6368                }
6369            }
6370            #[automatically_derived]
6371            #[doc(hidden)]
6372            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6373            for getTotalStakeHistoryLengthCall {
6374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6375                    Self { quorumNumber: tuple.0 }
6376                }
6377            }
6378        }
6379        {
6380            #[doc(hidden)]
6381            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6382            #[doc(hidden)]
6383            type UnderlyingRustTuple<'a> = (
6384                alloy::sol_types::private::primitives::aliases::U256,
6385            );
6386            #[cfg(test)]
6387            #[allow(dead_code, unreachable_patterns)]
6388            fn _type_assertion(
6389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6390            ) {
6391                match _t {
6392                    alloy_sol_types::private::AssertTypeEq::<
6393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6394                    >(_) => {}
6395                }
6396            }
6397            #[automatically_derived]
6398            #[doc(hidden)]
6399            impl ::core::convert::From<getTotalStakeHistoryLengthReturn>
6400            for UnderlyingRustTuple<'_> {
6401                fn from(value: getTotalStakeHistoryLengthReturn) -> Self {
6402                    (value._0,)
6403                }
6404            }
6405            #[automatically_derived]
6406            #[doc(hidden)]
6407            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6408            for getTotalStakeHistoryLengthReturn {
6409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6410                    Self { _0: tuple.0 }
6411                }
6412            }
6413        }
6414        #[automatically_derived]
6415        impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall {
6416            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6417            type Token<'a> = <Self::Parameters<
6418                'a,
6419            > as alloy_sol_types::SolType>::Token<'a>;
6420            type Return = getTotalStakeHistoryLengthReturn;
6421            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6422            type ReturnToken<'a> = <Self::ReturnTuple<
6423                'a,
6424            > as alloy_sol_types::SolType>::Token<'a>;
6425            const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)";
6426            const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8];
6427            #[inline]
6428            fn new<'a>(
6429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6430            ) -> Self {
6431                tuple.into()
6432            }
6433            #[inline]
6434            fn tokenize(&self) -> Self::Token<'_> {
6435                (
6436                    <alloy::sol_types::sol_data::Uint<
6437                        8,
6438                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6439                )
6440            }
6441            #[inline]
6442            fn abi_decode_returns(
6443                data: &[u8],
6444                validate: bool,
6445            ) -> alloy_sol_types::Result<Self::Return> {
6446                <Self::ReturnTuple<
6447                    '_,
6448                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6449                    .map(Into::into)
6450            }
6451        }
6452    };
6453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6454    /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`.
6455```solidity
6456function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
6457```*/
6458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6459    #[derive(Clone)]
6460    pub struct getTotalStakeIndicesAtBlockNumberCall {
6461        #[allow(missing_docs)]
6462        pub blockNumber: u32,
6463        #[allow(missing_docs)]
6464        pub quorumNumbers: alloy::sol_types::private::Bytes,
6465    }
6466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6467    ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function.
6468    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6469    #[derive(Clone)]
6470    pub struct getTotalStakeIndicesAtBlockNumberReturn {
6471        #[allow(missing_docs)]
6472        pub _0: alloy::sol_types::private::Vec<u32>,
6473    }
6474    #[allow(
6475        non_camel_case_types,
6476        non_snake_case,
6477        clippy::pub_underscore_fields,
6478        clippy::style
6479    )]
6480    const _: () = {
6481        use alloy::sol_types as alloy_sol_types;
6482        {
6483            #[doc(hidden)]
6484            type UnderlyingSolTuple<'a> = (
6485                alloy::sol_types::sol_data::Uint<32>,
6486                alloy::sol_types::sol_data::Bytes,
6487            );
6488            #[doc(hidden)]
6489            type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes);
6490            #[cfg(test)]
6491            #[allow(dead_code, unreachable_patterns)]
6492            fn _type_assertion(
6493                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6494            ) {
6495                match _t {
6496                    alloy_sol_types::private::AssertTypeEq::<
6497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6498                    >(_) => {}
6499                }
6500            }
6501            #[automatically_derived]
6502            #[doc(hidden)]
6503            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberCall>
6504            for UnderlyingRustTuple<'_> {
6505                fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self {
6506                    (value.blockNumber, value.quorumNumbers)
6507                }
6508            }
6509            #[automatically_derived]
6510            #[doc(hidden)]
6511            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6512            for getTotalStakeIndicesAtBlockNumberCall {
6513                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6514                    Self {
6515                        blockNumber: tuple.0,
6516                        quorumNumbers: tuple.1,
6517                    }
6518                }
6519            }
6520        }
6521        {
6522            #[doc(hidden)]
6523            type UnderlyingSolTuple<'a> = (
6524                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
6525            );
6526            #[doc(hidden)]
6527            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<u32>,);
6528            #[cfg(test)]
6529            #[allow(dead_code, unreachable_patterns)]
6530            fn _type_assertion(
6531                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6532            ) {
6533                match _t {
6534                    alloy_sol_types::private::AssertTypeEq::<
6535                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6536                    >(_) => {}
6537                }
6538            }
6539            #[automatically_derived]
6540            #[doc(hidden)]
6541            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberReturn>
6542            for UnderlyingRustTuple<'_> {
6543                fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self {
6544                    (value._0,)
6545                }
6546            }
6547            #[automatically_derived]
6548            #[doc(hidden)]
6549            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6550            for getTotalStakeIndicesAtBlockNumberReturn {
6551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6552                    Self { _0: tuple.0 }
6553                }
6554            }
6555        }
6556        #[automatically_derived]
6557        impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall {
6558            type Parameters<'a> = (
6559                alloy::sol_types::sol_data::Uint<32>,
6560                alloy::sol_types::sol_data::Bytes,
6561            );
6562            type Token<'a> = <Self::Parameters<
6563                'a,
6564            > as alloy_sol_types::SolType>::Token<'a>;
6565            type Return = getTotalStakeIndicesAtBlockNumberReturn;
6566            type ReturnTuple<'a> = (
6567                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
6568            );
6569            type ReturnToken<'a> = <Self::ReturnTuple<
6570                'a,
6571            > as alloy_sol_types::SolType>::Token<'a>;
6572            const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)";
6573            const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8];
6574            #[inline]
6575            fn new<'a>(
6576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6577            ) -> Self {
6578                tuple.into()
6579            }
6580            #[inline]
6581            fn tokenize(&self) -> Self::Token<'_> {
6582                (
6583                    <alloy::sol_types::sol_data::Uint<
6584                        32,
6585                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6586                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6587                        &self.quorumNumbers,
6588                    ),
6589                )
6590            }
6591            #[inline]
6592            fn abi_decode_returns(
6593                data: &[u8],
6594                validate: bool,
6595            ) -> alloy_sol_types::Result<Self::Return> {
6596                <Self::ReturnTuple<
6597                    '_,
6598                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6599                    .map(Into::into)
6600            }
6601        }
6602    };
6603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6604    /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`.
6605```solidity
6606function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
6607```*/
6608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6609    #[derive(Clone)]
6610    pub struct getTotalStakeUpdateAtIndexCall {
6611        #[allow(missing_docs)]
6612        pub quorumNumber: u8,
6613        #[allow(missing_docs)]
6614        pub index: alloy::sol_types::private::primitives::aliases::U256,
6615    }
6616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6617    ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function.
6618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6619    #[derive(Clone)]
6620    pub struct getTotalStakeUpdateAtIndexReturn {
6621        #[allow(missing_docs)]
6622        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6623    }
6624    #[allow(
6625        non_camel_case_types,
6626        non_snake_case,
6627        clippy::pub_underscore_fields,
6628        clippy::style
6629    )]
6630    const _: () = {
6631        use alloy::sol_types as alloy_sol_types;
6632        {
6633            #[doc(hidden)]
6634            type UnderlyingSolTuple<'a> = (
6635                alloy::sol_types::sol_data::Uint<8>,
6636                alloy::sol_types::sol_data::Uint<256>,
6637            );
6638            #[doc(hidden)]
6639            type UnderlyingRustTuple<'a> = (
6640                u8,
6641                alloy::sol_types::private::primitives::aliases::U256,
6642            );
6643            #[cfg(test)]
6644            #[allow(dead_code, unreachable_patterns)]
6645            fn _type_assertion(
6646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6647            ) {
6648                match _t {
6649                    alloy_sol_types::private::AssertTypeEq::<
6650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6651                    >(_) => {}
6652                }
6653            }
6654            #[automatically_derived]
6655            #[doc(hidden)]
6656            impl ::core::convert::From<getTotalStakeUpdateAtIndexCall>
6657            for UnderlyingRustTuple<'_> {
6658                fn from(value: getTotalStakeUpdateAtIndexCall) -> Self {
6659                    (value.quorumNumber, value.index)
6660                }
6661            }
6662            #[automatically_derived]
6663            #[doc(hidden)]
6664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6665            for getTotalStakeUpdateAtIndexCall {
6666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6667                    Self {
6668                        quorumNumber: tuple.0,
6669                        index: tuple.1,
6670                    }
6671                }
6672            }
6673        }
6674        {
6675            #[doc(hidden)]
6676            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6677            #[doc(hidden)]
6678            type UnderlyingRustTuple<'a> = (
6679                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6680            );
6681            #[cfg(test)]
6682            #[allow(dead_code, unreachable_patterns)]
6683            fn _type_assertion(
6684                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6685            ) {
6686                match _t {
6687                    alloy_sol_types::private::AssertTypeEq::<
6688                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6689                    >(_) => {}
6690                }
6691            }
6692            #[automatically_derived]
6693            #[doc(hidden)]
6694            impl ::core::convert::From<getTotalStakeUpdateAtIndexReturn>
6695            for UnderlyingRustTuple<'_> {
6696                fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self {
6697                    (value._0,)
6698                }
6699            }
6700            #[automatically_derived]
6701            #[doc(hidden)]
6702            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6703            for getTotalStakeUpdateAtIndexReturn {
6704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6705                    Self { _0: tuple.0 }
6706                }
6707            }
6708        }
6709        #[automatically_derived]
6710        impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall {
6711            type Parameters<'a> = (
6712                alloy::sol_types::sol_data::Uint<8>,
6713                alloy::sol_types::sol_data::Uint<256>,
6714            );
6715            type Token<'a> = <Self::Parameters<
6716                'a,
6717            > as alloy_sol_types::SolType>::Token<'a>;
6718            type Return = getTotalStakeUpdateAtIndexReturn;
6719            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6720            type ReturnToken<'a> = <Self::ReturnTuple<
6721                'a,
6722            > as alloy_sol_types::SolType>::Token<'a>;
6723            const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)";
6724            const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8];
6725            #[inline]
6726            fn new<'a>(
6727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6728            ) -> Self {
6729                tuple.into()
6730            }
6731            #[inline]
6732            fn tokenize(&self) -> Self::Token<'_> {
6733                (
6734                    <alloy::sol_types::sol_data::Uint<
6735                        8,
6736                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6737                    <alloy::sol_types::sol_data::Uint<
6738                        256,
6739                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6740                )
6741            }
6742            #[inline]
6743            fn abi_decode_returns(
6744                data: &[u8],
6745                validate: bool,
6746            ) -> alloy_sol_types::Result<Self::Return> {
6747                <Self::ReturnTuple<
6748                    '_,
6749                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6750                    .map(Into::into)
6751            }
6752        }
6753    };
6754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6755    /**Function with signature `initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])` and selector `0x75d4173a`.
6756```solidity
6757function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
6758```*/
6759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6760    #[derive(Clone)]
6761    pub struct initializeDelegatedStakeQuorumCall {
6762        #[allow(missing_docs)]
6763        pub quorumNumber: u8,
6764        #[allow(missing_docs)]
6765        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
6766        #[allow(missing_docs)]
6767        pub _strategyParams: alloy::sol_types::private::Vec<
6768            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6769        >,
6770    }
6771    ///Container type for the return parameters of the [`initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])`](initializeDelegatedStakeQuorumCall) function.
6772    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6773    #[derive(Clone)]
6774    pub struct initializeDelegatedStakeQuorumReturn {}
6775    #[allow(
6776        non_camel_case_types,
6777        non_snake_case,
6778        clippy::pub_underscore_fields,
6779        clippy::style
6780    )]
6781    const _: () = {
6782        use alloy::sol_types as alloy_sol_types;
6783        {
6784            #[doc(hidden)]
6785            type UnderlyingSolTuple<'a> = (
6786                alloy::sol_types::sol_data::Uint<8>,
6787                alloy::sol_types::sol_data::Uint<96>,
6788                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
6789            );
6790            #[doc(hidden)]
6791            type UnderlyingRustTuple<'a> = (
6792                u8,
6793                alloy::sol_types::private::primitives::aliases::U96,
6794                alloy::sol_types::private::Vec<
6795                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6796                >,
6797            );
6798            #[cfg(test)]
6799            #[allow(dead_code, unreachable_patterns)]
6800            fn _type_assertion(
6801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6802            ) {
6803                match _t {
6804                    alloy_sol_types::private::AssertTypeEq::<
6805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6806                    >(_) => {}
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<initializeDelegatedStakeQuorumCall>
6812            for UnderlyingRustTuple<'_> {
6813                fn from(value: initializeDelegatedStakeQuorumCall) -> Self {
6814                    (value.quorumNumber, value.minimumStake, value._strategyParams)
6815                }
6816            }
6817            #[automatically_derived]
6818            #[doc(hidden)]
6819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6820            for initializeDelegatedStakeQuorumCall {
6821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6822                    Self {
6823                        quorumNumber: tuple.0,
6824                        minimumStake: tuple.1,
6825                        _strategyParams: tuple.2,
6826                    }
6827                }
6828            }
6829        }
6830        {
6831            #[doc(hidden)]
6832            type UnderlyingSolTuple<'a> = ();
6833            #[doc(hidden)]
6834            type UnderlyingRustTuple<'a> = ();
6835            #[cfg(test)]
6836            #[allow(dead_code, unreachable_patterns)]
6837            fn _type_assertion(
6838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6839            ) {
6840                match _t {
6841                    alloy_sol_types::private::AssertTypeEq::<
6842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6843                    >(_) => {}
6844                }
6845            }
6846            #[automatically_derived]
6847            #[doc(hidden)]
6848            impl ::core::convert::From<initializeDelegatedStakeQuorumReturn>
6849            for UnderlyingRustTuple<'_> {
6850                fn from(value: initializeDelegatedStakeQuorumReturn) -> Self {
6851                    ()
6852                }
6853            }
6854            #[automatically_derived]
6855            #[doc(hidden)]
6856            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6857            for initializeDelegatedStakeQuorumReturn {
6858                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6859                    Self {}
6860                }
6861            }
6862        }
6863        #[automatically_derived]
6864        impl alloy_sol_types::SolCall for initializeDelegatedStakeQuorumCall {
6865            type Parameters<'a> = (
6866                alloy::sol_types::sol_data::Uint<8>,
6867                alloy::sol_types::sol_data::Uint<96>,
6868                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
6869            );
6870            type Token<'a> = <Self::Parameters<
6871                'a,
6872            > as alloy_sol_types::SolType>::Token<'a>;
6873            type Return = initializeDelegatedStakeQuorumReturn;
6874            type ReturnTuple<'a> = ();
6875            type ReturnToken<'a> = <Self::ReturnTuple<
6876                'a,
6877            > as alloy_sol_types::SolType>::Token<'a>;
6878            const SIGNATURE: &'static str = "initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])";
6879            const SELECTOR: [u8; 4] = [117u8, 212u8, 23u8, 58u8];
6880            #[inline]
6881            fn new<'a>(
6882                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6883            ) -> Self {
6884                tuple.into()
6885            }
6886            #[inline]
6887            fn tokenize(&self) -> Self::Token<'_> {
6888                (
6889                    <alloy::sol_types::sol_data::Uint<
6890                        8,
6891                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6892                    <alloy::sol_types::sol_data::Uint<
6893                        96,
6894                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
6895                    <alloy::sol_types::sol_data::Array<
6896                        IStakeRegistryTypes::StrategyParams,
6897                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
6898                )
6899            }
6900            #[inline]
6901            fn abi_decode_returns(
6902                data: &[u8],
6903                validate: bool,
6904            ) -> alloy_sol_types::Result<Self::Return> {
6905                <Self::ReturnTuple<
6906                    '_,
6907                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6908                    .map(Into::into)
6909            }
6910        }
6911    };
6912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6913    /**Function with signature `initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])` and selector `0xcc5a7c20`.
6914```solidity
6915function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
6916```*/
6917    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6918    #[derive(Clone)]
6919    pub struct initializeSlashableStakeQuorumCall {
6920        #[allow(missing_docs)]
6921        pub quorumNumber: u8,
6922        #[allow(missing_docs)]
6923        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
6924        #[allow(missing_docs)]
6925        pub lookAheadPeriod: u32,
6926        #[allow(missing_docs)]
6927        pub _strategyParams: alloy::sol_types::private::Vec<
6928            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6929        >,
6930    }
6931    ///Container type for the return parameters of the [`initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])`](initializeSlashableStakeQuorumCall) function.
6932    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6933    #[derive(Clone)]
6934    pub struct initializeSlashableStakeQuorumReturn {}
6935    #[allow(
6936        non_camel_case_types,
6937        non_snake_case,
6938        clippy::pub_underscore_fields,
6939        clippy::style
6940    )]
6941    const _: () = {
6942        use alloy::sol_types as alloy_sol_types;
6943        {
6944            #[doc(hidden)]
6945            type UnderlyingSolTuple<'a> = (
6946                alloy::sol_types::sol_data::Uint<8>,
6947                alloy::sol_types::sol_data::Uint<96>,
6948                alloy::sol_types::sol_data::Uint<32>,
6949                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
6950            );
6951            #[doc(hidden)]
6952            type UnderlyingRustTuple<'a> = (
6953                u8,
6954                alloy::sol_types::private::primitives::aliases::U96,
6955                u32,
6956                alloy::sol_types::private::Vec<
6957                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
6958                >,
6959            );
6960            #[cfg(test)]
6961            #[allow(dead_code, unreachable_patterns)]
6962            fn _type_assertion(
6963                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6964            ) {
6965                match _t {
6966                    alloy_sol_types::private::AssertTypeEq::<
6967                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6968                    >(_) => {}
6969                }
6970            }
6971            #[automatically_derived]
6972            #[doc(hidden)]
6973            impl ::core::convert::From<initializeSlashableStakeQuorumCall>
6974            for UnderlyingRustTuple<'_> {
6975                fn from(value: initializeSlashableStakeQuorumCall) -> Self {
6976                    (
6977                        value.quorumNumber,
6978                        value.minimumStake,
6979                        value.lookAheadPeriod,
6980                        value._strategyParams,
6981                    )
6982                }
6983            }
6984            #[automatically_derived]
6985            #[doc(hidden)]
6986            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6987            for initializeSlashableStakeQuorumCall {
6988                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6989                    Self {
6990                        quorumNumber: tuple.0,
6991                        minimumStake: tuple.1,
6992                        lookAheadPeriod: tuple.2,
6993                        _strategyParams: tuple.3,
6994                    }
6995                }
6996            }
6997        }
6998        {
6999            #[doc(hidden)]
7000            type UnderlyingSolTuple<'a> = ();
7001            #[doc(hidden)]
7002            type UnderlyingRustTuple<'a> = ();
7003            #[cfg(test)]
7004            #[allow(dead_code, unreachable_patterns)]
7005            fn _type_assertion(
7006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7007            ) {
7008                match _t {
7009                    alloy_sol_types::private::AssertTypeEq::<
7010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7011                    >(_) => {}
7012                }
7013            }
7014            #[automatically_derived]
7015            #[doc(hidden)]
7016            impl ::core::convert::From<initializeSlashableStakeQuorumReturn>
7017            for UnderlyingRustTuple<'_> {
7018                fn from(value: initializeSlashableStakeQuorumReturn) -> Self {
7019                    ()
7020                }
7021            }
7022            #[automatically_derived]
7023            #[doc(hidden)]
7024            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7025            for initializeSlashableStakeQuorumReturn {
7026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7027                    Self {}
7028                }
7029            }
7030        }
7031        #[automatically_derived]
7032        impl alloy_sol_types::SolCall for initializeSlashableStakeQuorumCall {
7033            type Parameters<'a> = (
7034                alloy::sol_types::sol_data::Uint<8>,
7035                alloy::sol_types::sol_data::Uint<96>,
7036                alloy::sol_types::sol_data::Uint<32>,
7037                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7038            );
7039            type Token<'a> = <Self::Parameters<
7040                'a,
7041            > as alloy_sol_types::SolType>::Token<'a>;
7042            type Return = initializeSlashableStakeQuorumReturn;
7043            type ReturnTuple<'a> = ();
7044            type ReturnToken<'a> = <Self::ReturnTuple<
7045                'a,
7046            > as alloy_sol_types::SolType>::Token<'a>;
7047            const SIGNATURE: &'static str = "initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])";
7048            const SELECTOR: [u8; 4] = [204u8, 90u8, 124u8, 32u8];
7049            #[inline]
7050            fn new<'a>(
7051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7052            ) -> Self {
7053                tuple.into()
7054            }
7055            #[inline]
7056            fn tokenize(&self) -> Self::Token<'_> {
7057                (
7058                    <alloy::sol_types::sol_data::Uint<
7059                        8,
7060                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7061                    <alloy::sol_types::sol_data::Uint<
7062                        96,
7063                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
7064                    <alloy::sol_types::sol_data::Uint<
7065                        32,
7066                    > as alloy_sol_types::SolType>::tokenize(&self.lookAheadPeriod),
7067                    <alloy::sol_types::sol_data::Array<
7068                        IStakeRegistryTypes::StrategyParams,
7069                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
7070                )
7071            }
7072            #[inline]
7073            fn abi_decode_returns(
7074                data: &[u8],
7075                validate: bool,
7076            ) -> alloy_sol_types::Result<Self::Return> {
7077                <Self::ReturnTuple<
7078                    '_,
7079                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7080                    .map(Into::into)
7081            }
7082        }
7083    };
7084    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7085    /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`.
7086```solidity
7087function minimumStakeForQuorum(uint8) external view returns (uint96);
7088```*/
7089    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7090    #[derive(Clone)]
7091    pub struct minimumStakeForQuorumCall {
7092        #[allow(missing_docs)]
7093        pub _0: u8,
7094    }
7095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7096    ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function.
7097    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7098    #[derive(Clone)]
7099    pub struct minimumStakeForQuorumReturn {
7100        #[allow(missing_docs)]
7101        pub _0: alloy::sol_types::private::primitives::aliases::U96,
7102    }
7103    #[allow(
7104        non_camel_case_types,
7105        non_snake_case,
7106        clippy::pub_underscore_fields,
7107        clippy::style
7108    )]
7109    const _: () = {
7110        use alloy::sol_types as alloy_sol_types;
7111        {
7112            #[doc(hidden)]
7113            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7114            #[doc(hidden)]
7115            type UnderlyingRustTuple<'a> = (u8,);
7116            #[cfg(test)]
7117            #[allow(dead_code, unreachable_patterns)]
7118            fn _type_assertion(
7119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7120            ) {
7121                match _t {
7122                    alloy_sol_types::private::AssertTypeEq::<
7123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7124                    >(_) => {}
7125                }
7126            }
7127            #[automatically_derived]
7128            #[doc(hidden)]
7129            impl ::core::convert::From<minimumStakeForQuorumCall>
7130            for UnderlyingRustTuple<'_> {
7131                fn from(value: minimumStakeForQuorumCall) -> Self {
7132                    (value._0,)
7133                }
7134            }
7135            #[automatically_derived]
7136            #[doc(hidden)]
7137            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7138            for minimumStakeForQuorumCall {
7139                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7140                    Self { _0: tuple.0 }
7141                }
7142            }
7143        }
7144        {
7145            #[doc(hidden)]
7146            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7147            #[doc(hidden)]
7148            type UnderlyingRustTuple<'a> = (
7149                alloy::sol_types::private::primitives::aliases::U96,
7150            );
7151            #[cfg(test)]
7152            #[allow(dead_code, unreachable_patterns)]
7153            fn _type_assertion(
7154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7155            ) {
7156                match _t {
7157                    alloy_sol_types::private::AssertTypeEq::<
7158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7159                    >(_) => {}
7160                }
7161            }
7162            #[automatically_derived]
7163            #[doc(hidden)]
7164            impl ::core::convert::From<minimumStakeForQuorumReturn>
7165            for UnderlyingRustTuple<'_> {
7166                fn from(value: minimumStakeForQuorumReturn) -> Self {
7167                    (value._0,)
7168                }
7169            }
7170            #[automatically_derived]
7171            #[doc(hidden)]
7172            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7173            for minimumStakeForQuorumReturn {
7174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7175                    Self { _0: tuple.0 }
7176                }
7177            }
7178        }
7179        #[automatically_derived]
7180        impl alloy_sol_types::SolCall for minimumStakeForQuorumCall {
7181            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7182            type Token<'a> = <Self::Parameters<
7183                'a,
7184            > as alloy_sol_types::SolType>::Token<'a>;
7185            type Return = minimumStakeForQuorumReturn;
7186            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7187            type ReturnToken<'a> = <Self::ReturnTuple<
7188                'a,
7189            > as alloy_sol_types::SolType>::Token<'a>;
7190            const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)";
7191            const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8];
7192            #[inline]
7193            fn new<'a>(
7194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7195            ) -> Self {
7196                tuple.into()
7197            }
7198            #[inline]
7199            fn tokenize(&self) -> Self::Token<'_> {
7200                (
7201                    <alloy::sol_types::sol_data::Uint<
7202                        8,
7203                    > as alloy_sol_types::SolType>::tokenize(&self._0),
7204                )
7205            }
7206            #[inline]
7207            fn abi_decode_returns(
7208                data: &[u8],
7209                validate: bool,
7210            ) -> alloy_sol_types::Result<Self::Return> {
7211                <Self::ReturnTuple<
7212                    '_,
7213                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7214                    .map(Into::into)
7215            }
7216        }
7217    };
7218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7219    /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`.
7220```solidity
7221function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
7222```*/
7223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7224    #[derive(Clone)]
7225    pub struct modifyStrategyParamsCall {
7226        #[allow(missing_docs)]
7227        pub quorumNumber: u8,
7228        #[allow(missing_docs)]
7229        pub strategyIndices: alloy::sol_types::private::Vec<
7230            alloy::sol_types::private::primitives::aliases::U256,
7231        >,
7232        #[allow(missing_docs)]
7233        pub newMultipliers: alloy::sol_types::private::Vec<
7234            alloy::sol_types::private::primitives::aliases::U96,
7235        >,
7236    }
7237    ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function.
7238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7239    #[derive(Clone)]
7240    pub struct modifyStrategyParamsReturn {}
7241    #[allow(
7242        non_camel_case_types,
7243        non_snake_case,
7244        clippy::pub_underscore_fields,
7245        clippy::style
7246    )]
7247    const _: () = {
7248        use alloy::sol_types as alloy_sol_types;
7249        {
7250            #[doc(hidden)]
7251            type UnderlyingSolTuple<'a> = (
7252                alloy::sol_types::sol_data::Uint<8>,
7253                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7254                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7255            );
7256            #[doc(hidden)]
7257            type UnderlyingRustTuple<'a> = (
7258                u8,
7259                alloy::sol_types::private::Vec<
7260                    alloy::sol_types::private::primitives::aliases::U256,
7261                >,
7262                alloy::sol_types::private::Vec<
7263                    alloy::sol_types::private::primitives::aliases::U96,
7264                >,
7265            );
7266            #[cfg(test)]
7267            #[allow(dead_code, unreachable_patterns)]
7268            fn _type_assertion(
7269                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7270            ) {
7271                match _t {
7272                    alloy_sol_types::private::AssertTypeEq::<
7273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7274                    >(_) => {}
7275                }
7276            }
7277            #[automatically_derived]
7278            #[doc(hidden)]
7279            impl ::core::convert::From<modifyStrategyParamsCall>
7280            for UnderlyingRustTuple<'_> {
7281                fn from(value: modifyStrategyParamsCall) -> Self {
7282                    (value.quorumNumber, value.strategyIndices, value.newMultipliers)
7283                }
7284            }
7285            #[automatically_derived]
7286            #[doc(hidden)]
7287            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7288            for modifyStrategyParamsCall {
7289                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7290                    Self {
7291                        quorumNumber: tuple.0,
7292                        strategyIndices: tuple.1,
7293                        newMultipliers: tuple.2,
7294                    }
7295                }
7296            }
7297        }
7298        {
7299            #[doc(hidden)]
7300            type UnderlyingSolTuple<'a> = ();
7301            #[doc(hidden)]
7302            type UnderlyingRustTuple<'a> = ();
7303            #[cfg(test)]
7304            #[allow(dead_code, unreachable_patterns)]
7305            fn _type_assertion(
7306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7307            ) {
7308                match _t {
7309                    alloy_sol_types::private::AssertTypeEq::<
7310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7311                    >(_) => {}
7312                }
7313            }
7314            #[automatically_derived]
7315            #[doc(hidden)]
7316            impl ::core::convert::From<modifyStrategyParamsReturn>
7317            for UnderlyingRustTuple<'_> {
7318                fn from(value: modifyStrategyParamsReturn) -> Self {
7319                    ()
7320                }
7321            }
7322            #[automatically_derived]
7323            #[doc(hidden)]
7324            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7325            for modifyStrategyParamsReturn {
7326                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7327                    Self {}
7328                }
7329            }
7330        }
7331        #[automatically_derived]
7332        impl alloy_sol_types::SolCall for modifyStrategyParamsCall {
7333            type Parameters<'a> = (
7334                alloy::sol_types::sol_data::Uint<8>,
7335                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7336                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7337            );
7338            type Token<'a> = <Self::Parameters<
7339                'a,
7340            > as alloy_sol_types::SolType>::Token<'a>;
7341            type Return = modifyStrategyParamsReturn;
7342            type ReturnTuple<'a> = ();
7343            type ReturnToken<'a> = <Self::ReturnTuple<
7344                'a,
7345            > as alloy_sol_types::SolType>::Token<'a>;
7346            const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])";
7347            const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8];
7348            #[inline]
7349            fn new<'a>(
7350                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7351            ) -> Self {
7352                tuple.into()
7353            }
7354            #[inline]
7355            fn tokenize(&self) -> Self::Token<'_> {
7356                (
7357                    <alloy::sol_types::sol_data::Uint<
7358                        8,
7359                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7360                    <alloy::sol_types::sol_data::Array<
7361                        alloy::sol_types::sol_data::Uint<256>,
7362                    > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices),
7363                    <alloy::sol_types::sol_data::Array<
7364                        alloy::sol_types::sol_data::Uint<96>,
7365                    > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers),
7366                )
7367            }
7368            #[inline]
7369            fn abi_decode_returns(
7370                data: &[u8],
7371                validate: bool,
7372            ) -> alloy_sol_types::Result<Self::Return> {
7373                <Self::ReturnTuple<
7374                    '_,
7375                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7376                    .map(Into::into)
7377            }
7378        }
7379    };
7380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7381    /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`.
7382```solidity
7383function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
7384```*/
7385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7386    #[derive(Clone)]
7387    pub struct registerOperatorCall {
7388        #[allow(missing_docs)]
7389        pub operator: alloy::sol_types::private::Address,
7390        #[allow(missing_docs)]
7391        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
7392        #[allow(missing_docs)]
7393        pub quorumNumbers: alloy::sol_types::private::Bytes,
7394    }
7395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7396    ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function.
7397    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7398    #[derive(Clone)]
7399    pub struct registerOperatorReturn {
7400        #[allow(missing_docs)]
7401        pub _0: alloy::sol_types::private::Vec<
7402            alloy::sol_types::private::primitives::aliases::U96,
7403        >,
7404        #[allow(missing_docs)]
7405        pub _1: alloy::sol_types::private::Vec<
7406            alloy::sol_types::private::primitives::aliases::U96,
7407        >,
7408    }
7409    #[allow(
7410        non_camel_case_types,
7411        non_snake_case,
7412        clippy::pub_underscore_fields,
7413        clippy::style
7414    )]
7415    const _: () = {
7416        use alloy::sol_types as alloy_sol_types;
7417        {
7418            #[doc(hidden)]
7419            type UnderlyingSolTuple<'a> = (
7420                alloy::sol_types::sol_data::Address,
7421                alloy::sol_types::sol_data::FixedBytes<32>,
7422                alloy::sol_types::sol_data::Bytes,
7423            );
7424            #[doc(hidden)]
7425            type UnderlyingRustTuple<'a> = (
7426                alloy::sol_types::private::Address,
7427                alloy::sol_types::private::FixedBytes<32>,
7428                alloy::sol_types::private::Bytes,
7429            );
7430            #[cfg(test)]
7431            #[allow(dead_code, unreachable_patterns)]
7432            fn _type_assertion(
7433                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7434            ) {
7435                match _t {
7436                    alloy_sol_types::private::AssertTypeEq::<
7437                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7438                    >(_) => {}
7439                }
7440            }
7441            #[automatically_derived]
7442            #[doc(hidden)]
7443            impl ::core::convert::From<registerOperatorCall>
7444            for UnderlyingRustTuple<'_> {
7445                fn from(value: registerOperatorCall) -> Self {
7446                    (value.operator, value.operatorId, value.quorumNumbers)
7447                }
7448            }
7449            #[automatically_derived]
7450            #[doc(hidden)]
7451            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7452            for registerOperatorCall {
7453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7454                    Self {
7455                        operator: tuple.0,
7456                        operatorId: tuple.1,
7457                        quorumNumbers: tuple.2,
7458                    }
7459                }
7460            }
7461        }
7462        {
7463            #[doc(hidden)]
7464            type UnderlyingSolTuple<'a> = (
7465                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7466                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7467            );
7468            #[doc(hidden)]
7469            type UnderlyingRustTuple<'a> = (
7470                alloy::sol_types::private::Vec<
7471                    alloy::sol_types::private::primitives::aliases::U96,
7472                >,
7473                alloy::sol_types::private::Vec<
7474                    alloy::sol_types::private::primitives::aliases::U96,
7475                >,
7476            );
7477            #[cfg(test)]
7478            #[allow(dead_code, unreachable_patterns)]
7479            fn _type_assertion(
7480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7481            ) {
7482                match _t {
7483                    alloy_sol_types::private::AssertTypeEq::<
7484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7485                    >(_) => {}
7486                }
7487            }
7488            #[automatically_derived]
7489            #[doc(hidden)]
7490            impl ::core::convert::From<registerOperatorReturn>
7491            for UnderlyingRustTuple<'_> {
7492                fn from(value: registerOperatorReturn) -> Self {
7493                    (value._0, value._1)
7494                }
7495            }
7496            #[automatically_derived]
7497            #[doc(hidden)]
7498            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7499            for registerOperatorReturn {
7500                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7501                    Self { _0: tuple.0, _1: tuple.1 }
7502                }
7503            }
7504        }
7505        #[automatically_derived]
7506        impl alloy_sol_types::SolCall for registerOperatorCall {
7507            type Parameters<'a> = (
7508                alloy::sol_types::sol_data::Address,
7509                alloy::sol_types::sol_data::FixedBytes<32>,
7510                alloy::sol_types::sol_data::Bytes,
7511            );
7512            type Token<'a> = <Self::Parameters<
7513                'a,
7514            > as alloy_sol_types::SolType>::Token<'a>;
7515            type Return = registerOperatorReturn;
7516            type ReturnTuple<'a> = (
7517                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7518                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7519            );
7520            type ReturnToken<'a> = <Self::ReturnTuple<
7521                'a,
7522            > as alloy_sol_types::SolType>::Token<'a>;
7523            const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)";
7524            const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8];
7525            #[inline]
7526            fn new<'a>(
7527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7528            ) -> Self {
7529                tuple.into()
7530            }
7531            #[inline]
7532            fn tokenize(&self) -> Self::Token<'_> {
7533                (
7534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7535                        &self.operator,
7536                    ),
7537                    <alloy::sol_types::sol_data::FixedBytes<
7538                        32,
7539                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
7540                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7541                        &self.quorumNumbers,
7542                    ),
7543                )
7544            }
7545            #[inline]
7546            fn abi_decode_returns(
7547                data: &[u8],
7548                validate: bool,
7549            ) -> alloy_sol_types::Result<Self::Return> {
7550                <Self::ReturnTuple<
7551                    '_,
7552                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7553                    .map(Into::into)
7554            }
7555        }
7556    };
7557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7558    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
7559```solidity
7560function registryCoordinator() external view returns (address);
7561```*/
7562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7563    #[derive(Clone)]
7564    pub struct registryCoordinatorCall {}
7565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7566    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
7567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7568    #[derive(Clone)]
7569    pub struct registryCoordinatorReturn {
7570        #[allow(missing_docs)]
7571        pub _0: alloy::sol_types::private::Address,
7572    }
7573    #[allow(
7574        non_camel_case_types,
7575        non_snake_case,
7576        clippy::pub_underscore_fields,
7577        clippy::style
7578    )]
7579    const _: () = {
7580        use alloy::sol_types as alloy_sol_types;
7581        {
7582            #[doc(hidden)]
7583            type UnderlyingSolTuple<'a> = ();
7584            #[doc(hidden)]
7585            type UnderlyingRustTuple<'a> = ();
7586            #[cfg(test)]
7587            #[allow(dead_code, unreachable_patterns)]
7588            fn _type_assertion(
7589                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7590            ) {
7591                match _t {
7592                    alloy_sol_types::private::AssertTypeEq::<
7593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7594                    >(_) => {}
7595                }
7596            }
7597            #[automatically_derived]
7598            #[doc(hidden)]
7599            impl ::core::convert::From<registryCoordinatorCall>
7600            for UnderlyingRustTuple<'_> {
7601                fn from(value: registryCoordinatorCall) -> Self {
7602                    ()
7603                }
7604            }
7605            #[automatically_derived]
7606            #[doc(hidden)]
7607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7608            for registryCoordinatorCall {
7609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7610                    Self {}
7611                }
7612            }
7613        }
7614        {
7615            #[doc(hidden)]
7616            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7617            #[doc(hidden)]
7618            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7619            #[cfg(test)]
7620            #[allow(dead_code, unreachable_patterns)]
7621            fn _type_assertion(
7622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7623            ) {
7624                match _t {
7625                    alloy_sol_types::private::AssertTypeEq::<
7626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7627                    >(_) => {}
7628                }
7629            }
7630            #[automatically_derived]
7631            #[doc(hidden)]
7632            impl ::core::convert::From<registryCoordinatorReturn>
7633            for UnderlyingRustTuple<'_> {
7634                fn from(value: registryCoordinatorReturn) -> Self {
7635                    (value._0,)
7636                }
7637            }
7638            #[automatically_derived]
7639            #[doc(hidden)]
7640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7641            for registryCoordinatorReturn {
7642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7643                    Self { _0: tuple.0 }
7644                }
7645            }
7646        }
7647        #[automatically_derived]
7648        impl alloy_sol_types::SolCall for registryCoordinatorCall {
7649            type Parameters<'a> = ();
7650            type Token<'a> = <Self::Parameters<
7651                'a,
7652            > as alloy_sol_types::SolType>::Token<'a>;
7653            type Return = registryCoordinatorReturn;
7654            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7655            type ReturnToken<'a> = <Self::ReturnTuple<
7656                'a,
7657            > as alloy_sol_types::SolType>::Token<'a>;
7658            const SIGNATURE: &'static str = "registryCoordinator()";
7659            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
7660            #[inline]
7661            fn new<'a>(
7662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7663            ) -> Self {
7664                tuple.into()
7665            }
7666            #[inline]
7667            fn tokenize(&self) -> Self::Token<'_> {
7668                ()
7669            }
7670            #[inline]
7671            fn abi_decode_returns(
7672                data: &[u8],
7673                validate: bool,
7674            ) -> alloy_sol_types::Result<Self::Return> {
7675                <Self::ReturnTuple<
7676                    '_,
7677                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7678                    .map(Into::into)
7679            }
7680        }
7681    };
7682    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7683    /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`.
7684```solidity
7685function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
7686```*/
7687    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7688    #[derive(Clone)]
7689    pub struct removeStrategiesCall {
7690        #[allow(missing_docs)]
7691        pub quorumNumber: u8,
7692        #[allow(missing_docs)]
7693        pub indicesToRemove: alloy::sol_types::private::Vec<
7694            alloy::sol_types::private::primitives::aliases::U256,
7695        >,
7696    }
7697    ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function.
7698    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7699    #[derive(Clone)]
7700    pub struct removeStrategiesReturn {}
7701    #[allow(
7702        non_camel_case_types,
7703        non_snake_case,
7704        clippy::pub_underscore_fields,
7705        clippy::style
7706    )]
7707    const _: () = {
7708        use alloy::sol_types as alloy_sol_types;
7709        {
7710            #[doc(hidden)]
7711            type UnderlyingSolTuple<'a> = (
7712                alloy::sol_types::sol_data::Uint<8>,
7713                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7714            );
7715            #[doc(hidden)]
7716            type UnderlyingRustTuple<'a> = (
7717                u8,
7718                alloy::sol_types::private::Vec<
7719                    alloy::sol_types::private::primitives::aliases::U256,
7720                >,
7721            );
7722            #[cfg(test)]
7723            #[allow(dead_code, unreachable_patterns)]
7724            fn _type_assertion(
7725                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7726            ) {
7727                match _t {
7728                    alloy_sol_types::private::AssertTypeEq::<
7729                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7730                    >(_) => {}
7731                }
7732            }
7733            #[automatically_derived]
7734            #[doc(hidden)]
7735            impl ::core::convert::From<removeStrategiesCall>
7736            for UnderlyingRustTuple<'_> {
7737                fn from(value: removeStrategiesCall) -> Self {
7738                    (value.quorumNumber, value.indicesToRemove)
7739                }
7740            }
7741            #[automatically_derived]
7742            #[doc(hidden)]
7743            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7744            for removeStrategiesCall {
7745                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7746                    Self {
7747                        quorumNumber: tuple.0,
7748                        indicesToRemove: tuple.1,
7749                    }
7750                }
7751            }
7752        }
7753        {
7754            #[doc(hidden)]
7755            type UnderlyingSolTuple<'a> = ();
7756            #[doc(hidden)]
7757            type UnderlyingRustTuple<'a> = ();
7758            #[cfg(test)]
7759            #[allow(dead_code, unreachable_patterns)]
7760            fn _type_assertion(
7761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7762            ) {
7763                match _t {
7764                    alloy_sol_types::private::AssertTypeEq::<
7765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7766                    >(_) => {}
7767                }
7768            }
7769            #[automatically_derived]
7770            #[doc(hidden)]
7771            impl ::core::convert::From<removeStrategiesReturn>
7772            for UnderlyingRustTuple<'_> {
7773                fn from(value: removeStrategiesReturn) -> Self {
7774                    ()
7775                }
7776            }
7777            #[automatically_derived]
7778            #[doc(hidden)]
7779            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7780            for removeStrategiesReturn {
7781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7782                    Self {}
7783                }
7784            }
7785        }
7786        #[automatically_derived]
7787        impl alloy_sol_types::SolCall for removeStrategiesCall {
7788            type Parameters<'a> = (
7789                alloy::sol_types::sol_data::Uint<8>,
7790                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7791            );
7792            type Token<'a> = <Self::Parameters<
7793                'a,
7794            > as alloy_sol_types::SolType>::Token<'a>;
7795            type Return = removeStrategiesReturn;
7796            type ReturnTuple<'a> = ();
7797            type ReturnToken<'a> = <Self::ReturnTuple<
7798                'a,
7799            > as alloy_sol_types::SolType>::Token<'a>;
7800            const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])";
7801            const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8];
7802            #[inline]
7803            fn new<'a>(
7804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7805            ) -> Self {
7806                tuple.into()
7807            }
7808            #[inline]
7809            fn tokenize(&self) -> Self::Token<'_> {
7810                (
7811                    <alloy::sol_types::sol_data::Uint<
7812                        8,
7813                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7814                    <alloy::sol_types::sol_data::Array<
7815                        alloy::sol_types::sol_data::Uint<256>,
7816                    > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove),
7817                )
7818            }
7819            #[inline]
7820            fn abi_decode_returns(
7821                data: &[u8],
7822                validate: bool,
7823            ) -> alloy_sol_types::Result<Self::Return> {
7824                <Self::ReturnTuple<
7825                    '_,
7826                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7827                    .map(Into::into)
7828            }
7829        }
7830    };
7831    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7832    /**Function with signature `setMinimumStakeForQuorum(uint8,uint96)` and selector `0xbc9a40c3`.
7833```solidity
7834function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
7835```*/
7836    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7837    #[derive(Clone)]
7838    pub struct setMinimumStakeForQuorumCall {
7839        #[allow(missing_docs)]
7840        pub quorumNumber: u8,
7841        #[allow(missing_docs)]
7842        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
7843    }
7844    ///Container type for the return parameters of the [`setMinimumStakeForQuorum(uint8,uint96)`](setMinimumStakeForQuorumCall) function.
7845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7846    #[derive(Clone)]
7847    pub struct setMinimumStakeForQuorumReturn {}
7848    #[allow(
7849        non_camel_case_types,
7850        non_snake_case,
7851        clippy::pub_underscore_fields,
7852        clippy::style
7853    )]
7854    const _: () = {
7855        use alloy::sol_types as alloy_sol_types;
7856        {
7857            #[doc(hidden)]
7858            type UnderlyingSolTuple<'a> = (
7859                alloy::sol_types::sol_data::Uint<8>,
7860                alloy::sol_types::sol_data::Uint<96>,
7861            );
7862            #[doc(hidden)]
7863            type UnderlyingRustTuple<'a> = (
7864                u8,
7865                alloy::sol_types::private::primitives::aliases::U96,
7866            );
7867            #[cfg(test)]
7868            #[allow(dead_code, unreachable_patterns)]
7869            fn _type_assertion(
7870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7871            ) {
7872                match _t {
7873                    alloy_sol_types::private::AssertTypeEq::<
7874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7875                    >(_) => {}
7876                }
7877            }
7878            #[automatically_derived]
7879            #[doc(hidden)]
7880            impl ::core::convert::From<setMinimumStakeForQuorumCall>
7881            for UnderlyingRustTuple<'_> {
7882                fn from(value: setMinimumStakeForQuorumCall) -> Self {
7883                    (value.quorumNumber, value.minimumStake)
7884                }
7885            }
7886            #[automatically_derived]
7887            #[doc(hidden)]
7888            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7889            for setMinimumStakeForQuorumCall {
7890                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7891                    Self {
7892                        quorumNumber: tuple.0,
7893                        minimumStake: tuple.1,
7894                    }
7895                }
7896            }
7897        }
7898        {
7899            #[doc(hidden)]
7900            type UnderlyingSolTuple<'a> = ();
7901            #[doc(hidden)]
7902            type UnderlyingRustTuple<'a> = ();
7903            #[cfg(test)]
7904            #[allow(dead_code, unreachable_patterns)]
7905            fn _type_assertion(
7906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7907            ) {
7908                match _t {
7909                    alloy_sol_types::private::AssertTypeEq::<
7910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7911                    >(_) => {}
7912                }
7913            }
7914            #[automatically_derived]
7915            #[doc(hidden)]
7916            impl ::core::convert::From<setMinimumStakeForQuorumReturn>
7917            for UnderlyingRustTuple<'_> {
7918                fn from(value: setMinimumStakeForQuorumReturn) -> Self {
7919                    ()
7920                }
7921            }
7922            #[automatically_derived]
7923            #[doc(hidden)]
7924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7925            for setMinimumStakeForQuorumReturn {
7926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7927                    Self {}
7928                }
7929            }
7930        }
7931        #[automatically_derived]
7932        impl alloy_sol_types::SolCall for setMinimumStakeForQuorumCall {
7933            type Parameters<'a> = (
7934                alloy::sol_types::sol_data::Uint<8>,
7935                alloy::sol_types::sol_data::Uint<96>,
7936            );
7937            type Token<'a> = <Self::Parameters<
7938                'a,
7939            > as alloy_sol_types::SolType>::Token<'a>;
7940            type Return = setMinimumStakeForQuorumReturn;
7941            type ReturnTuple<'a> = ();
7942            type ReturnToken<'a> = <Self::ReturnTuple<
7943                'a,
7944            > as alloy_sol_types::SolType>::Token<'a>;
7945            const SIGNATURE: &'static str = "setMinimumStakeForQuorum(uint8,uint96)";
7946            const SELECTOR: [u8; 4] = [188u8, 154u8, 64u8, 195u8];
7947            #[inline]
7948            fn new<'a>(
7949                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7950            ) -> Self {
7951                tuple.into()
7952            }
7953            #[inline]
7954            fn tokenize(&self) -> Self::Token<'_> {
7955                (
7956                    <alloy::sol_types::sol_data::Uint<
7957                        8,
7958                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7959                    <alloy::sol_types::sol_data::Uint<
7960                        96,
7961                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
7962                )
7963            }
7964            #[inline]
7965            fn abi_decode_returns(
7966                data: &[u8],
7967                validate: bool,
7968            ) -> alloy_sol_types::Result<Self::Return> {
7969                <Self::ReturnTuple<
7970                    '_,
7971                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7972                    .map(Into::into)
7973            }
7974        }
7975    };
7976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7977    /**Function with signature `setSlashableStakeLookahead(uint8,uint32)` and selector `0xe086adb3`.
7978```solidity
7979function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
7980```*/
7981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7982    #[derive(Clone)]
7983    pub struct setSlashableStakeLookaheadCall {
7984        #[allow(missing_docs)]
7985        pub quorumNumber: u8,
7986        #[allow(missing_docs)]
7987        pub _lookAheadBlocks: u32,
7988    }
7989    ///Container type for the return parameters of the [`setSlashableStakeLookahead(uint8,uint32)`](setSlashableStakeLookaheadCall) function.
7990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7991    #[derive(Clone)]
7992    pub struct setSlashableStakeLookaheadReturn {}
7993    #[allow(
7994        non_camel_case_types,
7995        non_snake_case,
7996        clippy::pub_underscore_fields,
7997        clippy::style
7998    )]
7999    const _: () = {
8000        use alloy::sol_types as alloy_sol_types;
8001        {
8002            #[doc(hidden)]
8003            type UnderlyingSolTuple<'a> = (
8004                alloy::sol_types::sol_data::Uint<8>,
8005                alloy::sol_types::sol_data::Uint<32>,
8006            );
8007            #[doc(hidden)]
8008            type UnderlyingRustTuple<'a> = (u8, u32);
8009            #[cfg(test)]
8010            #[allow(dead_code, unreachable_patterns)]
8011            fn _type_assertion(
8012                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8013            ) {
8014                match _t {
8015                    alloy_sol_types::private::AssertTypeEq::<
8016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8017                    >(_) => {}
8018                }
8019            }
8020            #[automatically_derived]
8021            #[doc(hidden)]
8022            impl ::core::convert::From<setSlashableStakeLookaheadCall>
8023            for UnderlyingRustTuple<'_> {
8024                fn from(value: setSlashableStakeLookaheadCall) -> Self {
8025                    (value.quorumNumber, value._lookAheadBlocks)
8026                }
8027            }
8028            #[automatically_derived]
8029            #[doc(hidden)]
8030            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8031            for setSlashableStakeLookaheadCall {
8032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8033                    Self {
8034                        quorumNumber: tuple.0,
8035                        _lookAheadBlocks: tuple.1,
8036                    }
8037                }
8038            }
8039        }
8040        {
8041            #[doc(hidden)]
8042            type UnderlyingSolTuple<'a> = ();
8043            #[doc(hidden)]
8044            type UnderlyingRustTuple<'a> = ();
8045            #[cfg(test)]
8046            #[allow(dead_code, unreachable_patterns)]
8047            fn _type_assertion(
8048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8049            ) {
8050                match _t {
8051                    alloy_sol_types::private::AssertTypeEq::<
8052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8053                    >(_) => {}
8054                }
8055            }
8056            #[automatically_derived]
8057            #[doc(hidden)]
8058            impl ::core::convert::From<setSlashableStakeLookaheadReturn>
8059            for UnderlyingRustTuple<'_> {
8060                fn from(value: setSlashableStakeLookaheadReturn) -> Self {
8061                    ()
8062                }
8063            }
8064            #[automatically_derived]
8065            #[doc(hidden)]
8066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8067            for setSlashableStakeLookaheadReturn {
8068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8069                    Self {}
8070                }
8071            }
8072        }
8073        #[automatically_derived]
8074        impl alloy_sol_types::SolCall for setSlashableStakeLookaheadCall {
8075            type Parameters<'a> = (
8076                alloy::sol_types::sol_data::Uint<8>,
8077                alloy::sol_types::sol_data::Uint<32>,
8078            );
8079            type Token<'a> = <Self::Parameters<
8080                'a,
8081            > as alloy_sol_types::SolType>::Token<'a>;
8082            type Return = setSlashableStakeLookaheadReturn;
8083            type ReturnTuple<'a> = ();
8084            type ReturnToken<'a> = <Self::ReturnTuple<
8085                'a,
8086            > as alloy_sol_types::SolType>::Token<'a>;
8087            const SIGNATURE: &'static str = "setSlashableStakeLookahead(uint8,uint32)";
8088            const SELECTOR: [u8; 4] = [224u8, 134u8, 173u8, 179u8];
8089            #[inline]
8090            fn new<'a>(
8091                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8092            ) -> Self {
8093                tuple.into()
8094            }
8095            #[inline]
8096            fn tokenize(&self) -> Self::Token<'_> {
8097                (
8098                    <alloy::sol_types::sol_data::Uint<
8099                        8,
8100                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8101                    <alloy::sol_types::sol_data::Uint<
8102                        32,
8103                    > as alloy_sol_types::SolType>::tokenize(&self._lookAheadBlocks),
8104                )
8105            }
8106            #[inline]
8107            fn abi_decode_returns(
8108                data: &[u8],
8109                validate: bool,
8110            ) -> alloy_sol_types::Result<Self::Return> {
8111                <Self::ReturnTuple<
8112                    '_,
8113                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8114                    .map(Into::into)
8115            }
8116        }
8117    };
8118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8119    /**Function with signature `slashableStakeLookAheadPerQuorum(uint8)` and selector `0x9ab4d6ff`.
8120```solidity
8121function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
8122```*/
8123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8124    #[derive(Clone)]
8125    pub struct slashableStakeLookAheadPerQuorumCall {
8126        #[allow(missing_docs)]
8127        pub quorumNumber: u8,
8128    }
8129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8130    ///Container type for the return parameters of the [`slashableStakeLookAheadPerQuorum(uint8)`](slashableStakeLookAheadPerQuorumCall) function.
8131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8132    #[derive(Clone)]
8133    pub struct slashableStakeLookAheadPerQuorumReturn {
8134        #[allow(missing_docs)]
8135        pub _0: u32,
8136    }
8137    #[allow(
8138        non_camel_case_types,
8139        non_snake_case,
8140        clippy::pub_underscore_fields,
8141        clippy::style
8142    )]
8143    const _: () = {
8144        use alloy::sol_types as alloy_sol_types;
8145        {
8146            #[doc(hidden)]
8147            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8148            #[doc(hidden)]
8149            type UnderlyingRustTuple<'a> = (u8,);
8150            #[cfg(test)]
8151            #[allow(dead_code, unreachable_patterns)]
8152            fn _type_assertion(
8153                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8154            ) {
8155                match _t {
8156                    alloy_sol_types::private::AssertTypeEq::<
8157                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8158                    >(_) => {}
8159                }
8160            }
8161            #[automatically_derived]
8162            #[doc(hidden)]
8163            impl ::core::convert::From<slashableStakeLookAheadPerQuorumCall>
8164            for UnderlyingRustTuple<'_> {
8165                fn from(value: slashableStakeLookAheadPerQuorumCall) -> Self {
8166                    (value.quorumNumber,)
8167                }
8168            }
8169            #[automatically_derived]
8170            #[doc(hidden)]
8171            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8172            for slashableStakeLookAheadPerQuorumCall {
8173                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8174                    Self { quorumNumber: tuple.0 }
8175                }
8176            }
8177        }
8178        {
8179            #[doc(hidden)]
8180            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8181            #[doc(hidden)]
8182            type UnderlyingRustTuple<'a> = (u32,);
8183            #[cfg(test)]
8184            #[allow(dead_code, unreachable_patterns)]
8185            fn _type_assertion(
8186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8187            ) {
8188                match _t {
8189                    alloy_sol_types::private::AssertTypeEq::<
8190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8191                    >(_) => {}
8192                }
8193            }
8194            #[automatically_derived]
8195            #[doc(hidden)]
8196            impl ::core::convert::From<slashableStakeLookAheadPerQuorumReturn>
8197            for UnderlyingRustTuple<'_> {
8198                fn from(value: slashableStakeLookAheadPerQuorumReturn) -> Self {
8199                    (value._0,)
8200                }
8201            }
8202            #[automatically_derived]
8203            #[doc(hidden)]
8204            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8205            for slashableStakeLookAheadPerQuorumReturn {
8206                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8207                    Self { _0: tuple.0 }
8208                }
8209            }
8210        }
8211        #[automatically_derived]
8212        impl alloy_sol_types::SolCall for slashableStakeLookAheadPerQuorumCall {
8213            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8214            type Token<'a> = <Self::Parameters<
8215                'a,
8216            > as alloy_sol_types::SolType>::Token<'a>;
8217            type Return = slashableStakeLookAheadPerQuorumReturn;
8218            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8219            type ReturnToken<'a> = <Self::ReturnTuple<
8220                'a,
8221            > as alloy_sol_types::SolType>::Token<'a>;
8222            const SIGNATURE: &'static str = "slashableStakeLookAheadPerQuorum(uint8)";
8223            const SELECTOR: [u8; 4] = [154u8, 180u8, 214u8, 255u8];
8224            #[inline]
8225            fn new<'a>(
8226                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8227            ) -> Self {
8228                tuple.into()
8229            }
8230            #[inline]
8231            fn tokenize(&self) -> Self::Token<'_> {
8232                (
8233                    <alloy::sol_types::sol_data::Uint<
8234                        8,
8235                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8236                )
8237            }
8238            #[inline]
8239            fn abi_decode_returns(
8240                data: &[u8],
8241                validate: bool,
8242            ) -> alloy_sol_types::Result<Self::Return> {
8243                <Self::ReturnTuple<
8244                    '_,
8245                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8246                    .map(Into::into)
8247            }
8248        }
8249    };
8250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8251    /**Function with signature `stakeTypePerQuorum(uint8)` and selector `0x697fbd93`.
8252```solidity
8253function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
8254```*/
8255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8256    #[derive(Clone)]
8257    pub struct stakeTypePerQuorumCall {
8258        #[allow(missing_docs)]
8259        pub quorumNumber: u8,
8260    }
8261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8262    ///Container type for the return parameters of the [`stakeTypePerQuorum(uint8)`](stakeTypePerQuorumCall) function.
8263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8264    #[derive(Clone)]
8265    pub struct stakeTypePerQuorumReturn {
8266        #[allow(missing_docs)]
8267        pub _0: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
8268    }
8269    #[allow(
8270        non_camel_case_types,
8271        non_snake_case,
8272        clippy::pub_underscore_fields,
8273        clippy::style
8274    )]
8275    const _: () = {
8276        use alloy::sol_types as alloy_sol_types;
8277        {
8278            #[doc(hidden)]
8279            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8280            #[doc(hidden)]
8281            type UnderlyingRustTuple<'a> = (u8,);
8282            #[cfg(test)]
8283            #[allow(dead_code, unreachable_patterns)]
8284            fn _type_assertion(
8285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8286            ) {
8287                match _t {
8288                    alloy_sol_types::private::AssertTypeEq::<
8289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8290                    >(_) => {}
8291                }
8292            }
8293            #[automatically_derived]
8294            #[doc(hidden)]
8295            impl ::core::convert::From<stakeTypePerQuorumCall>
8296            for UnderlyingRustTuple<'_> {
8297                fn from(value: stakeTypePerQuorumCall) -> Self {
8298                    (value.quorumNumber,)
8299                }
8300            }
8301            #[automatically_derived]
8302            #[doc(hidden)]
8303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8304            for stakeTypePerQuorumCall {
8305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8306                    Self { quorumNumber: tuple.0 }
8307                }
8308            }
8309        }
8310        {
8311            #[doc(hidden)]
8312            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeType,);
8313            #[doc(hidden)]
8314            type UnderlyingRustTuple<'a> = (
8315                <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
8316            );
8317            #[cfg(test)]
8318            #[allow(dead_code, unreachable_patterns)]
8319            fn _type_assertion(
8320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8321            ) {
8322                match _t {
8323                    alloy_sol_types::private::AssertTypeEq::<
8324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8325                    >(_) => {}
8326                }
8327            }
8328            #[automatically_derived]
8329            #[doc(hidden)]
8330            impl ::core::convert::From<stakeTypePerQuorumReturn>
8331            for UnderlyingRustTuple<'_> {
8332                fn from(value: stakeTypePerQuorumReturn) -> Self {
8333                    (value._0,)
8334                }
8335            }
8336            #[automatically_derived]
8337            #[doc(hidden)]
8338            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8339            for stakeTypePerQuorumReturn {
8340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8341                    Self { _0: tuple.0 }
8342                }
8343            }
8344        }
8345        #[automatically_derived]
8346        impl alloy_sol_types::SolCall for stakeTypePerQuorumCall {
8347            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8348            type Token<'a> = <Self::Parameters<
8349                'a,
8350            > as alloy_sol_types::SolType>::Token<'a>;
8351            type Return = stakeTypePerQuorumReturn;
8352            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeType,);
8353            type ReturnToken<'a> = <Self::ReturnTuple<
8354                'a,
8355            > as alloy_sol_types::SolType>::Token<'a>;
8356            const SIGNATURE: &'static str = "stakeTypePerQuorum(uint8)";
8357            const SELECTOR: [u8; 4] = [105u8, 127u8, 189u8, 147u8];
8358            #[inline]
8359            fn new<'a>(
8360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8361            ) -> Self {
8362                tuple.into()
8363            }
8364            #[inline]
8365            fn tokenize(&self) -> Self::Token<'_> {
8366                (
8367                    <alloy::sol_types::sol_data::Uint<
8368                        8,
8369                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8370                )
8371            }
8372            #[inline]
8373            fn abi_decode_returns(
8374                data: &[u8],
8375                validate: bool,
8376            ) -> alloy_sol_types::Result<Self::Return> {
8377                <Self::ReturnTuple<
8378                    '_,
8379                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8380                    .map(Into::into)
8381            }
8382        }
8383    };
8384    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8385    /**Function with signature `strategiesPerQuorum(uint8,uint256)` and selector `0x9f3ccf65`.
8386```solidity
8387function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
8388```*/
8389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8390    #[derive(Clone)]
8391    pub struct strategiesPerQuorumCall {
8392        #[allow(missing_docs)]
8393        pub quorumNumber: u8,
8394        #[allow(missing_docs)]
8395        pub _1: alloy::sol_types::private::primitives::aliases::U256,
8396    }
8397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8398    ///Container type for the return parameters of the [`strategiesPerQuorum(uint8,uint256)`](strategiesPerQuorumCall) function.
8399    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8400    #[derive(Clone)]
8401    pub struct strategiesPerQuorumReturn {
8402        #[allow(missing_docs)]
8403        pub _0: alloy::sol_types::private::Address,
8404    }
8405    #[allow(
8406        non_camel_case_types,
8407        non_snake_case,
8408        clippy::pub_underscore_fields,
8409        clippy::style
8410    )]
8411    const _: () = {
8412        use alloy::sol_types as alloy_sol_types;
8413        {
8414            #[doc(hidden)]
8415            type UnderlyingSolTuple<'a> = (
8416                alloy::sol_types::sol_data::Uint<8>,
8417                alloy::sol_types::sol_data::Uint<256>,
8418            );
8419            #[doc(hidden)]
8420            type UnderlyingRustTuple<'a> = (
8421                u8,
8422                alloy::sol_types::private::primitives::aliases::U256,
8423            );
8424            #[cfg(test)]
8425            #[allow(dead_code, unreachable_patterns)]
8426            fn _type_assertion(
8427                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8428            ) {
8429                match _t {
8430                    alloy_sol_types::private::AssertTypeEq::<
8431                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8432                    >(_) => {}
8433                }
8434            }
8435            #[automatically_derived]
8436            #[doc(hidden)]
8437            impl ::core::convert::From<strategiesPerQuorumCall>
8438            for UnderlyingRustTuple<'_> {
8439                fn from(value: strategiesPerQuorumCall) -> Self {
8440                    (value.quorumNumber, value._1)
8441                }
8442            }
8443            #[automatically_derived]
8444            #[doc(hidden)]
8445            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8446            for strategiesPerQuorumCall {
8447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8448                    Self {
8449                        quorumNumber: tuple.0,
8450                        _1: tuple.1,
8451                    }
8452                }
8453            }
8454        }
8455        {
8456            #[doc(hidden)]
8457            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8458            #[doc(hidden)]
8459            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8460            #[cfg(test)]
8461            #[allow(dead_code, unreachable_patterns)]
8462            fn _type_assertion(
8463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8464            ) {
8465                match _t {
8466                    alloy_sol_types::private::AssertTypeEq::<
8467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8468                    >(_) => {}
8469                }
8470            }
8471            #[automatically_derived]
8472            #[doc(hidden)]
8473            impl ::core::convert::From<strategiesPerQuorumReturn>
8474            for UnderlyingRustTuple<'_> {
8475                fn from(value: strategiesPerQuorumReturn) -> Self {
8476                    (value._0,)
8477                }
8478            }
8479            #[automatically_derived]
8480            #[doc(hidden)]
8481            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8482            for strategiesPerQuorumReturn {
8483                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8484                    Self { _0: tuple.0 }
8485                }
8486            }
8487        }
8488        #[automatically_derived]
8489        impl alloy_sol_types::SolCall for strategiesPerQuorumCall {
8490            type Parameters<'a> = (
8491                alloy::sol_types::sol_data::Uint<8>,
8492                alloy::sol_types::sol_data::Uint<256>,
8493            );
8494            type Token<'a> = <Self::Parameters<
8495                'a,
8496            > as alloy_sol_types::SolType>::Token<'a>;
8497            type Return = strategiesPerQuorumReturn;
8498            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8499            type ReturnToken<'a> = <Self::ReturnTuple<
8500                'a,
8501            > as alloy_sol_types::SolType>::Token<'a>;
8502            const SIGNATURE: &'static str = "strategiesPerQuorum(uint8,uint256)";
8503            const SELECTOR: [u8; 4] = [159u8, 60u8, 207u8, 101u8];
8504            #[inline]
8505            fn new<'a>(
8506                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8507            ) -> Self {
8508                tuple.into()
8509            }
8510            #[inline]
8511            fn tokenize(&self) -> Self::Token<'_> {
8512                (
8513                    <alloy::sol_types::sol_data::Uint<
8514                        8,
8515                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8516                    <alloy::sol_types::sol_data::Uint<
8517                        256,
8518                    > as alloy_sol_types::SolType>::tokenize(&self._1),
8519                )
8520            }
8521            #[inline]
8522            fn abi_decode_returns(
8523                data: &[u8],
8524                validate: bool,
8525            ) -> alloy_sol_types::Result<Self::Return> {
8526                <Self::ReturnTuple<
8527                    '_,
8528                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8529                    .map(Into::into)
8530            }
8531        }
8532    };
8533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8534    /**Function with signature `strategyParams(uint8,uint256)` and selector `0x08732461`.
8535```solidity
8536function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
8537```*/
8538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8539    #[derive(Clone)]
8540    pub struct strategyParamsCall {
8541        #[allow(missing_docs)]
8542        pub quorumNumber: u8,
8543        #[allow(missing_docs)]
8544        pub _1: alloy::sol_types::private::primitives::aliases::U256,
8545    }
8546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8547    ///Container type for the return parameters of the [`strategyParams(uint8,uint256)`](strategyParamsCall) function.
8548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8549    #[derive(Clone)]
8550    pub struct strategyParamsReturn {
8551        #[allow(missing_docs)]
8552        pub strategy: alloy::sol_types::private::Address,
8553        #[allow(missing_docs)]
8554        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
8555    }
8556    #[allow(
8557        non_camel_case_types,
8558        non_snake_case,
8559        clippy::pub_underscore_fields,
8560        clippy::style
8561    )]
8562    const _: () = {
8563        use alloy::sol_types as alloy_sol_types;
8564        {
8565            #[doc(hidden)]
8566            type UnderlyingSolTuple<'a> = (
8567                alloy::sol_types::sol_data::Uint<8>,
8568                alloy::sol_types::sol_data::Uint<256>,
8569            );
8570            #[doc(hidden)]
8571            type UnderlyingRustTuple<'a> = (
8572                u8,
8573                alloy::sol_types::private::primitives::aliases::U256,
8574            );
8575            #[cfg(test)]
8576            #[allow(dead_code, unreachable_patterns)]
8577            fn _type_assertion(
8578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8579            ) {
8580                match _t {
8581                    alloy_sol_types::private::AssertTypeEq::<
8582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8583                    >(_) => {}
8584                }
8585            }
8586            #[automatically_derived]
8587            #[doc(hidden)]
8588            impl ::core::convert::From<strategyParamsCall> for UnderlyingRustTuple<'_> {
8589                fn from(value: strategyParamsCall) -> Self {
8590                    (value.quorumNumber, value._1)
8591                }
8592            }
8593            #[automatically_derived]
8594            #[doc(hidden)]
8595            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsCall {
8596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8597                    Self {
8598                        quorumNumber: tuple.0,
8599                        _1: tuple.1,
8600                    }
8601                }
8602            }
8603        }
8604        {
8605            #[doc(hidden)]
8606            type UnderlyingSolTuple<'a> = (
8607                alloy::sol_types::sol_data::Address,
8608                alloy::sol_types::sol_data::Uint<96>,
8609            );
8610            #[doc(hidden)]
8611            type UnderlyingRustTuple<'a> = (
8612                alloy::sol_types::private::Address,
8613                alloy::sol_types::private::primitives::aliases::U96,
8614            );
8615            #[cfg(test)]
8616            #[allow(dead_code, unreachable_patterns)]
8617            fn _type_assertion(
8618                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8619            ) {
8620                match _t {
8621                    alloy_sol_types::private::AssertTypeEq::<
8622                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8623                    >(_) => {}
8624                }
8625            }
8626            #[automatically_derived]
8627            #[doc(hidden)]
8628            impl ::core::convert::From<strategyParamsReturn>
8629            for UnderlyingRustTuple<'_> {
8630                fn from(value: strategyParamsReturn) -> Self {
8631                    (value.strategy, value.multiplier)
8632                }
8633            }
8634            #[automatically_derived]
8635            #[doc(hidden)]
8636            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8637            for strategyParamsReturn {
8638                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8639                    Self {
8640                        strategy: tuple.0,
8641                        multiplier: tuple.1,
8642                    }
8643                }
8644            }
8645        }
8646        #[automatically_derived]
8647        impl alloy_sol_types::SolCall for strategyParamsCall {
8648            type Parameters<'a> = (
8649                alloy::sol_types::sol_data::Uint<8>,
8650                alloy::sol_types::sol_data::Uint<256>,
8651            );
8652            type Token<'a> = <Self::Parameters<
8653                'a,
8654            > as alloy_sol_types::SolType>::Token<'a>;
8655            type Return = strategyParamsReturn;
8656            type ReturnTuple<'a> = (
8657                alloy::sol_types::sol_data::Address,
8658                alloy::sol_types::sol_data::Uint<96>,
8659            );
8660            type ReturnToken<'a> = <Self::ReturnTuple<
8661                'a,
8662            > as alloy_sol_types::SolType>::Token<'a>;
8663            const SIGNATURE: &'static str = "strategyParams(uint8,uint256)";
8664            const SELECTOR: [u8; 4] = [8u8, 115u8, 36u8, 97u8];
8665            #[inline]
8666            fn new<'a>(
8667                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8668            ) -> Self {
8669                tuple.into()
8670            }
8671            #[inline]
8672            fn tokenize(&self) -> Self::Token<'_> {
8673                (
8674                    <alloy::sol_types::sol_data::Uint<
8675                        8,
8676                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8677                    <alloy::sol_types::sol_data::Uint<
8678                        256,
8679                    > as alloy_sol_types::SolType>::tokenize(&self._1),
8680                )
8681            }
8682            #[inline]
8683            fn abi_decode_returns(
8684                data: &[u8],
8685                validate: bool,
8686            ) -> alloy_sol_types::Result<Self::Return> {
8687                <Self::ReturnTuple<
8688                    '_,
8689                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8690                    .map(Into::into)
8691            }
8692        }
8693    };
8694    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8695    /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`.
8696```solidity
8697function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
8698```*/
8699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8700    #[derive(Clone)]
8701    pub struct strategyParamsByIndexCall {
8702        #[allow(missing_docs)]
8703        pub quorumNumber: u8,
8704        #[allow(missing_docs)]
8705        pub index: alloy::sol_types::private::primitives::aliases::U256,
8706    }
8707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8708    ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function.
8709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8710    #[derive(Clone)]
8711    pub struct strategyParamsByIndexReturn {
8712        #[allow(missing_docs)]
8713        pub _0: <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
8714    }
8715    #[allow(
8716        non_camel_case_types,
8717        non_snake_case,
8718        clippy::pub_underscore_fields,
8719        clippy::style
8720    )]
8721    const _: () = {
8722        use alloy::sol_types as alloy_sol_types;
8723        {
8724            #[doc(hidden)]
8725            type UnderlyingSolTuple<'a> = (
8726                alloy::sol_types::sol_data::Uint<8>,
8727                alloy::sol_types::sol_data::Uint<256>,
8728            );
8729            #[doc(hidden)]
8730            type UnderlyingRustTuple<'a> = (
8731                u8,
8732                alloy::sol_types::private::primitives::aliases::U256,
8733            );
8734            #[cfg(test)]
8735            #[allow(dead_code, unreachable_patterns)]
8736            fn _type_assertion(
8737                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8738            ) {
8739                match _t {
8740                    alloy_sol_types::private::AssertTypeEq::<
8741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8742                    >(_) => {}
8743                }
8744            }
8745            #[automatically_derived]
8746            #[doc(hidden)]
8747            impl ::core::convert::From<strategyParamsByIndexCall>
8748            for UnderlyingRustTuple<'_> {
8749                fn from(value: strategyParamsByIndexCall) -> Self {
8750                    (value.quorumNumber, value.index)
8751                }
8752            }
8753            #[automatically_derived]
8754            #[doc(hidden)]
8755            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8756            for strategyParamsByIndexCall {
8757                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8758                    Self {
8759                        quorumNumber: tuple.0,
8760                        index: tuple.1,
8761                    }
8762                }
8763            }
8764        }
8765        {
8766            #[doc(hidden)]
8767            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
8768            #[doc(hidden)]
8769            type UnderlyingRustTuple<'a> = (
8770                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
8771            );
8772            #[cfg(test)]
8773            #[allow(dead_code, unreachable_patterns)]
8774            fn _type_assertion(
8775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8776            ) {
8777                match _t {
8778                    alloy_sol_types::private::AssertTypeEq::<
8779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8780                    >(_) => {}
8781                }
8782            }
8783            #[automatically_derived]
8784            #[doc(hidden)]
8785            impl ::core::convert::From<strategyParamsByIndexReturn>
8786            for UnderlyingRustTuple<'_> {
8787                fn from(value: strategyParamsByIndexReturn) -> Self {
8788                    (value._0,)
8789                }
8790            }
8791            #[automatically_derived]
8792            #[doc(hidden)]
8793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8794            for strategyParamsByIndexReturn {
8795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8796                    Self { _0: tuple.0 }
8797                }
8798            }
8799        }
8800        #[automatically_derived]
8801        impl alloy_sol_types::SolCall for strategyParamsByIndexCall {
8802            type Parameters<'a> = (
8803                alloy::sol_types::sol_data::Uint<8>,
8804                alloy::sol_types::sol_data::Uint<256>,
8805            );
8806            type Token<'a> = <Self::Parameters<
8807                'a,
8808            > as alloy_sol_types::SolType>::Token<'a>;
8809            type Return = strategyParamsByIndexReturn;
8810            type ReturnTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
8811            type ReturnToken<'a> = <Self::ReturnTuple<
8812                'a,
8813            > as alloy_sol_types::SolType>::Token<'a>;
8814            const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)";
8815            const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8];
8816            #[inline]
8817            fn new<'a>(
8818                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8819            ) -> Self {
8820                tuple.into()
8821            }
8822            #[inline]
8823            fn tokenize(&self) -> Self::Token<'_> {
8824                (
8825                    <alloy::sol_types::sol_data::Uint<
8826                        8,
8827                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8828                    <alloy::sol_types::sol_data::Uint<
8829                        256,
8830                    > as alloy_sol_types::SolType>::tokenize(&self.index),
8831                )
8832            }
8833            #[inline]
8834            fn abi_decode_returns(
8835                data: &[u8],
8836                validate: bool,
8837            ) -> alloy_sol_types::Result<Self::Return> {
8838                <Self::ReturnTuple<
8839                    '_,
8840                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8841                    .map(Into::into)
8842            }
8843        }
8844    };
8845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8846    /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`.
8847```solidity
8848function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
8849```*/
8850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8851    #[derive(Clone)]
8852    pub struct strategyParamsLengthCall {
8853        #[allow(missing_docs)]
8854        pub quorumNumber: u8,
8855    }
8856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8857    ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function.
8858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8859    #[derive(Clone)]
8860    pub struct strategyParamsLengthReturn {
8861        #[allow(missing_docs)]
8862        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8863    }
8864    #[allow(
8865        non_camel_case_types,
8866        non_snake_case,
8867        clippy::pub_underscore_fields,
8868        clippy::style
8869    )]
8870    const _: () = {
8871        use alloy::sol_types as alloy_sol_types;
8872        {
8873            #[doc(hidden)]
8874            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8875            #[doc(hidden)]
8876            type UnderlyingRustTuple<'a> = (u8,);
8877            #[cfg(test)]
8878            #[allow(dead_code, unreachable_patterns)]
8879            fn _type_assertion(
8880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8881            ) {
8882                match _t {
8883                    alloy_sol_types::private::AssertTypeEq::<
8884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8885                    >(_) => {}
8886                }
8887            }
8888            #[automatically_derived]
8889            #[doc(hidden)]
8890            impl ::core::convert::From<strategyParamsLengthCall>
8891            for UnderlyingRustTuple<'_> {
8892                fn from(value: strategyParamsLengthCall) -> Self {
8893                    (value.quorumNumber,)
8894                }
8895            }
8896            #[automatically_derived]
8897            #[doc(hidden)]
8898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8899            for strategyParamsLengthCall {
8900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8901                    Self { quorumNumber: tuple.0 }
8902                }
8903            }
8904        }
8905        {
8906            #[doc(hidden)]
8907            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8908            #[doc(hidden)]
8909            type UnderlyingRustTuple<'a> = (
8910                alloy::sol_types::private::primitives::aliases::U256,
8911            );
8912            #[cfg(test)]
8913            #[allow(dead_code, unreachable_patterns)]
8914            fn _type_assertion(
8915                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8916            ) {
8917                match _t {
8918                    alloy_sol_types::private::AssertTypeEq::<
8919                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8920                    >(_) => {}
8921                }
8922            }
8923            #[automatically_derived]
8924            #[doc(hidden)]
8925            impl ::core::convert::From<strategyParamsLengthReturn>
8926            for UnderlyingRustTuple<'_> {
8927                fn from(value: strategyParamsLengthReturn) -> Self {
8928                    (value._0,)
8929                }
8930            }
8931            #[automatically_derived]
8932            #[doc(hidden)]
8933            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8934            for strategyParamsLengthReturn {
8935                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8936                    Self { _0: tuple.0 }
8937                }
8938            }
8939        }
8940        #[automatically_derived]
8941        impl alloy_sol_types::SolCall for strategyParamsLengthCall {
8942            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8943            type Token<'a> = <Self::Parameters<
8944                'a,
8945            > as alloy_sol_types::SolType>::Token<'a>;
8946            type Return = strategyParamsLengthReturn;
8947            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8948            type ReturnToken<'a> = <Self::ReturnTuple<
8949                'a,
8950            > as alloy_sol_types::SolType>::Token<'a>;
8951            const SIGNATURE: &'static str = "strategyParamsLength(uint8)";
8952            const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8];
8953            #[inline]
8954            fn new<'a>(
8955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8956            ) -> Self {
8957                tuple.into()
8958            }
8959            #[inline]
8960            fn tokenize(&self) -> Self::Token<'_> {
8961                (
8962                    <alloy::sol_types::sol_data::Uint<
8963                        8,
8964                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8965                )
8966            }
8967            #[inline]
8968            fn abi_decode_returns(
8969                data: &[u8],
8970                validate: bool,
8971            ) -> alloy_sol_types::Result<Self::Return> {
8972                <Self::ReturnTuple<
8973                    '_,
8974                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8975                    .map(Into::into)
8976            }
8977        }
8978    };
8979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8980    /**Function with signature `updateOperatorsStake(address[],bytes32[],uint8)` and selector `0x6c3fb4bf`.
8981```solidity
8982function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
8983```*/
8984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8985    #[derive(Clone)]
8986    pub struct updateOperatorsStakeCall {
8987        #[allow(missing_docs)]
8988        pub operators: alloy::sol_types::private::Vec<
8989            alloy::sol_types::private::Address,
8990        >,
8991        #[allow(missing_docs)]
8992        pub operatorIds: alloy::sol_types::private::Vec<
8993            alloy::sol_types::private::FixedBytes<32>,
8994        >,
8995        #[allow(missing_docs)]
8996        pub quorumNumber: u8,
8997    }
8998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8999    ///Container type for the return parameters of the [`updateOperatorsStake(address[],bytes32[],uint8)`](updateOperatorsStakeCall) function.
9000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9001    #[derive(Clone)]
9002    pub struct updateOperatorsStakeReturn {
9003        #[allow(missing_docs)]
9004        pub _0: alloy::sol_types::private::Vec<bool>,
9005    }
9006    #[allow(
9007        non_camel_case_types,
9008        non_snake_case,
9009        clippy::pub_underscore_fields,
9010        clippy::style
9011    )]
9012    const _: () = {
9013        use alloy::sol_types as alloy_sol_types;
9014        {
9015            #[doc(hidden)]
9016            type UnderlyingSolTuple<'a> = (
9017                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9018                alloy::sol_types::sol_data::Array<
9019                    alloy::sol_types::sol_data::FixedBytes<32>,
9020                >,
9021                alloy::sol_types::sol_data::Uint<8>,
9022            );
9023            #[doc(hidden)]
9024            type UnderlyingRustTuple<'a> = (
9025                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9026                alloy::sol_types::private::Vec<
9027                    alloy::sol_types::private::FixedBytes<32>,
9028                >,
9029                u8,
9030            );
9031            #[cfg(test)]
9032            #[allow(dead_code, unreachable_patterns)]
9033            fn _type_assertion(
9034                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9035            ) {
9036                match _t {
9037                    alloy_sol_types::private::AssertTypeEq::<
9038                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9039                    >(_) => {}
9040                }
9041            }
9042            #[automatically_derived]
9043            #[doc(hidden)]
9044            impl ::core::convert::From<updateOperatorsStakeCall>
9045            for UnderlyingRustTuple<'_> {
9046                fn from(value: updateOperatorsStakeCall) -> Self {
9047                    (value.operators, value.operatorIds, value.quorumNumber)
9048                }
9049            }
9050            #[automatically_derived]
9051            #[doc(hidden)]
9052            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9053            for updateOperatorsStakeCall {
9054                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9055                    Self {
9056                        operators: tuple.0,
9057                        operatorIds: tuple.1,
9058                        quorumNumber: tuple.2,
9059                    }
9060                }
9061            }
9062        }
9063        {
9064            #[doc(hidden)]
9065            type UnderlyingSolTuple<'a> = (
9066                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
9067            );
9068            #[doc(hidden)]
9069            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<bool>,);
9070            #[cfg(test)]
9071            #[allow(dead_code, unreachable_patterns)]
9072            fn _type_assertion(
9073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9074            ) {
9075                match _t {
9076                    alloy_sol_types::private::AssertTypeEq::<
9077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9078                    >(_) => {}
9079                }
9080            }
9081            #[automatically_derived]
9082            #[doc(hidden)]
9083            impl ::core::convert::From<updateOperatorsStakeReturn>
9084            for UnderlyingRustTuple<'_> {
9085                fn from(value: updateOperatorsStakeReturn) -> Self {
9086                    (value._0,)
9087                }
9088            }
9089            #[automatically_derived]
9090            #[doc(hidden)]
9091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9092            for updateOperatorsStakeReturn {
9093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9094                    Self { _0: tuple.0 }
9095                }
9096            }
9097        }
9098        #[automatically_derived]
9099        impl alloy_sol_types::SolCall for updateOperatorsStakeCall {
9100            type Parameters<'a> = (
9101                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9102                alloy::sol_types::sol_data::Array<
9103                    alloy::sol_types::sol_data::FixedBytes<32>,
9104                >,
9105                alloy::sol_types::sol_data::Uint<8>,
9106            );
9107            type Token<'a> = <Self::Parameters<
9108                'a,
9109            > as alloy_sol_types::SolType>::Token<'a>;
9110            type Return = updateOperatorsStakeReturn;
9111            type ReturnTuple<'a> = (
9112                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
9113            );
9114            type ReturnToken<'a> = <Self::ReturnTuple<
9115                'a,
9116            > as alloy_sol_types::SolType>::Token<'a>;
9117            const SIGNATURE: &'static str = "updateOperatorsStake(address[],bytes32[],uint8)";
9118            const SELECTOR: [u8; 4] = [108u8, 63u8, 180u8, 191u8];
9119            #[inline]
9120            fn new<'a>(
9121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9122            ) -> Self {
9123                tuple.into()
9124            }
9125            #[inline]
9126            fn tokenize(&self) -> Self::Token<'_> {
9127                (
9128                    <alloy::sol_types::sol_data::Array<
9129                        alloy::sol_types::sol_data::Address,
9130                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
9131                    <alloy::sol_types::sol_data::Array<
9132                        alloy::sol_types::sol_data::FixedBytes<32>,
9133                    > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
9134                    <alloy::sol_types::sol_data::Uint<
9135                        8,
9136                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9137                )
9138            }
9139            #[inline]
9140            fn abi_decode_returns(
9141                data: &[u8],
9142                validate: bool,
9143            ) -> alloy_sol_types::Result<Self::Return> {
9144                <Self::ReturnTuple<
9145                    '_,
9146                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9147                    .map(Into::into)
9148            }
9149        }
9150    };
9151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9152    /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`.
9153```solidity
9154function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
9155```*/
9156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9157    #[derive(Clone)]
9158    pub struct weightOfOperatorForQuorumCall {
9159        #[allow(missing_docs)]
9160        pub quorumNumber: u8,
9161        #[allow(missing_docs)]
9162        pub operator: alloy::sol_types::private::Address,
9163    }
9164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9165    ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function.
9166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9167    #[derive(Clone)]
9168    pub struct weightOfOperatorForQuorumReturn {
9169        #[allow(missing_docs)]
9170        pub _0: alloy::sol_types::private::primitives::aliases::U96,
9171    }
9172    #[allow(
9173        non_camel_case_types,
9174        non_snake_case,
9175        clippy::pub_underscore_fields,
9176        clippy::style
9177    )]
9178    const _: () = {
9179        use alloy::sol_types as alloy_sol_types;
9180        {
9181            #[doc(hidden)]
9182            type UnderlyingSolTuple<'a> = (
9183                alloy::sol_types::sol_data::Uint<8>,
9184                alloy::sol_types::sol_data::Address,
9185            );
9186            #[doc(hidden)]
9187            type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address);
9188            #[cfg(test)]
9189            #[allow(dead_code, unreachable_patterns)]
9190            fn _type_assertion(
9191                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9192            ) {
9193                match _t {
9194                    alloy_sol_types::private::AssertTypeEq::<
9195                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9196                    >(_) => {}
9197                }
9198            }
9199            #[automatically_derived]
9200            #[doc(hidden)]
9201            impl ::core::convert::From<weightOfOperatorForQuorumCall>
9202            for UnderlyingRustTuple<'_> {
9203                fn from(value: weightOfOperatorForQuorumCall) -> Self {
9204                    (value.quorumNumber, value.operator)
9205                }
9206            }
9207            #[automatically_derived]
9208            #[doc(hidden)]
9209            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9210            for weightOfOperatorForQuorumCall {
9211                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9212                    Self {
9213                        quorumNumber: tuple.0,
9214                        operator: tuple.1,
9215                    }
9216                }
9217            }
9218        }
9219        {
9220            #[doc(hidden)]
9221            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
9222            #[doc(hidden)]
9223            type UnderlyingRustTuple<'a> = (
9224                alloy::sol_types::private::primitives::aliases::U96,
9225            );
9226            #[cfg(test)]
9227            #[allow(dead_code, unreachable_patterns)]
9228            fn _type_assertion(
9229                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9230            ) {
9231                match _t {
9232                    alloy_sol_types::private::AssertTypeEq::<
9233                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9234                    >(_) => {}
9235                }
9236            }
9237            #[automatically_derived]
9238            #[doc(hidden)]
9239            impl ::core::convert::From<weightOfOperatorForQuorumReturn>
9240            for UnderlyingRustTuple<'_> {
9241                fn from(value: weightOfOperatorForQuorumReturn) -> Self {
9242                    (value._0,)
9243                }
9244            }
9245            #[automatically_derived]
9246            #[doc(hidden)]
9247            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9248            for weightOfOperatorForQuorumReturn {
9249                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9250                    Self { _0: tuple.0 }
9251                }
9252            }
9253        }
9254        #[automatically_derived]
9255        impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall {
9256            type Parameters<'a> = (
9257                alloy::sol_types::sol_data::Uint<8>,
9258                alloy::sol_types::sol_data::Address,
9259            );
9260            type Token<'a> = <Self::Parameters<
9261                'a,
9262            > as alloy_sol_types::SolType>::Token<'a>;
9263            type Return = weightOfOperatorForQuorumReturn;
9264            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
9265            type ReturnToken<'a> = <Self::ReturnTuple<
9266                'a,
9267            > as alloy_sol_types::SolType>::Token<'a>;
9268            const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)";
9269            const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8];
9270            #[inline]
9271            fn new<'a>(
9272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9273            ) -> Self {
9274                tuple.into()
9275            }
9276            #[inline]
9277            fn tokenize(&self) -> Self::Token<'_> {
9278                (
9279                    <alloy::sol_types::sol_data::Uint<
9280                        8,
9281                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9283                        &self.operator,
9284                    ),
9285                )
9286            }
9287            #[inline]
9288            fn abi_decode_returns(
9289                data: &[u8],
9290                validate: bool,
9291            ) -> alloy_sol_types::Result<Self::Return> {
9292                <Self::ReturnTuple<
9293                    '_,
9294                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9295                    .map(Into::into)
9296            }
9297        }
9298    };
9299    ///Container for all the [`StakeRegistry`](self) function calls.
9300    #[derive()]
9301    pub enum StakeRegistryCalls {
9302        #[allow(missing_docs)]
9303        MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall),
9304        #[allow(missing_docs)]
9305        WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall),
9306        #[allow(missing_docs)]
9307        addStrategies(addStrategiesCall),
9308        #[allow(missing_docs)]
9309        allocationManager(allocationManagerCall),
9310        #[allow(missing_docs)]
9311        avsDirectory(avsDirectoryCall),
9312        #[allow(missing_docs)]
9313        delegation(delegationCall),
9314        #[allow(missing_docs)]
9315        deregisterOperator(deregisterOperatorCall),
9316        #[allow(missing_docs)]
9317        getCurrentStake(getCurrentStakeCall),
9318        #[allow(missing_docs)]
9319        getCurrentTotalStake(getCurrentTotalStakeCall),
9320        #[allow(missing_docs)]
9321        getLatestStakeUpdate(getLatestStakeUpdateCall),
9322        #[allow(missing_docs)]
9323        getStakeAtBlockNumber(getStakeAtBlockNumberCall),
9324        #[allow(missing_docs)]
9325        getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall),
9326        #[allow(missing_docs)]
9327        getStakeHistory(getStakeHistoryCall),
9328        #[allow(missing_docs)]
9329        getStakeHistoryLength(getStakeHistoryLengthCall),
9330        #[allow(missing_docs)]
9331        getStakeUpdateAtIndex(getStakeUpdateAtIndexCall),
9332        #[allow(missing_docs)]
9333        getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall),
9334        #[allow(missing_docs)]
9335        getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall),
9336        #[allow(missing_docs)]
9337        getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall),
9338        #[allow(missing_docs)]
9339        getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall),
9340        #[allow(missing_docs)]
9341        getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall),
9342        #[allow(missing_docs)]
9343        initializeDelegatedStakeQuorum(initializeDelegatedStakeQuorumCall),
9344        #[allow(missing_docs)]
9345        initializeSlashableStakeQuorum(initializeSlashableStakeQuorumCall),
9346        #[allow(missing_docs)]
9347        minimumStakeForQuorum(minimumStakeForQuorumCall),
9348        #[allow(missing_docs)]
9349        modifyStrategyParams(modifyStrategyParamsCall),
9350        #[allow(missing_docs)]
9351        registerOperator(registerOperatorCall),
9352        #[allow(missing_docs)]
9353        registryCoordinator(registryCoordinatorCall),
9354        #[allow(missing_docs)]
9355        removeStrategies(removeStrategiesCall),
9356        #[allow(missing_docs)]
9357        setMinimumStakeForQuorum(setMinimumStakeForQuorumCall),
9358        #[allow(missing_docs)]
9359        setSlashableStakeLookahead(setSlashableStakeLookaheadCall),
9360        #[allow(missing_docs)]
9361        slashableStakeLookAheadPerQuorum(slashableStakeLookAheadPerQuorumCall),
9362        #[allow(missing_docs)]
9363        stakeTypePerQuorum(stakeTypePerQuorumCall),
9364        #[allow(missing_docs)]
9365        strategiesPerQuorum(strategiesPerQuorumCall),
9366        #[allow(missing_docs)]
9367        strategyParams(strategyParamsCall),
9368        #[allow(missing_docs)]
9369        strategyParamsByIndex(strategyParamsByIndexCall),
9370        #[allow(missing_docs)]
9371        strategyParamsLength(strategyParamsLengthCall),
9372        #[allow(missing_docs)]
9373        updateOperatorsStake(updateOperatorsStakeCall),
9374        #[allow(missing_docs)]
9375        weightOfOperatorForQuorum(weightOfOperatorForQuorumCall),
9376    }
9377    #[automatically_derived]
9378    impl StakeRegistryCalls {
9379        /// All the selectors of this enum.
9380        ///
9381        /// Note that the selectors might not be in the same order as the variants.
9382        /// No guarantees are made about the order of the selectors.
9383        ///
9384        /// Prefer using `SolInterface` methods instead.
9385        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9386            [4u8, 145u8, 180u8, 28u8],
9387            [8u8, 115u8, 36u8, 97u8],
9388            [31u8, 155u8, 116u8, 224u8],
9389            [32u8, 182u8, 98u8, 152u8],
9390            [37u8, 80u8, 71u8, 119u8],
9391            [44u8, 217u8, 89u8, 64u8],
9392            [60u8, 165u8, 165u8, 245u8],
9393            [75u8, 210u8, 110u8, 9u8],
9394            [84u8, 1u8, 237u8, 39u8],
9395            [94u8, 90u8, 103u8, 117u8],
9396            [95u8, 31u8, 45u8, 119u8],
9397            [105u8, 127u8, 189u8, 147u8],
9398            [107u8, 58u8, 167u8, 46u8],
9399            [108u8, 63u8, 180u8, 191u8],
9400            [109u8, 20u8, 169u8, 135u8],
9401            [117u8, 212u8, 23u8, 58u8],
9402            [124u8, 23u8, 35u8, 71u8],
9403            [129u8, 192u8, 117u8, 2u8],
9404            [154u8, 180u8, 214u8, 255u8],
9405            [159u8, 60u8, 207u8, 101u8],
9406            [172u8, 107u8, 251u8, 3u8],
9407            [173u8, 200u8, 4u8, 218u8],
9408            [182u8, 144u8, 75u8, 120u8],
9409            [188u8, 154u8, 64u8, 195u8],
9410            [189u8, 41u8, 184u8, 205u8],
9411            [196u8, 103u8, 120u8, 165u8],
9412            [198u8, 1u8, 82u8, 125u8],
9413            [200u8, 41u8, 76u8, 86u8],
9414            [202u8, 138u8, 167u8, 199u8],
9415            [204u8, 90u8, 124u8, 32u8],
9416            [213u8, 236u8, 204u8, 5u8],
9417            [221u8, 152u8, 70u8, 185u8],
9418            [223u8, 92u8, 247u8, 35u8],
9419            [224u8, 134u8, 173u8, 179u8],
9420            [242u8, 190u8, 148u8, 174u8],
9421            [248u8, 81u8, 225u8, 152u8],
9422            [250u8, 40u8, 198u8, 39u8],
9423        ];
9424    }
9425    #[automatically_derived]
9426    impl alloy_sol_types::SolInterface for StakeRegistryCalls {
9427        const NAME: &'static str = "StakeRegistryCalls";
9428        const MIN_DATA_LENGTH: usize = 0usize;
9429        const COUNT: usize = 37usize;
9430        #[inline]
9431        fn selector(&self) -> [u8; 4] {
9432            match self {
9433                Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => {
9434                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
9435                }
9436                Self::WEIGHTING_DIVISOR(_) => {
9437                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::SELECTOR
9438                }
9439                Self::addStrategies(_) => {
9440                    <addStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
9441                }
9442                Self::allocationManager(_) => {
9443                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
9444                }
9445                Self::avsDirectory(_) => {
9446                    <avsDirectoryCall as alloy_sol_types::SolCall>::SELECTOR
9447                }
9448                Self::delegation(_) => {
9449                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
9450                }
9451                Self::deregisterOperator(_) => {
9452                    <deregisterOperatorCall as alloy_sol_types::SolCall>::SELECTOR
9453                }
9454                Self::getCurrentStake(_) => {
9455                    <getCurrentStakeCall as alloy_sol_types::SolCall>::SELECTOR
9456                }
9457                Self::getCurrentTotalStake(_) => {
9458                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::SELECTOR
9459                }
9460                Self::getLatestStakeUpdate(_) => {
9461                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::SELECTOR
9462                }
9463                Self::getStakeAtBlockNumber(_) => {
9464                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9465                }
9466                Self::getStakeAtBlockNumberAndIndex(_) => {
9467                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::SELECTOR
9468                }
9469                Self::getStakeHistory(_) => {
9470                    <getStakeHistoryCall as alloy_sol_types::SolCall>::SELECTOR
9471                }
9472                Self::getStakeHistoryLength(_) => {
9473                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
9474                }
9475                Self::getStakeUpdateAtIndex(_) => {
9476                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
9477                }
9478                Self::getStakeUpdateIndexAtBlockNumber(_) => {
9479                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9480                }
9481                Self::getTotalStakeAtBlockNumberFromIndex(_) => {
9482                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::SELECTOR
9483                }
9484                Self::getTotalStakeHistoryLength(_) => {
9485                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
9486                }
9487                Self::getTotalStakeIndicesAtBlockNumber(_) => {
9488                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9489                }
9490                Self::getTotalStakeUpdateAtIndex(_) => {
9491                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
9492                }
9493                Self::initializeDelegatedStakeQuorum(_) => {
9494                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9495                }
9496                Self::initializeSlashableStakeQuorum(_) => {
9497                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9498                }
9499                Self::minimumStakeForQuorum(_) => {
9500                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9501                }
9502                Self::modifyStrategyParams(_) => {
9503                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
9504                }
9505                Self::registerOperator(_) => {
9506                    <registerOperatorCall as alloy_sol_types::SolCall>::SELECTOR
9507                }
9508                Self::registryCoordinator(_) => {
9509                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
9510                }
9511                Self::removeStrategies(_) => {
9512                    <removeStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
9513                }
9514                Self::setMinimumStakeForQuorum(_) => {
9515                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9516                }
9517                Self::setSlashableStakeLookahead(_) => {
9518                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::SELECTOR
9519                }
9520                Self::slashableStakeLookAheadPerQuorum(_) => {
9521                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9522                }
9523                Self::stakeTypePerQuorum(_) => {
9524                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9525                }
9526                Self::strategiesPerQuorum(_) => {
9527                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9528                }
9529                Self::strategyParams(_) => {
9530                    <strategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
9531                }
9532                Self::strategyParamsByIndex(_) => {
9533                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::SELECTOR
9534                }
9535                Self::strategyParamsLength(_) => {
9536                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::SELECTOR
9537                }
9538                Self::updateOperatorsStake(_) => {
9539                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::SELECTOR
9540                }
9541                Self::weightOfOperatorForQuorum(_) => {
9542                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
9543                }
9544            }
9545        }
9546        #[inline]
9547        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9548            Self::SELECTORS.get(i).copied()
9549        }
9550        #[inline]
9551        fn valid_selector(selector: [u8; 4]) -> bool {
9552            Self::SELECTORS.binary_search(&selector).is_ok()
9553        }
9554        #[inline]
9555        #[allow(non_snake_case)]
9556        fn abi_decode_raw(
9557            selector: [u8; 4],
9558            data: &[u8],
9559            validate: bool,
9560        ) -> alloy_sol_types::Result<Self> {
9561            static DECODE_SHIMS: &[fn(
9562                &[u8],
9563                bool,
9564            ) -> alloy_sol_types::Result<StakeRegistryCalls>] = &[
9565                {
9566                    fn getTotalStakeHistoryLength(
9567                        data: &[u8],
9568                        validate: bool,
9569                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9570                        <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9571                                data,
9572                                validate,
9573                            )
9574                            .map(StakeRegistryCalls::getTotalStakeHistoryLength)
9575                    }
9576                    getTotalStakeHistoryLength
9577                },
9578                {
9579                    fn strategyParams(
9580                        data: &[u8],
9581                        validate: bool,
9582                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9583                        <strategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9584                                data,
9585                                validate,
9586                            )
9587                            .map(StakeRegistryCalls::strategyParams)
9588                    }
9589                    strategyParams
9590                },
9591                {
9592                    fn weightOfOperatorForQuorum(
9593                        data: &[u8],
9594                        validate: bool,
9595                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9596                        <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9597                                data,
9598                                validate,
9599                            )
9600                            .map(StakeRegistryCalls::weightOfOperatorForQuorum)
9601                    }
9602                    weightOfOperatorForQuorum
9603                },
9604                {
9605                    fn modifyStrategyParams(
9606                        data: &[u8],
9607                        validate: bool,
9608                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9609                        <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9610                                data,
9611                                validate,
9612                            )
9613                            .map(StakeRegistryCalls::modifyStrategyParams)
9614                    }
9615                    modifyStrategyParams
9616                },
9617                {
9618                    fn registerOperator(
9619                        data: &[u8],
9620                        validate: bool,
9621                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9622                        <registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9623                                data,
9624                                validate,
9625                            )
9626                            .map(StakeRegistryCalls::registerOperator)
9627                    }
9628                    registerOperator
9629                },
9630                {
9631                    fn getStakeHistory(
9632                        data: &[u8],
9633                        validate: bool,
9634                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9635                        <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9636                                data,
9637                                validate,
9638                            )
9639                            .map(StakeRegistryCalls::getStakeHistory)
9640                    }
9641                    getStakeHistory
9642                },
9643                {
9644                    fn strategyParamsLength(
9645                        data: &[u8],
9646                        validate: bool,
9647                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9648                        <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9649                                data,
9650                                validate,
9651                            )
9652                            .map(StakeRegistryCalls::strategyParamsLength)
9653                    }
9654                    strategyParamsLength
9655                },
9656                {
9657                    fn getStakeHistoryLength(
9658                        data: &[u8],
9659                        validate: bool,
9660                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9661                        <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
9662                                data,
9663                                validate,
9664                            )
9665                            .map(StakeRegistryCalls::getStakeHistoryLength)
9666                    }
9667                    getStakeHistoryLength
9668                },
9669                {
9670                    fn getCurrentStake(
9671                        data: &[u8],
9672                        validate: bool,
9673                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9674                        <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9675                                data,
9676                                validate,
9677                            )
9678                            .map(StakeRegistryCalls::getCurrentStake)
9679                    }
9680                    getCurrentStake
9681                },
9682                {
9683                    fn WEIGHTING_DIVISOR(
9684                        data: &[u8],
9685                        validate: bool,
9686                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9687                        <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_decode_raw(
9688                                data,
9689                                validate,
9690                            )
9691                            .map(StakeRegistryCalls::WEIGHTING_DIVISOR)
9692                    }
9693                    WEIGHTING_DIVISOR
9694                },
9695                {
9696                    fn removeStrategies(
9697                        data: &[u8],
9698                        validate: bool,
9699                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9700                        <removeStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9701                                data,
9702                                validate,
9703                            )
9704                            .map(StakeRegistryCalls::removeStrategies)
9705                    }
9706                    removeStrategies
9707                },
9708                {
9709                    fn stakeTypePerQuorum(
9710                        data: &[u8],
9711                        validate: bool,
9712                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9713                        <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9714                                data,
9715                                validate,
9716                            )
9717                            .map(StakeRegistryCalls::stakeTypePerQuorum)
9718                    }
9719                    stakeTypePerQuorum
9720                },
9721                {
9722                    fn avsDirectory(
9723                        data: &[u8],
9724                        validate: bool,
9725                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9726                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
9727                                data,
9728                                validate,
9729                            )
9730                            .map(StakeRegistryCalls::avsDirectory)
9731                    }
9732                    avsDirectory
9733                },
9734                {
9735                    fn updateOperatorsStake(
9736                        data: &[u8],
9737                        validate: bool,
9738                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9739                        <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9740                                data,
9741                                validate,
9742                            )
9743                            .map(StakeRegistryCalls::updateOperatorsStake)
9744                    }
9745                    updateOperatorsStake
9746                },
9747                {
9748                    fn registryCoordinator(
9749                        data: &[u8],
9750                        validate: bool,
9751                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9752                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9753                                data,
9754                                validate,
9755                            )
9756                            .map(StakeRegistryCalls::registryCoordinator)
9757                    }
9758                    registryCoordinator
9759                },
9760                {
9761                    fn initializeDelegatedStakeQuorum(
9762                        data: &[u8],
9763                        validate: bool,
9764                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9765                        <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9766                                data,
9767                                validate,
9768                            )
9769                            .map(StakeRegistryCalls::initializeDelegatedStakeQuorum)
9770                    }
9771                    initializeDelegatedStakeQuorum
9772                },
9773                {
9774                    fn MAX_WEIGHING_FUNCTION_LENGTH(
9775                        data: &[u8],
9776                        validate: bool,
9777                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9778                        <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
9779                                data,
9780                                validate,
9781                            )
9782                            .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH)
9783                    }
9784                    MAX_WEIGHING_FUNCTION_LENGTH
9785                },
9786                {
9787                    fn getTotalStakeIndicesAtBlockNumber(
9788                        data: &[u8],
9789                        validate: bool,
9790                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9791                        <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9792                                data,
9793                                validate,
9794                            )
9795                            .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber)
9796                    }
9797                    getTotalStakeIndicesAtBlockNumber
9798                },
9799                {
9800                    fn slashableStakeLookAheadPerQuorum(
9801                        data: &[u8],
9802                        validate: bool,
9803                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9804                        <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9805                                data,
9806                                validate,
9807                            )
9808                            .map(StakeRegistryCalls::slashableStakeLookAheadPerQuorum)
9809                    }
9810                    slashableStakeLookAheadPerQuorum
9811                },
9812                {
9813                    fn strategiesPerQuorum(
9814                        data: &[u8],
9815                        validate: bool,
9816                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9817                        <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9818                                data,
9819                                validate,
9820                            )
9821                            .map(StakeRegistryCalls::strategiesPerQuorum)
9822                    }
9823                    strategiesPerQuorum
9824                },
9825                {
9826                    fn getStakeUpdateAtIndex(
9827                        data: &[u8],
9828                        validate: bool,
9829                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9830                        <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9831                                data,
9832                                validate,
9833                            )
9834                            .map(StakeRegistryCalls::getStakeUpdateAtIndex)
9835                    }
9836                    getStakeUpdateAtIndex
9837                },
9838                {
9839                    fn strategyParamsByIndex(
9840                        data: &[u8],
9841                        validate: bool,
9842                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9843                        <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9844                                data,
9845                                validate,
9846                            )
9847                            .map(StakeRegistryCalls::strategyParamsByIndex)
9848                    }
9849                    strategyParamsByIndex
9850                },
9851                {
9852                    fn getTotalStakeUpdateAtIndex(
9853                        data: &[u8],
9854                        validate: bool,
9855                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9856                        <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9857                                data,
9858                                validate,
9859                            )
9860                            .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex)
9861                    }
9862                    getTotalStakeUpdateAtIndex
9863                },
9864                {
9865                    fn setMinimumStakeForQuorum(
9866                        data: &[u8],
9867                        validate: bool,
9868                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9869                        <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9870                                data,
9871                                validate,
9872                            )
9873                            .map(StakeRegistryCalls::setMinimumStakeForQuorum)
9874                    }
9875                    setMinimumStakeForQuorum
9876                },
9877                {
9878                    fn deregisterOperator(
9879                        data: &[u8],
9880                        validate: bool,
9881                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9882                        <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
9883                                data,
9884                                validate,
9885                            )
9886                            .map(StakeRegistryCalls::deregisterOperator)
9887                    }
9888                    deregisterOperator
9889                },
9890                {
9891                    fn minimumStakeForQuorum(
9892                        data: &[u8],
9893                        validate: bool,
9894                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9895                        <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9896                                data,
9897                                validate,
9898                            )
9899                            .map(StakeRegistryCalls::minimumStakeForQuorum)
9900                    }
9901                    minimumStakeForQuorum
9902                },
9903                {
9904                    fn addStrategies(
9905                        data: &[u8],
9906                        validate: bool,
9907                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9908                        <addStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
9909                                data,
9910                                validate,
9911                            )
9912                            .map(StakeRegistryCalls::addStrategies)
9913                    }
9914                    addStrategies
9915                },
9916                {
9917                    fn getTotalStakeAtBlockNumberFromIndex(
9918                        data: &[u8],
9919                        validate: bool,
9920                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9921                        <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9922                                data,
9923                                validate,
9924                            )
9925                            .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex)
9926                    }
9927                    getTotalStakeAtBlockNumberFromIndex
9928                },
9929                {
9930                    fn allocationManager(
9931                        data: &[u8],
9932                        validate: bool,
9933                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9934                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
9935                                data,
9936                                validate,
9937                            )
9938                            .map(StakeRegistryCalls::allocationManager)
9939                    }
9940                    allocationManager
9941                },
9942                {
9943                    fn initializeSlashableStakeQuorum(
9944                        data: &[u8],
9945                        validate: bool,
9946                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9947                        <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
9948                                data,
9949                                validate,
9950                            )
9951                            .map(StakeRegistryCalls::initializeSlashableStakeQuorum)
9952                    }
9953                    initializeSlashableStakeQuorum
9954                },
9955                {
9956                    fn getCurrentTotalStake(
9957                        data: &[u8],
9958                        validate: bool,
9959                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9960                        <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9961                                data,
9962                                validate,
9963                            )
9964                            .map(StakeRegistryCalls::getCurrentTotalStake)
9965                    }
9966                    getCurrentTotalStake
9967                },
9968                {
9969                    fn getStakeUpdateIndexAtBlockNumber(
9970                        data: &[u8],
9971                        validate: bool,
9972                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9973                        <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9974                                data,
9975                                validate,
9976                            )
9977                            .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber)
9978                    }
9979                    getStakeUpdateIndexAtBlockNumber
9980                },
9981                {
9982                    fn delegation(
9983                        data: &[u8],
9984                        validate: bool,
9985                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9986                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
9987                                data,
9988                                validate,
9989                            )
9990                            .map(StakeRegistryCalls::delegation)
9991                    }
9992                    delegation
9993                },
9994                {
9995                    fn setSlashableStakeLookahead(
9996                        data: &[u8],
9997                        validate: bool,
9998                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
9999                        <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_decode_raw(
10000                                data,
10001                                validate,
10002                            )
10003                            .map(StakeRegistryCalls::setSlashableStakeLookahead)
10004                    }
10005                    setSlashableStakeLookahead
10006                },
10007                {
10008                    fn getStakeAtBlockNumberAndIndex(
10009                        data: &[u8],
10010                        validate: bool,
10011                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10012                        <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10013                                data,
10014                                validate,
10015                            )
10016                            .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex)
10017                    }
10018                    getStakeAtBlockNumberAndIndex
10019                },
10020                {
10021                    fn getLatestStakeUpdate(
10022                        data: &[u8],
10023                        validate: bool,
10024                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10025                        <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10026                                data,
10027                                validate,
10028                            )
10029                            .map(StakeRegistryCalls::getLatestStakeUpdate)
10030                    }
10031                    getLatestStakeUpdate
10032                },
10033                {
10034                    fn getStakeAtBlockNumber(
10035                        data: &[u8],
10036                        validate: bool,
10037                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10038                        <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10039                                data,
10040                                validate,
10041                            )
10042                            .map(StakeRegistryCalls::getStakeAtBlockNumber)
10043                    }
10044                    getStakeAtBlockNumber
10045                },
10046            ];
10047            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10048                return Err(
10049                    alloy_sol_types::Error::unknown_selector(
10050                        <Self as alloy_sol_types::SolInterface>::NAME,
10051                        selector,
10052                    ),
10053                );
10054            };
10055            DECODE_SHIMS[idx](data, validate)
10056        }
10057        #[inline]
10058        fn abi_encoded_size(&self) -> usize {
10059            match self {
10060                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
10061                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
10062                        inner,
10063                    )
10064                }
10065                Self::WEIGHTING_DIVISOR(inner) => {
10066                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encoded_size(
10067                        inner,
10068                    )
10069                }
10070                Self::addStrategies(inner) => {
10071                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10072                        inner,
10073                    )
10074                }
10075                Self::allocationManager(inner) => {
10076                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
10077                        inner,
10078                    )
10079                }
10080                Self::avsDirectory(inner) => {
10081                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10082                        inner,
10083                    )
10084                }
10085                Self::delegation(inner) => {
10086                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10087                }
10088                Self::deregisterOperator(inner) => {
10089                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10090                        inner,
10091                    )
10092                }
10093                Self::getCurrentStake(inner) => {
10094                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10095                        inner,
10096                    )
10097                }
10098                Self::getCurrentTotalStake(inner) => {
10099                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10100                        inner,
10101                    )
10102                }
10103                Self::getLatestStakeUpdate(inner) => {
10104                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10105                        inner,
10106                    )
10107                }
10108                Self::getStakeAtBlockNumber(inner) => {
10109                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10110                        inner,
10111                    )
10112                }
10113                Self::getStakeAtBlockNumberAndIndex(inner) => {
10114                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10115                        inner,
10116                    )
10117                }
10118                Self::getStakeHistory(inner) => {
10119                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10120                        inner,
10121                    )
10122                }
10123                Self::getStakeHistoryLength(inner) => {
10124                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10125                        inner,
10126                    )
10127                }
10128                Self::getStakeUpdateAtIndex(inner) => {
10129                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10130                        inner,
10131                    )
10132                }
10133                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
10134                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10135                        inner,
10136                    )
10137                }
10138                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
10139                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10140                        inner,
10141                    )
10142                }
10143                Self::getTotalStakeHistoryLength(inner) => {
10144                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10145                        inner,
10146                    )
10147                }
10148                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
10149                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10150                        inner,
10151                    )
10152                }
10153                Self::getTotalStakeUpdateAtIndex(inner) => {
10154                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10155                        inner,
10156                    )
10157                }
10158                Self::initializeDelegatedStakeQuorum(inner) => {
10159                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10160                        inner,
10161                    )
10162                }
10163                Self::initializeSlashableStakeQuorum(inner) => {
10164                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10165                        inner,
10166                    )
10167                }
10168                Self::minimumStakeForQuorum(inner) => {
10169                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10170                        inner,
10171                    )
10172                }
10173                Self::modifyStrategyParams(inner) => {
10174                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10175                        inner,
10176                    )
10177                }
10178                Self::registerOperator(inner) => {
10179                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10180                        inner,
10181                    )
10182                }
10183                Self::registryCoordinator(inner) => {
10184                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
10185                        inner,
10186                    )
10187                }
10188                Self::removeStrategies(inner) => {
10189                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
10190                        inner,
10191                    )
10192                }
10193                Self::setMinimumStakeForQuorum(inner) => {
10194                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10195                        inner,
10196                    )
10197                }
10198                Self::setSlashableStakeLookahead(inner) => {
10199                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encoded_size(
10200                        inner,
10201                    )
10202                }
10203                Self::slashableStakeLookAheadPerQuorum(inner) => {
10204                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10205                        inner,
10206                    )
10207                }
10208                Self::stakeTypePerQuorum(inner) => {
10209                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10210                        inner,
10211                    )
10212                }
10213                Self::strategiesPerQuorum(inner) => {
10214                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10215                        inner,
10216                    )
10217                }
10218                Self::strategyParams(inner) => {
10219                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10220                        inner,
10221                    )
10222                }
10223                Self::strategyParamsByIndex(inner) => {
10224                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10225                        inner,
10226                    )
10227                }
10228                Self::strategyParamsLength(inner) => {
10229                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
10230                        inner,
10231                    )
10232                }
10233                Self::updateOperatorsStake(inner) => {
10234                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10235                        inner,
10236                    )
10237                }
10238                Self::weightOfOperatorForQuorum(inner) => {
10239                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
10240                        inner,
10241                    )
10242                }
10243            }
10244        }
10245        #[inline]
10246        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10247            match self {
10248                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
10249                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
10250                        inner,
10251                        out,
10252                    )
10253                }
10254                Self::WEIGHTING_DIVISOR(inner) => {
10255                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encode_raw(
10256                        inner,
10257                        out,
10258                    )
10259                }
10260                Self::addStrategies(inner) => {
10261                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10262                        inner,
10263                        out,
10264                    )
10265                }
10266                Self::allocationManager(inner) => {
10267                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
10268                        inner,
10269                        out,
10270                    )
10271                }
10272                Self::avsDirectory(inner) => {
10273                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
10274                        inner,
10275                        out,
10276                    )
10277                }
10278                Self::delegation(inner) => {
10279                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
10280                        inner,
10281                        out,
10282                    )
10283                }
10284                Self::deregisterOperator(inner) => {
10285                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10286                        inner,
10287                        out,
10288                    )
10289                }
10290                Self::getCurrentStake(inner) => {
10291                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10292                        inner,
10293                        out,
10294                    )
10295                }
10296                Self::getCurrentTotalStake(inner) => {
10297                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10298                        inner,
10299                        out,
10300                    )
10301                }
10302                Self::getLatestStakeUpdate(inner) => {
10303                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10304                        inner,
10305                        out,
10306                    )
10307                }
10308                Self::getStakeAtBlockNumber(inner) => {
10309                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10310                        inner,
10311                        out,
10312                    )
10313                }
10314                Self::getStakeAtBlockNumberAndIndex(inner) => {
10315                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10316                        inner,
10317                        out,
10318                    )
10319                }
10320                Self::getStakeHistory(inner) => {
10321                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
10322                        inner,
10323                        out,
10324                    )
10325                }
10326                Self::getStakeHistoryLength(inner) => {
10327                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10328                        inner,
10329                        out,
10330                    )
10331                }
10332                Self::getStakeUpdateAtIndex(inner) => {
10333                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10334                        inner,
10335                        out,
10336                    )
10337                }
10338                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
10339                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10340                        inner,
10341                        out,
10342                    )
10343                }
10344                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
10345                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10346                        inner,
10347                        out,
10348                    )
10349                }
10350                Self::getTotalStakeHistoryLength(inner) => {
10351                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10352                        inner,
10353                        out,
10354                    )
10355                }
10356                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
10357                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10358                        inner,
10359                        out,
10360                    )
10361                }
10362                Self::getTotalStakeUpdateAtIndex(inner) => {
10363                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10364                        inner,
10365                        out,
10366                    )
10367                }
10368                Self::initializeDelegatedStakeQuorum(inner) => {
10369                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10370                        inner,
10371                        out,
10372                    )
10373                }
10374                Self::initializeSlashableStakeQuorum(inner) => {
10375                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10376                        inner,
10377                        out,
10378                    )
10379                }
10380                Self::minimumStakeForQuorum(inner) => {
10381                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10382                        inner,
10383                        out,
10384                    )
10385                }
10386                Self::modifyStrategyParams(inner) => {
10387                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10388                        inner,
10389                        out,
10390                    )
10391                }
10392                Self::registerOperator(inner) => {
10393                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10394                        inner,
10395                        out,
10396                    )
10397                }
10398                Self::registryCoordinator(inner) => {
10399                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
10400                        inner,
10401                        out,
10402                    )
10403                }
10404                Self::removeStrategies(inner) => {
10405                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
10406                        inner,
10407                        out,
10408                    )
10409                }
10410                Self::setMinimumStakeForQuorum(inner) => {
10411                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10412                        inner,
10413                        out,
10414                    )
10415                }
10416                Self::setSlashableStakeLookahead(inner) => {
10417                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encode_raw(
10418                        inner,
10419                        out,
10420                    )
10421                }
10422                Self::slashableStakeLookAheadPerQuorum(inner) => {
10423                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10424                        inner,
10425                        out,
10426                    )
10427                }
10428                Self::stakeTypePerQuorum(inner) => {
10429                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10430                        inner,
10431                        out,
10432                    )
10433                }
10434                Self::strategiesPerQuorum(inner) => {
10435                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10436                        inner,
10437                        out,
10438                    )
10439                }
10440                Self::strategyParams(inner) => {
10441                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10442                        inner,
10443                        out,
10444                    )
10445                }
10446                Self::strategyParamsByIndex(inner) => {
10447                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10448                        inner,
10449                        out,
10450                    )
10451                }
10452                Self::strategyParamsLength(inner) => {
10453                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
10454                        inner,
10455                        out,
10456                    )
10457                }
10458                Self::updateOperatorsStake(inner) => {
10459                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10460                        inner,
10461                        out,
10462                    )
10463                }
10464                Self::weightOfOperatorForQuorum(inner) => {
10465                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
10466                        inner,
10467                        out,
10468                    )
10469                }
10470            }
10471        }
10472    }
10473    ///Container for all the [`StakeRegistry`](self) custom errors.
10474    #[derive(Debug, PartialEq, Eq, Hash)]
10475    pub enum StakeRegistryErrors {
10476        #[allow(missing_docs)]
10477        BelowMinimumStakeRequirement(BelowMinimumStakeRequirement),
10478        #[allow(missing_docs)]
10479        EmptyStakeHistory(EmptyStakeHistory),
10480        #[allow(missing_docs)]
10481        InputArrayLengthMismatch(InputArrayLengthMismatch),
10482        #[allow(missing_docs)]
10483        InputArrayLengthZero(InputArrayLengthZero),
10484        #[allow(missing_docs)]
10485        InputDuplicateStrategy(InputDuplicateStrategy),
10486        #[allow(missing_docs)]
10487        InputMultiplierZero(InputMultiplierZero),
10488        #[allow(missing_docs)]
10489        InvalidBlockNumber(InvalidBlockNumber),
10490        #[allow(missing_docs)]
10491        OnlySlashingRegistryCoordinator(OnlySlashingRegistryCoordinator),
10492        #[allow(missing_docs)]
10493        OnlySlashingRegistryCoordinatorOwner(OnlySlashingRegistryCoordinatorOwner),
10494        #[allow(missing_docs)]
10495        QuorumAlreadyExists(QuorumAlreadyExists),
10496        #[allow(missing_docs)]
10497        QuorumDoesNotExist(QuorumDoesNotExist),
10498        #[allow(missing_docs)]
10499        QuorumNotSlashable(QuorumNotSlashable),
10500    }
10501    #[automatically_derived]
10502    impl StakeRegistryErrors {
10503        /// All the selectors of this enum.
10504        ///
10505        /// Note that the selectors might not be in the same order as the variants.
10506        /// No guarantees are made about the order of the selectors.
10507        ///
10508        /// Prefer using `SolInterface` methods instead.
10509        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10510            [64u8, 254u8, 39u8, 198u8],
10511            [67u8, 54u8, 148u8, 92u8],
10512            [67u8, 113u8, 74u8, 253u8],
10513            [78u8, 71u8, 132u8, 108u8],
10514            [114u8, 87u8, 18u8, 81u8],
10515            [121u8, 108u8, 197u8, 37u8],
10516            [123u8, 116u8, 52u8, 11u8],
10517            [163u8, 190u8, 37u8, 131u8],
10518            [176u8, 6u8, 200u8, 20u8],
10519            [204u8, 100u8, 101u8, 115u8],
10520            [206u8, 152u8, 194u8, 75u8],
10521            [230u8, 33u8, 159u8, 234u8],
10522        ];
10523    }
10524    #[automatically_derived]
10525    impl alloy_sol_types::SolInterface for StakeRegistryErrors {
10526        const NAME: &'static str = "StakeRegistryErrors";
10527        const MIN_DATA_LENGTH: usize = 0usize;
10528        const COUNT: usize = 12usize;
10529        #[inline]
10530        fn selector(&self) -> [u8; 4] {
10531            match self {
10532                Self::BelowMinimumStakeRequirement(_) => {
10533                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::SELECTOR
10534                }
10535                Self::EmptyStakeHistory(_) => {
10536                    <EmptyStakeHistory as alloy_sol_types::SolError>::SELECTOR
10537                }
10538                Self::InputArrayLengthMismatch(_) => {
10539                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
10540                }
10541                Self::InputArrayLengthZero(_) => {
10542                    <InputArrayLengthZero as alloy_sol_types::SolError>::SELECTOR
10543                }
10544                Self::InputDuplicateStrategy(_) => {
10545                    <InputDuplicateStrategy as alloy_sol_types::SolError>::SELECTOR
10546                }
10547                Self::InputMultiplierZero(_) => {
10548                    <InputMultiplierZero as alloy_sol_types::SolError>::SELECTOR
10549                }
10550                Self::InvalidBlockNumber(_) => {
10551                    <InvalidBlockNumber as alloy_sol_types::SolError>::SELECTOR
10552                }
10553                Self::OnlySlashingRegistryCoordinator(_) => {
10554                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::SELECTOR
10555                }
10556                Self::OnlySlashingRegistryCoordinatorOwner(_) => {
10557                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
10558                }
10559                Self::QuorumAlreadyExists(_) => {
10560                    <QuorumAlreadyExists as alloy_sol_types::SolError>::SELECTOR
10561                }
10562                Self::QuorumDoesNotExist(_) => {
10563                    <QuorumDoesNotExist as alloy_sol_types::SolError>::SELECTOR
10564                }
10565                Self::QuorumNotSlashable(_) => {
10566                    <QuorumNotSlashable as alloy_sol_types::SolError>::SELECTOR
10567                }
10568            }
10569        }
10570        #[inline]
10571        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10572            Self::SELECTORS.get(i).copied()
10573        }
10574        #[inline]
10575        fn valid_selector(selector: [u8; 4]) -> bool {
10576            Self::SELECTORS.binary_search(&selector).is_ok()
10577        }
10578        #[inline]
10579        #[allow(non_snake_case)]
10580        fn abi_decode_raw(
10581            selector: [u8; 4],
10582            data: &[u8],
10583            validate: bool,
10584        ) -> alloy_sol_types::Result<Self> {
10585            static DECODE_SHIMS: &[fn(
10586                &[u8],
10587                bool,
10588            ) -> alloy_sol_types::Result<StakeRegistryErrors>] = &[
10589                {
10590                    fn BelowMinimumStakeRequirement(
10591                        data: &[u8],
10592                        validate: bool,
10593                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10594                        <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_decode_raw(
10595                                data,
10596                                validate,
10597                            )
10598                            .map(StakeRegistryErrors::BelowMinimumStakeRequirement)
10599                    }
10600                    BelowMinimumStakeRequirement
10601                },
10602                {
10603                    fn QuorumAlreadyExists(
10604                        data: &[u8],
10605                        validate: bool,
10606                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10607                        <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
10608                                data,
10609                                validate,
10610                            )
10611                            .map(StakeRegistryErrors::QuorumAlreadyExists)
10612                    }
10613                    QuorumAlreadyExists
10614                },
10615                {
10616                    fn InputArrayLengthMismatch(
10617                        data: &[u8],
10618                        validate: bool,
10619                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10620                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
10621                                data,
10622                                validate,
10623                            )
10624                            .map(StakeRegistryErrors::InputArrayLengthMismatch)
10625                    }
10626                    InputArrayLengthMismatch
10627                },
10628                {
10629                    fn InvalidBlockNumber(
10630                        data: &[u8],
10631                        validate: bool,
10632                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10633                        <InvalidBlockNumber as alloy_sol_types::SolError>::abi_decode_raw(
10634                                data,
10635                                validate,
10636                            )
10637                            .map(StakeRegistryErrors::InvalidBlockNumber)
10638                    }
10639                    InvalidBlockNumber
10640                },
10641                {
10642                    fn InputMultiplierZero(
10643                        data: &[u8],
10644                        validate: bool,
10645                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10646                        <InputMultiplierZero as alloy_sol_types::SolError>::abi_decode_raw(
10647                                data,
10648                                validate,
10649                            )
10650                            .map(StakeRegistryErrors::InputMultiplierZero)
10651                    }
10652                    InputMultiplierZero
10653                },
10654                {
10655                    fn InputArrayLengthZero(
10656                        data: &[u8],
10657                        validate: bool,
10658                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10659                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw(
10660                                data,
10661                                validate,
10662                            )
10663                            .map(StakeRegistryErrors::InputArrayLengthZero)
10664                    }
10665                    InputArrayLengthZero
10666                },
10667                {
10668                    fn InputDuplicateStrategy(
10669                        data: &[u8],
10670                        validate: bool,
10671                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10672                        <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_decode_raw(
10673                                data,
10674                                validate,
10675                            )
10676                            .map(StakeRegistryErrors::InputDuplicateStrategy)
10677                    }
10678                    InputDuplicateStrategy
10679                },
10680                {
10681                    fn QuorumNotSlashable(
10682                        data: &[u8],
10683                        validate: bool,
10684                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10685                        <QuorumNotSlashable as alloy_sol_types::SolError>::abi_decode_raw(
10686                                data,
10687                                validate,
10688                            )
10689                            .map(StakeRegistryErrors::QuorumNotSlashable)
10690                    }
10691                    QuorumNotSlashable
10692                },
10693                {
10694                    fn OnlySlashingRegistryCoordinator(
10695                        data: &[u8],
10696                        validate: bool,
10697                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10698                        <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw(
10699                                data,
10700                                validate,
10701                            )
10702                            .map(StakeRegistryErrors::OnlySlashingRegistryCoordinator)
10703                    }
10704                    OnlySlashingRegistryCoordinator
10705                },
10706                {
10707                    fn EmptyStakeHistory(
10708                        data: &[u8],
10709                        validate: bool,
10710                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10711                        <EmptyStakeHistory as alloy_sol_types::SolError>::abi_decode_raw(
10712                                data,
10713                                validate,
10714                            )
10715                            .map(StakeRegistryErrors::EmptyStakeHistory)
10716                    }
10717                    EmptyStakeHistory
10718                },
10719                {
10720                    fn OnlySlashingRegistryCoordinatorOwner(
10721                        data: &[u8],
10722                        validate: bool,
10723                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10724                        <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
10725                                data,
10726                                validate,
10727                            )
10728                            .map(
10729                                StakeRegistryErrors::OnlySlashingRegistryCoordinatorOwner,
10730                            )
10731                    }
10732                    OnlySlashingRegistryCoordinatorOwner
10733                },
10734                {
10735                    fn QuorumDoesNotExist(
10736                        data: &[u8],
10737                        validate: bool,
10738                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
10739                        <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw(
10740                                data,
10741                                validate,
10742                            )
10743                            .map(StakeRegistryErrors::QuorumDoesNotExist)
10744                    }
10745                    QuorumDoesNotExist
10746                },
10747            ];
10748            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10749                return Err(
10750                    alloy_sol_types::Error::unknown_selector(
10751                        <Self as alloy_sol_types::SolInterface>::NAME,
10752                        selector,
10753                    ),
10754                );
10755            };
10756            DECODE_SHIMS[idx](data, validate)
10757        }
10758        #[inline]
10759        fn abi_encoded_size(&self) -> usize {
10760            match self {
10761                Self::BelowMinimumStakeRequirement(inner) => {
10762                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encoded_size(
10763                        inner,
10764                    )
10765                }
10766                Self::EmptyStakeHistory(inner) => {
10767                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encoded_size(
10768                        inner,
10769                    )
10770                }
10771                Self::InputArrayLengthMismatch(inner) => {
10772                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
10773                        inner,
10774                    )
10775                }
10776                Self::InputArrayLengthZero(inner) => {
10777                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encoded_size(
10778                        inner,
10779                    )
10780                }
10781                Self::InputDuplicateStrategy(inner) => {
10782                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encoded_size(
10783                        inner,
10784                    )
10785                }
10786                Self::InputMultiplierZero(inner) => {
10787                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encoded_size(
10788                        inner,
10789                    )
10790                }
10791                Self::InvalidBlockNumber(inner) => {
10792                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encoded_size(
10793                        inner,
10794                    )
10795                }
10796                Self::OnlySlashingRegistryCoordinator(inner) => {
10797                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encoded_size(
10798                        inner,
10799                    )
10800                }
10801                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
10802                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
10803                        inner,
10804                    )
10805                }
10806                Self::QuorumAlreadyExists(inner) => {
10807                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
10808                        inner,
10809                    )
10810                }
10811                Self::QuorumDoesNotExist(inner) => {
10812                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encoded_size(
10813                        inner,
10814                    )
10815                }
10816                Self::QuorumNotSlashable(inner) => {
10817                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encoded_size(
10818                        inner,
10819                    )
10820                }
10821            }
10822        }
10823        #[inline]
10824        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10825            match self {
10826                Self::BelowMinimumStakeRequirement(inner) => {
10827                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encode_raw(
10828                        inner,
10829                        out,
10830                    )
10831                }
10832                Self::EmptyStakeHistory(inner) => {
10833                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encode_raw(
10834                        inner,
10835                        out,
10836                    )
10837                }
10838                Self::InputArrayLengthMismatch(inner) => {
10839                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
10840                        inner,
10841                        out,
10842                    )
10843                }
10844                Self::InputArrayLengthZero(inner) => {
10845                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encode_raw(
10846                        inner,
10847                        out,
10848                    )
10849                }
10850                Self::InputDuplicateStrategy(inner) => {
10851                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encode_raw(
10852                        inner,
10853                        out,
10854                    )
10855                }
10856                Self::InputMultiplierZero(inner) => {
10857                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encode_raw(
10858                        inner,
10859                        out,
10860                    )
10861                }
10862                Self::InvalidBlockNumber(inner) => {
10863                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encode_raw(
10864                        inner,
10865                        out,
10866                    )
10867                }
10868                Self::OnlySlashingRegistryCoordinator(inner) => {
10869                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encode_raw(
10870                        inner,
10871                        out,
10872                    )
10873                }
10874                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
10875                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
10876                        inner,
10877                        out,
10878                    )
10879                }
10880                Self::QuorumAlreadyExists(inner) => {
10881                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
10882                        inner,
10883                        out,
10884                    )
10885                }
10886                Self::QuorumDoesNotExist(inner) => {
10887                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encode_raw(
10888                        inner,
10889                        out,
10890                    )
10891                }
10892                Self::QuorumNotSlashable(inner) => {
10893                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encode_raw(
10894                        inner,
10895                        out,
10896                    )
10897                }
10898            }
10899        }
10900    }
10901    ///Container for all the [`StakeRegistry`](self) events.
10902    #[derive(Debug, PartialEq, Eq, Hash)]
10903    pub enum StakeRegistryEvents {
10904        #[allow(missing_docs)]
10905        LookAheadPeriodChanged(LookAheadPeriodChanged),
10906        #[allow(missing_docs)]
10907        MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated),
10908        #[allow(missing_docs)]
10909        OperatorStakeUpdate(OperatorStakeUpdate),
10910        #[allow(missing_docs)]
10911        QuorumCreated(QuorumCreated),
10912        #[allow(missing_docs)]
10913        StakeTypeSet(StakeTypeSet),
10914        #[allow(missing_docs)]
10915        StrategyAddedToQuorum(StrategyAddedToQuorum),
10916        #[allow(missing_docs)]
10917        StrategyMultiplierUpdated(StrategyMultiplierUpdated),
10918        #[allow(missing_docs)]
10919        StrategyRemovedFromQuorum(StrategyRemovedFromQuorum),
10920    }
10921    #[automatically_derived]
10922    impl StakeRegistryEvents {
10923        /// All the selectors of this enum.
10924        ///
10925        /// Note that the selectors might not be in the same order as the variants.
10926        /// No guarantees are made about the order of the selectors.
10927        ///
10928        /// Prefer using `SolInterface` methods instead.
10929        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10930            [
10931                16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8,
10932                69u8, 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8,
10933                19u8, 211u8, 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
10934            ],
10935            [
10936                17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8,
10937                110u8, 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8,
10938                205u8, 22u8, 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
10939            ],
10940            [
10941                38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8,
10942                217u8, 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8,
10943                31u8, 196u8, 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
10944            ],
10945            [
10946                40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8,
10947                122u8, 239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8,
10948                250u8, 91u8, 239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
10949            ],
10950            [
10951                47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8,
10952                83u8, 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8,
10953                208u8, 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
10954            ],
10955            [
10956                49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8,
10957                207u8, 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8,
10958                248u8, 211u8, 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
10959            ],
10960            [
10961                124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8,
10962                226u8, 88u8, 25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8,
10963                67u8, 66u8, 59u8, 74u8, 133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
10964            ],
10965            [
10966                131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8,
10967                100u8, 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8,
10968                74u8, 192u8, 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
10969            ],
10970        ];
10971    }
10972    #[automatically_derived]
10973    impl alloy_sol_types::SolEventInterface for StakeRegistryEvents {
10974        const NAME: &'static str = "StakeRegistryEvents";
10975        const COUNT: usize = 8usize;
10976        fn decode_raw_log(
10977            topics: &[alloy_sol_types::Word],
10978            data: &[u8],
10979            validate: bool,
10980        ) -> alloy_sol_types::Result<Self> {
10981            match topics.first().copied() {
10982                Some(
10983                    <LookAheadPeriodChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10984                ) => {
10985                    <LookAheadPeriodChanged as alloy_sol_types::SolEvent>::decode_raw_log(
10986                            topics,
10987                            data,
10988                            validate,
10989                        )
10990                        .map(Self::LookAheadPeriodChanged)
10991                }
10992                Some(
10993                    <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10994                ) => {
10995                    <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
10996                            topics,
10997                            data,
10998                            validate,
10999                        )
11000                        .map(Self::MinimumStakeForQuorumUpdated)
11001                }
11002                Some(
11003                    <OperatorStakeUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11004                ) => {
11005                    <OperatorStakeUpdate as alloy_sol_types::SolEvent>::decode_raw_log(
11006                            topics,
11007                            data,
11008                            validate,
11009                        )
11010                        .map(Self::OperatorStakeUpdate)
11011                }
11012                Some(<QuorumCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11013                    <QuorumCreated as alloy_sol_types::SolEvent>::decode_raw_log(
11014                            topics,
11015                            data,
11016                            validate,
11017                        )
11018                        .map(Self::QuorumCreated)
11019                }
11020                Some(<StakeTypeSet as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11021                    <StakeTypeSet as alloy_sol_types::SolEvent>::decode_raw_log(
11022                            topics,
11023                            data,
11024                            validate,
11025                        )
11026                        .map(Self::StakeTypeSet)
11027                }
11028                Some(
11029                    <StrategyAddedToQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11030                ) => {
11031                    <StrategyAddedToQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
11032                            topics,
11033                            data,
11034                            validate,
11035                        )
11036                        .map(Self::StrategyAddedToQuorum)
11037                }
11038                Some(
11039                    <StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11040                ) => {
11041                    <StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
11042                            topics,
11043                            data,
11044                            validate,
11045                        )
11046                        .map(Self::StrategyMultiplierUpdated)
11047                }
11048                Some(
11049                    <StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11050                ) => {
11051                    <StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
11052                            topics,
11053                            data,
11054                            validate,
11055                        )
11056                        .map(Self::StrategyRemovedFromQuorum)
11057                }
11058                _ => {
11059                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11060                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11061                        log: alloy_sol_types::private::Box::new(
11062                            alloy_sol_types::private::LogData::new_unchecked(
11063                                topics.to_vec(),
11064                                data.to_vec().into(),
11065                            ),
11066                        ),
11067                    })
11068                }
11069            }
11070        }
11071    }
11072    #[automatically_derived]
11073    impl alloy_sol_types::private::IntoLogData for StakeRegistryEvents {
11074        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11075            match self {
11076                Self::LookAheadPeriodChanged(inner) => {
11077                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11078                }
11079                Self::MinimumStakeForQuorumUpdated(inner) => {
11080                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11081                }
11082                Self::OperatorStakeUpdate(inner) => {
11083                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11084                }
11085                Self::QuorumCreated(inner) => {
11086                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11087                }
11088                Self::StakeTypeSet(inner) => {
11089                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11090                }
11091                Self::StrategyAddedToQuorum(inner) => {
11092                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11093                }
11094                Self::StrategyMultiplierUpdated(inner) => {
11095                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11096                }
11097                Self::StrategyRemovedFromQuorum(inner) => {
11098                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11099                }
11100            }
11101        }
11102        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11103            match self {
11104                Self::LookAheadPeriodChanged(inner) => {
11105                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11106                }
11107                Self::MinimumStakeForQuorumUpdated(inner) => {
11108                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11109                }
11110                Self::OperatorStakeUpdate(inner) => {
11111                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11112                }
11113                Self::QuorumCreated(inner) => {
11114                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11115                }
11116                Self::StakeTypeSet(inner) => {
11117                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11118                }
11119                Self::StrategyAddedToQuorum(inner) => {
11120                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11121                }
11122                Self::StrategyMultiplierUpdated(inner) => {
11123                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11124                }
11125                Self::StrategyRemovedFromQuorum(inner) => {
11126                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11127                }
11128            }
11129        }
11130    }
11131    use alloy::contract as alloy_contract;
11132    /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
11133
11134See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
11135    #[inline]
11136    pub const fn new<
11137        T: alloy_contract::private::Transport + ::core::clone::Clone,
11138        P: alloy_contract::private::Provider<T, N>,
11139        N: alloy_contract::private::Network,
11140    >(
11141        address: alloy_sol_types::private::Address,
11142        provider: P,
11143    ) -> StakeRegistryInstance<T, P, N> {
11144        StakeRegistryInstance::<T, P, N>::new(address, provider)
11145    }
11146    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11147
11148Returns a new instance of the contract, if the deployment was successful.
11149
11150For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11151    #[inline]
11152    pub fn deploy<
11153        T: alloy_contract::private::Transport + ::core::clone::Clone,
11154        P: alloy_contract::private::Provider<T, N>,
11155        N: alloy_contract::private::Network,
11156    >(
11157        provider: P,
11158        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11159        _delegationManager: alloy::sol_types::private::Address,
11160        _avsDirectory: alloy::sol_types::private::Address,
11161        _allocationManager: alloy::sol_types::private::Address,
11162    ) -> impl ::core::future::Future<
11163        Output = alloy_contract::Result<StakeRegistryInstance<T, P, N>>,
11164    > {
11165        StakeRegistryInstance::<
11166            T,
11167            P,
11168            N,
11169        >::deploy(
11170            provider,
11171            _slashingRegistryCoordinator,
11172            _delegationManager,
11173            _avsDirectory,
11174            _allocationManager,
11175        )
11176    }
11177    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11178and constructor arguments, if any.
11179
11180This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11181the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11182    #[inline]
11183    pub fn deploy_builder<
11184        T: alloy_contract::private::Transport + ::core::clone::Clone,
11185        P: alloy_contract::private::Provider<T, N>,
11186        N: alloy_contract::private::Network,
11187    >(
11188        provider: P,
11189        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11190        _delegationManager: alloy::sol_types::private::Address,
11191        _avsDirectory: alloy::sol_types::private::Address,
11192        _allocationManager: alloy::sol_types::private::Address,
11193    ) -> alloy_contract::RawCallBuilder<T, P, N> {
11194        StakeRegistryInstance::<
11195            T,
11196            P,
11197            N,
11198        >::deploy_builder(
11199            provider,
11200            _slashingRegistryCoordinator,
11201            _delegationManager,
11202            _avsDirectory,
11203            _allocationManager,
11204        )
11205    }
11206    /**A [`StakeRegistry`](self) instance.
11207
11208Contains type-safe methods for interacting with an on-chain instance of the
11209[`StakeRegistry`](self) contract located at a given `address`, using a given
11210provider `P`.
11211
11212If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11213documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11214be used to deploy a new instance of the contract.
11215
11216See the [module-level documentation](self) for all the available methods.*/
11217    #[derive(Clone)]
11218    pub struct StakeRegistryInstance<T, P, N = alloy_contract::private::Ethereum> {
11219        address: alloy_sol_types::private::Address,
11220        provider: P,
11221        _network_transport: ::core::marker::PhantomData<(N, T)>,
11222    }
11223    #[automatically_derived]
11224    impl<T, P, N> ::core::fmt::Debug for StakeRegistryInstance<T, P, N> {
11225        #[inline]
11226        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11227            f.debug_tuple("StakeRegistryInstance").field(&self.address).finish()
11228        }
11229    }
11230    /// Instantiation and getters/setters.
11231    #[automatically_derived]
11232    impl<
11233        T: alloy_contract::private::Transport + ::core::clone::Clone,
11234        P: alloy_contract::private::Provider<T, N>,
11235        N: alloy_contract::private::Network,
11236    > StakeRegistryInstance<T, P, N> {
11237        /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
11238
11239See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
11240        #[inline]
11241        pub const fn new(
11242            address: alloy_sol_types::private::Address,
11243            provider: P,
11244        ) -> Self {
11245            Self {
11246                address,
11247                provider,
11248                _network_transport: ::core::marker::PhantomData,
11249            }
11250        }
11251        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11252
11253Returns a new instance of the contract, if the deployment was successful.
11254
11255For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11256        #[inline]
11257        pub async fn deploy(
11258            provider: P,
11259            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11260            _delegationManager: alloy::sol_types::private::Address,
11261            _avsDirectory: alloy::sol_types::private::Address,
11262            _allocationManager: alloy::sol_types::private::Address,
11263        ) -> alloy_contract::Result<StakeRegistryInstance<T, P, N>> {
11264            let call_builder = Self::deploy_builder(
11265                provider,
11266                _slashingRegistryCoordinator,
11267                _delegationManager,
11268                _avsDirectory,
11269                _allocationManager,
11270            );
11271            let contract_address = call_builder.deploy().await?;
11272            Ok(Self::new(contract_address, call_builder.provider))
11273        }
11274        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11275and constructor arguments, if any.
11276
11277This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11278the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11279        #[inline]
11280        pub fn deploy_builder(
11281            provider: P,
11282            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
11283            _delegationManager: alloy::sol_types::private::Address,
11284            _avsDirectory: alloy::sol_types::private::Address,
11285            _allocationManager: alloy::sol_types::private::Address,
11286        ) -> alloy_contract::RawCallBuilder<T, P, N> {
11287            alloy_contract::RawCallBuilder::new_raw_deploy(
11288                provider,
11289                [
11290                    &BYTECODE[..],
11291                    &alloy_sol_types::SolConstructor::abi_encode(
11292                        &constructorCall {
11293                            _slashingRegistryCoordinator,
11294                            _delegationManager,
11295                            _avsDirectory,
11296                            _allocationManager,
11297                        },
11298                    )[..],
11299                ]
11300                    .concat()
11301                    .into(),
11302            )
11303        }
11304        /// Returns a reference to the address.
11305        #[inline]
11306        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11307            &self.address
11308        }
11309        /// Sets the address.
11310        #[inline]
11311        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11312            self.address = address;
11313        }
11314        /// Sets the address and returns `self`.
11315        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11316            self.set_address(address);
11317            self
11318        }
11319        /// Returns a reference to the provider.
11320        #[inline]
11321        pub const fn provider(&self) -> &P {
11322            &self.provider
11323        }
11324    }
11325    impl<T, P: ::core::clone::Clone, N> StakeRegistryInstance<T, &P, N> {
11326        /// Clones the provider and returns a new instance with the cloned provider.
11327        #[inline]
11328        pub fn with_cloned_provider(self) -> StakeRegistryInstance<T, P, N> {
11329            StakeRegistryInstance {
11330                address: self.address,
11331                provider: ::core::clone::Clone::clone(&self.provider),
11332                _network_transport: ::core::marker::PhantomData,
11333            }
11334        }
11335    }
11336    /// Function calls.
11337    #[automatically_derived]
11338    impl<
11339        T: alloy_contract::private::Transport + ::core::clone::Clone,
11340        P: alloy_contract::private::Provider<T, N>,
11341        N: alloy_contract::private::Network,
11342    > StakeRegistryInstance<T, P, N> {
11343        /// Creates a new call builder using this contract instance's provider and address.
11344        ///
11345        /// Note that the call can be any function call, not just those defined in this
11346        /// contract. Prefer using the other methods for building type-safe contract calls.
11347        pub fn call_builder<C: alloy_sol_types::SolCall>(
11348            &self,
11349            call: &C,
11350        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
11351            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11352        }
11353        ///Creates a new call builder for the [`MAX_WEIGHING_FUNCTION_LENGTH`] function.
11354        pub fn MAX_WEIGHING_FUNCTION_LENGTH(
11355            &self,
11356        ) -> alloy_contract::SolCallBuilder<T, &P, MAX_WEIGHING_FUNCTION_LENGTHCall, N> {
11357            self.call_builder(
11358                &MAX_WEIGHING_FUNCTION_LENGTHCall {
11359                },
11360            )
11361        }
11362        ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function.
11363        pub fn WEIGHTING_DIVISOR(
11364            &self,
11365        ) -> alloy_contract::SolCallBuilder<T, &P, WEIGHTING_DIVISORCall, N> {
11366            self.call_builder(&WEIGHTING_DIVISORCall {})
11367        }
11368        ///Creates a new call builder for the [`addStrategies`] function.
11369        pub fn addStrategies(
11370            &self,
11371            quorumNumber: u8,
11372            _strategyParams: alloy::sol_types::private::Vec<
11373                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
11374            >,
11375        ) -> alloy_contract::SolCallBuilder<T, &P, addStrategiesCall, N> {
11376            self.call_builder(
11377                &addStrategiesCall {
11378                    quorumNumber,
11379                    _strategyParams,
11380                },
11381            )
11382        }
11383        ///Creates a new call builder for the [`allocationManager`] function.
11384        pub fn allocationManager(
11385            &self,
11386        ) -> alloy_contract::SolCallBuilder<T, &P, allocationManagerCall, N> {
11387            self.call_builder(&allocationManagerCall {})
11388        }
11389        ///Creates a new call builder for the [`avsDirectory`] function.
11390        pub fn avsDirectory(
11391            &self,
11392        ) -> alloy_contract::SolCallBuilder<T, &P, avsDirectoryCall, N> {
11393            self.call_builder(&avsDirectoryCall {})
11394        }
11395        ///Creates a new call builder for the [`delegation`] function.
11396        pub fn delegation(
11397            &self,
11398        ) -> alloy_contract::SolCallBuilder<T, &P, delegationCall, N> {
11399            self.call_builder(&delegationCall {})
11400        }
11401        ///Creates a new call builder for the [`deregisterOperator`] function.
11402        pub fn deregisterOperator(
11403            &self,
11404            operatorId: alloy::sol_types::private::FixedBytes<32>,
11405            quorumNumbers: alloy::sol_types::private::Bytes,
11406        ) -> alloy_contract::SolCallBuilder<T, &P, deregisterOperatorCall, N> {
11407            self.call_builder(
11408                &deregisterOperatorCall {
11409                    operatorId,
11410                    quorumNumbers,
11411                },
11412            )
11413        }
11414        ///Creates a new call builder for the [`getCurrentStake`] function.
11415        pub fn getCurrentStake(
11416            &self,
11417            operatorId: alloy::sol_types::private::FixedBytes<32>,
11418            quorumNumber: u8,
11419        ) -> alloy_contract::SolCallBuilder<T, &P, getCurrentStakeCall, N> {
11420            self.call_builder(
11421                &getCurrentStakeCall {
11422                    operatorId,
11423                    quorumNumber,
11424                },
11425            )
11426        }
11427        ///Creates a new call builder for the [`getCurrentTotalStake`] function.
11428        pub fn getCurrentTotalStake(
11429            &self,
11430            quorumNumber: u8,
11431        ) -> alloy_contract::SolCallBuilder<T, &P, getCurrentTotalStakeCall, N> {
11432            self.call_builder(
11433                &getCurrentTotalStakeCall {
11434                    quorumNumber,
11435                },
11436            )
11437        }
11438        ///Creates a new call builder for the [`getLatestStakeUpdate`] function.
11439        pub fn getLatestStakeUpdate(
11440            &self,
11441            operatorId: alloy::sol_types::private::FixedBytes<32>,
11442            quorumNumber: u8,
11443        ) -> alloy_contract::SolCallBuilder<T, &P, getLatestStakeUpdateCall, N> {
11444            self.call_builder(
11445                &getLatestStakeUpdateCall {
11446                    operatorId,
11447                    quorumNumber,
11448                },
11449            )
11450        }
11451        ///Creates a new call builder for the [`getStakeAtBlockNumber`] function.
11452        pub fn getStakeAtBlockNumber(
11453            &self,
11454            operatorId: alloy::sol_types::private::FixedBytes<32>,
11455            quorumNumber: u8,
11456            blockNumber: u32,
11457        ) -> alloy_contract::SolCallBuilder<T, &P, getStakeAtBlockNumberCall, N> {
11458            self.call_builder(
11459                &getStakeAtBlockNumberCall {
11460                    operatorId,
11461                    quorumNumber,
11462                    blockNumber,
11463                },
11464            )
11465        }
11466        ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function.
11467        pub fn getStakeAtBlockNumberAndIndex(
11468            &self,
11469            quorumNumber: u8,
11470            blockNumber: u32,
11471            operatorId: alloy::sol_types::private::FixedBytes<32>,
11472            index: alloy::sol_types::private::primitives::aliases::U256,
11473        ) -> alloy_contract::SolCallBuilder<
11474            T,
11475            &P,
11476            getStakeAtBlockNumberAndIndexCall,
11477            N,
11478        > {
11479            self.call_builder(
11480                &getStakeAtBlockNumberAndIndexCall {
11481                    quorumNumber,
11482                    blockNumber,
11483                    operatorId,
11484                    index,
11485                },
11486            )
11487        }
11488        ///Creates a new call builder for the [`getStakeHistory`] function.
11489        pub fn getStakeHistory(
11490            &self,
11491            operatorId: alloy::sol_types::private::FixedBytes<32>,
11492            quorumNumber: u8,
11493        ) -> alloy_contract::SolCallBuilder<T, &P, getStakeHistoryCall, N> {
11494            self.call_builder(
11495                &getStakeHistoryCall {
11496                    operatorId,
11497                    quorumNumber,
11498                },
11499            )
11500        }
11501        ///Creates a new call builder for the [`getStakeHistoryLength`] function.
11502        pub fn getStakeHistoryLength(
11503            &self,
11504            operatorId: alloy::sol_types::private::FixedBytes<32>,
11505            quorumNumber: u8,
11506        ) -> alloy_contract::SolCallBuilder<T, &P, getStakeHistoryLengthCall, N> {
11507            self.call_builder(
11508                &getStakeHistoryLengthCall {
11509                    operatorId,
11510                    quorumNumber,
11511                },
11512            )
11513        }
11514        ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function.
11515        pub fn getStakeUpdateAtIndex(
11516            &self,
11517            quorumNumber: u8,
11518            operatorId: alloy::sol_types::private::FixedBytes<32>,
11519            index: alloy::sol_types::private::primitives::aliases::U256,
11520        ) -> alloy_contract::SolCallBuilder<T, &P, getStakeUpdateAtIndexCall, N> {
11521            self.call_builder(
11522                &getStakeUpdateAtIndexCall {
11523                    quorumNumber,
11524                    operatorId,
11525                    index,
11526                },
11527            )
11528        }
11529        ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function.
11530        pub fn getStakeUpdateIndexAtBlockNumber(
11531            &self,
11532            operatorId: alloy::sol_types::private::FixedBytes<32>,
11533            quorumNumber: u8,
11534            blockNumber: u32,
11535        ) -> alloy_contract::SolCallBuilder<
11536            T,
11537            &P,
11538            getStakeUpdateIndexAtBlockNumberCall,
11539            N,
11540        > {
11541            self.call_builder(
11542                &getStakeUpdateIndexAtBlockNumberCall {
11543                    operatorId,
11544                    quorumNumber,
11545                    blockNumber,
11546                },
11547            )
11548        }
11549        ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function.
11550        pub fn getTotalStakeAtBlockNumberFromIndex(
11551            &self,
11552            quorumNumber: u8,
11553            blockNumber: u32,
11554            index: alloy::sol_types::private::primitives::aliases::U256,
11555        ) -> alloy_contract::SolCallBuilder<
11556            T,
11557            &P,
11558            getTotalStakeAtBlockNumberFromIndexCall,
11559            N,
11560        > {
11561            self.call_builder(
11562                &getTotalStakeAtBlockNumberFromIndexCall {
11563                    quorumNumber,
11564                    blockNumber,
11565                    index,
11566                },
11567            )
11568        }
11569        ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function.
11570        pub fn getTotalStakeHistoryLength(
11571            &self,
11572            quorumNumber: u8,
11573        ) -> alloy_contract::SolCallBuilder<T, &P, getTotalStakeHistoryLengthCall, N> {
11574            self.call_builder(
11575                &getTotalStakeHistoryLengthCall {
11576                    quorumNumber,
11577                },
11578            )
11579        }
11580        ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function.
11581        pub fn getTotalStakeIndicesAtBlockNumber(
11582            &self,
11583            blockNumber: u32,
11584            quorumNumbers: alloy::sol_types::private::Bytes,
11585        ) -> alloy_contract::SolCallBuilder<
11586            T,
11587            &P,
11588            getTotalStakeIndicesAtBlockNumberCall,
11589            N,
11590        > {
11591            self.call_builder(
11592                &getTotalStakeIndicesAtBlockNumberCall {
11593                    blockNumber,
11594                    quorumNumbers,
11595                },
11596            )
11597        }
11598        ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function.
11599        pub fn getTotalStakeUpdateAtIndex(
11600            &self,
11601            quorumNumber: u8,
11602            index: alloy::sol_types::private::primitives::aliases::U256,
11603        ) -> alloy_contract::SolCallBuilder<T, &P, getTotalStakeUpdateAtIndexCall, N> {
11604            self.call_builder(
11605                &getTotalStakeUpdateAtIndexCall {
11606                    quorumNumber,
11607                    index,
11608                },
11609            )
11610        }
11611        ///Creates a new call builder for the [`initializeDelegatedStakeQuorum`] function.
11612        pub fn initializeDelegatedStakeQuorum(
11613            &self,
11614            quorumNumber: u8,
11615            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
11616            _strategyParams: alloy::sol_types::private::Vec<
11617                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
11618            >,
11619        ) -> alloy_contract::SolCallBuilder<
11620            T,
11621            &P,
11622            initializeDelegatedStakeQuorumCall,
11623            N,
11624        > {
11625            self.call_builder(
11626                &initializeDelegatedStakeQuorumCall {
11627                    quorumNumber,
11628                    minimumStake,
11629                    _strategyParams,
11630                },
11631            )
11632        }
11633        ///Creates a new call builder for the [`initializeSlashableStakeQuorum`] function.
11634        pub fn initializeSlashableStakeQuorum(
11635            &self,
11636            quorumNumber: u8,
11637            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
11638            lookAheadPeriod: u32,
11639            _strategyParams: alloy::sol_types::private::Vec<
11640                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
11641            >,
11642        ) -> alloy_contract::SolCallBuilder<
11643            T,
11644            &P,
11645            initializeSlashableStakeQuorumCall,
11646            N,
11647        > {
11648            self.call_builder(
11649                &initializeSlashableStakeQuorumCall {
11650                    quorumNumber,
11651                    minimumStake,
11652                    lookAheadPeriod,
11653                    _strategyParams,
11654                },
11655            )
11656        }
11657        ///Creates a new call builder for the [`minimumStakeForQuorum`] function.
11658        pub fn minimumStakeForQuorum(
11659            &self,
11660            _0: u8,
11661        ) -> alloy_contract::SolCallBuilder<T, &P, minimumStakeForQuorumCall, N> {
11662            self.call_builder(&minimumStakeForQuorumCall { _0 })
11663        }
11664        ///Creates a new call builder for the [`modifyStrategyParams`] function.
11665        pub fn modifyStrategyParams(
11666            &self,
11667            quorumNumber: u8,
11668            strategyIndices: alloy::sol_types::private::Vec<
11669                alloy::sol_types::private::primitives::aliases::U256,
11670            >,
11671            newMultipliers: alloy::sol_types::private::Vec<
11672                alloy::sol_types::private::primitives::aliases::U96,
11673            >,
11674        ) -> alloy_contract::SolCallBuilder<T, &P, modifyStrategyParamsCall, N> {
11675            self.call_builder(
11676                &modifyStrategyParamsCall {
11677                    quorumNumber,
11678                    strategyIndices,
11679                    newMultipliers,
11680                },
11681            )
11682        }
11683        ///Creates a new call builder for the [`registerOperator`] function.
11684        pub fn registerOperator(
11685            &self,
11686            operator: alloy::sol_types::private::Address,
11687            operatorId: alloy::sol_types::private::FixedBytes<32>,
11688            quorumNumbers: alloy::sol_types::private::Bytes,
11689        ) -> alloy_contract::SolCallBuilder<T, &P, registerOperatorCall, N> {
11690            self.call_builder(
11691                &registerOperatorCall {
11692                    operator,
11693                    operatorId,
11694                    quorumNumbers,
11695                },
11696            )
11697        }
11698        ///Creates a new call builder for the [`registryCoordinator`] function.
11699        pub fn registryCoordinator(
11700            &self,
11701        ) -> alloy_contract::SolCallBuilder<T, &P, registryCoordinatorCall, N> {
11702            self.call_builder(&registryCoordinatorCall {})
11703        }
11704        ///Creates a new call builder for the [`removeStrategies`] function.
11705        pub fn removeStrategies(
11706            &self,
11707            quorumNumber: u8,
11708            indicesToRemove: alloy::sol_types::private::Vec<
11709                alloy::sol_types::private::primitives::aliases::U256,
11710            >,
11711        ) -> alloy_contract::SolCallBuilder<T, &P, removeStrategiesCall, N> {
11712            self.call_builder(
11713                &removeStrategiesCall {
11714                    quorumNumber,
11715                    indicesToRemove,
11716                },
11717            )
11718        }
11719        ///Creates a new call builder for the [`setMinimumStakeForQuorum`] function.
11720        pub fn setMinimumStakeForQuorum(
11721            &self,
11722            quorumNumber: u8,
11723            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
11724        ) -> alloy_contract::SolCallBuilder<T, &P, setMinimumStakeForQuorumCall, N> {
11725            self.call_builder(
11726                &setMinimumStakeForQuorumCall {
11727                    quorumNumber,
11728                    minimumStake,
11729                },
11730            )
11731        }
11732        ///Creates a new call builder for the [`setSlashableStakeLookahead`] function.
11733        pub fn setSlashableStakeLookahead(
11734            &self,
11735            quorumNumber: u8,
11736            _lookAheadBlocks: u32,
11737        ) -> alloy_contract::SolCallBuilder<T, &P, setSlashableStakeLookaheadCall, N> {
11738            self.call_builder(
11739                &setSlashableStakeLookaheadCall {
11740                    quorumNumber,
11741                    _lookAheadBlocks,
11742                },
11743            )
11744        }
11745        ///Creates a new call builder for the [`slashableStakeLookAheadPerQuorum`] function.
11746        pub fn slashableStakeLookAheadPerQuorum(
11747            &self,
11748            quorumNumber: u8,
11749        ) -> alloy_contract::SolCallBuilder<
11750            T,
11751            &P,
11752            slashableStakeLookAheadPerQuorumCall,
11753            N,
11754        > {
11755            self.call_builder(
11756                &slashableStakeLookAheadPerQuorumCall {
11757                    quorumNumber,
11758                },
11759            )
11760        }
11761        ///Creates a new call builder for the [`stakeTypePerQuorum`] function.
11762        pub fn stakeTypePerQuorum(
11763            &self,
11764            quorumNumber: u8,
11765        ) -> alloy_contract::SolCallBuilder<T, &P, stakeTypePerQuorumCall, N> {
11766            self.call_builder(
11767                &stakeTypePerQuorumCall {
11768                    quorumNumber,
11769                },
11770            )
11771        }
11772        ///Creates a new call builder for the [`strategiesPerQuorum`] function.
11773        pub fn strategiesPerQuorum(
11774            &self,
11775            quorumNumber: u8,
11776            _1: alloy::sol_types::private::primitives::aliases::U256,
11777        ) -> alloy_contract::SolCallBuilder<T, &P, strategiesPerQuorumCall, N> {
11778            self.call_builder(
11779                &strategiesPerQuorumCall {
11780                    quorumNumber,
11781                    _1,
11782                },
11783            )
11784        }
11785        ///Creates a new call builder for the [`strategyParams`] function.
11786        pub fn strategyParams(
11787            &self,
11788            quorumNumber: u8,
11789            _1: alloy::sol_types::private::primitives::aliases::U256,
11790        ) -> alloy_contract::SolCallBuilder<T, &P, strategyParamsCall, N> {
11791            self.call_builder(
11792                &strategyParamsCall {
11793                    quorumNumber,
11794                    _1,
11795                },
11796            )
11797        }
11798        ///Creates a new call builder for the [`strategyParamsByIndex`] function.
11799        pub fn strategyParamsByIndex(
11800            &self,
11801            quorumNumber: u8,
11802            index: alloy::sol_types::private::primitives::aliases::U256,
11803        ) -> alloy_contract::SolCallBuilder<T, &P, strategyParamsByIndexCall, N> {
11804            self.call_builder(
11805                &strategyParamsByIndexCall {
11806                    quorumNumber,
11807                    index,
11808                },
11809            )
11810        }
11811        ///Creates a new call builder for the [`strategyParamsLength`] function.
11812        pub fn strategyParamsLength(
11813            &self,
11814            quorumNumber: u8,
11815        ) -> alloy_contract::SolCallBuilder<T, &P, strategyParamsLengthCall, N> {
11816            self.call_builder(
11817                &strategyParamsLengthCall {
11818                    quorumNumber,
11819                },
11820            )
11821        }
11822        ///Creates a new call builder for the [`updateOperatorsStake`] function.
11823        pub fn updateOperatorsStake(
11824            &self,
11825            operators: alloy::sol_types::private::Vec<
11826                alloy::sol_types::private::Address,
11827            >,
11828            operatorIds: alloy::sol_types::private::Vec<
11829                alloy::sol_types::private::FixedBytes<32>,
11830            >,
11831            quorumNumber: u8,
11832        ) -> alloy_contract::SolCallBuilder<T, &P, updateOperatorsStakeCall, N> {
11833            self.call_builder(
11834                &updateOperatorsStakeCall {
11835                    operators,
11836                    operatorIds,
11837                    quorumNumber,
11838                },
11839            )
11840        }
11841        ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function.
11842        pub fn weightOfOperatorForQuorum(
11843            &self,
11844            quorumNumber: u8,
11845            operator: alloy::sol_types::private::Address,
11846        ) -> alloy_contract::SolCallBuilder<T, &P, weightOfOperatorForQuorumCall, N> {
11847            self.call_builder(
11848                &weightOfOperatorForQuorumCall {
11849                    quorumNumber,
11850                    operator,
11851                },
11852            )
11853        }
11854    }
11855    /// Event filters.
11856    #[automatically_derived]
11857    impl<
11858        T: alloy_contract::private::Transport + ::core::clone::Clone,
11859        P: alloy_contract::private::Provider<T, N>,
11860        N: alloy_contract::private::Network,
11861    > StakeRegistryInstance<T, P, N> {
11862        /// Creates a new event filter using this contract instance's provider and address.
11863        ///
11864        /// Note that the type can be any event, not just those defined in this contract.
11865        /// Prefer using the other methods for building type-safe event filters.
11866        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11867            &self,
11868        ) -> alloy_contract::Event<T, &P, E, N> {
11869            alloy_contract::Event::new_sol(&self.provider, &self.address)
11870        }
11871        ///Creates a new event filter for the [`LookAheadPeriodChanged`] event.
11872        pub fn LookAheadPeriodChanged_filter(
11873            &self,
11874        ) -> alloy_contract::Event<T, &P, LookAheadPeriodChanged, N> {
11875            self.event_filter::<LookAheadPeriodChanged>()
11876        }
11877        ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event.
11878        pub fn MinimumStakeForQuorumUpdated_filter(
11879            &self,
11880        ) -> alloy_contract::Event<T, &P, MinimumStakeForQuorumUpdated, N> {
11881            self.event_filter::<MinimumStakeForQuorumUpdated>()
11882        }
11883        ///Creates a new event filter for the [`OperatorStakeUpdate`] event.
11884        pub fn OperatorStakeUpdate_filter(
11885            &self,
11886        ) -> alloy_contract::Event<T, &P, OperatorStakeUpdate, N> {
11887            self.event_filter::<OperatorStakeUpdate>()
11888        }
11889        ///Creates a new event filter for the [`QuorumCreated`] event.
11890        pub fn QuorumCreated_filter(
11891            &self,
11892        ) -> alloy_contract::Event<T, &P, QuorumCreated, N> {
11893            self.event_filter::<QuorumCreated>()
11894        }
11895        ///Creates a new event filter for the [`StakeTypeSet`] event.
11896        pub fn StakeTypeSet_filter(
11897            &self,
11898        ) -> alloy_contract::Event<T, &P, StakeTypeSet, N> {
11899            self.event_filter::<StakeTypeSet>()
11900        }
11901        ///Creates a new event filter for the [`StrategyAddedToQuorum`] event.
11902        pub fn StrategyAddedToQuorum_filter(
11903            &self,
11904        ) -> alloy_contract::Event<T, &P, StrategyAddedToQuorum, N> {
11905            self.event_filter::<StrategyAddedToQuorum>()
11906        }
11907        ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event.
11908        pub fn StrategyMultiplierUpdated_filter(
11909            &self,
11910        ) -> alloy_contract::Event<T, &P, StrategyMultiplierUpdated, N> {
11911            self.event_filter::<StrategyMultiplierUpdated>()
11912        }
11913        ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event.
11914        pub fn StrategyRemovedFromQuorum_filter(
11915            &self,
11916        ) -> alloy_contract::Event<T, &P, StrategyRemovedFromQuorum, N> {
11917            self.event_filter::<StrategyRemovedFromQuorum>()
11918        }
11919    }
11920}