eigenlayer_contract_deployer/bindings/core/
stake_registry.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(serde::Serialize, serde::Deserialize)]
25    #[derive(Default, Debug, PartialEq, Eq, Hash)]
26    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
27    #[derive(Clone)]
28    pub struct StakeType(u8);
29    const _: () = {
30        use alloy::sol_types as alloy_sol_types;
31        #[automatically_derived]
32        impl alloy_sol_types::private::SolTypeValue<StakeType> for u8 {
33            #[inline]
34            fn stv_to_tokens(
35                &self,
36            ) -> <alloy::sol_types::sol_data::Uint<
37                8,
38            > as alloy_sol_types::SolType>::Token<'_> {
39                alloy_sol_types::private::SolTypeValue::<
40                    alloy::sol_types::sol_data::Uint<8>,
41                >::stv_to_tokens(self)
42            }
43            #[inline]
44            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
45                <alloy::sol_types::sol_data::Uint<
46                    8,
47                > as alloy_sol_types::SolType>::tokenize(self)
48                    .0
49            }
50            #[inline]
51            fn stv_abi_encode_packed_to(
52                &self,
53                out: &mut alloy_sol_types::private::Vec<u8>,
54            ) {
55                <alloy::sol_types::sol_data::Uint<
56                    8,
57                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
58            }
59            #[inline]
60            fn stv_abi_packed_encoded_size(&self) -> usize {
61                <alloy::sol_types::sol_data::Uint<
62                    8,
63                > as alloy_sol_types::SolType>::abi_encoded_size(self)
64            }
65        }
66        #[automatically_derived]
67        impl StakeType {
68            /// The Solidity type name.
69            pub const NAME: &'static str = stringify!(@ name);
70            /// Convert from the underlying value type.
71            #[inline]
72            pub const fn from_underlying(value: u8) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(self) -> u8 {
78                self.0
79            }
80            /// Return the single encoding of this value, delegating to the
81            /// underlying type.
82            #[inline]
83            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
84                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
85            }
86            /// Return the packed encoding of this value, delegating to the
87            /// underlying type.
88            #[inline]
89            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
90                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
91            }
92        }
93        #[automatically_derived]
94        impl From<u8> for StakeType {
95            fn from(value: u8) -> Self {
96                Self::from_underlying(value)
97            }
98        }
99        #[automatically_derived]
100        impl From<StakeType> for u8 {
101            fn from(value: StakeType) -> Self {
102                value.into_underlying()
103            }
104        }
105        #[automatically_derived]
106        impl alloy_sol_types::SolType for StakeType {
107            type RustType = u8;
108            type Token<'a> = <alloy::sol_types::sol_data::Uint<
109                8,
110            > as alloy_sol_types::SolType>::Token<'a>;
111            const SOL_NAME: &'static str = Self::NAME;
112            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
113                8,
114            > as alloy_sol_types::SolType>::ENCODED_SIZE;
115            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                8,
117            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
118            #[inline]
119            fn valid_token(token: &Self::Token<'_>) -> bool {
120                Self::type_check(token).is_ok()
121            }
122            #[inline]
123            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
124                <alloy::sol_types::sol_data::Uint<
125                    8,
126                > as alloy_sol_types::SolType>::type_check(token)
127            }
128            #[inline]
129            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
130                <alloy::sol_types::sol_data::Uint<
131                    8,
132                > as alloy_sol_types::SolType>::detokenize(token)
133            }
134        }
135        #[automatically_derived]
136        impl alloy_sol_types::EventTopic for StakeType {
137            #[inline]
138            fn topic_preimage_length(rust: &Self::RustType) -> usize {
139                <alloy::sol_types::sol_data::Uint<
140                    8,
141                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
142            }
143            #[inline]
144            fn encode_topic_preimage(
145                rust: &Self::RustType,
146                out: &mut alloy_sol_types::private::Vec<u8>,
147            ) {
148                <alloy::sol_types::sol_data::Uint<
149                    8,
150                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
151            }
152            #[inline]
153            fn encode_topic(
154                rust: &Self::RustType,
155            ) -> alloy_sol_types::abi::token::WordToken {
156                <alloy::sol_types::sol_data::Uint<
157                    8,
158                > as alloy_sol_types::EventTopic>::encode_topic(rust)
159            }
160        }
161    };
162    #[derive(serde::Serialize, serde::Deserialize)]
163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
164    /**```solidity
165struct StakeUpdate { uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; uint96 stake; }
166```*/
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct StakeUpdate {
170        #[allow(missing_docs)]
171        pub updateBlockNumber: u32,
172        #[allow(missing_docs)]
173        pub nextUpdateBlockNumber: u32,
174        #[allow(missing_docs)]
175        pub stake: alloy::sol_types::private::primitives::aliases::U96,
176    }
177    #[allow(
178        non_camel_case_types,
179        non_snake_case,
180        clippy::pub_underscore_fields,
181        clippy::style
182    )]
183    const _: () = {
184        use alloy::sol_types as alloy_sol_types;
185        #[doc(hidden)]
186        type UnderlyingSolTuple<'a> = (
187            alloy::sol_types::sol_data::Uint<32>,
188            alloy::sol_types::sol_data::Uint<32>,
189            alloy::sol_types::sol_data::Uint<96>,
190        );
191        #[doc(hidden)]
192        type UnderlyingRustTuple<'a> = (
193            u32,
194            u32,
195            alloy::sol_types::private::primitives::aliases::U96,
196        );
197        #[cfg(test)]
198        #[allow(dead_code, unreachable_patterns)]
199        fn _type_assertion(
200            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
201        ) {
202            match _t {
203                alloy_sol_types::private::AssertTypeEq::<
204                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
205                >(_) => {}
206            }
207        }
208        #[automatically_derived]
209        #[doc(hidden)]
210        impl ::core::convert::From<StakeUpdate> for UnderlyingRustTuple<'_> {
211            fn from(value: StakeUpdate) -> Self {
212                (value.updateBlockNumber, value.nextUpdateBlockNumber, value.stake)
213            }
214        }
215        #[automatically_derived]
216        #[doc(hidden)]
217        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeUpdate {
218            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
219                Self {
220                    updateBlockNumber: tuple.0,
221                    nextUpdateBlockNumber: tuple.1,
222                    stake: tuple.2,
223                }
224            }
225        }
226        #[automatically_derived]
227        impl alloy_sol_types::SolValue for StakeUpdate {
228            type SolType = Self;
229        }
230        #[automatically_derived]
231        impl alloy_sol_types::private::SolTypeValue<Self> for StakeUpdate {
232            #[inline]
233            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
234                (
235                    <alloy::sol_types::sol_data::Uint<
236                        32,
237                    > as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber),
238                    <alloy::sol_types::sol_data::Uint<
239                        32,
240                    > as alloy_sol_types::SolType>::tokenize(
241                        &self.nextUpdateBlockNumber,
242                    ),
243                    <alloy::sol_types::sol_data::Uint<
244                        96,
245                    > as alloy_sol_types::SolType>::tokenize(&self.stake),
246                )
247            }
248            #[inline]
249            fn stv_abi_encoded_size(&self) -> usize {
250                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
251                    return size;
252                }
253                let tuple = <UnderlyingRustTuple<
254                    '_,
255                > as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<
257                    '_,
258                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
259            }
260            #[inline]
261            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
262                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
263            }
264            #[inline]
265            fn stv_abi_encode_packed_to(
266                &self,
267                out: &mut alloy_sol_types::private::Vec<u8>,
268            ) {
269                let tuple = <UnderlyingRustTuple<
270                    '_,
271                > as ::core::convert::From<Self>>::from(self.clone());
272                <UnderlyingSolTuple<
273                    '_,
274                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
275            }
276            #[inline]
277            fn stv_abi_packed_encoded_size(&self) -> usize {
278                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
279                    return size;
280                }
281                let tuple = <UnderlyingRustTuple<
282                    '_,
283                > as ::core::convert::From<Self>>::from(self.clone());
284                <UnderlyingSolTuple<
285                    '_,
286                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
287            }
288        }
289        #[automatically_derived]
290        impl alloy_sol_types::SolType for StakeUpdate {
291            type RustType = Self;
292            type Token<'a> = <UnderlyingSolTuple<
293                'a,
294            > as alloy_sol_types::SolType>::Token<'a>;
295            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
296            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
297                '_,
298            > as alloy_sol_types::SolType>::ENCODED_SIZE;
299            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
300                '_,
301            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
302            #[inline]
303            fn valid_token(token: &Self::Token<'_>) -> bool {
304                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
305            }
306            #[inline]
307            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
308                let tuple = <UnderlyingSolTuple<
309                    '_,
310                > as alloy_sol_types::SolType>::detokenize(token);
311                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
312            }
313        }
314        #[automatically_derived]
315        impl alloy_sol_types::SolStruct for StakeUpdate {
316            const NAME: &'static str = "StakeUpdate";
317            #[inline]
318            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
319                alloy_sol_types::private::Cow::Borrowed(
320                    "StakeUpdate(uint32 updateBlockNumber,uint32 nextUpdateBlockNumber,uint96 stake)",
321                )
322            }
323            #[inline]
324            fn eip712_components() -> alloy_sol_types::private::Vec<
325                alloy_sol_types::private::Cow<'static, str>,
326            > {
327                alloy_sol_types::private::Vec::new()
328            }
329            #[inline]
330            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
331                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
332            }
333            #[inline]
334            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
335                [
336                    <alloy::sol_types::sol_data::Uint<
337                        32,
338                    > as alloy_sol_types::SolType>::eip712_data_word(
339                            &self.updateBlockNumber,
340                        )
341                        .0,
342                    <alloy::sol_types::sol_data::Uint<
343                        32,
344                    > as alloy_sol_types::SolType>::eip712_data_word(
345                            &self.nextUpdateBlockNumber,
346                        )
347                        .0,
348                    <alloy::sol_types::sol_data::Uint<
349                        96,
350                    > as alloy_sol_types::SolType>::eip712_data_word(&self.stake)
351                        .0,
352                ]
353                    .concat()
354            }
355        }
356        #[automatically_derived]
357        impl alloy_sol_types::EventTopic for StakeUpdate {
358            #[inline]
359            fn topic_preimage_length(rust: &Self::RustType) -> usize {
360                0usize
361                    + <alloy::sol_types::sol_data::Uint<
362                        32,
363                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
364                        &rust.updateBlockNumber,
365                    )
366                    + <alloy::sol_types::sol_data::Uint<
367                        32,
368                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
369                        &rust.nextUpdateBlockNumber,
370                    )
371                    + <alloy::sol_types::sol_data::Uint<
372                        96,
373                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.stake)
374            }
375            #[inline]
376            fn encode_topic_preimage(
377                rust: &Self::RustType,
378                out: &mut alloy_sol_types::private::Vec<u8>,
379            ) {
380                out.reserve(
381                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
382                );
383                <alloy::sol_types::sol_data::Uint<
384                    32,
385                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
386                    &rust.updateBlockNumber,
387                    out,
388                );
389                <alloy::sol_types::sol_data::Uint<
390                    32,
391                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
392                    &rust.nextUpdateBlockNumber,
393                    out,
394                );
395                <alloy::sol_types::sol_data::Uint<
396                    96,
397                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
398                    &rust.stake,
399                    out,
400                );
401            }
402            #[inline]
403            fn encode_topic(
404                rust: &Self::RustType,
405            ) -> alloy_sol_types::abi::token::WordToken {
406                let mut out = alloy_sol_types::private::Vec::new();
407                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
408                    rust,
409                    &mut out,
410                );
411                alloy_sol_types::abi::token::WordToken(
412                    alloy_sol_types::private::keccak256(out),
413                )
414            }
415        }
416    };
417    #[derive(serde::Serialize, serde::Deserialize)]
418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
419    /**```solidity
420struct StrategyParams { address strategy; uint96 multiplier; }
421```*/
422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
423    #[derive(Clone)]
424    pub struct StrategyParams {
425        #[allow(missing_docs)]
426        pub strategy: alloy::sol_types::private::Address,
427        #[allow(missing_docs)]
428        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
429    }
430    #[allow(
431        non_camel_case_types,
432        non_snake_case,
433        clippy::pub_underscore_fields,
434        clippy::style
435    )]
436    const _: () = {
437        use alloy::sol_types as alloy_sol_types;
438        #[doc(hidden)]
439        type UnderlyingSolTuple<'a> = (
440            alloy::sol_types::sol_data::Address,
441            alloy::sol_types::sol_data::Uint<96>,
442        );
443        #[doc(hidden)]
444        type UnderlyingRustTuple<'a> = (
445            alloy::sol_types::private::Address,
446            alloy::sol_types::private::primitives::aliases::U96,
447        );
448        #[cfg(test)]
449        #[allow(dead_code, unreachable_patterns)]
450        fn _type_assertion(
451            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
452        ) {
453            match _t {
454                alloy_sol_types::private::AssertTypeEq::<
455                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
456                >(_) => {}
457            }
458        }
459        #[automatically_derived]
460        #[doc(hidden)]
461        impl ::core::convert::From<StrategyParams> for UnderlyingRustTuple<'_> {
462            fn from(value: StrategyParams) -> Self {
463                (value.strategy, value.multiplier)
464            }
465        }
466        #[automatically_derived]
467        #[doc(hidden)]
468        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyParams {
469            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
470                Self {
471                    strategy: tuple.0,
472                    multiplier: tuple.1,
473                }
474            }
475        }
476        #[automatically_derived]
477        impl alloy_sol_types::SolValue for StrategyParams {
478            type SolType = Self;
479        }
480        #[automatically_derived]
481        impl alloy_sol_types::private::SolTypeValue<Self> for StrategyParams {
482            #[inline]
483            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
484                (
485                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
486                        &self.strategy,
487                    ),
488                    <alloy::sol_types::sol_data::Uint<
489                        96,
490                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
491                )
492            }
493            #[inline]
494            fn stv_abi_encoded_size(&self) -> usize {
495                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
496                    return size;
497                }
498                let tuple = <UnderlyingRustTuple<
499                    '_,
500                > as ::core::convert::From<Self>>::from(self.clone());
501                <UnderlyingSolTuple<
502                    '_,
503                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
504            }
505            #[inline]
506            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
507                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
508            }
509            #[inline]
510            fn stv_abi_encode_packed_to(
511                &self,
512                out: &mut alloy_sol_types::private::Vec<u8>,
513            ) {
514                let tuple = <UnderlyingRustTuple<
515                    '_,
516                > as ::core::convert::From<Self>>::from(self.clone());
517                <UnderlyingSolTuple<
518                    '_,
519                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
520            }
521            #[inline]
522            fn stv_abi_packed_encoded_size(&self) -> usize {
523                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
524                    return size;
525                }
526                let tuple = <UnderlyingRustTuple<
527                    '_,
528                > as ::core::convert::From<Self>>::from(self.clone());
529                <UnderlyingSolTuple<
530                    '_,
531                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
532            }
533        }
534        #[automatically_derived]
535        impl alloy_sol_types::SolType for StrategyParams {
536            type RustType = Self;
537            type Token<'a> = <UnderlyingSolTuple<
538                'a,
539            > as alloy_sol_types::SolType>::Token<'a>;
540            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
541            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
542                '_,
543            > as alloy_sol_types::SolType>::ENCODED_SIZE;
544            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
545                '_,
546            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
547            #[inline]
548            fn valid_token(token: &Self::Token<'_>) -> bool {
549                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
550            }
551            #[inline]
552            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
553                let tuple = <UnderlyingSolTuple<
554                    '_,
555                > as alloy_sol_types::SolType>::detokenize(token);
556                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
557            }
558        }
559        #[automatically_derived]
560        impl alloy_sol_types::SolStruct for StrategyParams {
561            const NAME: &'static str = "StrategyParams";
562            #[inline]
563            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
564                alloy_sol_types::private::Cow::Borrowed(
565                    "StrategyParams(address strategy,uint96 multiplier)",
566                )
567            }
568            #[inline]
569            fn eip712_components() -> alloy_sol_types::private::Vec<
570                alloy_sol_types::private::Cow<'static, str>,
571            > {
572                alloy_sol_types::private::Vec::new()
573            }
574            #[inline]
575            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
576                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
577            }
578            #[inline]
579            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
580                [
581                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
582                            &self.strategy,
583                        )
584                        .0,
585                    <alloy::sol_types::sol_data::Uint<
586                        96,
587                    > as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier)
588                        .0,
589                ]
590                    .concat()
591            }
592        }
593        #[automatically_derived]
594        impl alloy_sol_types::EventTopic for StrategyParams {
595            #[inline]
596            fn topic_preimage_length(rust: &Self::RustType) -> usize {
597                0usize
598                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
599                        &rust.strategy,
600                    )
601                    + <alloy::sol_types::sol_data::Uint<
602                        96,
603                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
604                        &rust.multiplier,
605                    )
606            }
607            #[inline]
608            fn encode_topic_preimage(
609                rust: &Self::RustType,
610                out: &mut alloy_sol_types::private::Vec<u8>,
611            ) {
612                out.reserve(
613                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
614                );
615                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
616                    &rust.strategy,
617                    out,
618                );
619                <alloy::sol_types::sol_data::Uint<
620                    96,
621                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
622                    &rust.multiplier,
623                    out,
624                );
625            }
626            #[inline]
627            fn encode_topic(
628                rust: &Self::RustType,
629            ) -> alloy_sol_types::abi::token::WordToken {
630                let mut out = alloy_sol_types::private::Vec::new();
631                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
632                    rust,
633                    &mut out,
634                );
635                alloy_sol_types::abi::token::WordToken(
636                    alloy_sol_types::private::keccak256(out),
637                )
638            }
639        }
640    };
641    use alloy::contract as alloy_contract;
642    /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
643
644See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
645    #[inline]
646    pub const fn new<
647        P: alloy_contract::private::Provider<N>,
648        N: alloy_contract::private::Network,
649    >(
650        address: alloy_sol_types::private::Address,
651        provider: P,
652    ) -> IStakeRegistryTypesInstance<P, N> {
653        IStakeRegistryTypesInstance::<P, N>::new(address, provider)
654    }
655    /**A [`IStakeRegistryTypes`](self) instance.
656
657Contains type-safe methods for interacting with an on-chain instance of the
658[`IStakeRegistryTypes`](self) contract located at a given `address`, using a given
659provider `P`.
660
661If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
662documentation on how to provide it), the `deploy` and `deploy_builder` methods can
663be used to deploy a new instance of the contract.
664
665See the [module-level documentation](self) for all the available methods.*/
666    #[derive(Clone)]
667    pub struct IStakeRegistryTypesInstance<P, N = alloy_contract::private::Ethereum> {
668        address: alloy_sol_types::private::Address,
669        provider: P,
670        _network: ::core::marker::PhantomData<N>,
671    }
672    #[automatically_derived]
673    impl<P, N> ::core::fmt::Debug for IStakeRegistryTypesInstance<P, N> {
674        #[inline]
675        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
676            f.debug_tuple("IStakeRegistryTypesInstance").field(&self.address).finish()
677        }
678    }
679    /// Instantiation and getters/setters.
680    #[automatically_derived]
681    impl<
682        P: alloy_contract::private::Provider<N>,
683        N: alloy_contract::private::Network,
684    > IStakeRegistryTypesInstance<P, N> {
685        /**Creates a new wrapper around an on-chain [`IStakeRegistryTypes`](self) contract instance.
686
687See the [wrapper's documentation](`IStakeRegistryTypesInstance`) for more details.*/
688        #[inline]
689        pub const fn new(
690            address: alloy_sol_types::private::Address,
691            provider: P,
692        ) -> Self {
693            Self {
694                address,
695                provider,
696                _network: ::core::marker::PhantomData,
697            }
698        }
699        /// Returns a reference to the address.
700        #[inline]
701        pub const fn address(&self) -> &alloy_sol_types::private::Address {
702            &self.address
703        }
704        /// Sets the address.
705        #[inline]
706        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
707            self.address = address;
708        }
709        /// Sets the address and returns `self`.
710        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
711            self.set_address(address);
712            self
713        }
714        /// Returns a reference to the provider.
715        #[inline]
716        pub const fn provider(&self) -> &P {
717            &self.provider
718        }
719    }
720    impl<P: ::core::clone::Clone, N> IStakeRegistryTypesInstance<&P, N> {
721        /// Clones the provider and returns a new instance with the cloned provider.
722        #[inline]
723        pub fn with_cloned_provider(self) -> IStakeRegistryTypesInstance<P, N> {
724            IStakeRegistryTypesInstance {
725                address: self.address,
726                provider: ::core::clone::Clone::clone(&self.provider),
727                _network: ::core::marker::PhantomData,
728            }
729        }
730    }
731    /// Function calls.
732    #[automatically_derived]
733    impl<
734        P: alloy_contract::private::Provider<N>,
735        N: alloy_contract::private::Network,
736    > IStakeRegistryTypesInstance<P, N> {
737        /// Creates a new call builder using this contract instance's provider and address.
738        ///
739        /// Note that the call can be any function call, not just those defined in this
740        /// contract. Prefer using the other methods for building type-safe contract calls.
741        pub fn call_builder<C: alloy_sol_types::SolCall>(
742            &self,
743            call: &C,
744        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
745            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
746        }
747    }
748    /// Event filters.
749    #[automatically_derived]
750    impl<
751        P: alloy_contract::private::Provider<N>,
752        N: alloy_contract::private::Network,
753    > IStakeRegistryTypesInstance<P, N> {
754        /// Creates a new event filter using this contract instance's provider and address.
755        ///
756        /// Note that the type can be any event, not just those defined in this contract.
757        /// Prefer using the other methods for building type-safe event filters.
758        pub fn event_filter<E: alloy_sol_types::SolEvent>(
759            &self,
760        ) -> alloy_contract::Event<&P, E, N> {
761            alloy_contract::Event::new_sol(&self.provider, &self.address)
762        }
763    }
764}
765/**
766
767Generated by the following Solidity interface...
768```solidity
769library IStakeRegistryTypes {
770    type StakeType is uint8;
771    struct StakeUpdate {
772        uint32 updateBlockNumber;
773        uint32 nextUpdateBlockNumber;
774        uint96 stake;
775    }
776    struct StrategyParams {
777        address strategy;
778        uint96 multiplier;
779    }
780}
781
782interface StakeRegistry {
783    error BelowMinimumStakeRequirement();
784    error EmptyStakeHistory();
785    error InputArrayLengthMismatch();
786    error InputArrayLengthZero();
787    error InputDuplicateStrategy();
788    error InputMultiplierZero();
789    error InvalidBlockNumber();
790    error LookAheadPeriodTooLong();
791    error OnlySlashingRegistryCoordinator();
792    error OnlySlashingRegistryCoordinatorOwner();
793    error QuorumAlreadyExists();
794    error QuorumDoesNotExist();
795    error QuorumNotSlashable();
796
797    event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
798    event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
799    event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
800    event QuorumCreated(uint8 indexed quorumNumber);
801    event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
802    event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
803    event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
804    event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
805
806    constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
807
808    function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
809    function WEIGHTING_DIVISOR() external view returns (uint256);
810    function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
811    function allocationManager() external view returns (address);
812    function avsDirectory() external view returns (address);
813    function delegation() external view returns (address);
814    function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
815    function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
816    function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
817    function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
818    function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
819    function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
820    function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
821    function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
822    function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
823    function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
824    function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
825    function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
826    function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
827    function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
828    function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
829    function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
830    function minimumStakeForQuorum(uint8) external view returns (uint96);
831    function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
832    function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
833    function registryCoordinator() external view returns (address);
834    function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
835    function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
836    function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
837    function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
838    function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
839    function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
840    function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
841    function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
842    function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
843    function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
844    function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
845}
846```
847
848...which was generated by the following JSON ABI:
849```json
850[
851  {
852    "type": "constructor",
853    "inputs": [
854      {
855        "name": "_slashingRegistryCoordinator",
856        "type": "address",
857        "internalType": "contract ISlashingRegistryCoordinator"
858      },
859      {
860        "name": "_delegationManager",
861        "type": "address",
862        "internalType": "contract IDelegationManager"
863      },
864      {
865        "name": "_avsDirectory",
866        "type": "address",
867        "internalType": "contract IAVSDirectory"
868      },
869      {
870        "name": "_allocationManager",
871        "type": "address",
872        "internalType": "contract IAllocationManager"
873      }
874    ],
875    "stateMutability": "nonpayable"
876  },
877  {
878    "type": "function",
879    "name": "MAX_WEIGHING_FUNCTION_LENGTH",
880    "inputs": [],
881    "outputs": [
882      {
883        "name": "",
884        "type": "uint8",
885        "internalType": "uint8"
886      }
887    ],
888    "stateMutability": "view"
889  },
890  {
891    "type": "function",
892    "name": "WEIGHTING_DIVISOR",
893    "inputs": [],
894    "outputs": [
895      {
896        "name": "",
897        "type": "uint256",
898        "internalType": "uint256"
899      }
900    ],
901    "stateMutability": "view"
902  },
903  {
904    "type": "function",
905    "name": "addStrategies",
906    "inputs": [
907      {
908        "name": "quorumNumber",
909        "type": "uint8",
910        "internalType": "uint8"
911      },
912      {
913        "name": "_strategyParams",
914        "type": "tuple[]",
915        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
916        "components": [
917          {
918            "name": "strategy",
919            "type": "address",
920            "internalType": "contract IStrategy"
921          },
922          {
923            "name": "multiplier",
924            "type": "uint96",
925            "internalType": "uint96"
926          }
927        ]
928      }
929    ],
930    "outputs": [],
931    "stateMutability": "nonpayable"
932  },
933  {
934    "type": "function",
935    "name": "allocationManager",
936    "inputs": [],
937    "outputs": [
938      {
939        "name": "",
940        "type": "address",
941        "internalType": "contract IAllocationManager"
942      }
943    ],
944    "stateMutability": "view"
945  },
946  {
947    "type": "function",
948    "name": "avsDirectory",
949    "inputs": [],
950    "outputs": [
951      {
952        "name": "",
953        "type": "address",
954        "internalType": "contract IAVSDirectory"
955      }
956    ],
957    "stateMutability": "view"
958  },
959  {
960    "type": "function",
961    "name": "delegation",
962    "inputs": [],
963    "outputs": [
964      {
965        "name": "",
966        "type": "address",
967        "internalType": "contract IDelegationManager"
968      }
969    ],
970    "stateMutability": "view"
971  },
972  {
973    "type": "function",
974    "name": "deregisterOperator",
975    "inputs": [
976      {
977        "name": "operatorId",
978        "type": "bytes32",
979        "internalType": "bytes32"
980      },
981      {
982        "name": "quorumNumbers",
983        "type": "bytes",
984        "internalType": "bytes"
985      }
986    ],
987    "outputs": [],
988    "stateMutability": "nonpayable"
989  },
990  {
991    "type": "function",
992    "name": "getCurrentStake",
993    "inputs": [
994      {
995        "name": "operatorId",
996        "type": "bytes32",
997        "internalType": "bytes32"
998      },
999      {
1000        "name": "quorumNumber",
1001        "type": "uint8",
1002        "internalType": "uint8"
1003      }
1004    ],
1005    "outputs": [
1006      {
1007        "name": "",
1008        "type": "uint96",
1009        "internalType": "uint96"
1010      }
1011    ],
1012    "stateMutability": "view"
1013  },
1014  {
1015    "type": "function",
1016    "name": "getCurrentTotalStake",
1017    "inputs": [
1018      {
1019        "name": "quorumNumber",
1020        "type": "uint8",
1021        "internalType": "uint8"
1022      }
1023    ],
1024    "outputs": [
1025      {
1026        "name": "",
1027        "type": "uint96",
1028        "internalType": "uint96"
1029      }
1030    ],
1031    "stateMutability": "view"
1032  },
1033  {
1034    "type": "function",
1035    "name": "getLatestStakeUpdate",
1036    "inputs": [
1037      {
1038        "name": "operatorId",
1039        "type": "bytes32",
1040        "internalType": "bytes32"
1041      },
1042      {
1043        "name": "quorumNumber",
1044        "type": "uint8",
1045        "internalType": "uint8"
1046      }
1047    ],
1048    "outputs": [
1049      {
1050        "name": "",
1051        "type": "tuple",
1052        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1053        "components": [
1054          {
1055            "name": "updateBlockNumber",
1056            "type": "uint32",
1057            "internalType": "uint32"
1058          },
1059          {
1060            "name": "nextUpdateBlockNumber",
1061            "type": "uint32",
1062            "internalType": "uint32"
1063          },
1064          {
1065            "name": "stake",
1066            "type": "uint96",
1067            "internalType": "uint96"
1068          }
1069        ]
1070      }
1071    ],
1072    "stateMutability": "view"
1073  },
1074  {
1075    "type": "function",
1076    "name": "getStakeAtBlockNumber",
1077    "inputs": [
1078      {
1079        "name": "operatorId",
1080        "type": "bytes32",
1081        "internalType": "bytes32"
1082      },
1083      {
1084        "name": "quorumNumber",
1085        "type": "uint8",
1086        "internalType": "uint8"
1087      },
1088      {
1089        "name": "blockNumber",
1090        "type": "uint32",
1091        "internalType": "uint32"
1092      }
1093    ],
1094    "outputs": [
1095      {
1096        "name": "",
1097        "type": "uint96",
1098        "internalType": "uint96"
1099      }
1100    ],
1101    "stateMutability": "view"
1102  },
1103  {
1104    "type": "function",
1105    "name": "getStakeAtBlockNumberAndIndex",
1106    "inputs": [
1107      {
1108        "name": "quorumNumber",
1109        "type": "uint8",
1110        "internalType": "uint8"
1111      },
1112      {
1113        "name": "blockNumber",
1114        "type": "uint32",
1115        "internalType": "uint32"
1116      },
1117      {
1118        "name": "operatorId",
1119        "type": "bytes32",
1120        "internalType": "bytes32"
1121      },
1122      {
1123        "name": "index",
1124        "type": "uint256",
1125        "internalType": "uint256"
1126      }
1127    ],
1128    "outputs": [
1129      {
1130        "name": "",
1131        "type": "uint96",
1132        "internalType": "uint96"
1133      }
1134    ],
1135    "stateMutability": "view"
1136  },
1137  {
1138    "type": "function",
1139    "name": "getStakeHistory",
1140    "inputs": [
1141      {
1142        "name": "operatorId",
1143        "type": "bytes32",
1144        "internalType": "bytes32"
1145      },
1146      {
1147        "name": "quorumNumber",
1148        "type": "uint8",
1149        "internalType": "uint8"
1150      }
1151    ],
1152    "outputs": [
1153      {
1154        "name": "",
1155        "type": "tuple[]",
1156        "internalType": "struct IStakeRegistryTypes.StakeUpdate[]",
1157        "components": [
1158          {
1159            "name": "updateBlockNumber",
1160            "type": "uint32",
1161            "internalType": "uint32"
1162          },
1163          {
1164            "name": "nextUpdateBlockNumber",
1165            "type": "uint32",
1166            "internalType": "uint32"
1167          },
1168          {
1169            "name": "stake",
1170            "type": "uint96",
1171            "internalType": "uint96"
1172          }
1173        ]
1174      }
1175    ],
1176    "stateMutability": "view"
1177  },
1178  {
1179    "type": "function",
1180    "name": "getStakeHistoryLength",
1181    "inputs": [
1182      {
1183        "name": "operatorId",
1184        "type": "bytes32",
1185        "internalType": "bytes32"
1186      },
1187      {
1188        "name": "quorumNumber",
1189        "type": "uint8",
1190        "internalType": "uint8"
1191      }
1192    ],
1193    "outputs": [
1194      {
1195        "name": "",
1196        "type": "uint256",
1197        "internalType": "uint256"
1198      }
1199    ],
1200    "stateMutability": "view"
1201  },
1202  {
1203    "type": "function",
1204    "name": "getStakeUpdateAtIndex",
1205    "inputs": [
1206      {
1207        "name": "quorumNumber",
1208        "type": "uint8",
1209        "internalType": "uint8"
1210      },
1211      {
1212        "name": "operatorId",
1213        "type": "bytes32",
1214        "internalType": "bytes32"
1215      },
1216      {
1217        "name": "index",
1218        "type": "uint256",
1219        "internalType": "uint256"
1220      }
1221    ],
1222    "outputs": [
1223      {
1224        "name": "",
1225        "type": "tuple",
1226        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1227        "components": [
1228          {
1229            "name": "updateBlockNumber",
1230            "type": "uint32",
1231            "internalType": "uint32"
1232          },
1233          {
1234            "name": "nextUpdateBlockNumber",
1235            "type": "uint32",
1236            "internalType": "uint32"
1237          },
1238          {
1239            "name": "stake",
1240            "type": "uint96",
1241            "internalType": "uint96"
1242          }
1243        ]
1244      }
1245    ],
1246    "stateMutability": "view"
1247  },
1248  {
1249    "type": "function",
1250    "name": "getStakeUpdateIndexAtBlockNumber",
1251    "inputs": [
1252      {
1253        "name": "operatorId",
1254        "type": "bytes32",
1255        "internalType": "bytes32"
1256      },
1257      {
1258        "name": "quorumNumber",
1259        "type": "uint8",
1260        "internalType": "uint8"
1261      },
1262      {
1263        "name": "blockNumber",
1264        "type": "uint32",
1265        "internalType": "uint32"
1266      }
1267    ],
1268    "outputs": [
1269      {
1270        "name": "",
1271        "type": "uint32",
1272        "internalType": "uint32"
1273      }
1274    ],
1275    "stateMutability": "view"
1276  },
1277  {
1278    "type": "function",
1279    "name": "getTotalStakeAtBlockNumberFromIndex",
1280    "inputs": [
1281      {
1282        "name": "quorumNumber",
1283        "type": "uint8",
1284        "internalType": "uint8"
1285      },
1286      {
1287        "name": "blockNumber",
1288        "type": "uint32",
1289        "internalType": "uint32"
1290      },
1291      {
1292        "name": "index",
1293        "type": "uint256",
1294        "internalType": "uint256"
1295      }
1296    ],
1297    "outputs": [
1298      {
1299        "name": "",
1300        "type": "uint96",
1301        "internalType": "uint96"
1302      }
1303    ],
1304    "stateMutability": "view"
1305  },
1306  {
1307    "type": "function",
1308    "name": "getTotalStakeHistoryLength",
1309    "inputs": [
1310      {
1311        "name": "quorumNumber",
1312        "type": "uint8",
1313        "internalType": "uint8"
1314      }
1315    ],
1316    "outputs": [
1317      {
1318        "name": "",
1319        "type": "uint256",
1320        "internalType": "uint256"
1321      }
1322    ],
1323    "stateMutability": "view"
1324  },
1325  {
1326    "type": "function",
1327    "name": "getTotalStakeIndicesAtBlockNumber",
1328    "inputs": [
1329      {
1330        "name": "blockNumber",
1331        "type": "uint32",
1332        "internalType": "uint32"
1333      },
1334      {
1335        "name": "quorumNumbers",
1336        "type": "bytes",
1337        "internalType": "bytes"
1338      }
1339    ],
1340    "outputs": [
1341      {
1342        "name": "",
1343        "type": "uint32[]",
1344        "internalType": "uint32[]"
1345      }
1346    ],
1347    "stateMutability": "view"
1348  },
1349  {
1350    "type": "function",
1351    "name": "getTotalStakeUpdateAtIndex",
1352    "inputs": [
1353      {
1354        "name": "quorumNumber",
1355        "type": "uint8",
1356        "internalType": "uint8"
1357      },
1358      {
1359        "name": "index",
1360        "type": "uint256",
1361        "internalType": "uint256"
1362      }
1363    ],
1364    "outputs": [
1365      {
1366        "name": "",
1367        "type": "tuple",
1368        "internalType": "struct IStakeRegistryTypes.StakeUpdate",
1369        "components": [
1370          {
1371            "name": "updateBlockNumber",
1372            "type": "uint32",
1373            "internalType": "uint32"
1374          },
1375          {
1376            "name": "nextUpdateBlockNumber",
1377            "type": "uint32",
1378            "internalType": "uint32"
1379          },
1380          {
1381            "name": "stake",
1382            "type": "uint96",
1383            "internalType": "uint96"
1384          }
1385        ]
1386      }
1387    ],
1388    "stateMutability": "view"
1389  },
1390  {
1391    "type": "function",
1392    "name": "initializeDelegatedStakeQuorum",
1393    "inputs": [
1394      {
1395        "name": "quorumNumber",
1396        "type": "uint8",
1397        "internalType": "uint8"
1398      },
1399      {
1400        "name": "minimumStake",
1401        "type": "uint96",
1402        "internalType": "uint96"
1403      },
1404      {
1405        "name": "_strategyParams",
1406        "type": "tuple[]",
1407        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1408        "components": [
1409          {
1410            "name": "strategy",
1411            "type": "address",
1412            "internalType": "contract IStrategy"
1413          },
1414          {
1415            "name": "multiplier",
1416            "type": "uint96",
1417            "internalType": "uint96"
1418          }
1419        ]
1420      }
1421    ],
1422    "outputs": [],
1423    "stateMutability": "nonpayable"
1424  },
1425  {
1426    "type": "function",
1427    "name": "initializeSlashableStakeQuorum",
1428    "inputs": [
1429      {
1430        "name": "quorumNumber",
1431        "type": "uint8",
1432        "internalType": "uint8"
1433      },
1434      {
1435        "name": "minimumStake",
1436        "type": "uint96",
1437        "internalType": "uint96"
1438      },
1439      {
1440        "name": "lookAheadPeriod",
1441        "type": "uint32",
1442        "internalType": "uint32"
1443      },
1444      {
1445        "name": "_strategyParams",
1446        "type": "tuple[]",
1447        "internalType": "struct IStakeRegistryTypes.StrategyParams[]",
1448        "components": [
1449          {
1450            "name": "strategy",
1451            "type": "address",
1452            "internalType": "contract IStrategy"
1453          },
1454          {
1455            "name": "multiplier",
1456            "type": "uint96",
1457            "internalType": "uint96"
1458          }
1459        ]
1460      }
1461    ],
1462    "outputs": [],
1463    "stateMutability": "nonpayable"
1464  },
1465  {
1466    "type": "function",
1467    "name": "minimumStakeForQuorum",
1468    "inputs": [
1469      {
1470        "name": "",
1471        "type": "uint8",
1472        "internalType": "uint8"
1473      }
1474    ],
1475    "outputs": [
1476      {
1477        "name": "",
1478        "type": "uint96",
1479        "internalType": "uint96"
1480      }
1481    ],
1482    "stateMutability": "view"
1483  },
1484  {
1485    "type": "function",
1486    "name": "modifyStrategyParams",
1487    "inputs": [
1488      {
1489        "name": "quorumNumber",
1490        "type": "uint8",
1491        "internalType": "uint8"
1492      },
1493      {
1494        "name": "strategyIndices",
1495        "type": "uint256[]",
1496        "internalType": "uint256[]"
1497      },
1498      {
1499        "name": "newMultipliers",
1500        "type": "uint96[]",
1501        "internalType": "uint96[]"
1502      }
1503    ],
1504    "outputs": [],
1505    "stateMutability": "nonpayable"
1506  },
1507  {
1508    "type": "function",
1509    "name": "registerOperator",
1510    "inputs": [
1511      {
1512        "name": "operator",
1513        "type": "address",
1514        "internalType": "address"
1515      },
1516      {
1517        "name": "operatorId",
1518        "type": "bytes32",
1519        "internalType": "bytes32"
1520      },
1521      {
1522        "name": "quorumNumbers",
1523        "type": "bytes",
1524        "internalType": "bytes"
1525      }
1526    ],
1527    "outputs": [
1528      {
1529        "name": "",
1530        "type": "uint96[]",
1531        "internalType": "uint96[]"
1532      },
1533      {
1534        "name": "",
1535        "type": "uint96[]",
1536        "internalType": "uint96[]"
1537      }
1538    ],
1539    "stateMutability": "nonpayable"
1540  },
1541  {
1542    "type": "function",
1543    "name": "registryCoordinator",
1544    "inputs": [],
1545    "outputs": [
1546      {
1547        "name": "",
1548        "type": "address",
1549        "internalType": "contract ISlashingRegistryCoordinator"
1550      }
1551    ],
1552    "stateMutability": "view"
1553  },
1554  {
1555    "type": "function",
1556    "name": "removeStrategies",
1557    "inputs": [
1558      {
1559        "name": "quorumNumber",
1560        "type": "uint8",
1561        "internalType": "uint8"
1562      },
1563      {
1564        "name": "indicesToRemove",
1565        "type": "uint256[]",
1566        "internalType": "uint256[]"
1567      }
1568    ],
1569    "outputs": [],
1570    "stateMutability": "nonpayable"
1571  },
1572  {
1573    "type": "function",
1574    "name": "setMinimumStakeForQuorum",
1575    "inputs": [
1576      {
1577        "name": "quorumNumber",
1578        "type": "uint8",
1579        "internalType": "uint8"
1580      },
1581      {
1582        "name": "minimumStake",
1583        "type": "uint96",
1584        "internalType": "uint96"
1585      }
1586    ],
1587    "outputs": [],
1588    "stateMutability": "nonpayable"
1589  },
1590  {
1591    "type": "function",
1592    "name": "setSlashableStakeLookahead",
1593    "inputs": [
1594      {
1595        "name": "quorumNumber",
1596        "type": "uint8",
1597        "internalType": "uint8"
1598      },
1599      {
1600        "name": "_lookAheadBlocks",
1601        "type": "uint32",
1602        "internalType": "uint32"
1603      }
1604    ],
1605    "outputs": [],
1606    "stateMutability": "nonpayable"
1607  },
1608  {
1609    "type": "function",
1610    "name": "slashableStakeLookAheadPerQuorum",
1611    "inputs": [
1612      {
1613        "name": "quorumNumber",
1614        "type": "uint8",
1615        "internalType": "uint8"
1616      }
1617    ],
1618    "outputs": [
1619      {
1620        "name": "",
1621        "type": "uint32",
1622        "internalType": "uint32"
1623      }
1624    ],
1625    "stateMutability": "view"
1626  },
1627  {
1628    "type": "function",
1629    "name": "stakeTypePerQuorum",
1630    "inputs": [
1631      {
1632        "name": "quorumNumber",
1633        "type": "uint8",
1634        "internalType": "uint8"
1635      }
1636    ],
1637    "outputs": [
1638      {
1639        "name": "",
1640        "type": "uint8",
1641        "internalType": "enum IStakeRegistryTypes.StakeType"
1642      }
1643    ],
1644    "stateMutability": "view"
1645  },
1646  {
1647    "type": "function",
1648    "name": "strategiesPerQuorum",
1649    "inputs": [
1650      {
1651        "name": "quorumNumber",
1652        "type": "uint8",
1653        "internalType": "uint8"
1654      },
1655      {
1656        "name": "",
1657        "type": "uint256",
1658        "internalType": "uint256"
1659      }
1660    ],
1661    "outputs": [
1662      {
1663        "name": "",
1664        "type": "address",
1665        "internalType": "contract IStrategy"
1666      }
1667    ],
1668    "stateMutability": "view"
1669  },
1670  {
1671    "type": "function",
1672    "name": "strategyParams",
1673    "inputs": [
1674      {
1675        "name": "quorumNumber",
1676        "type": "uint8",
1677        "internalType": "uint8"
1678      },
1679      {
1680        "name": "",
1681        "type": "uint256",
1682        "internalType": "uint256"
1683      }
1684    ],
1685    "outputs": [
1686      {
1687        "name": "strategy",
1688        "type": "address",
1689        "internalType": "contract IStrategy"
1690      },
1691      {
1692        "name": "multiplier",
1693        "type": "uint96",
1694        "internalType": "uint96"
1695      }
1696    ],
1697    "stateMutability": "view"
1698  },
1699  {
1700    "type": "function",
1701    "name": "strategyParamsByIndex",
1702    "inputs": [
1703      {
1704        "name": "quorumNumber",
1705        "type": "uint8",
1706        "internalType": "uint8"
1707      },
1708      {
1709        "name": "index",
1710        "type": "uint256",
1711        "internalType": "uint256"
1712      }
1713    ],
1714    "outputs": [
1715      {
1716        "name": "",
1717        "type": "tuple",
1718        "internalType": "struct IStakeRegistryTypes.StrategyParams",
1719        "components": [
1720          {
1721            "name": "strategy",
1722            "type": "address",
1723            "internalType": "contract IStrategy"
1724          },
1725          {
1726            "name": "multiplier",
1727            "type": "uint96",
1728            "internalType": "uint96"
1729          }
1730        ]
1731      }
1732    ],
1733    "stateMutability": "view"
1734  },
1735  {
1736    "type": "function",
1737    "name": "strategyParamsLength",
1738    "inputs": [
1739      {
1740        "name": "quorumNumber",
1741        "type": "uint8",
1742        "internalType": "uint8"
1743      }
1744    ],
1745    "outputs": [
1746      {
1747        "name": "",
1748        "type": "uint256",
1749        "internalType": "uint256"
1750      }
1751    ],
1752    "stateMutability": "view"
1753  },
1754  {
1755    "type": "function",
1756    "name": "updateOperatorsStake",
1757    "inputs": [
1758      {
1759        "name": "operators",
1760        "type": "address[]",
1761        "internalType": "address[]"
1762      },
1763      {
1764        "name": "operatorIds",
1765        "type": "bytes32[]",
1766        "internalType": "bytes32[]"
1767      },
1768      {
1769        "name": "quorumNumber",
1770        "type": "uint8",
1771        "internalType": "uint8"
1772      }
1773    ],
1774    "outputs": [
1775      {
1776        "name": "",
1777        "type": "bool[]",
1778        "internalType": "bool[]"
1779      }
1780    ],
1781    "stateMutability": "nonpayable"
1782  },
1783  {
1784    "type": "function",
1785    "name": "weightOfOperatorForQuorum",
1786    "inputs": [
1787      {
1788        "name": "quorumNumber",
1789        "type": "uint8",
1790        "internalType": "uint8"
1791      },
1792      {
1793        "name": "operator",
1794        "type": "address",
1795        "internalType": "address"
1796      }
1797    ],
1798    "outputs": [
1799      {
1800        "name": "",
1801        "type": "uint96",
1802        "internalType": "uint96"
1803      }
1804    ],
1805    "stateMutability": "view"
1806  },
1807  {
1808    "type": "event",
1809    "name": "LookAheadPeriodChanged",
1810    "inputs": [
1811      {
1812        "name": "oldLookAheadBlocks",
1813        "type": "uint32",
1814        "indexed": false,
1815        "internalType": "uint32"
1816      },
1817      {
1818        "name": "newLookAheadBlocks",
1819        "type": "uint32",
1820        "indexed": false,
1821        "internalType": "uint32"
1822      }
1823    ],
1824    "anonymous": false
1825  },
1826  {
1827    "type": "event",
1828    "name": "MinimumStakeForQuorumUpdated",
1829    "inputs": [
1830      {
1831        "name": "quorumNumber",
1832        "type": "uint8",
1833        "indexed": true,
1834        "internalType": "uint8"
1835      },
1836      {
1837        "name": "minimumStake",
1838        "type": "uint96",
1839        "indexed": false,
1840        "internalType": "uint96"
1841      }
1842    ],
1843    "anonymous": false
1844  },
1845  {
1846    "type": "event",
1847    "name": "OperatorStakeUpdate",
1848    "inputs": [
1849      {
1850        "name": "operatorId",
1851        "type": "bytes32",
1852        "indexed": true,
1853        "internalType": "bytes32"
1854      },
1855      {
1856        "name": "quorumNumber",
1857        "type": "uint8",
1858        "indexed": false,
1859        "internalType": "uint8"
1860      },
1861      {
1862        "name": "stake",
1863        "type": "uint96",
1864        "indexed": false,
1865        "internalType": "uint96"
1866      }
1867    ],
1868    "anonymous": false
1869  },
1870  {
1871    "type": "event",
1872    "name": "QuorumCreated",
1873    "inputs": [
1874      {
1875        "name": "quorumNumber",
1876        "type": "uint8",
1877        "indexed": true,
1878        "internalType": "uint8"
1879      }
1880    ],
1881    "anonymous": false
1882  },
1883  {
1884    "type": "event",
1885    "name": "StakeTypeSet",
1886    "inputs": [
1887      {
1888        "name": "newStakeType",
1889        "type": "uint8",
1890        "indexed": false,
1891        "internalType": "enum IStakeRegistryTypes.StakeType"
1892      }
1893    ],
1894    "anonymous": false
1895  },
1896  {
1897    "type": "event",
1898    "name": "StrategyAddedToQuorum",
1899    "inputs": [
1900      {
1901        "name": "quorumNumber",
1902        "type": "uint8",
1903        "indexed": true,
1904        "internalType": "uint8"
1905      },
1906      {
1907        "name": "strategy",
1908        "type": "address",
1909        "indexed": false,
1910        "internalType": "contract IStrategy"
1911      }
1912    ],
1913    "anonymous": false
1914  },
1915  {
1916    "type": "event",
1917    "name": "StrategyMultiplierUpdated",
1918    "inputs": [
1919      {
1920        "name": "quorumNumber",
1921        "type": "uint8",
1922        "indexed": true,
1923        "internalType": "uint8"
1924      },
1925      {
1926        "name": "strategy",
1927        "type": "address",
1928        "indexed": false,
1929        "internalType": "contract IStrategy"
1930      },
1931      {
1932        "name": "multiplier",
1933        "type": "uint256",
1934        "indexed": false,
1935        "internalType": "uint256"
1936      }
1937    ],
1938    "anonymous": false
1939  },
1940  {
1941    "type": "event",
1942    "name": "StrategyRemovedFromQuorum",
1943    "inputs": [
1944      {
1945        "name": "quorumNumber",
1946        "type": "uint8",
1947        "indexed": true,
1948        "internalType": "uint8"
1949      },
1950      {
1951        "name": "strategy",
1952        "type": "address",
1953        "indexed": false,
1954        "internalType": "contract IStrategy"
1955      }
1956    ],
1957    "anonymous": false
1958  },
1959  {
1960    "type": "error",
1961    "name": "BelowMinimumStakeRequirement",
1962    "inputs": []
1963  },
1964  {
1965    "type": "error",
1966    "name": "EmptyStakeHistory",
1967    "inputs": []
1968  },
1969  {
1970    "type": "error",
1971    "name": "InputArrayLengthMismatch",
1972    "inputs": []
1973  },
1974  {
1975    "type": "error",
1976    "name": "InputArrayLengthZero",
1977    "inputs": []
1978  },
1979  {
1980    "type": "error",
1981    "name": "InputDuplicateStrategy",
1982    "inputs": []
1983  },
1984  {
1985    "type": "error",
1986    "name": "InputMultiplierZero",
1987    "inputs": []
1988  },
1989  {
1990    "type": "error",
1991    "name": "InvalidBlockNumber",
1992    "inputs": []
1993  },
1994  {
1995    "type": "error",
1996    "name": "LookAheadPeriodTooLong",
1997    "inputs": []
1998  },
1999  {
2000    "type": "error",
2001    "name": "OnlySlashingRegistryCoordinator",
2002    "inputs": []
2003  },
2004  {
2005    "type": "error",
2006    "name": "OnlySlashingRegistryCoordinatorOwner",
2007    "inputs": []
2008  },
2009  {
2010    "type": "error",
2011    "name": "QuorumAlreadyExists",
2012    "inputs": []
2013  },
2014  {
2015    "type": "error",
2016    "name": "QuorumDoesNotExist",
2017    "inputs": []
2018  },
2019  {
2020    "type": "error",
2021    "name": "QuorumNotSlashable",
2022    "inputs": []
2023  }
2024]
2025```*/
2026#[allow(
2027    non_camel_case_types,
2028    non_snake_case,
2029    clippy::pub_underscore_fields,
2030    clippy::style,
2031    clippy::empty_structs_with_brackets
2032)]
2033pub mod StakeRegistry {
2034    use super::*;
2035    use alloy::sol_types as alloy_sol_types;
2036    /// The creation / init bytecode of the contract.
2037    ///
2038    /// ```text
2039    ///0x610100604052348015610010575f5ffd5b50604051613e58380380613e5883398101604081905261002f91610068565b6001600160a01b0393841660e052918316608052821660a0521660c0526100c4565b6001600160a01b0381168114610065575f5ffd5b50565b5f5f5f5f6080858703121561007b575f5ffd5b845161008681610051565b602086015190945061009781610051565b60408601519093506100a881610051565b60608601519092506100b981610051565b939692955090935050565b60805160a05160c05160e051613d0d61014b5f395f818161041201528181610e590152818161166501528181611d5f01528181611e1b0152612d9301525f81816105ba01528181610f0701528181610f97015281816117130152818161184201528181612a6d0152612d5901525f6103b301525f818161061a01526123eb0152613d0d5ff3fe608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80639ab4d6ff1161012a578063c8294c56116100b4578063df5cf72311610079578063df5cf72314610615578063e086adb31461063c578063f2be94ae1461064f578063f851e19814610662578063fa28c62714610675575f5ffd5b8063c8294c56146105a2578063ca8aa7c7146105b5578063cc5a7c20146105dc578063d5eccc05146105ef578063dd9846b914610602575f5ffd5b8063b6904b78116100fa578063b6904b781461052e578063bc9a40c314610541578063bd29b8cd14610554578063c46778a514610567578063c601527d1461058f575f5ffd5b80639ab4d6ff146104815780639f3ccf65146104bb578063ac6bfb03146104ce578063adc804da146104ee575f5ffd5b80635e5a6775116101ab5780636c3fb4bf1161017b5780636c3fb4bf146103ed5780636d14a9871461040d57806375d4173a146104345780637c1723471461044757806381c0750214610461575f5ffd5b80635e5a67751461035d5780635f1f2d771461036c578063697fbd931461037f5780636b3aa72e146103ae575f5ffd5b806325504777116101f157806325504777146102b85780632cd95940146102d95780633ca5a5f5146102f95780634bd26e091461031b5780635401ed271461034a575f5ffd5b80630491b41c1461022257806308732461146102575780631f9b74e01461027857806320b66298146102a3575b5f5ffd5b610244610230366004612eb1565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61026a610265366004612eca565b610688565b60405161024e929190612ef2565b61028b610286366004612f28565b6106cd565b6040516001600160601b03909116815260200161024e565b6102b66102b1366004612f9d565b6106ef565b005b6102cb6102c6366004613058565b61088d565b60405161024e9291906130f2565b6102ec6102e7366004613116565b610a15565b60405161024e9190613140565b610244610307366004612eb1565b60ff165f9081526003602052604090205490565b610244610329366004613116565b5f91825260026020908152604080842060ff93909316845291905290205490565b61028b610358366004613116565b610ab2565b610244670de0b6b3a764000081565b6102b661037a366004613247565b610aca565b6103a161038d366004612eb1565b60056020525f908152604090205460ff1681565b60405161024e9190613303565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b6104006103fb36600461338e565b611008565b60405161024e9190613460565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b6610442366004613544565b611163565b61044f602081565b60405160ff909116815260200161024e565b61047461046f3660046135ae565b611249565b60405161024e91906135fe565b6104a661048f366004612eb1565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff909116815260200161024e565b6103d56104c9366004612eca565b6113ef565b6104e16104dc36600461363b565b611423565b60405161024e919061366b565b6105016104fc366004612eca565b6114b9565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161024e565b6104e161053c366004612eca565b611530565b6102b661054f3660046136a5565b6115bd565b6102b66105623660046136cd565b6115de565b61028b610575366004612eb1565b5f602081905290815260409020546001600160601b031681565b6102b661059d3660046136fb565b611641565b61028b6105b0366004613745565b6118b1565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b66105ea366004613781565b61192d565b61028b6105fd366004612eb1565b611a1f565b6104a66106103660046137ed565b611a70565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b661064a36600461382a565b611a84565b61028b61065d366004613854565b611aa0565b6104e1610670366004613116565b611b33565b61028b6106833660046137ed565b611c21565b6003602052815f5260405f2081815481106106a1575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106d881611c80565b5f6106e38585611cb2565b509250505b5092915050565b6106f7611d5d565b8461070181611c80565b83806107205760405163796cc52560e01b815260040160405180910390fd5b828114610740576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b828110156108825785858281811061076d5761076d613895565b905060200201602081019061078291906138a9565b8289898481811061079557610795613895565b90506020020135815481106107ac576107ac613895565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a8581811061081257610812613895565b905060200201358154811061082957610829613895565b5f918252602090912001546001600160a01b031688888581811061084f5761084f613895565b905060200201602081019061086491906138a9565b604051610872929190612ef2565b60405180910390a2600101610753565b505050505050505050565b606080610898611e10565b5f836001600160401b038111156108b1576108b16131b9565b6040519080825280602002602001820160405280156108da578160200160208202803683370190505b5090505f846001600160401b038111156108f6576108f66131b9565b60405190808252806020026020018201604052801561091f578160200160208202803683370190505b5090505f5b85811015610a07575f87878381811061093f5761093f613895565b919091013560f81c9150610954905081611c80565b5f5f610960838d611cb2565b91509150806109825760405163207f13e360e11b815260040160405180910390fd5b5f61098e8c8585611e59565b9050828786815181106109a3576109a3613895565b60200260200101906001600160601b031690816001600160601b0316815250506109cd84826120d2565b8686815181106109df576109df613895565b6001600160601b03909216602092830291909101909101525050600190920191506109249050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610aa5575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a4d565b5050505090505b92915050565b5f5f610abe8484611b33565b60400151949350505050565b610ad2611d5d565b81610adc81611c80565b815180610afc5760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610b3157610b316131b9565b604051908082528060200260200182016040528015610b5a578160200160208202803683370190505b5090505f5b84811015610e555783878281518110610b7a57610b7a613895565b602002602001015181548110610b9257610b92613895565b5f9182526020909120015482516001600160a01b0390911690839083908110610bbd57610bbd613895565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610c1557610c15613895565b602002602001015181548110610c2d57610c2d613895565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28760ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585898481518110610c8a57610c8a613895565b602002602001015181548110610ca257610ca2613895565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610ce1906001906138d6565b81548110610cf157610cf1613895565b905f5260205f200184888381518110610d0c57610d0c613895565b602002602001015181548110610d2457610d24613895565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d7657610d766138e9565b5f8281526020812082015f199081019190915501905582548390610d9c906001906138d6565b81548110610dac57610dac613895565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610dda57610dda613895565b602002602001015181548110610df257610df2613895565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610e2d57610e2d6138e9565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b5f565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed791906138fd565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610f3c91600401613918565b602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061393e565b15610ffe5760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610fd09084908c90879060040161395d565b5f604051808303815f87803b158015610fe7575f5ffd5b505af1158015610ff9573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060611012611e10565b5f84516001600160401b0381111561102c5761102c6131b9565b604051908082528060200260200182016040528015611055578160200160208202803683370190505b50905061106183611c80565b5f5f61106d8588612243565b90925090505f805b88518110156111495782818151811061109057611090613895565b60200260200101516110f4575f8482815181106110af576110af613895565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110e3576110e3613895565b911515602092830291909101909101525b5f61113289838151811061110a5761110a613895565b60200260200101518987858151811061112557611125613895565b6020026020010151611e59565b905061113e81846139c7565b925050600101611075565b5061115486826120d2565b509293505050505b9392505050565b61116b611e10565b60ff83165f908152600160205260409020541561119b576040516310cda51760e21b815260040160405180910390fd5b6111a583826125e9565b6111af83836128da565b6111b9835f612942565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b03811115611264576112646131b9565b60405190808252806020026020018201604052801561128d578160200160208202803683370190505b5090505f5b838110156113e6575f8585838181106112ad576112ad613895565b919091013560f81c91506112c2905081611c80565b60ff81165f908152600160205260408120805463ffffffff8a1692906112ea576112ea613895565b5f9182526020909120015463ffffffff16111561131a5760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113db5760ff83165f90815260016020819052604090912063ffffffff8b169161135c84866138d6565b61136691906138d6565b8154811061137657611376613895565b5f9182526020909120015463ffffffff16116113d357600161139882846138d6565b6113a291906138d6565b8585815181106113b4576113b4613895565b602002602001019063ffffffff16908163ffffffff16815250506113db565b60010161132e565b505050600101611292565b50949350505050565b6004602052815f5260405f208181548110611408575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061146757611467613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114ef576114ef613895565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600190529190912080548390811061156c5761156c613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b6115c5611d5d565b816115cf81611c80565b6115d983836128da565b505050565b6115e6611e10565b5f5b8181101561163b575f83838381811061160357611603613895565b919091013560f81c9150611618905081611c80565b5f61162486835f611e59565b905061163082826120d2565b5050506001016115e8565b50505050565b611649611d5d565b8161165381611c80565b61165d83836125e9565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e391906138fd565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc7589161174891600401613918565b602060405180830381865afa158015611763573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611787919061393e565b156118aa575f826001600160401b038111156117a5576117a56131b9565b6040519080825280602002602001820160405280156117ce578160200160208202803683370190505b5090505f5b8381101561182a578581815181106117ed576117ed613895565b60200260200101515f015182828151811061180a5761180a613895565b6001600160a01b03909216602092830291909101909101526001016117d3565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea209061187b9085908a90869060040161395d565b5f604051808303815f87803b158015611892575f5ffd5b505af11580156118a4573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f9081526001602052604081208054829190849081106118d7576118d7613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610abe81856129af565b611935611e10565b60ff84165f9081526001602052604090205415611965576040516310cda51760e21b815260040160405180910390fd5b61196f84826125e9565b61197984846128da565b611984846001612942565b61198e8483612a26565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f908152600160208190526040822080549091611a3f916138d6565b81548110611a4f57611a4f613895565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a7c848484612b83565b949350505050565b611a8c611d5d565b81611a9681611c80565b6115d98383612a26565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611ad057611ad0613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b2681866129af565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b8f579150610aac9050565b5f85815260026020908152604080832060ff881684529091529020611bb56001846138d6565b81548110611bc557611bc5613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610aac915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611c47858585612b83565b63ffffffff1681548110611c5d57611c5d613895565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611caf57604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611cea57611cea613895565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611d168784612243565b91509150815f81518110611d2c57611d2c613895565b6020026020010151815f81518110611d4657611d46613895565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddd91906138fd565b6001600160a01b0316336001600160a01b031614611e0e5760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e0e57604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611f1d575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612078565b5f86815260026020908152604080832060ff891684529091528120611f436001846138d6565b81548110611f5357611f53613895565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611f89575f935050505061115c565b805463ffffffff438116911603611fc1578054600160401b600160a01b031916600160401b6001600160601b03871602178155612076565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26120c88285612cea565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906120f590846138d6565b8154811061210557612105613895565b905f5260205f20019050835f036121305754600160401b90046001600160601b03169150610aac9050565b80545f9061214e90600160401b90046001600160601b031686612d01565b825490915063ffffffff438116911603612189578154600160401b600160a01b031916600160401b6001600160601b0383160217825561223a565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b03811115612260576122606131b9565b604051908082528060200260200182016040528015612289578160200160208202803683370190505b5090505f84516001600160401b038111156122a6576122a66131b9565b6040519080825280602002602001820160405280156122cf578160200160208202803683370190505b5090505f6122eb8760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b8282101561236b575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161231d565b5050505090506060600180811115612385576123856132ef565b60ff808b165f908152600560205260409020541660018111156123aa576123aa6132ef565b036123c0576123b98989612d2e565b9050612463565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e6769261241f928d929101613a5b565b5f60405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124609190810190613a7f565b90505b5f5b88518110156125d9575f5b84811015612569575f84828151811061248b5761248b613895565b602002602001015190505f8484815181106124a8576124a8613895565b602002602001015183815181106124c1576124c1613895565b6020026020010151111561256057670de0b6b3a764000081602001516001600160601b03168585815181106124f8576124f8613895565b6020026020010151848151811061251157612511613895565b60200260200101516125239190613b8b565b61252d9190613ba2565b88848151811061253f5761253f613895565b602002602001018181516125539190613bc1565b6001600160601b03169052505b50600101612470565b5060ff8a165f9081526020819052604090205486516001600160601b039091169087908390811061259c5761259c613895565b60200260200101516001600160601b031610158582815181106125c1576125c1613895565b91151560209283029190910190910152600101612465565b5093989297509195505050505050565b5f81511161260a5760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f908152600360209081526040909120549061262c8383613be0565b111561264b576040516343714afd60e01b815260040160405180910390fd5b5f5b828110156118aa575f5b6126618284613be0565b8110156126f05784828151811061267a5761267a613895565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f2082815481106126b6576126b6613895565b5f918252602090912001546001600160a01b0316036126e857604051637b74340b60e01b815260040160405180910390fd5b600101612657565b505f84828151811061270457612704613895565b6020026020010151602001516001600160601b03161161273757604051637257125160e01b815260040160405180910390fd5b60ff85165f908152600360205260409020845185908390811061275c5761275c613895565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127c0576127c0613895565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061283657612836613895565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061289357612893613895565b60200260200101515f01518684815181106128b0576128b0613895565b6020026020010151602001516040516128ca929190612ef2565b60405180910390a260010161264d565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff19166001838181111561296f5761296f6132ef565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516129a39190613303565b60405180910390a15050565b815f015163ffffffff168163ffffffff1610156129df57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff161580612a055750816020015163ffffffff168163ffffffff16105b612a2257604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f90815260056020526040902054166001811115612a4d57612a4d6132ef565b14612a6b5760405163a3be258360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632981eb776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613bf3565b63ffffffff168163ffffffff161115612b1757604051630bd441b960e21b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612c21575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612bd56001846138d6565b81548110612be557612be5613895565b5f9182526020909120015463ffffffff1611612c0f57612c066001826138d6565b9250505061115c565b80612c1981613c0e565b915050612ba1565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f61115c6001600160601b03808516908416613c23565b5f5f821215612d2457612d1382613c42565b612d1d9084613c5c565b9050610aac565b612d1d8284613bc1565b60ff82165f9081526006602052604081205460609190612d549063ffffffff1643613be0565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ded573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1191906138fd565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612e5b93928a9291899101613c7b565b5f60405180830381865afa158015612e75573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261223a9190810190613a7f565b803560ff81168114612eac575f5ffd5b919050565b5f60208284031215612ec1575f5ffd5b61115c82612e9c565b5f5f60408385031215612edb575f5ffd5b612ee483612e9c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611caf575f5ffd5b5f5f60408385031215612f39575f5ffd5b612f4283612e9c565b91506020830135612f5281612f14565b809150509250929050565b5f5f83601f840112612f6d575f5ffd5b5081356001600160401b03811115612f83575f5ffd5b6020830191508360208260051b8501011115611d56575f5ffd5b5f5f5f5f5f60608688031215612fb1575f5ffd5b612fba86612e9c565b945060208601356001600160401b03811115612fd4575f5ffd5b612fe088828901612f5d565b90955093505060408601356001600160401b03811115612ffe575f5ffd5b61300a88828901612f5d565b969995985093965092949392505050565b5f5f83601f84011261302b575f5ffd5b5081356001600160401b03811115613041575f5ffd5b602083019150836020828501011115611d56575f5ffd5b5f5f5f5f6060858703121561306b575f5ffd5b843561307681612f14565b93506020850135925060408501356001600160401b03811115613097575f5ffd5b6130a38782880161301b565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156130e85781516001600160601b03168652602095860195909101906001016130c1565b5093949350505050565b604081525f61310460408301856130af565b828103602084015261223a81856130af565b5f5f60408385031215613127575f5ffd5b8235915061313760208401612e9c565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156131ae5761319883855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101613159565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156131ef576131ef6131b9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561321d5761321d6131b9565b604052919050565b5f6001600160401b0382111561323d5761323d6131b9565b5060051b60200190565b5f5f60408385031215613258575f5ffd5b61326183612e9c565b915060208301356001600160401b0381111561327b575f5ffd5b8301601f8101851361328b575f5ffd5b803561329e61329982613225565b6131f5565b8082825260208201915060208360051b8501019250878311156132bf575f5ffd5b6020840193505b828410156132e15783358252602093840193909101906132c6565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061332357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f82601f830112613338575f5ffd5b813561334661329982613225565b8082825260208201915060208360051b860101925085831115613367575f5ffd5b602085015b8381101561338457803583526020928301920161336c565b5095945050505050565b5f5f5f606084860312156133a0575f5ffd5b83356001600160401b038111156133b5575f5ffd5b8401601f810186136133c5575f5ffd5b80356133d361329982613225565b8082825260208201915060208360051b8501019250888311156133f4575f5ffd5b6020840193505b8284101561341f57833561340e81612f14565b8252602093840193909101906133fb565b955050505060208401356001600160401b0381111561343c575f5ffd5b61344886828701613329565b92505061345760408501612e9c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156131ae5783511515835260209384019390920191600101613479565b80356001600160601b0381168114612eac575f5ffd5b5f82601f8301126134be575f5ffd5b81356134cc61329982613225565b8082825260208201915060208360061b8601019250858311156134ed575f5ffd5b602085015b838110156133845760408188031215613509575f5ffd5b6135116131cd565b813561351c81612f14565b815261352a60208301613499565b6020820152808452506020830192506040810190506134f2565b5f5f5f60608486031215613556575f5ffd5b61355f84612e9c565b925061356d60208501613499565b915060408401356001600160401b03811115613587575f5ffd5b613593868287016134af565b9150509250925092565b63ffffffff81168114611caf575f5ffd5b5f5f5f604084860312156135c0575f5ffd5b83356135cb8161359d565b925060208401356001600160401b038111156135e5575f5ffd5b6135f18682870161301b565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b818110156131ae57835163ffffffff16835260209384019390920191600101613617565b5f5f5f6060848603121561364d575f5ffd5b61365684612e9c565b95602085013595506040909401359392505050565b60608101610aac828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156136b6575f5ffd5b6136bf83612e9c565b915061313760208401613499565b5f5f5f604084860312156136df575f5ffd5b8335925060208401356001600160401b038111156135e5575f5ffd5b5f5f6040838503121561370c575f5ffd5b61371583612e9c565b915060208301356001600160401b0381111561372f575f5ffd5b61373b858286016134af565b9150509250929050565b5f5f5f60608486031215613757575f5ffd5b61376084612e9c565b925060208401356137708161359d565b929592945050506040919091013590565b5f5f5f5f60808587031215613794575f5ffd5b61379d85612e9c565b93506137ab60208601613499565b925060408501356137bb8161359d565b915060608501356001600160401b038111156137d5575f5ffd5b6137e1878288016134af565b91505092959194509250565b5f5f5f606084860312156137ff575f5ffd5b8335925061380f60208501612e9c565b9150604084013561381f8161359d565b809150509250925092565b5f5f6040838503121561383b575f5ffd5b61384483612e9c565b91506020830135612f528161359d565b5f5f5f5f60808587031215613867575f5ffd5b61387085612e9c565b935060208501356138808161359d565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156138b9575f5ffd5b61115c82613499565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610aac57610aac6138c2565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561390d575f5ffd5b815161115c81612f14565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610aac565b5f6020828403121561394e575f5ffd5b8151801515811461115c575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156139ba5783516001600160a01b0316835260209384019390920191600101613993565b5090979650505050505050565b8082018281125f831280158216821582161715611c1957611c196138c2565b5f8151808452602084019350602083015f5b828110156130e85781516001600160a01b03168652602095860195909101906001016139f8565b5f8154808452602084019350825f5260205f205f5b828110156130e85781546001600160a01b0316865260209095019460019182019101613a34565b604081525f613a6d60408301856139e6565b828103602084015261223a8185613a1f565b5f60208284031215613a8f575f5ffd5b81516001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8051613ac261329982613225565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015613b805780516001600160401b03811115613b05575f5ffd5b8501603f81018913613b15575f5ffd5b6020810151613b2661329982613225565b808282526020820191506020808460051b8601010192508b831115613b49575f5ffd5b6040840193505b82841015613b6b578351825260209384019390910190613b50565b86525050602093840193919091019050613ae8565b509695505050505050565b8082028115828204841417610aac57610aac6138c2565b5f82613bbc57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610aac57610aac6138c2565b80820180821115610aac57610aac6138c2565b5f60208284031215613c03575f5ffd5b815161115c8161359d565b5f81613c1c57613c1c6138c2565b505f190190565b8181035f8312801583831316838312821617156106e8576106e86138c2565b5f600160ff1b8201613c5657613c566138c2565b505f0390565b6001600160601b038281168282160390811115610aac57610aac6138c2565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613cad60a08301866139e6565b8281036060840152613cbf8186613a1f565b91505063ffffffff831660808301529594505050505056fea2646970667358221220add21be5d181f1a3ba2fa5efff2e6f4492896777c4516c447cac5537fe9aa6c564736f6c634300081b0033
2040    /// ```
2041    #[rustfmt::skip]
2042    #[allow(clippy::all)]
2043    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2044        b"a\x01\0`@R4\x80\x15a\0\x10W__\xFD[P`@Qa>X8\x03\x80a>X\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=\ra\x01K_9_\x81\x81a\x04\x12\x01R\x81\x81a\x0EY\x01R\x81\x81a\x16e\x01R\x81\x81a\x1D_\x01R\x81\x81a\x1E\x1B\x01Ra-\x93\x01R_\x81\x81a\x05\xBA\x01R\x81\x81a\x0F\x07\x01R\x81\x81a\x0F\x97\x01R\x81\x81a\x17\x13\x01R\x81\x81a\x18B\x01R\x81\x81a*m\x01Ra-Y\x01R_a\x03\xB3\x01R_\x81\x81a\x06\x1A\x01Ra#\xEB\x01Ra=\r_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x1EW_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01*W\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x06\x15W\x80c\xE0\x86\xAD\xB3\x14a\x06<W\x80c\xF2\xBE\x94\xAE\x14a\x06OW\x80c\xF8Q\xE1\x98\x14a\x06bW\x80c\xFA(\xC6'\x14a\x06uW__\xFD[\x80c\xC8)LV\x14a\x05\xA2W\x80c\xCA\x8A\xA7\xC7\x14a\x05\xB5W\x80c\xCCZ| \x14a\x05\xDCW\x80c\xD5\xEC\xCC\x05\x14a\x05\xEFW\x80c\xDD\x98F\xB9\x14a\x06\x02W__\xFD[\x80c\xB6\x90Kx\x11a\0\xFAW\x80c\xB6\x90Kx\x14a\x05.W\x80c\xBC\x9A@\xC3\x14a\x05AW\x80c\xBD)\xB8\xCD\x14a\x05TW\x80c\xC4gx\xA5\x14a\x05gW\x80c\xC6\x01R}\x14a\x05\x8FW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04\x81W\x80c\x9F<\xCFe\x14a\x04\xBBW\x80c\xACk\xFB\x03\x14a\x04\xCEW\x80c\xAD\xC8\x04\xDA\x14a\x04\xEEW__\xFD[\x80c^Zgu\x11a\x01\xABW\x80cl?\xB4\xBF\x11a\x01{W\x80cl?\xB4\xBF\x14a\x03\xEDW\x80cm\x14\xA9\x87\x14a\x04\rW\x80cu\xD4\x17:\x14a\x044W\x80c|\x17#G\x14a\x04GW\x80c\x81\xC0u\x02\x14a\x04aW__\xFD[\x80c^Zgu\x14a\x03]W\x80c_\x1F-w\x14a\x03lW\x80ci\x7F\xBD\x93\x14a\x03\x7FW\x80ck:\xA7.\x14a\x03\xAEW__\xFD[\x80c%PGw\x11a\x01\xF1W\x80c%PGw\x14a\x02\xB8W\x80c,\xD9Y@\x14a\x02\xD9W\x80c<\xA5\xA5\xF5\x14a\x02\xF9W\x80cK\xD2n\t\x14a\x03\x1BW\x80cT\x01\xED'\x14a\x03JW__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x02\"W\x80c\x08s$a\x14a\x02WW\x80c\x1F\x9Bt\xE0\x14a\x02xW\x80c \xB6b\x98\x14a\x02\xA3W[__\xFD[a\x02Da\x0206`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ja\x02e6`\x04a.\xCAV[a\x06\x88V[`@Qa\x02N\x92\x91\x90a.\xF2V[a\x02\x8Ba\x02\x866`\x04a/(V[a\x06\xCDV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x02\xB6a\x02\xB16`\x04a/\x9DV[a\x06\xEFV[\0[a\x02\xCBa\x02\xC66`\x04a0XV[a\x08\x8DV[`@Qa\x02N\x92\x91\x90a0\xF2V[a\x02\xECa\x02\xE76`\x04a1\x16V[a\n\x15V[`@Qa\x02N\x91\x90a1@V[a\x02Da\x03\x076`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Da\x03)6`\x04a1\x16V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x8Ba\x03X6`\x04a1\x16V[a\n\xB2V[a\x02Dg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\xB6a\x03z6`\x04a2GV[a\n\xCAV[a\x03\xA1a\x03\x8D6`\x04a.\xB1V[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02N\x91\x90a3\x03V[a\x03\xD5\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x04\0a\x03\xFB6`\x04a3\x8EV[a\x10\x08V[`@Qa\x02N\x91\x90a4`V[a\x03\xD5\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\xB6a\x04B6`\x04a5DV[a\x11cV[a\x04O` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x04ta\x04o6`\x04a5\xAEV[a\x12IV[`@Qa\x02N\x91\x90a5\xFEV[a\x04\xA6a\x04\x8F6`\x04a.\xB1V[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x03\xD5a\x04\xC96`\x04a.\xCAV[a\x13\xEFV[a\x04\xE1a\x04\xDC6`\x04a6;V[a\x14#V[`@Qa\x02N\x91\x90a6kV[a\x05\x01a\x04\xFC6`\x04a.\xCAV[a\x14\xB9V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02NV[a\x04\xE1a\x05<6`\x04a.\xCAV[a\x150V[a\x02\xB6a\x05O6`\x04a6\xA5V[a\x15\xBDV[a\x02\xB6a\x05b6`\x04a6\xCDV[a\x15\xDEV[a\x02\x8Ba\x05u6`\x04a.\xB1V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\xB6a\x05\x9D6`\x04a6\xFBV[a\x16AV[a\x02\x8Ba\x05\xB06`\x04a7EV[a\x18\xB1V[a\x03\xD5\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\xB6a\x05\xEA6`\x04a7\x81V[a\x19-V[a\x02\x8Ba\x05\xFD6`\x04a.\xB1V[a\x1A\x1FV[a\x04\xA6a\x06\x106`\x04a7\xEDV[a\x1ApV[a\x03\xD5\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\xB6a\x06J6`\x04a8*V[a\x1A\x84V[a\x02\x8Ba\x06]6`\x04a8TV[a\x1A\xA0V[a\x04\xE1a\x06p6`\x04a1\x16V[a\x1B3V[a\x02\x8Ba\x06\x836`\x04a7\xEDV[a\x1C!V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06\xA1W_\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\xD8\x81a\x1C\x80V[_a\x06\xE3\x85\x85a\x1C\xB2V[P\x92PP[P\x92\x91PPV[a\x06\xF7a\x1D]V[\x84a\x07\x01\x81a\x1C\x80V[\x83\x80a\x07 W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07@W`@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\x08\x82W\x85\x85\x82\x81\x81\x10a\x07mWa\x07ma8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x07\x82\x91\x90a8\xA9V[\x82\x89\x89\x84\x81\x81\x10a\x07\x95Wa\x07\x95a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x07\xACWa\x07\xACa8\x95V[\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\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x08\x12Wa\x08\x12a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x08)Wa\x08)a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08OWa\x08Oa8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x08d\x91\x90a8\xA9V[`@Qa\x08r\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07SV[PPPPPPPPPV[``\x80a\x08\x98a\x1E\x10V[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xB1Wa\x08\xB1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF6Wa\x08\xF6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\n\x07W_\x87\x87\x83\x81\x81\x10a\t?Wa\t?a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\tT\x90P\x81a\x1C\x80V[__a\t`\x83\x8Da\x1C\xB2V[\x91P\x91P\x80a\t\x82W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\t\x8E\x8C\x85\x85a\x1EYV[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xA3Wa\t\xA3a8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\xCD\x84\x82a \xD2V[\x86\x86\x81Q\x81\x10a\t\xDFWa\t\xDFa8\x95V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\t$\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\n\xA5W_\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\nMV[PPPP\x90P[\x92\x91PPV[__a\n\xBE\x84\x84a\x1B3V[`@\x01Q\x94\x93PPPPV[a\n\xD2a\x1D]V[\x81a\n\xDC\x81a\x1C\x80V[\x81Q\x80a\n\xFCW`@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\x0B1Wa\x0B1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0BZW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0EUW\x83\x87\x82\x81Q\x81\x10a\x0BzWa\x0Bza8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\x92Wa\x0B\x92a8\x95V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0B\xBDWa\x0B\xBDa8\x95V[` \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\x0C\x15Wa\x0C\x15a8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C-Wa\x0C-a8\x95V[_\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x89\x84\x81Q\x81\x10a\x0C\x8AWa\x0C\x8Aa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA2Wa\x0C\xA2a8\x95V[_\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\xE1\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\x0C\xF1Wa\x0C\xF1a8\x95V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\r\x0CWa\r\x0Ca8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r$Wa\r$a8\x95V[_\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\rvWa\rva8\xE9V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\r\x9C\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\r\xACWa\r\xACa8\x95V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\xDAWa\r\xDAa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xF2Wa\r\xF2a8\x95V[\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\x0E-Wa\x0E-a8\xE9V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B_V[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\x0E\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xD7\x91\x90a8\xFDV[`@\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\x0F<\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F{\x91\x90a9>V[\x15a\x0F\xFEW`@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\x0F\xD0\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\xE7W__\xFD[PZ\xF1\x15\x80\x15a\x0F\xF9W=__>=_\xFD[PPPP[PPPPPPPPV[``a\x10\x12a\x1E\x10V[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10,Wa\x10,a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x10UW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10a\x83a\x1C\x80V[__a\x10m\x85\x88a\"CV[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x11IW\x82\x81\x81Q\x81\x10a\x10\x90Wa\x10\x90a8\x95V[` \x02` \x01\x01Qa\x10\xF4W_\x84\x82\x81Q\x81\x10a\x10\xAFWa\x10\xAFa8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\xE3Wa\x10\xE3a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x112\x89\x83\x81Q\x81\x10a\x11\nWa\x11\na8\x95V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x11%Wa\x11%a8\x95V[` \x02` \x01\x01Qa\x1EYV[\x90Pa\x11>\x81\x84a9\xC7V[\x92PP`\x01\x01a\x10uV[Pa\x11T\x86\x82a \xD2V[P\x92\x93PPPP[\x93\x92PPPV[a\x11ka\x1E\x10V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11\x9BW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x83\x82a%\xE9V[a\x11\xAF\x83\x83a(\xDAV[a\x11\xB9\x83_a)BV[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\x12dWa\x12da1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x8DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\xE6W_\x85\x85\x83\x81\x81\x10a\x12\xADWa\x12\xADa8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12\xC2\x90P\x81a\x1C\x80V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\xEAWa\x12\xEAa8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\x1AW`@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\xDBW`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\\\x84\x86a8\xD6V[a\x13f\x91\x90a8\xD6V[\x81T\x81\x10a\x13vWa\x13va8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13\xD3W`\x01a\x13\x98\x82\x84a8\xD6V[a\x13\xA2\x91\x90a8\xD6V[\x85\x85\x81Q\x81\x10a\x13\xB4Wa\x13\xB4a8\x95V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\xDBV[`\x01\x01a\x13.V[PPP`\x01\x01a\x12\x92V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\x08W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x14gWa\x14ga8\x95V[_\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\xEFWa\x14\xEFa8\x95V[_\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[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x15lWa\x15la8\x95V[_\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\x15\xC5a\x1D]V[\x81a\x15\xCF\x81a\x1C\x80V[a\x15\xD9\x83\x83a(\xDAV[PPPV[a\x15\xE6a\x1E\x10V[_[\x81\x81\x10\x15a\x16;W_\x83\x83\x83\x81\x81\x10a\x16\x03Wa\x16\x03a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x16\x18\x90P\x81a\x1C\x80V[_a\x16$\x86\x83_a\x1EYV[\x90Pa\x160\x82\x82a \xD2V[PPP`\x01\x01a\x15\xE8V[PPPPV[a\x16Ia\x1D]V[\x81a\x16S\x81a\x1C\x80V[a\x16]\x83\x83a%\xE9V[_\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\x16\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xE3\x91\x90a8\xFDV[`@\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\x17H\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x87\x91\x90a9>V[\x15a\x18\xAAW_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xA5Wa\x17\xA5a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xCEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x18*W\x85\x81\x81Q\x81\x10a\x17\xEDWa\x17\xEDa8\x95V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x18\nWa\x18\na8\x95V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17\xD3V[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{\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x92W__\xFD[PZ\xF1\x15\x80\x15a\x18\xA4W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18\xD7Wa\x18\xD7a8\x95V[_\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\n\xBE\x81\x85a)\xAFV[a\x195a\x1E\x10V[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x19eW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19o\x84\x82a%\xE9V[a\x19y\x84\x84a(\xDAV[a\x19\x84\x84`\x01a)BV[a\x19\x8E\x84\x83a*&V[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\x1A?\x91a8\xD6V[\x81T\x81\x10a\x1AOWa\x1AOa8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A|\x84\x84\x84a+\x83V[\x94\x93PPPPV[a\x1A\x8Ca\x1D]V[\x81a\x1A\x96\x81a\x1C\x80V[a\x15\xD9\x83\x83a*&V[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xD0Wa\x1A\xD0a8\x95V[_\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\x1B&\x81\x86a)\xAFV[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1B\x8FW\x91Pa\n\xAC\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\xB5`\x01\x84a8\xD6V[\x81T\x81\x10a\x1B\xC5Wa\x1B\xC5a8\x95V[_\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\n\xAC\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1CG\x85\x85\x85a+\x83V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C]Wa\x1C]a8\x95V[_\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\xAFW`@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\x1C\xEAWa\x1C\xEAa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1D\x16\x87\x84a\"CV[\x91P\x91P\x81_\x81Q\x81\x10a\x1D,Wa\x1D,a8\x95V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1DFWa\x1DFa8\x95V[` \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\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xDD\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1E\x0EW`@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\x1E\x0EW`@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\x1F\x1DW_\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 xV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1FC`\x01\x84a8\xD6V[\x81T\x81\x10a\x1FSWa\x1FSa8\x95V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1F\x89W_\x93PPPPa\x11\\V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F\xC1W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua vV[\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 \xC8\x82\x85a,\xEAV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a \xF5\x90\x84a8\xD6V[\x81T\x81\x10a!\x05Wa!\x05a8\x95V[\x90_R` _ \x01\x90P\x83_\x03a!0WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\n\xAC\x90PV[\x80T_\x90a!N\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a-\x01V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a!\x89W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua\":V[\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\"`Wa\"`a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\x89W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xA6Wa\"\xA6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\xCFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"\xEB\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#kW_\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#\x1DV[PPPP\x90P```\x01\x80\x81\x11\x15a#\x85Wa#\x85a2\xEFV[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\xAAWa#\xAAa2\xEFV[\x03a#\xC0Wa#\xB9\x89\x89a-.V[\x90Pa$cV[`\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$\x1F\x92\x8D\x92\x91\x01a:[V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$`\x91\x90\x81\x01\x90a:\x7FV[\x90P[_[\x88Q\x81\x10\x15a%\xD9W_[\x84\x81\x10\x15a%iW_\x84\x82\x81Q\x81\x10a$\x8BWa$\x8Ba8\x95V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\xA8Wa$\xA8a8\x95V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$\xC1Wa$\xC1a8\x95V[` \x02` \x01\x01Q\x11\x15a%`Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$\xF8Wa$\xF8a8\x95V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a%\x11Wa%\x11a8\x95V[` \x02` \x01\x01Qa%#\x91\x90a;\x8BV[a%-\x91\x90a;\xA2V[\x88\x84\x81Q\x81\x10a%?Wa%?a8\x95V[` \x02` \x01\x01\x81\x81Qa%S\x91\x90a;\xC1V[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a$pV[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%\x9CWa%\x9Ca8\x95V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%\xC1Wa%\xC1a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$eV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a&\nW`@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&,\x83\x83a;\xE0V[\x11\x15a&KW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x18\xAAW_[a&a\x82\x84a;\xE0V[\x81\x10\x15a&\xF0W\x84\x82\x81Q\x81\x10a&zWa&za8\x95V[` \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&\xB6Wa&\xB6a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&\xE8W`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a&WV[P_\x84\x82\x81Q\x81\x10a'\x04Wa'\x04a8\x95V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'7W`@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'\\Wa'\\a8\x95V[` \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'\xC0Wa'\xC0a8\x95V[` \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(6Wa(6a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a(\x93Wa(\x93a8\x95V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a8\x95V[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a&MV[`\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)oWa)oa2\xEFV[\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)\xA3\x91\x90a3\x03V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\xDFW`@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*\x05WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*\"W`@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*MWa*Ma2\xEFV[\x14a*kW`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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)\x81\xEBw`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a*\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\xEB\x91\x90a;\xF3V[c\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x11\x15a+\x17W`@Qc\x0B\xD4A\xB9`\xE2\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,!W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\xD5`\x01\x84a8\xD6V[\x81T\x81\x10a+\xE5Wa+\xE5a8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a,\x0FWa,\x06`\x01\x82a8\xD6V[\x92PPPa\x11\\V[\x80a,\x19\x81a<\x0EV[\x91PPa+\xA1V[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\\`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a<#V[__\x82\x12\x15a-$Wa-\x13\x82a<BV[a-\x1D\x90\x84a<\\V[\x90Pa\n\xACV[a-\x1D\x82\x84a;\xC1V[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a-T\x90c\xFF\xFF\xFF\xFF\x16Ca;\xE0V[\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-\xEDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\x11\x91\x90a8\xFDV[`\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.[\x93\x92\x8A\x92\x91\x89\x91\x01a<{V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.uW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\":\x91\x90\x81\x01\x90a:\x7FV[\x805`\xFF\x81\x16\x81\x14a.\xACW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a.\xC1W__\xFD[a\x11\\\x82a.\x9CV[__`@\x83\x85\x03\x12\x15a.\xDBW__\xFD[a.\xE4\x83a.\x9CV[\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\xAFW__\xFD[__`@\x83\x85\x03\x12\x15a/9W__\xFD[a/B\x83a.\x9CV[\x91P` \x83\x015a/R\x81a/\x14V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a/mW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x83W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1DVW__\xFD[_____``\x86\x88\x03\x12\x15a/\xB1W__\xFD[a/\xBA\x86a.\x9CV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD4W__\xFD[a/\xE0\x88\x82\x89\x01a/]V[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xFEW__\xFD[a0\n\x88\x82\x89\x01a/]V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a0+W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0AW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1DVW__\xFD[____``\x85\x87\x03\x12\x15a0kW__\xFD[\x845a0v\x81a/\x14V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[a0\xA3\x87\x82\x88\x01a0\x1BV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a0\xC1V[P\x93\x94\x93PPPPV[`@\x81R_a1\x04`@\x83\x01\x85a0\xAFV[\x82\x81\x03` \x84\x01Ra\":\x81\x85a0\xAFV[__`@\x83\x85\x03\x12\x15a1'W__\xFD[\x825\x91Pa17` \x84\x01a.\x9CV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEWa1\x98\x83\x85Qc\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[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a1YV[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\x15a1\xEFWa1\xEFa1\xB9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x1DWa2\x1Da1\xB9V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a2=Wa2=a1\xB9V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a2XW__\xFD[a2a\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2{W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2\x8BW__\xFD[\x805a2\x9Ea2\x99\x82a2%V[a1\xF5V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a2\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xE1W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xC6V[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a3#WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[_\x82`\x1F\x83\x01\x12a38W__\xFD[\x815a3Fa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3gW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W\x805\x83R` \x92\x83\x01\x92\x01a3lV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a3\xA0W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xB5W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a3\xC5W__\xFD[\x805a3\xD3a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a3\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x1FW\x835a4\x0E\x81a/\x14V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a3\xFBV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4<W__\xFD[a4H\x86\x82\x87\x01a3)V[\x92PPa4W`@\x85\x01a.\x9CV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4yV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a.\xACW__\xFD[_\x82`\x1F\x83\x01\x12a4\xBEW__\xFD[\x815a4\xCCa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a4\xEDW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W`@\x81\x88\x03\x12\x15a5\tW__\xFD[a5\x11a1\xCDV[\x815a5\x1C\x81a/\x14V[\x81Ra5*` \x83\x01a4\x99V[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa4\xF2V[___``\x84\x86\x03\x12\x15a5VW__\xFD[a5_\x84a.\x9CV[\x92Pa5m` \x85\x01a4\x99V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x87W__\xFD[a5\x93\x86\x82\x87\x01a4\xAFV[\x91PP\x92P\x92P\x92V[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1C\xAFW__\xFD[___`@\x84\x86\x03\x12\x15a5\xC0W__\xFD[\x835a5\xCB\x81a5\x9DV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[a5\xF1\x86\x82\x87\x01a0\x1BV[\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\x15a1\xAEW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a6\x17V[___``\x84\x86\x03\x12\x15a6MW__\xFD[a6V\x84a.\x9CV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\n\xAC\x82\x84c\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[__`@\x83\x85\x03\x12\x15a6\xB6W__\xFD[a6\xBF\x83a.\x9CV[\x91Pa17` \x84\x01a4\x99V[___`@\x84\x86\x03\x12\x15a6\xDFW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[__`@\x83\x85\x03\x12\x15a7\x0CW__\xFD[a7\x15\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7/W__\xFD[a7;\x85\x82\x86\x01a4\xAFV[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a7WW__\xFD[a7`\x84a.\x9CV[\x92P` \x84\x015a7p\x81a5\x9DV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a7\x94W__\xFD[a7\x9D\x85a.\x9CV[\x93Pa7\xAB` \x86\x01a4\x99V[\x92P`@\x85\x015a7\xBB\x81a5\x9DV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xD5W__\xFD[a7\xE1\x87\x82\x88\x01a4\xAFV[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a7\xFFW__\xFD[\x835\x92Pa8\x0F` \x85\x01a.\x9CV[\x91P`@\x84\x015a8\x1F\x81a5\x9DV[\x80\x91PP\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a8;W__\xFD[a8D\x83a.\x9CV[\x91P` \x83\x015a/R\x81a5\x9DV[____`\x80\x85\x87\x03\x12\x15a8gW__\xFD[a8p\x85a.\x9CV[\x93P` \x85\x015a8\x80\x81a5\x9DV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a8\xB9W__\xFD[a\x11\\\x82a4\x99V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\rW__\xFD[\x81Qa\x11\\\x81a/\x14V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\n\xACV[_` \x82\x84\x03\x12\x15a9NW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\\W__\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\x15a9\xBAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a9\x93V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1C\x19Wa\x1C\x19a8\xC2V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a9\xF8V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a0\xE8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a:4V[`@\x81R_a:m`@\x83\x01\x85a9\xE6V[\x82\x81\x03` \x84\x01Ra\":\x81\x85a:\x1FV[_` \x82\x84\x03\x12\x15a:\x8FW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a:\xA4W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a:\xB4W__\xFD[\x80Qa:\xC2a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a:\xE3W__\xFD[` \x84\x01[\x83\x81\x10\x15a;\x80W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;\x05W__\xFD[\x85\x01`?\x81\x01\x89\x13a;\x15W__\xFD[` \x81\x01Qa;&a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a;IW__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a;kW\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a;PV[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa:\xE8V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xACWa\n\xACa8\xC2V[_\x82a;\xBCWcNH{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\n\xACWa\n\xACa8\xC2V[\x80\x82\x01\x80\x82\x11\x15a\n\xACWa\n\xACa8\xC2V[_` \x82\x84\x03\x12\x15a<\x03W__\xFD[\x81Qa\x11\\\x81a5\x9DV[_\x81a<\x1CWa<\x1Ca8\xC2V[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xE8Wa\x06\xE8a8\xC2V[_`\x01`\xFF\x1B\x82\x01a<VWa<Va8\xC2V[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a<\xAD`\xA0\x83\x01\x86a9\xE6V[\x82\x81\x03``\x84\x01Ra<\xBF\x81\x86a:\x1FV[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\xA2dipfsX\"\x12 \xAD\xD2\x1B\xE5\xD1\x81\xF1\xA3\xBA/\xA5\xEF\xFF.oD\x92\x89gw\xC4QlD|\xACU7\xFE\x9A\xA6\xC5dsolcC\0\x08\x1B\x003",
2045    );
2046    /// The runtime bytecode of the contract, as deployed on the network.
2047    ///
2048    /// ```text
2049    ///0x608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80639ab4d6ff1161012a578063c8294c56116100b4578063df5cf72311610079578063df5cf72314610615578063e086adb31461063c578063f2be94ae1461064f578063f851e19814610662578063fa28c62714610675575f5ffd5b8063c8294c56146105a2578063ca8aa7c7146105b5578063cc5a7c20146105dc578063d5eccc05146105ef578063dd9846b914610602575f5ffd5b8063b6904b78116100fa578063b6904b781461052e578063bc9a40c314610541578063bd29b8cd14610554578063c46778a514610567578063c601527d1461058f575f5ffd5b80639ab4d6ff146104815780639f3ccf65146104bb578063ac6bfb03146104ce578063adc804da146104ee575f5ffd5b80635e5a6775116101ab5780636c3fb4bf1161017b5780636c3fb4bf146103ed5780636d14a9871461040d57806375d4173a146104345780637c1723471461044757806381c0750214610461575f5ffd5b80635e5a67751461035d5780635f1f2d771461036c578063697fbd931461037f5780636b3aa72e146103ae575f5ffd5b806325504777116101f157806325504777146102b85780632cd95940146102d95780633ca5a5f5146102f95780634bd26e091461031b5780635401ed271461034a575f5ffd5b80630491b41c1461022257806308732461146102575780631f9b74e01461027857806320b66298146102a3575b5f5ffd5b610244610230366004612eb1565b60ff165f9081526001602052604090205490565b6040519081526020015b60405180910390f35b61026a610265366004612eca565b610688565b60405161024e929190612ef2565b61028b610286366004612f28565b6106cd565b6040516001600160601b03909116815260200161024e565b6102b66102b1366004612f9d565b6106ef565b005b6102cb6102c6366004613058565b61088d565b60405161024e9291906130f2565b6102ec6102e7366004613116565b610a15565b60405161024e9190613140565b610244610307366004612eb1565b60ff165f9081526003602052604090205490565b610244610329366004613116565b5f91825260026020908152604080842060ff93909316845291905290205490565b61028b610358366004613116565b610ab2565b610244670de0b6b3a764000081565b6102b661037a366004613247565b610aca565b6103a161038d366004612eb1565b60056020525f908152604090205460ff1681565b60405161024e9190613303565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b6104006103fb36600461338e565b611008565b60405161024e9190613460565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b6610442366004613544565b611163565b61044f602081565b60405160ff909116815260200161024e565b61047461046f3660046135ae565b611249565b60405161024e91906135fe565b6104a661048f366004612eb1565b60066020525f908152604090205463ffffffff1681565b60405163ffffffff909116815260200161024e565b6103d56104c9366004612eca565b6113ef565b6104e16104dc36600461363b565b611423565b60405161024e919061366b565b6105016104fc366004612eca565b6114b9565b6040805182516001600160a01b031681526020928301516001600160601b0316928101929092520161024e565b6104e161053c366004612eca565b611530565b6102b661054f3660046136a5565b6115bd565b6102b66105623660046136cd565b6115de565b61028b610575366004612eb1565b5f602081905290815260409020546001600160601b031681565b6102b661059d3660046136fb565b611641565b61028b6105b0366004613745565b6118b1565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b66105ea366004613781565b61192d565b61028b6105fd366004612eb1565b611a1f565b6104a66106103660046137ed565b611a70565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6102b661064a36600461382a565b611a84565b61028b61065d366004613854565b611aa0565b6104e1610670366004613116565b611b33565b61028b6106833660046137ed565b611c21565b6003602052815f5260405f2081815481106106a1575f80fd5b5f918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b5f826106d881611c80565b5f6106e38585611cb2565b509250505b5092915050565b6106f7611d5d565b8461070181611c80565b83806107205760405163796cc52560e01b815260040160405180910390fd5b828114610740576040516343714afd60e01b815260040160405180910390fd5b60ff87165f908152600360205260408120905b828110156108825785858281811061076d5761076d613895565b905060200201602081019061078291906138a9565b8289898481811061079557610795613895565b90506020020135815481106107ac576107ac613895565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75838a8a8581811061081257610812613895565b905060200201358154811061082957610829613895565b5f918252602090912001546001600160a01b031688888581811061084f5761084f613895565b905060200201602081019061086491906138a9565b604051610872929190612ef2565b60405180910390a2600101610753565b505050505050505050565b606080610898611e10565b5f836001600160401b038111156108b1576108b16131b9565b6040519080825280602002602001820160405280156108da578160200160208202803683370190505b5090505f846001600160401b038111156108f6576108f66131b9565b60405190808252806020026020018201604052801561091f578160200160208202803683370190505b5090505f5b85811015610a07575f87878381811061093f5761093f613895565b919091013560f81c9150610954905081611c80565b5f5f610960838d611cb2565b91509150806109825760405163207f13e360e11b815260040160405180910390fd5b5f61098e8c8585611e59565b9050828786815181106109a3576109a3613895565b60200260200101906001600160601b031690816001600160601b0316815250506109cd84826120d2565b8686815181106109df576109df613895565b6001600160601b03909216602092830291909101909101525050600190920191506109249050565b509097909650945050505050565b5f82815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610aa5575f848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610a4d565b5050505090505b92915050565b5f5f610abe8484611b33565b60400151949350505050565b610ad2611d5d565b81610adc81611c80565b815180610afc5760405163796cc52560e01b815260040160405180910390fd5b60ff84165f908152600360209081526040808320600490925282209091836001600160401b03811115610b3157610b316131b9565b604051908082528060200260200182016040528015610b5a578160200160208202803683370190505b5090505f5b84811015610e555783878281518110610b7a57610b7a613895565b602002602001015181548110610b9257610b92613895565b5f9182526020909120015482516001600160a01b0390911690839083908110610bbd57610bbd613895565b60200260200101906001600160a01b031690816001600160a01b0316815250508760ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f785898481518110610c1557610c15613895565b602002602001015181548110610c2d57610c2d613895565b5f91825260209182902001546040516001600160a01b0390911681520160405180910390a28760ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585898481518110610c8a57610c8a613895565b602002602001015181548110610ca257610ca2613895565b5f91825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a283548490610ce1906001906138d6565b81548110610cf157610cf1613895565b905f5260205f200184888381518110610d0c57610d0c613895565b602002602001015181548110610d2457610d24613895565b5f91825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558354849080610d7657610d766138e9565b5f8281526020812082015f199081019190915501905582548390610d9c906001906138d6565b81548110610dac57610dac613895565b905f5260205f20015f9054906101000a90046001600160a01b031683888381518110610dda57610dda613895565b602002602001015181548110610df257610df2613895565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082805480610e2d57610e2d6138e9565b5f8281526020902081015f1990810180546001600160a01b0319169055019055600101610b5f565b505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed791906138fd565b6040805180820182526001600160a01b03838116825260ff8c16602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc75891610f3c91600401613918565b602060405180830381865afa158015610f57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7b919061393e565b15610ffe5760405163b66bd98960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b66bd98990610fd09084908c90879060040161395d565b5f604051808303815f87803b158015610fe7575f5ffd5b505af1158015610ff9573d5f5f3e3d5ffd5b505050505b5050505050505050565b6060611012611e10565b5f84516001600160401b0381111561102c5761102c6131b9565b604051908082528060200260200182016040528015611055578160200160208202803683370190505b50905061106183611c80565b5f5f61106d8588612243565b90925090505f805b88518110156111495782818151811061109057611090613895565b60200260200101516110f4575f8482815181106110af576110af613895565b60200260200101906001600160601b031690816001600160601b03168152505060018582815181106110e3576110e3613895565b911515602092830291909101909101525b5f61113289838151811061110a5761110a613895565b60200260200101518987858151811061112557611125613895565b6020026020010151611e59565b905061113e81846139c7565b925050600101611075565b5061115486826120d2565b509293505050505b9392505050565b61116b611e10565b60ff83165f908152600160205260409020541561119b576040516310cda51760e21b815260040160405180910390fd5b6111a583826125e9565b6111af83836128da565b6111b9835f612942565b505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60605f826001600160401b03811115611264576112646131b9565b60405190808252806020026020018201604052801561128d578160200160208202803683370190505b5090505f5b838110156113e6575f8585838181106112ad576112ad613895565b919091013560f81c91506112c2905081611c80565b60ff81165f908152600160205260408120805463ffffffff8a1692906112ea576112ea613895565b5f9182526020909120015463ffffffff16111561131a5760405163cc64657360e01b815260040160405180910390fd5b60ff81165f90815260016020526040812054905b818110156113db5760ff83165f90815260016020819052604090912063ffffffff8b169161135c84866138d6565b61136691906138d6565b8154811061137657611376613895565b5f9182526020909120015463ffffffff16116113d357600161139882846138d6565b6113a291906138d6565b8585815181106113b4576113b4613895565b602002602001019063ffffffff16908163ffffffff16815250506113db565b60010161132e565b505050600101611292565b50949350505050565b6004602052815f5260405f208181548110611408575f80fd5b5f918252602090912001546001600160a01b03169150829050565b604080516060810182525f80825260208083018290528284018290528582526002815283822060ff8816835290529190912080548390811061146757611467613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091525f808252602082015260ff83165f9081526003602052604090208054839081106114ef576114ef613895565b5f918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600190529190912080548390811061156c5761156c613895565b5f91825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b6115c5611d5d565b816115cf81611c80565b6115d983836128da565b505050565b6115e6611e10565b5f5b8181101561163b575f83838381811061160357611603613895565b919091013560f81c9150611618905081611c80565b5f61162486835f611e59565b905061163082826120d2565b5050506001016115e8565b50505050565b611649611d5d565b8161165381611c80565b61165d83836125e9565b5f825190505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e391906138fd565b6040805180820182526001600160a01b03838116825260ff8916602083015291516304c1b8eb60e31b81529293507f00000000000000000000000000000000000000000000000000000000000000009091169163260dc7589161174891600401613918565b602060405180830381865afa158015611763573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611787919061393e565b156118aa575f826001600160401b038111156117a5576117a56131b9565b6040519080825280602002602001820160405280156117ce578160200160208202803683370190505b5090505f5b8381101561182a578581815181106117ed576117ed613895565b60200260200101515f015182828151811061180a5761180a613895565b6001600160a01b03909216602092830291909101909101526001016117d3565b50604051630287f75160e51b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906350feea209061187b9085908a90869060040161395d565b5f604051808303815f87803b158015611892575f5ffd5b505af11580156118a4573d5f5f3e3d5ffd5b50505050505b5050505050565b60ff83165f9081526001602052604081208054829190849081106118d7576118d7613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610abe81856129af565b611935611e10565b60ff84165f9081526001602052604090205415611965576040516310cda51760e21b815260040160405180910390fd5b61196f84826125e9565b61197984846128da565b611984846001612942565b61198e8483612a26565b50505060ff165f908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b60ff81165f908152600160208190526040822080549091611a3f916138d6565b81548110611a4f57611a4f613895565b5f91825260209091200154600160401b90046001600160601b031692915050565b5f611a7c848484612b83565b949350505050565b611a8c611d5d565b81611a9681611c80565b6115d98383612a26565b5f82815260026020908152604080832060ff881684529091528120805482919084908110611ad057611ad0613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611b2681866129af565b6040015195945050505050565b60408051606080820183525f80835260208084018290528385018290528682526002815284822060ff8716835281528482205485519384018652828452908301829052938201819052919291829003611b8f579150610aac9050565b5f85815260026020908152604080832060ff881684529091529020611bb56001846138d6565b81548110611bc557611bc5613895565b5f91825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610aac915050565b505092915050565b5f83815260026020908152604080832060ff861684529091528120611c47858585612b83565b63ffffffff1681548110611c5d57611c5d613895565b5f91825260209091200154600160401b90046001600160601b0316949350505050565b60ff81165f90815260016020526040902054611caf57604051637310cff560e11b815260040160405180910390fd5b50565b6040805160018082528183019092525f91829182916020808301908036833701905050905083815f81518110611cea57611cea613895565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f611d168784612243565b91509150815f81518110611d2c57611d2c613895565b6020026020010151815f81518110611d4657611d46613895565b6020026020010151945094505050505b9250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddd91906138fd565b6001600160a01b0316336001600160a01b031614611e0e5760405163ce98c24b60e01b815260040160405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e0e57604051632c01b20560e21b815260040160405180910390fd5b5f83815260026020908152604080832060ff861684529091528120548190808203611f1d575f86815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055612078565b5f86815260026020908152604080832060ff891684529091528120611f436001846138d6565b81548110611f5357611f53613895565b5f91825260209091200180546001600160601b03600160401b9091048116945090915085168303611f89575f935050505061115c565b805463ffffffff438116911603611fc1578054600160401b600160a01b031916600160401b6001600160601b03871602178155612076565b805467ffffffff000000001916600160201b4363ffffffff9081168281029390931784555f8a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26120c88285612cea565b9695505050505050565b60ff82165f90815260016020819052604082208054918391906120f590846138d6565b8154811061210557612105613895565b905f5260205f20019050835f036121305754600160401b90046001600160601b03169150610aac9050565b80545f9061214e90600160401b90046001600160601b031686612d01565b825490915063ffffffff438116911603612189578154600160401b600160a01b031916600160401b6001600160601b0383160217825561223a565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff89165f90815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b6060805f83516001600160401b03811115612260576122606131b9565b604051908082528060200260200182016040528015612289578160200160208202803683370190505b5090505f84516001600160401b038111156122a6576122a66131b9565b6040519080825280602002602001820160405280156122cf578160200160208202803683370190505b5090505f6122eb8760ff165f9081526003602052604090205490565b60ff88165f90815260036020908152604080832080548251818502810185019093528083529495509293909291849084015b8282101561236b575f84815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b03168183015282526001909201910161231d565b5050505090506060600180811115612385576123856132ef565b60ff808b165f908152600560205260409020541660018111156123aa576123aa6132ef565b036123c0576123b98989612d2e565b9050612463565b60ff89165f908152600460208190526040918290209151637870733b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263f0e0e6769261241f928d929101613a5b565b5f60405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124609190810190613a7f565b90505b5f5b88518110156125d9575f5b84811015612569575f84828151811061248b5761248b613895565b602002602001015190505f8484815181106124a8576124a8613895565b602002602001015183815181106124c1576124c1613895565b6020026020010151111561256057670de0b6b3a764000081602001516001600160601b03168585815181106124f8576124f8613895565b6020026020010151848151811061251157612511613895565b60200260200101516125239190613b8b565b61252d9190613ba2565b88848151811061253f5761253f613895565b602002602001018181516125539190613bc1565b6001600160601b03169052505b50600101612470565b5060ff8a165f9081526020819052604090205486516001600160601b039091169087908390811061259c5761259c613895565b60200260200101516001600160601b031610158582815181106125c1576125c1613895565b91151560209283029190910190910152600101612465565b5093989297509195505050505050565b5f81511161260a5760405163796cc52560e01b815260040160405180910390fd5b805160ff83165f908152600360209081526040909120549061262c8383613be0565b111561264b576040516343714afd60e01b815260040160405180910390fd5b5f5b828110156118aa575f5b6126618284613be0565b8110156126f05784828151811061267a5761267a613895565b60200260200101515f01516001600160a01b031660035f8860ff1660ff1681526020019081526020015f2082815481106126b6576126b6613895565b5f918252602090912001546001600160a01b0316036126e857604051637b74340b60e01b815260040160405180910390fd5b600101612657565b505f84828151811061270457612704613895565b6020026020010151602001516001600160601b03161161273757604051637257125160e01b815260040160405180910390fd5b60ff85165f908152600360205260409020845185908390811061275c5761275c613895565b60209081029190910181015182546001810184555f9384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127c0576127c0613895565b6020908102919091018101515182546001810184555f938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061283657612836613895565b602090810291909101810151516040516001600160a01b0390911681520160405180910390a28460ff167f11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a7585838151811061289357612893613895565b60200260200101515f01518684815181106128b0576128b0613895565b6020026020010151602001516040516128ca929190612ef2565b60405180910390a260010161264d565b60ff82165f818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60ff82165f908152600560205260409020805482919060ff19166001838181111561296f5761296f6132ef565b02179055507f7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d816040516129a39190613303565b60405180910390a15050565b815f015163ffffffff168163ffffffff1610156129df57604051631391e11b60e21b815260040160405180910390fd5b602082015163ffffffff161580612a055750816020015163ffffffff168163ffffffff16105b612a2257604051631391e11b60e21b815260040160405180910390fd5b5050565b600160ff8084165f90815260056020526040902054166001811115612a4d57612a4d6132ef565b14612a6b5760405163a3be258360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632981eb776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ac7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aeb9190613bf3565b63ffffffff168163ffffffff161115612b1757604051630bd441b960e21b815260040160405180910390fd5b60ff82165f90815260066020908152604091829020805463ffffffff19811663ffffffff8681169182179093558451929091168083529282015290917f28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7910160405180910390a1505050565b5f83815260026020908152604080832060ff86168452909152812054805b8015612c21575f86815260026020908152604080832060ff89168452909152902063ffffffff851690612bd56001846138d6565b81548110612be557612be5613895565b5f9182526020909120015463ffffffff1611612c0f57612c066001826138d6565b9250505061115c565b80612c1981613c0e565b915050612ba1565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e40160405180910390fd5b5f61115c6001600160601b03808516908416613c23565b5f5f821215612d2457612d1382613c42565b612d1d9084613c5c565b9050610aac565b612d1d8284613bc1565b60ff82165f9081526006602052604081205460609190612d549063ffffffff1643613be0565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632bab2c4a60405180604001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de1164bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ded573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1191906138fd565b6001600160a01b0316815260ff891660209182018190525f90815260049182905260409081902090516001600160e01b031960e086901b168152612e5b93928a9291899101613c7b565b5f60405180830381865afa158015612e75573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261223a9190810190613a7f565b803560ff81168114612eac575f5ffd5b919050565b5f60208284031215612ec1575f5ffd5b61115c82612e9c565b5f5f60408385031215612edb575f5ffd5b612ee483612e9c565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114611caf575f5ffd5b5f5f60408385031215612f39575f5ffd5b612f4283612e9c565b91506020830135612f5281612f14565b809150509250929050565b5f5f83601f840112612f6d575f5ffd5b5081356001600160401b03811115612f83575f5ffd5b6020830191508360208260051b8501011115611d56575f5ffd5b5f5f5f5f5f60608688031215612fb1575f5ffd5b612fba86612e9c565b945060208601356001600160401b03811115612fd4575f5ffd5b612fe088828901612f5d565b90955093505060408601356001600160401b03811115612ffe575f5ffd5b61300a88828901612f5d565b969995985093965092949392505050565b5f5f83601f84011261302b575f5ffd5b5081356001600160401b03811115613041575f5ffd5b602083019150836020828501011115611d56575f5ffd5b5f5f5f5f6060858703121561306b575f5ffd5b843561307681612f14565b93506020850135925060408501356001600160401b03811115613097575f5ffd5b6130a38782880161301b565b95989497509550505050565b5f8151808452602084019350602083015f5b828110156130e85781516001600160601b03168652602095860195909101906001016130c1565b5093949350505050565b604081525f61310460408301856130af565b828103602084015261223a81856130af565b5f5f60408385031215613127575f5ffd5b8235915061313760208401612e9c565b90509250929050565b602080825282518282018190525f918401906040840190835b818110156131ae5761319883855163ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b6020939093019260609290920191600101613159565b509095945050505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156131ef576131ef6131b9565b60405290565b604051601f8201601f191681016001600160401b038111828210171561321d5761321d6131b9565b604052919050565b5f6001600160401b0382111561323d5761323d6131b9565b5060051b60200190565b5f5f60408385031215613258575f5ffd5b61326183612e9c565b915060208301356001600160401b0381111561327b575f5ffd5b8301601f8101851361328b575f5ffd5b803561329e61329982613225565b6131f5565b8082825260208201915060208360051b8501019250878311156132bf575f5ffd5b6020840193505b828410156132e15783358252602093840193909101906132c6565b809450505050509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016002831061332357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f82601f830112613338575f5ffd5b813561334661329982613225565b8082825260208201915060208360051b860101925085831115613367575f5ffd5b602085015b8381101561338457803583526020928301920161336c565b5095945050505050565b5f5f5f606084860312156133a0575f5ffd5b83356001600160401b038111156133b5575f5ffd5b8401601f810186136133c5575f5ffd5b80356133d361329982613225565b8082825260208201915060208360051b8501019250888311156133f4575f5ffd5b6020840193505b8284101561341f57833561340e81612f14565b8252602093840193909101906133fb565b955050505060208401356001600160401b0381111561343c575f5ffd5b61344886828701613329565b92505061345760408501612e9c565b90509250925092565b602080825282518282018190525f918401906040840190835b818110156131ae5783511515835260209384019390920191600101613479565b80356001600160601b0381168114612eac575f5ffd5b5f82601f8301126134be575f5ffd5b81356134cc61329982613225565b8082825260208201915060208360061b8601019250858311156134ed575f5ffd5b602085015b838110156133845760408188031215613509575f5ffd5b6135116131cd565b813561351c81612f14565b815261352a60208301613499565b6020820152808452506020830192506040810190506134f2565b5f5f5f60608486031215613556575f5ffd5b61355f84612e9c565b925061356d60208501613499565b915060408401356001600160401b03811115613587575f5ffd5b613593868287016134af565b9150509250925092565b63ffffffff81168114611caf575f5ffd5b5f5f5f604084860312156135c0575f5ffd5b83356135cb8161359d565b925060208401356001600160401b038111156135e5575f5ffd5b6135f18682870161301b565b9497909650939450505050565b602080825282518282018190525f918401906040840190835b818110156131ae57835163ffffffff16835260209384019390920191600101613617565b5f5f5f6060848603121561364d575f5ffd5b61365684612e9c565b95602085013595506040909401359392505050565b60608101610aac828463ffffffff815116825263ffffffff60208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156136b6575f5ffd5b6136bf83612e9c565b915061313760208401613499565b5f5f5f604084860312156136df575f5ffd5b8335925060208401356001600160401b038111156135e5575f5ffd5b5f5f6040838503121561370c575f5ffd5b61371583612e9c565b915060208301356001600160401b0381111561372f575f5ffd5b61373b858286016134af565b9150509250929050565b5f5f5f60608486031215613757575f5ffd5b61376084612e9c565b925060208401356137708161359d565b929592945050506040919091013590565b5f5f5f5f60808587031215613794575f5ffd5b61379d85612e9c565b93506137ab60208601613499565b925060408501356137bb8161359d565b915060608501356001600160401b038111156137d5575f5ffd5b6137e1878288016134af565b91505092959194509250565b5f5f5f606084860312156137ff575f5ffd5b8335925061380f60208501612e9c565b9150604084013561381f8161359d565b809150509250925092565b5f5f6040838503121561383b575f5ffd5b61384483612e9c565b91506020830135612f528161359d565b5f5f5f5f60808587031215613867575f5ffd5b61387085612e9c565b935060208501356138808161359d565b93969395505050506040820135916060013590565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156138b9575f5ffd5b61115c82613499565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610aac57610aac6138c2565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561390d575f5ffd5b815161115c81612f14565b81516001600160a01b0316815260208083015163ffffffff169082015260408101610aac565b5f6020828403121561394e575f5ffd5b8151801515811461115c575f5ffd5b6001600160a01b038416815260ff831660208083019190915260606040830181905283519083018190525f918401906080840190835b818110156139ba5783516001600160a01b0316835260209384019390920191600101613993565b5090979650505050505050565b8082018281125f831280158216821582161715611c1957611c196138c2565b5f8151808452602084019350602083015f5b828110156130e85781516001600160a01b03168652602095860195909101906001016139f8565b5f8154808452602084019350825f5260205f205f5b828110156130e85781546001600160a01b0316865260209095019460019182019101613a34565b604081525f613a6d60408301856139e6565b828103602084015261223a8185613a1f565b5f60208284031215613a8f575f5ffd5b81516001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8051613ac261329982613225565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015613b805780516001600160401b03811115613b05575f5ffd5b8501603f81018913613b15575f5ffd5b6020810151613b2661329982613225565b808282526020820191506020808460051b8601010192508b831115613b49575f5ffd5b6040840193505b82841015613b6b578351825260209384019390910190613b50565b86525050602093840193919091019050613ae8565b509695505050505050565b8082028115828204841417610aac57610aac6138c2565b5f82613bbc57634e487b7160e01b5f52601260045260245ffd5b500490565b6001600160601b038181168382160190811115610aac57610aac6138c2565b80820180821115610aac57610aac6138c2565b5f60208284031215613c03575f5ffd5b815161115c8161359d565b5f81613c1c57613c1c6138c2565b505f190190565b8181035f8312801583831316838312821617156106e8576106e86138c2565b5f600160ff1b8201613c5657613c566138c2565b505f0390565b6001600160601b038281168282160390811115610aac57610aac6138c2565b84516001600160a01b0316815260208086015163ffffffff169082015260a060408201525f613cad60a08301866139e6565b8281036060840152613cbf8186613a1f565b91505063ffffffff831660808301529594505050505056fea2646970667358221220add21be5d181f1a3ba2fa5efff2e6f4492896777c4516c447cac5537fe9aa6c564736f6c634300081b0033
2050    /// ```
2051    #[rustfmt::skip]
2052    #[allow(clippy::all)]
2053    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2054        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x02\x1EW_5`\xE0\x1C\x80c\x9A\xB4\xD6\xFF\x11a\x01*W\x80c\xC8)LV\x11a\0\xB4W\x80c\xDF\\\xF7#\x11a\0yW\x80c\xDF\\\xF7#\x14a\x06\x15W\x80c\xE0\x86\xAD\xB3\x14a\x06<W\x80c\xF2\xBE\x94\xAE\x14a\x06OW\x80c\xF8Q\xE1\x98\x14a\x06bW\x80c\xFA(\xC6'\x14a\x06uW__\xFD[\x80c\xC8)LV\x14a\x05\xA2W\x80c\xCA\x8A\xA7\xC7\x14a\x05\xB5W\x80c\xCCZ| \x14a\x05\xDCW\x80c\xD5\xEC\xCC\x05\x14a\x05\xEFW\x80c\xDD\x98F\xB9\x14a\x06\x02W__\xFD[\x80c\xB6\x90Kx\x11a\0\xFAW\x80c\xB6\x90Kx\x14a\x05.W\x80c\xBC\x9A@\xC3\x14a\x05AW\x80c\xBD)\xB8\xCD\x14a\x05TW\x80c\xC4gx\xA5\x14a\x05gW\x80c\xC6\x01R}\x14a\x05\x8FW__\xFD[\x80c\x9A\xB4\xD6\xFF\x14a\x04\x81W\x80c\x9F<\xCFe\x14a\x04\xBBW\x80c\xACk\xFB\x03\x14a\x04\xCEW\x80c\xAD\xC8\x04\xDA\x14a\x04\xEEW__\xFD[\x80c^Zgu\x11a\x01\xABW\x80cl?\xB4\xBF\x11a\x01{W\x80cl?\xB4\xBF\x14a\x03\xEDW\x80cm\x14\xA9\x87\x14a\x04\rW\x80cu\xD4\x17:\x14a\x044W\x80c|\x17#G\x14a\x04GW\x80c\x81\xC0u\x02\x14a\x04aW__\xFD[\x80c^Zgu\x14a\x03]W\x80c_\x1F-w\x14a\x03lW\x80ci\x7F\xBD\x93\x14a\x03\x7FW\x80ck:\xA7.\x14a\x03\xAEW__\xFD[\x80c%PGw\x11a\x01\xF1W\x80c%PGw\x14a\x02\xB8W\x80c,\xD9Y@\x14a\x02\xD9W\x80c<\xA5\xA5\xF5\x14a\x02\xF9W\x80cK\xD2n\t\x14a\x03\x1BW\x80cT\x01\xED'\x14a\x03JW__\xFD[\x80c\x04\x91\xB4\x1C\x14a\x02\"W\x80c\x08s$a\x14a\x02WW\x80c\x1F\x9Bt\xE0\x14a\x02xW\x80c \xB6b\x98\x14a\x02\xA3W[__\xFD[a\x02Da\x0206`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x01` R`@\x90 T\x90V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02ja\x02e6`\x04a.\xCAV[a\x06\x88V[`@Qa\x02N\x92\x91\x90a.\xF2V[a\x02\x8Ba\x02\x866`\x04a/(V[a\x06\xCDV[`@Q`\x01`\x01``\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x02\xB6a\x02\xB16`\x04a/\x9DV[a\x06\xEFV[\0[a\x02\xCBa\x02\xC66`\x04a0XV[a\x08\x8DV[`@Qa\x02N\x92\x91\x90a0\xF2V[a\x02\xECa\x02\xE76`\x04a1\x16V[a\n\x15V[`@Qa\x02N\x91\x90a1@V[a\x02Da\x03\x076`\x04a.\xB1V[`\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[a\x02Da\x03)6`\x04a1\x16V[_\x91\x82R`\x02` \x90\x81R`@\x80\x84 `\xFF\x93\x90\x93\x16\x84R\x91\x90R\x90 T\x90V[a\x02\x8Ba\x03X6`\x04a1\x16V[a\n\xB2V[a\x02Dg\r\xE0\xB6\xB3\xA7d\0\0\x81V[a\x02\xB6a\x03z6`\x04a2GV[a\n\xCAV[a\x03\xA1a\x03\x8D6`\x04a.\xB1V[`\x05` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Qa\x02N\x91\x90a3\x03V[a\x03\xD5\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[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02NV[a\x04\0a\x03\xFB6`\x04a3\x8EV[a\x10\x08V[`@Qa\x02N\x91\x90a4`V[a\x03\xD5\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\xB6a\x04B6`\x04a5DV[a\x11cV[a\x04O` \x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x04ta\x04o6`\x04a5\xAEV[a\x12IV[`@Qa\x02N\x91\x90a5\xFEV[a\x04\xA6a\x04\x8F6`\x04a.\xB1V[`\x06` R_\x90\x81R`@\x90 Tc\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02NV[a\x03\xD5a\x04\xC96`\x04a.\xCAV[a\x13\xEFV[a\x04\xE1a\x04\xDC6`\x04a6;V[a\x14#V[`@Qa\x02N\x91\x90a6kV[a\x05\x01a\x04\xFC6`\x04a.\xCAV[a\x14\xB9V[`@\x80Q\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x92\x83\x01Q`\x01`\x01``\x1B\x03\x16\x92\x81\x01\x92\x90\x92R\x01a\x02NV[a\x04\xE1a\x05<6`\x04a.\xCAV[a\x150V[a\x02\xB6a\x05O6`\x04a6\xA5V[a\x15\xBDV[a\x02\xB6a\x05b6`\x04a6\xCDV[a\x15\xDEV[a\x02\x8Ba\x05u6`\x04a.\xB1V[_` \x81\x90R\x90\x81R`@\x90 T`\x01`\x01``\x1B\x03\x16\x81V[a\x02\xB6a\x05\x9D6`\x04a6\xFBV[a\x16AV[a\x02\x8Ba\x05\xB06`\x04a7EV[a\x18\xB1V[a\x03\xD5\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\xB6a\x05\xEA6`\x04a7\x81V[a\x19-V[a\x02\x8Ba\x05\xFD6`\x04a.\xB1V[a\x1A\x1FV[a\x04\xA6a\x06\x106`\x04a7\xEDV[a\x1ApV[a\x03\xD5\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\xB6a\x06J6`\x04a8*V[a\x1A\x84V[a\x02\x8Ba\x06]6`\x04a8TV[a\x1A\xA0V[a\x04\xE1a\x06p6`\x04a1\x16V[a\x1B3V[a\x02\x8Ba\x06\x836`\x04a7\xEDV[a\x1C!V[`\x03` R\x81_R`@_ \x81\x81T\x81\x10a\x06\xA1W_\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\xD8\x81a\x1C\x80V[_a\x06\xE3\x85\x85a\x1C\xB2V[P\x92PP[P\x92\x91PPV[a\x06\xF7a\x1D]V[\x84a\x07\x01\x81a\x1C\x80V[\x83\x80a\x07 W`@Qcyl\xC5%`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82\x81\x14a\x07@W`@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\x08\x82W\x85\x85\x82\x81\x81\x10a\x07mWa\x07ma8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x07\x82\x91\x90a8\xA9V[\x82\x89\x89\x84\x81\x81\x10a\x07\x95Wa\x07\x95a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x07\xACWa\x07\xACa8\x95V[\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\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x83\x8A\x8A\x85\x81\x81\x10a\x08\x12Wa\x08\x12a8\x95V[\x90P` \x02\x015\x81T\x81\x10a\x08)Wa\x08)a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x88\x88\x85\x81\x81\x10a\x08OWa\x08Oa8\x95V[\x90P` \x02\x01` \x81\x01\x90a\x08d\x91\x90a8\xA9V[`@Qa\x08r\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a\x07SV[PPPPPPPPPV[``\x80a\x08\x98a\x1E\x10V[_\x83`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xB1Wa\x08\xB1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x08\xDAW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84`\x01`\x01`@\x1B\x03\x81\x11\x15a\x08\xF6Wa\x08\xF6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\t\x1FW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x85\x81\x10\x15a\n\x07W_\x87\x87\x83\x81\x81\x10a\t?Wa\t?a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\tT\x90P\x81a\x1C\x80V[__a\t`\x83\x8Da\x1C\xB2V[\x91P\x91P\x80a\t\x82W`@Qc \x7F\x13\xE3`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\t\x8E\x8C\x85\x85a\x1EYV[\x90P\x82\x87\x86\x81Q\x81\x10a\t\xA3Wa\t\xA3a8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPPa\t\xCD\x84\x82a \xD2V[\x86\x86\x81Q\x81\x10a\t\xDFWa\t\xDFa8\x95V[`\x01`\x01``\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01RPP`\x01\x90\x92\x01\x91Pa\t$\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\n\xA5W_\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\nMV[PPPP\x90P[\x92\x91PPV[__a\n\xBE\x84\x84a\x1B3V[`@\x01Q\x94\x93PPPPV[a\n\xD2a\x1D]V[\x81a\n\xDC\x81a\x1C\x80V[\x81Q\x80a\n\xFCW`@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\x0B1Wa\x0B1a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0BZW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0EUW\x83\x87\x82\x81Q\x81\x10a\x0BzWa\x0Bza8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0B\x92Wa\x0B\x92a8\x95V[_\x91\x82R` \x90\x91 \x01T\x82Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90\x83\x90\x83\x90\x81\x10a\x0B\xBDWa\x0B\xBDa8\x95V[` \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\x0C\x15Wa\x0C\x15a8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C-Wa\x0C-a8\x95V[_\x91\x82R` \x91\x82\x90 \x01T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x87`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x89\x84\x81Q\x81\x10a\x0C\x8AWa\x0C\x8Aa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\x0C\xA2Wa\x0C\xA2a8\x95V[_\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\xE1\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\x0C\xF1Wa\x0C\xF1a8\x95V[\x90_R` _ \x01\x84\x88\x83\x81Q\x81\x10a\r\x0CWa\r\x0Ca8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r$Wa\r$a8\x95V[_\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\rvWa\rva8\xE9V[_\x82\x81R` \x81 \x82\x01_\x19\x90\x81\x01\x91\x90\x91U\x01\x90U\x82T\x83\x90a\r\x9C\x90`\x01\x90a8\xD6V[\x81T\x81\x10a\r\xACWa\r\xACa8\x95V[\x90_R` _ \x01_\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`\xA0\x1B\x03\x16\x83\x88\x83\x81Q\x81\x10a\r\xDAWa\r\xDAa8\x95V[` \x02` \x01\x01Q\x81T\x81\x10a\r\xF2Wa\r\xF2a8\x95V[\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\x0E-Wa\x0E-a8\xE9V[_\x82\x81R` \x90 \x81\x01_\x19\x90\x81\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U\x01\x90U`\x01\x01a\x0B_V[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\x0E\xB3W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xD7\x91\x90a8\xFDV[`@\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\x0F<\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0FWW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0F{\x91\x90a9>V[\x15a\x0F\xFEW`@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\x0F\xD0\x90\x84\x90\x8C\x90\x87\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0F\xE7W__\xFD[PZ\xF1\x15\x80\x15a\x0F\xF9W=__>=_\xFD[PPPP[PPPPPPPPV[``a\x10\x12a\x1E\x10V[_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x10,Wa\x10,a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x10UW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90Pa\x10a\x83a\x1C\x80V[__a\x10m\x85\x88a\"CV[\x90\x92P\x90P_\x80[\x88Q\x81\x10\x15a\x11IW\x82\x81\x81Q\x81\x10a\x10\x90Wa\x10\x90a8\x95V[` \x02` \x01\x01Qa\x10\xF4W_\x84\x82\x81Q\x81\x10a\x10\xAFWa\x10\xAFa8\x95V[` \x02` \x01\x01\x90`\x01`\x01``\x1B\x03\x16\x90\x81`\x01`\x01``\x1B\x03\x16\x81RPP`\x01\x85\x82\x81Q\x81\x10a\x10\xE3Wa\x10\xE3a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R[_a\x112\x89\x83\x81Q\x81\x10a\x11\nWa\x11\na8\x95V[` \x02` \x01\x01Q\x89\x87\x85\x81Q\x81\x10a\x11%Wa\x11%a8\x95V[` \x02` \x01\x01Qa\x1EYV[\x90Pa\x11>\x81\x84a9\xC7V[\x92PP`\x01\x01a\x10uV[Pa\x11T\x86\x82a \xD2V[P\x92\x93PPPP[\x93\x92PPPV[a\x11ka\x1E\x10V[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x11\x9BW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xA5\x83\x82a%\xE9V[a\x11\xAF\x83\x83a(\xDAV[a\x11\xB9\x83_a)BV[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\x12dWa\x12da1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x12\x8DW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x13\xE6W_\x85\x85\x83\x81\x81\x10a\x12\xADWa\x12\xADa8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x12\xC2\x90P\x81a\x1C\x80V[`\xFF\x81\x16_\x90\x81R`\x01` R`@\x81 \x80Tc\xFF\xFF\xFF\xFF\x8A\x16\x92\x90a\x12\xEAWa\x12\xEAa8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11\x15a\x13\x1AW`@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\xDBW`\xFF\x83\x16_\x90\x81R`\x01` \x81\x90R`@\x90\x91 c\xFF\xFF\xFF\xFF\x8B\x16\x91a\x13\\\x84\x86a8\xD6V[a\x13f\x91\x90a8\xD6V[\x81T\x81\x10a\x13vWa\x13va8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a\x13\xD3W`\x01a\x13\x98\x82\x84a8\xD6V[a\x13\xA2\x91\x90a8\xD6V[\x85\x85\x81Q\x81\x10a\x13\xB4Wa\x13\xB4a8\x95V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x13\xDBV[`\x01\x01a\x13.V[PPP`\x01\x01a\x12\x92V[P\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x14\x08W_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x91P\x82\x90PV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R\x85\x82R`\x02\x81R\x83\x82 `\xFF\x88\x16\x83R\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x14gWa\x14ga8\x95V[_\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\xEFWa\x14\xEFa8\x95V[_\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[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x01\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x15lWa\x15la8\x95V[_\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\x15\xC5a\x1D]V[\x81a\x15\xCF\x81a\x1C\x80V[a\x15\xD9\x83\x83a(\xDAV[PPPV[a\x15\xE6a\x1E\x10V[_[\x81\x81\x10\x15a\x16;W_\x83\x83\x83\x81\x81\x10a\x16\x03Wa\x16\x03a8\x95V[\x91\x90\x91\x015`\xF8\x1C\x91Pa\x16\x18\x90P\x81a\x1C\x80V[_a\x16$\x86\x83_a\x1EYV[\x90Pa\x160\x82\x82a \xD2V[PPP`\x01\x01a\x15\xE8V[PPPPV[a\x16Ia\x1D]V[\x81a\x16S\x81a\x1C\x80V[a\x16]\x83\x83a%\xE9V[_\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\x16\xBFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xE3\x91\x90a8\xFDV[`@\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\x17H\x91`\x04\x01a9\x18V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\x87\x91\x90a9>V[\x15a\x18\xAAW_\x82`\x01`\x01`@\x1B\x03\x81\x11\x15a\x17\xA5Wa\x17\xA5a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x17\xCEW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x83\x81\x10\x15a\x18*W\x85\x81\x81Q\x81\x10a\x17\xEDWa\x17\xEDa8\x95V[` \x02` \x01\x01Q_\x01Q\x82\x82\x81Q\x81\x10a\x18\nWa\x18\na8\x95V[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a\x17\xD3V[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{\x90\x85\x90\x8A\x90\x86\x90`\x04\x01a9]V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x18\x92W__\xFD[PZ\xF1\x15\x80\x15a\x18\xA4W=__>=_\xFD[PPPPP[PPPPPV[`\xFF\x83\x16_\x90\x81R`\x01` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x18\xD7Wa\x18\xD7a8\x95V[_\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\n\xBE\x81\x85a)\xAFV[a\x195a\x1E\x10V[`\xFF\x84\x16_\x90\x81R`\x01` R`@\x90 T\x15a\x19eW`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19o\x84\x82a%\xE9V[a\x19y\x84\x84a(\xDAV[a\x19\x84\x84`\x01a)BV[a\x19\x8E\x84\x83a*&V[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\x1A?\x91a8\xD6V[\x81T\x81\x10a\x1AOWa\x1AOa8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x92\x91PPV[_a\x1A|\x84\x84\x84a+\x83V[\x94\x93PPPPV[a\x1A\x8Ca\x1D]V[\x81a\x1A\x96\x81a\x1C\x80V[a\x15\xD9\x83\x83a*&V[_\x82\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x1A\xD0Wa\x1A\xD0a8\x95V[_\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\x1B&\x81\x86a)\xAFV[`@\x01Q\x95\x94PPPPPV[`@\x80Q``\x80\x82\x01\x83R_\x80\x83R` \x80\x84\x01\x82\x90R\x83\x85\x01\x82\x90R\x86\x82R`\x02\x81R\x84\x82 `\xFF\x87\x16\x83R\x81R\x84\x82 T\x85Q\x93\x84\x01\x86R\x82\x84R\x90\x83\x01\x82\x90R\x93\x82\x01\x81\x90R\x91\x92\x91\x82\x90\x03a\x1B\x8FW\x91Pa\n\xAC\x90PV[_\x85\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x88\x16\x84R\x90\x91R\x90 a\x1B\xB5`\x01\x84a8\xD6V[\x81T\x81\x10a\x1B\xC5Wa\x1B\xC5a8\x95V[_\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\n\xAC\x91PPV[PP\x92\x91PPV[_\x83\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x86\x16\x84R\x90\x91R\x81 a\x1CG\x85\x85\x85a+\x83V[c\xFF\xFF\xFF\xFF\x16\x81T\x81\x10a\x1C]Wa\x1C]a8\x95V[_\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\xAFW`@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\x1C\xEAWa\x1C\xEAa8\x95V[` \x02` \x01\x01\x90`\x01`\x01`\xA0\x1B\x03\x16\x90\x81`\x01`\x01`\xA0\x1B\x03\x16\x81RPP__a\x1D\x16\x87\x84a\"CV[\x91P\x91P\x81_\x81Q\x81\x10a\x1D,Wa\x1D,a8\x95V[` \x02` \x01\x01Q\x81_\x81Q\x81\x10a\x1DFWa\x1DFa8\x95V[` \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\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1D\xDD\x91\x90a8\xFDV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1E\x0EW`@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\x1E\x0EW`@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\x1F\x1DW_\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 xV[_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x81 a\x1FC`\x01\x84a8\xD6V[\x81T\x81\x10a\x1FSWa\x1FSa8\x95V[_\x91\x82R` \x90\x91 \x01\x80T`\x01`\x01``\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x94P\x90\x91P\x85\x16\x83\x03a\x1F\x89W_\x93PPPPa\x11\\V[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a\x1F\xC1W\x80T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x87\x16\x02\x17\x81Ua vV[\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 \xC8\x82\x85a,\xEAV[\x96\x95PPPPPPV[`\xFF\x82\x16_\x90\x81R`\x01` \x81\x90R`@\x82 \x80T\x91\x83\x91\x90a \xF5\x90\x84a8\xD6V[\x81T\x81\x10a!\x05Wa!\x05a8\x95V[\x90_R` _ \x01\x90P\x83_\x03a!0WT`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x91Pa\n\xAC\x90PV[\x80T_\x90a!N\x90`\x01`@\x1B\x90\x04`\x01`\x01``\x1B\x03\x16\x86a-\x01V[\x82T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16\x91\x16\x03a!\x89W\x81T`\x01`@\x1B`\x01`\xA0\x1B\x03\x19\x16`\x01`@\x1B`\x01`\x01``\x1B\x03\x83\x16\x02\x17\x82Ua\":V[\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\"`Wa\"`a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\x89W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_\x84Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\"\xA6Wa\"\xA6a1\xB9V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\"\xCFW\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_a\"\xEB\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#kW_\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#\x1DV[PPPP\x90P```\x01\x80\x81\x11\x15a#\x85Wa#\x85a2\xEFV[`\xFF\x80\x8B\x16_\x90\x81R`\x05` R`@\x90 T\x16`\x01\x81\x11\x15a#\xAAWa#\xAAa2\xEFV[\x03a#\xC0Wa#\xB9\x89\x89a-.V[\x90Pa$cV[`\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$\x1F\x92\x8D\x92\x91\x01a:[V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a$9W=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra$`\x91\x90\x81\x01\x90a:\x7FV[\x90P[_[\x88Q\x81\x10\x15a%\xD9W_[\x84\x81\x10\x15a%iW_\x84\x82\x81Q\x81\x10a$\x8BWa$\x8Ba8\x95V[` \x02` \x01\x01Q\x90P_\x84\x84\x81Q\x81\x10a$\xA8Wa$\xA8a8\x95V[` \x02` \x01\x01Q\x83\x81Q\x81\x10a$\xC1Wa$\xC1a8\x95V[` \x02` \x01\x01Q\x11\x15a%`Wg\r\xE0\xB6\xB3\xA7d\0\0\x81` \x01Q`\x01`\x01``\x1B\x03\x16\x85\x85\x81Q\x81\x10a$\xF8Wa$\xF8a8\x95V[` \x02` \x01\x01Q\x84\x81Q\x81\x10a%\x11Wa%\x11a8\x95V[` \x02` \x01\x01Qa%#\x91\x90a;\x8BV[a%-\x91\x90a;\xA2V[\x88\x84\x81Q\x81\x10a%?Wa%?a8\x95V[` \x02` \x01\x01\x81\x81Qa%S\x91\x90a;\xC1V[`\x01`\x01``\x1B\x03\x16\x90RP[P`\x01\x01a$pV[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%\x9CWa%\x9Ca8\x95V[` \x02` \x01\x01Q`\x01`\x01``\x1B\x03\x16\x10\x15\x85\x82\x81Q\x81\x10a%\xC1Wa%\xC1a8\x95V[\x91\x15\x15` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a$eV[P\x93\x98\x92\x97P\x91\x95PPPPPPV[_\x81Q\x11a&\nW`@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&,\x83\x83a;\xE0V[\x11\x15a&KW`@QcCqJ\xFD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x82\x81\x10\x15a\x18\xAAW_[a&a\x82\x84a;\xE0V[\x81\x10\x15a&\xF0W\x84\x82\x81Q\x81\x10a&zWa&za8\x95V[` \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&\xB6Wa&\xB6a8\x95V[_\x91\x82R` \x90\x91 \x01T`\x01`\x01`\xA0\x1B\x03\x16\x03a&\xE8W`@Qc{t4\x0B`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a&WV[P_\x84\x82\x81Q\x81\x10a'\x04Wa'\x04a8\x95V[` \x02` \x01\x01Q` \x01Q`\x01`\x01``\x1B\x03\x16\x11a'7W`@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'\\Wa'\\a8\x95V[` \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'\xC0Wa'\xC0a8\x95V[` \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(6Wa(6a8\x95V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQ`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\x01`@Q\x80\x91\x03\x90\xA2\x84`\xFF\x16\x7F\x11\xA5d\x13\"\xDA\x1D\xFFV\xA4\xB6n\xAA\xC3\x1F\xFAFR\x95\xEC\xE9\x07\xCD\x1647y;M\0\x9Au\x85\x83\x81Q\x81\x10a(\x93Wa(\x93a8\x95V[` \x02` \x01\x01Q_\x01Q\x86\x84\x81Q\x81\x10a(\xB0Wa(\xB0a8\x95V[` \x02` \x01\x01Q` \x01Q`@Qa(\xCA\x92\x91\x90a.\xF2V[`@Q\x80\x91\x03\x90\xA2`\x01\x01a&MV[`\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)oWa)oa2\xEFV[\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)\xA3\x91\x90a3\x03V[`@Q\x80\x91\x03\x90\xA1PPV[\x81_\x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10\x15a)\xDFW`@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*\x05WP\x81` \x01Qc\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x10[a*\"W`@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*MWa*Ma2\xEFV[\x14a*kW`@Qc\xA3\xBE%\x83`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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)\x81\xEBw`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a*\xC7W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\xEB\x91\x90a;\xF3V[c\xFF\xFF\xFF\xFF\x16\x81c\xFF\xFF\xFF\xFF\x16\x11\x15a+\x17W`@Qc\x0B\xD4A\xB9`\xE2\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,!W_\x86\x81R`\x02` \x90\x81R`@\x80\x83 `\xFF\x89\x16\x84R\x90\x91R\x90 c\xFF\xFF\xFF\xFF\x85\x16\x90a+\xD5`\x01\x84a8\xD6V[\x81T\x81\x10a+\xE5Wa+\xE5a8\x95V[_\x91\x82R` \x90\x91 \x01Tc\xFF\xFF\xFF\xFF\x16\x11a,\x0FWa,\x06`\x01\x82a8\xD6V[\x92PPPa\x11\\V[\x80a,\x19\x81a<\x0EV[\x91PPa+\xA1V[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\\`\x01`\x01``\x1B\x03\x80\x85\x16\x90\x84\x16a<#V[__\x82\x12\x15a-$Wa-\x13\x82a<BV[a-\x1D\x90\x84a<\\V[\x90Pa\n\xACV[a-\x1D\x82\x84a;\xC1V[`\xFF\x82\x16_\x90\x81R`\x06` R`@\x81 T``\x91\x90a-T\x90c\xFF\xFF\xFF\xFF\x16Ca;\xE0V[\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-\xEDW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a.\x11\x91\x90a8\xFDV[`\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.[\x93\x92\x8A\x92\x91\x89\x91\x01a<{V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a.uW=__>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\":\x91\x90\x81\x01\x90a:\x7FV[\x805`\xFF\x81\x16\x81\x14a.\xACW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a.\xC1W__\xFD[a\x11\\\x82a.\x9CV[__`@\x83\x85\x03\x12\x15a.\xDBW__\xFD[a.\xE4\x83a.\x9CV[\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\xAFW__\xFD[__`@\x83\x85\x03\x12\x15a/9W__\xFD[a/B\x83a.\x9CV[\x91P` \x83\x015a/R\x81a/\x14V[\x80\x91PP\x92P\x92\x90PV[__\x83`\x1F\x84\x01\x12a/mW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x83W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x1DVW__\xFD[_____``\x86\x88\x03\x12\x15a/\xB1W__\xFD[a/\xBA\x86a.\x9CV[\x94P` \x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD4W__\xFD[a/\xE0\x88\x82\x89\x01a/]V[\x90\x95P\x93PP`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xFEW__\xFD[a0\n\x88\x82\x89\x01a/]V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[__\x83`\x1F\x84\x01\x12a0+W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a0AW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x1DVW__\xFD[____``\x85\x87\x03\x12\x15a0kW__\xFD[\x845a0v\x81a/\x14V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x97W__\xFD[a0\xA3\x87\x82\x88\x01a0\x1BV[\x95\x98\x94\x97P\x95PPPPV[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01``\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a0\xC1V[P\x93\x94\x93PPPPV[`@\x81R_a1\x04`@\x83\x01\x85a0\xAFV[\x82\x81\x03` \x84\x01Ra\":\x81\x85a0\xAFV[__`@\x83\x85\x03\x12\x15a1'W__\xFD[\x825\x91Pa17` \x84\x01a.\x9CV[\x90P\x92P\x92\x90PV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEWa1\x98\x83\x85Qc\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[` \x93\x90\x93\x01\x92``\x92\x90\x92\x01\x91`\x01\x01a1YV[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\x15a1\xEFWa1\xEFa1\xB9V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a2\x1DWa2\x1Da1\xB9V[`@R\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x11\x15a2=Wa2=a1\xB9V[P`\x05\x1B` \x01\x90V[__`@\x83\x85\x03\x12\x15a2XW__\xFD[a2a\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2{W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a2\x8BW__\xFD[\x805a2\x9Ea2\x99\x82a2%V[a1\xF5V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x87\x83\x11\x15a2\xBFW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xE1W\x835\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a2\xC6V[\x80\x94PPPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x02\x83\x10a3#WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[_\x82`\x1F\x83\x01\x12a38W__\xFD[\x815a3Fa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a3gW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W\x805\x83R` \x92\x83\x01\x92\x01a3lV[P\x95\x94PPPPPV[___``\x84\x86\x03\x12\x15a3\xA0W__\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xB5W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a3\xC5W__\xFD[\x805a3\xD3a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x88\x83\x11\x15a3\xF4W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\x1FW\x835a4\x0E\x81a/\x14V[\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a3\xFBV[\x95PPPP` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a4<W__\xFD[a4H\x86\x82\x87\x01a3)V[\x92PPa4W`@\x85\x01a.\x9CV[\x90P\x92P\x92P\x92V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a1\xAEW\x83Q\x15\x15\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a4yV[\x805`\x01`\x01``\x1B\x03\x81\x16\x81\x14a.\xACW__\xFD[_\x82`\x1F\x83\x01\x12a4\xBEW__\xFD[\x815a4\xCCa2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x06\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a4\xEDW__\xFD[` \x85\x01[\x83\x81\x10\x15a3\x84W`@\x81\x88\x03\x12\x15a5\tW__\xFD[a5\x11a1\xCDV[\x815a5\x1C\x81a/\x14V[\x81Ra5*` \x83\x01a4\x99V[` \x82\x01R\x80\x84RP` \x83\x01\x92P`@\x81\x01\x90Pa4\xF2V[___``\x84\x86\x03\x12\x15a5VW__\xFD[a5_\x84a.\x9CV[\x92Pa5m` \x85\x01a4\x99V[\x91P`@\x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\x87W__\xFD[a5\x93\x86\x82\x87\x01a4\xAFV[\x91PP\x92P\x92P\x92V[c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1C\xAFW__\xFD[___`@\x84\x86\x03\x12\x15a5\xC0W__\xFD[\x835a5\xCB\x81a5\x9DV[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[a5\xF1\x86\x82\x87\x01a0\x1BV[\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\x15a1\xAEW\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a6\x17V[___``\x84\x86\x03\x12\x15a6MW__\xFD[a6V\x84a.\x9CV[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[``\x81\x01a\n\xAC\x82\x84c\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[__`@\x83\x85\x03\x12\x15a6\xB6W__\xFD[a6\xBF\x83a.\x9CV[\x91Pa17` \x84\x01a4\x99V[___`@\x84\x86\x03\x12\x15a6\xDFW__\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a5\xE5W__\xFD[__`@\x83\x85\x03\x12\x15a7\x0CW__\xFD[a7\x15\x83a.\x9CV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7/W__\xFD[a7;\x85\x82\x86\x01a4\xAFV[\x91PP\x92P\x92\x90PV[___``\x84\x86\x03\x12\x15a7WW__\xFD[a7`\x84a.\x9CV[\x92P` \x84\x015a7p\x81a5\x9DV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[____`\x80\x85\x87\x03\x12\x15a7\x94W__\xFD[a7\x9D\x85a.\x9CV[\x93Pa7\xAB` \x86\x01a4\x99V[\x92P`@\x85\x015a7\xBB\x81a5\x9DV[\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a7\xD5W__\xFD[a7\xE1\x87\x82\x88\x01a4\xAFV[\x91PP\x92\x95\x91\x94P\x92PV[___``\x84\x86\x03\x12\x15a7\xFFW__\xFD[\x835\x92Pa8\x0F` \x85\x01a.\x9CV[\x91P`@\x84\x015a8\x1F\x81a5\x9DV[\x80\x91PP\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a8;W__\xFD[a8D\x83a.\x9CV[\x91P` \x83\x015a/R\x81a5\x9DV[____`\x80\x85\x87\x03\x12\x15a8gW__\xFD[a8p\x85a.\x9CV[\x93P` \x85\x015a8\x80\x81a5\x9DV[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a8\xB9W__\xFD[a\x11\\\x82a4\x99V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a9\rW__\xFD[\x81Qa\x11\\\x81a/\x14V[\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x83\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`@\x81\x01a\n\xACV[_` \x82\x84\x03\x12\x15a9NW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x11\\W__\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\x15a9\xBAW\x83Q`\x01`\x01`\xA0\x1B\x03\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a9\x93V[P\x90\x97\x96PPPPPPPV[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a\x1C\x19Wa\x1C\x19a8\xC2V[_\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01_[\x82\x81\x10\x15a0\xE8W\x81Q`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a9\xF8V[_\x81T\x80\x84R` \x84\x01\x93P\x82_R` _ _[\x82\x81\x10\x15a0\xE8W\x81T`\x01`\x01`\xA0\x1B\x03\x16\x86R` \x90\x95\x01\x94`\x01\x91\x82\x01\x91\x01a:4V[`@\x81R_a:m`@\x83\x01\x85a9\xE6V[\x82\x81\x03` \x84\x01Ra\":\x81\x85a:\x1FV[_` \x82\x84\x03\x12\x15a:\x8FW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a:\xA4W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a:\xB4W__\xFD[\x80Qa:\xC2a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a:\xE3W__\xFD[` \x84\x01[\x83\x81\x10\x15a;\x80W\x80Q`\x01`\x01`@\x1B\x03\x81\x11\x15a;\x05W__\xFD[\x85\x01`?\x81\x01\x89\x13a;\x15W__\xFD[` \x81\x01Qa;&a2\x99\x82a2%V[\x80\x82\x82R` \x82\x01\x91P` \x80\x84`\x05\x1B\x86\x01\x01\x01\x92P\x8B\x83\x11\x15a;IW__\xFD[`@\x84\x01\x93P[\x82\x84\x10\x15a;kW\x83Q\x82R` \x93\x84\x01\x93\x90\x91\x01\x90a;PV[\x86RPP` \x93\x84\x01\x93\x91\x90\x91\x01\x90Pa:\xE8V[P\x96\x95PPPPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xACWa\n\xACa8\xC2V[_\x82a;\xBCWcNH{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\n\xACWa\n\xACa8\xC2V[\x80\x82\x01\x80\x82\x11\x15a\n\xACWa\n\xACa8\xC2V[_` \x82\x84\x03\x12\x15a<\x03W__\xFD[\x81Qa\x11\\\x81a5\x9DV[_\x81a<\x1CWa<\x1Ca8\xC2V[P_\x19\x01\x90V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a\x06\xE8Wa\x06\xE8a8\xC2V[_`\x01`\xFF\x1B\x82\x01a<VWa<Va8\xC2V[P_\x03\x90V[`\x01`\x01``\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n\xACWa\n\xACa8\xC2V[\x84Q`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x80\x86\x01Qc\xFF\xFF\xFF\xFF\x16\x90\x82\x01R`\xA0`@\x82\x01R_a<\xAD`\xA0\x83\x01\x86a9\xE6V[\x82\x81\x03``\x84\x01Ra<\xBF\x81\x86a:\x1FV[\x91PPc\xFF\xFF\xFF\xFF\x83\x16`\x80\x83\x01R\x95\x94PPPPPV\xFE\xA2dipfsX\"\x12 \xAD\xD2\x1B\xE5\xD1\x81\xF1\xA3\xBA/\xA5\xEF\xFF.oD\x92\x89gw\xC4QlD|\xACU7\xFE\x9A\xA6\xC5dsolcC\0\x08\x1B\x003",
2055    );
2056    #[derive(serde::Serialize, serde::Deserialize)]
2057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2058    /**Custom error with signature `BelowMinimumStakeRequirement()` and selector `0x40fe27c6`.
2059```solidity
2060error BelowMinimumStakeRequirement();
2061```*/
2062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2063    #[derive(Clone)]
2064    pub struct BelowMinimumStakeRequirement;
2065    #[allow(
2066        non_camel_case_types,
2067        non_snake_case,
2068        clippy::pub_underscore_fields,
2069        clippy::style
2070    )]
2071    const _: () = {
2072        use alloy::sol_types as alloy_sol_types;
2073        #[doc(hidden)]
2074        type UnderlyingSolTuple<'a> = ();
2075        #[doc(hidden)]
2076        type UnderlyingRustTuple<'a> = ();
2077        #[cfg(test)]
2078        #[allow(dead_code, unreachable_patterns)]
2079        fn _type_assertion(
2080            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2081        ) {
2082            match _t {
2083                alloy_sol_types::private::AssertTypeEq::<
2084                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2085                >(_) => {}
2086            }
2087        }
2088        #[automatically_derived]
2089        #[doc(hidden)]
2090        impl ::core::convert::From<BelowMinimumStakeRequirement>
2091        for UnderlyingRustTuple<'_> {
2092            fn from(value: BelowMinimumStakeRequirement) -> Self {
2093                ()
2094            }
2095        }
2096        #[automatically_derived]
2097        #[doc(hidden)]
2098        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2099        for BelowMinimumStakeRequirement {
2100            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2101                Self
2102            }
2103        }
2104        #[automatically_derived]
2105        impl alloy_sol_types::SolError for BelowMinimumStakeRequirement {
2106            type Parameters<'a> = UnderlyingSolTuple<'a>;
2107            type Token<'a> = <Self::Parameters<
2108                'a,
2109            > as alloy_sol_types::SolType>::Token<'a>;
2110            const SIGNATURE: &'static str = "BelowMinimumStakeRequirement()";
2111            const SELECTOR: [u8; 4] = [64u8, 254u8, 39u8, 198u8];
2112            #[inline]
2113            fn new<'a>(
2114                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2115            ) -> Self {
2116                tuple.into()
2117            }
2118            #[inline]
2119            fn tokenize(&self) -> Self::Token<'_> {
2120                ()
2121            }
2122            #[inline]
2123            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2124                <Self::Parameters<
2125                    '_,
2126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2127                    .map(Self::new)
2128            }
2129        }
2130    };
2131    #[derive(serde::Serialize, serde::Deserialize)]
2132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2133    /**Custom error with signature `EmptyStakeHistory()` and selector `0xcc646573`.
2134```solidity
2135error EmptyStakeHistory();
2136```*/
2137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2138    #[derive(Clone)]
2139    pub struct EmptyStakeHistory;
2140    #[allow(
2141        non_camel_case_types,
2142        non_snake_case,
2143        clippy::pub_underscore_fields,
2144        clippy::style
2145    )]
2146    const _: () = {
2147        use alloy::sol_types as alloy_sol_types;
2148        #[doc(hidden)]
2149        type UnderlyingSolTuple<'a> = ();
2150        #[doc(hidden)]
2151        type UnderlyingRustTuple<'a> = ();
2152        #[cfg(test)]
2153        #[allow(dead_code, unreachable_patterns)]
2154        fn _type_assertion(
2155            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2156        ) {
2157            match _t {
2158                alloy_sol_types::private::AssertTypeEq::<
2159                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2160                >(_) => {}
2161            }
2162        }
2163        #[automatically_derived]
2164        #[doc(hidden)]
2165        impl ::core::convert::From<EmptyStakeHistory> for UnderlyingRustTuple<'_> {
2166            fn from(value: EmptyStakeHistory) -> Self {
2167                ()
2168            }
2169        }
2170        #[automatically_derived]
2171        #[doc(hidden)]
2172        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EmptyStakeHistory {
2173            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2174                Self
2175            }
2176        }
2177        #[automatically_derived]
2178        impl alloy_sol_types::SolError for EmptyStakeHistory {
2179            type Parameters<'a> = UnderlyingSolTuple<'a>;
2180            type Token<'a> = <Self::Parameters<
2181                'a,
2182            > as alloy_sol_types::SolType>::Token<'a>;
2183            const SIGNATURE: &'static str = "EmptyStakeHistory()";
2184            const SELECTOR: [u8; 4] = [204u8, 100u8, 101u8, 115u8];
2185            #[inline]
2186            fn new<'a>(
2187                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2188            ) -> Self {
2189                tuple.into()
2190            }
2191            #[inline]
2192            fn tokenize(&self) -> Self::Token<'_> {
2193                ()
2194            }
2195            #[inline]
2196            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2197                <Self::Parameters<
2198                    '_,
2199                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2200                    .map(Self::new)
2201            }
2202        }
2203    };
2204    #[derive(serde::Serialize, serde::Deserialize)]
2205    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2206    /**Custom error with signature `InputArrayLengthMismatch()` and selector `0x43714afd`.
2207```solidity
2208error InputArrayLengthMismatch();
2209```*/
2210    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2211    #[derive(Clone)]
2212    pub struct InputArrayLengthMismatch;
2213    #[allow(
2214        non_camel_case_types,
2215        non_snake_case,
2216        clippy::pub_underscore_fields,
2217        clippy::style
2218    )]
2219    const _: () = {
2220        use alloy::sol_types as alloy_sol_types;
2221        #[doc(hidden)]
2222        type UnderlyingSolTuple<'a> = ();
2223        #[doc(hidden)]
2224        type UnderlyingRustTuple<'a> = ();
2225        #[cfg(test)]
2226        #[allow(dead_code, unreachable_patterns)]
2227        fn _type_assertion(
2228            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2229        ) {
2230            match _t {
2231                alloy_sol_types::private::AssertTypeEq::<
2232                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2233                >(_) => {}
2234            }
2235        }
2236        #[automatically_derived]
2237        #[doc(hidden)]
2238        impl ::core::convert::From<InputArrayLengthMismatch>
2239        for UnderlyingRustTuple<'_> {
2240            fn from(value: InputArrayLengthMismatch) -> Self {
2241                ()
2242            }
2243        }
2244        #[automatically_derived]
2245        #[doc(hidden)]
2246        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2247        for InputArrayLengthMismatch {
2248            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2249                Self
2250            }
2251        }
2252        #[automatically_derived]
2253        impl alloy_sol_types::SolError for InputArrayLengthMismatch {
2254            type Parameters<'a> = UnderlyingSolTuple<'a>;
2255            type Token<'a> = <Self::Parameters<
2256                'a,
2257            > as alloy_sol_types::SolType>::Token<'a>;
2258            const SIGNATURE: &'static str = "InputArrayLengthMismatch()";
2259            const SELECTOR: [u8; 4] = [67u8, 113u8, 74u8, 253u8];
2260            #[inline]
2261            fn new<'a>(
2262                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2263            ) -> Self {
2264                tuple.into()
2265            }
2266            #[inline]
2267            fn tokenize(&self) -> Self::Token<'_> {
2268                ()
2269            }
2270            #[inline]
2271            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2272                <Self::Parameters<
2273                    '_,
2274                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2275                    .map(Self::new)
2276            }
2277        }
2278    };
2279    #[derive(serde::Serialize, serde::Deserialize)]
2280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2281    /**Custom error with signature `InputArrayLengthZero()` and selector `0x796cc525`.
2282```solidity
2283error InputArrayLengthZero();
2284```*/
2285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2286    #[derive(Clone)]
2287    pub struct InputArrayLengthZero;
2288    #[allow(
2289        non_camel_case_types,
2290        non_snake_case,
2291        clippy::pub_underscore_fields,
2292        clippy::style
2293    )]
2294    const _: () = {
2295        use alloy::sol_types as alloy_sol_types;
2296        #[doc(hidden)]
2297        type UnderlyingSolTuple<'a> = ();
2298        #[doc(hidden)]
2299        type UnderlyingRustTuple<'a> = ();
2300        #[cfg(test)]
2301        #[allow(dead_code, unreachable_patterns)]
2302        fn _type_assertion(
2303            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2304        ) {
2305            match _t {
2306                alloy_sol_types::private::AssertTypeEq::<
2307                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2308                >(_) => {}
2309            }
2310        }
2311        #[automatically_derived]
2312        #[doc(hidden)]
2313        impl ::core::convert::From<InputArrayLengthZero> for UnderlyingRustTuple<'_> {
2314            fn from(value: InputArrayLengthZero) -> Self {
2315                ()
2316            }
2317        }
2318        #[automatically_derived]
2319        #[doc(hidden)]
2320        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputArrayLengthZero {
2321            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2322                Self
2323            }
2324        }
2325        #[automatically_derived]
2326        impl alloy_sol_types::SolError for InputArrayLengthZero {
2327            type Parameters<'a> = UnderlyingSolTuple<'a>;
2328            type Token<'a> = <Self::Parameters<
2329                'a,
2330            > as alloy_sol_types::SolType>::Token<'a>;
2331            const SIGNATURE: &'static str = "InputArrayLengthZero()";
2332            const SELECTOR: [u8; 4] = [121u8, 108u8, 197u8, 37u8];
2333            #[inline]
2334            fn new<'a>(
2335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2336            ) -> Self {
2337                tuple.into()
2338            }
2339            #[inline]
2340            fn tokenize(&self) -> Self::Token<'_> {
2341                ()
2342            }
2343            #[inline]
2344            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2345                <Self::Parameters<
2346                    '_,
2347                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2348                    .map(Self::new)
2349            }
2350        }
2351    };
2352    #[derive(serde::Serialize, serde::Deserialize)]
2353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2354    /**Custom error with signature `InputDuplicateStrategy()` and selector `0x7b74340b`.
2355```solidity
2356error InputDuplicateStrategy();
2357```*/
2358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2359    #[derive(Clone)]
2360    pub struct InputDuplicateStrategy;
2361    #[allow(
2362        non_camel_case_types,
2363        non_snake_case,
2364        clippy::pub_underscore_fields,
2365        clippy::style
2366    )]
2367    const _: () = {
2368        use alloy::sol_types as alloy_sol_types;
2369        #[doc(hidden)]
2370        type UnderlyingSolTuple<'a> = ();
2371        #[doc(hidden)]
2372        type UnderlyingRustTuple<'a> = ();
2373        #[cfg(test)]
2374        #[allow(dead_code, unreachable_patterns)]
2375        fn _type_assertion(
2376            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2377        ) {
2378            match _t {
2379                alloy_sol_types::private::AssertTypeEq::<
2380                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2381                >(_) => {}
2382            }
2383        }
2384        #[automatically_derived]
2385        #[doc(hidden)]
2386        impl ::core::convert::From<InputDuplicateStrategy> for UnderlyingRustTuple<'_> {
2387            fn from(value: InputDuplicateStrategy) -> Self {
2388                ()
2389            }
2390        }
2391        #[automatically_derived]
2392        #[doc(hidden)]
2393        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputDuplicateStrategy {
2394            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2395                Self
2396            }
2397        }
2398        #[automatically_derived]
2399        impl alloy_sol_types::SolError for InputDuplicateStrategy {
2400            type Parameters<'a> = UnderlyingSolTuple<'a>;
2401            type Token<'a> = <Self::Parameters<
2402                'a,
2403            > as alloy_sol_types::SolType>::Token<'a>;
2404            const SIGNATURE: &'static str = "InputDuplicateStrategy()";
2405            const SELECTOR: [u8; 4] = [123u8, 116u8, 52u8, 11u8];
2406            #[inline]
2407            fn new<'a>(
2408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2409            ) -> Self {
2410                tuple.into()
2411            }
2412            #[inline]
2413            fn tokenize(&self) -> Self::Token<'_> {
2414                ()
2415            }
2416            #[inline]
2417            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2418                <Self::Parameters<
2419                    '_,
2420                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2421                    .map(Self::new)
2422            }
2423        }
2424    };
2425    #[derive(serde::Serialize, serde::Deserialize)]
2426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2427    /**Custom error with signature `InputMultiplierZero()` and selector `0x72571251`.
2428```solidity
2429error InputMultiplierZero();
2430```*/
2431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2432    #[derive(Clone)]
2433    pub struct InputMultiplierZero;
2434    #[allow(
2435        non_camel_case_types,
2436        non_snake_case,
2437        clippy::pub_underscore_fields,
2438        clippy::style
2439    )]
2440    const _: () = {
2441        use alloy::sol_types as alloy_sol_types;
2442        #[doc(hidden)]
2443        type UnderlyingSolTuple<'a> = ();
2444        #[doc(hidden)]
2445        type UnderlyingRustTuple<'a> = ();
2446        #[cfg(test)]
2447        #[allow(dead_code, unreachable_patterns)]
2448        fn _type_assertion(
2449            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2450        ) {
2451            match _t {
2452                alloy_sol_types::private::AssertTypeEq::<
2453                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2454                >(_) => {}
2455            }
2456        }
2457        #[automatically_derived]
2458        #[doc(hidden)]
2459        impl ::core::convert::From<InputMultiplierZero> for UnderlyingRustTuple<'_> {
2460            fn from(value: InputMultiplierZero) -> Self {
2461                ()
2462            }
2463        }
2464        #[automatically_derived]
2465        #[doc(hidden)]
2466        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InputMultiplierZero {
2467            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2468                Self
2469            }
2470        }
2471        #[automatically_derived]
2472        impl alloy_sol_types::SolError for InputMultiplierZero {
2473            type Parameters<'a> = UnderlyingSolTuple<'a>;
2474            type Token<'a> = <Self::Parameters<
2475                'a,
2476            > as alloy_sol_types::SolType>::Token<'a>;
2477            const SIGNATURE: &'static str = "InputMultiplierZero()";
2478            const SELECTOR: [u8; 4] = [114u8, 87u8, 18u8, 81u8];
2479            #[inline]
2480            fn new<'a>(
2481                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2482            ) -> Self {
2483                tuple.into()
2484            }
2485            #[inline]
2486            fn tokenize(&self) -> Self::Token<'_> {
2487                ()
2488            }
2489            #[inline]
2490            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2491                <Self::Parameters<
2492                    '_,
2493                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2494                    .map(Self::new)
2495            }
2496        }
2497    };
2498    #[derive(serde::Serialize, serde::Deserialize)]
2499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2500    /**Custom error with signature `InvalidBlockNumber()` and selector `0x4e47846c`.
2501```solidity
2502error InvalidBlockNumber();
2503```*/
2504    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2505    #[derive(Clone)]
2506    pub struct InvalidBlockNumber;
2507    #[allow(
2508        non_camel_case_types,
2509        non_snake_case,
2510        clippy::pub_underscore_fields,
2511        clippy::style
2512    )]
2513    const _: () = {
2514        use alloy::sol_types as alloy_sol_types;
2515        #[doc(hidden)]
2516        type UnderlyingSolTuple<'a> = ();
2517        #[doc(hidden)]
2518        type UnderlyingRustTuple<'a> = ();
2519        #[cfg(test)]
2520        #[allow(dead_code, unreachable_patterns)]
2521        fn _type_assertion(
2522            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2523        ) {
2524            match _t {
2525                alloy_sol_types::private::AssertTypeEq::<
2526                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2527                >(_) => {}
2528            }
2529        }
2530        #[automatically_derived]
2531        #[doc(hidden)]
2532        impl ::core::convert::From<InvalidBlockNumber> for UnderlyingRustTuple<'_> {
2533            fn from(value: InvalidBlockNumber) -> Self {
2534                ()
2535            }
2536        }
2537        #[automatically_derived]
2538        #[doc(hidden)]
2539        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBlockNumber {
2540            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2541                Self
2542            }
2543        }
2544        #[automatically_derived]
2545        impl alloy_sol_types::SolError for InvalidBlockNumber {
2546            type Parameters<'a> = UnderlyingSolTuple<'a>;
2547            type Token<'a> = <Self::Parameters<
2548                'a,
2549            > as alloy_sol_types::SolType>::Token<'a>;
2550            const SIGNATURE: &'static str = "InvalidBlockNumber()";
2551            const SELECTOR: [u8; 4] = [78u8, 71u8, 132u8, 108u8];
2552            #[inline]
2553            fn new<'a>(
2554                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2555            ) -> Self {
2556                tuple.into()
2557            }
2558            #[inline]
2559            fn tokenize(&self) -> Self::Token<'_> {
2560                ()
2561            }
2562            #[inline]
2563            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2564                <Self::Parameters<
2565                    '_,
2566                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2567                    .map(Self::new)
2568            }
2569        }
2570    };
2571    #[derive(serde::Serialize, serde::Deserialize)]
2572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2573    /**Custom error with signature `LookAheadPeriodTooLong()` and selector `0x2f5106e4`.
2574```solidity
2575error LookAheadPeriodTooLong();
2576```*/
2577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2578    #[derive(Clone)]
2579    pub struct LookAheadPeriodTooLong;
2580    #[allow(
2581        non_camel_case_types,
2582        non_snake_case,
2583        clippy::pub_underscore_fields,
2584        clippy::style
2585    )]
2586    const _: () = {
2587        use alloy::sol_types as alloy_sol_types;
2588        #[doc(hidden)]
2589        type UnderlyingSolTuple<'a> = ();
2590        #[doc(hidden)]
2591        type UnderlyingRustTuple<'a> = ();
2592        #[cfg(test)]
2593        #[allow(dead_code, unreachable_patterns)]
2594        fn _type_assertion(
2595            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2596        ) {
2597            match _t {
2598                alloy_sol_types::private::AssertTypeEq::<
2599                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2600                >(_) => {}
2601            }
2602        }
2603        #[automatically_derived]
2604        #[doc(hidden)]
2605        impl ::core::convert::From<LookAheadPeriodTooLong> for UnderlyingRustTuple<'_> {
2606            fn from(value: LookAheadPeriodTooLong) -> Self {
2607                ()
2608            }
2609        }
2610        #[automatically_derived]
2611        #[doc(hidden)]
2612        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LookAheadPeriodTooLong {
2613            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2614                Self
2615            }
2616        }
2617        #[automatically_derived]
2618        impl alloy_sol_types::SolError for LookAheadPeriodTooLong {
2619            type Parameters<'a> = UnderlyingSolTuple<'a>;
2620            type Token<'a> = <Self::Parameters<
2621                'a,
2622            > as alloy_sol_types::SolType>::Token<'a>;
2623            const SIGNATURE: &'static str = "LookAheadPeriodTooLong()";
2624            const SELECTOR: [u8; 4] = [47u8, 81u8, 6u8, 228u8];
2625            #[inline]
2626            fn new<'a>(
2627                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2628            ) -> Self {
2629                tuple.into()
2630            }
2631            #[inline]
2632            fn tokenize(&self) -> Self::Token<'_> {
2633                ()
2634            }
2635            #[inline]
2636            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2637                <Self::Parameters<
2638                    '_,
2639                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2640                    .map(Self::new)
2641            }
2642        }
2643    };
2644    #[derive(serde::Serialize, serde::Deserialize)]
2645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2646    /**Custom error with signature `OnlySlashingRegistryCoordinator()` and selector `0xb006c814`.
2647```solidity
2648error OnlySlashingRegistryCoordinator();
2649```*/
2650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2651    #[derive(Clone)]
2652    pub struct OnlySlashingRegistryCoordinator;
2653    #[allow(
2654        non_camel_case_types,
2655        non_snake_case,
2656        clippy::pub_underscore_fields,
2657        clippy::style
2658    )]
2659    const _: () = {
2660        use alloy::sol_types as alloy_sol_types;
2661        #[doc(hidden)]
2662        type UnderlyingSolTuple<'a> = ();
2663        #[doc(hidden)]
2664        type UnderlyingRustTuple<'a> = ();
2665        #[cfg(test)]
2666        #[allow(dead_code, unreachable_patterns)]
2667        fn _type_assertion(
2668            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2669        ) {
2670            match _t {
2671                alloy_sol_types::private::AssertTypeEq::<
2672                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2673                >(_) => {}
2674            }
2675        }
2676        #[automatically_derived]
2677        #[doc(hidden)]
2678        impl ::core::convert::From<OnlySlashingRegistryCoordinator>
2679        for UnderlyingRustTuple<'_> {
2680            fn from(value: OnlySlashingRegistryCoordinator) -> Self {
2681                ()
2682            }
2683        }
2684        #[automatically_derived]
2685        #[doc(hidden)]
2686        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2687        for OnlySlashingRegistryCoordinator {
2688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2689                Self
2690            }
2691        }
2692        #[automatically_derived]
2693        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinator {
2694            type Parameters<'a> = UnderlyingSolTuple<'a>;
2695            type Token<'a> = <Self::Parameters<
2696                'a,
2697            > as alloy_sol_types::SolType>::Token<'a>;
2698            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinator()";
2699            const SELECTOR: [u8; 4] = [176u8, 6u8, 200u8, 20u8];
2700            #[inline]
2701            fn new<'a>(
2702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2703            ) -> Self {
2704                tuple.into()
2705            }
2706            #[inline]
2707            fn tokenize(&self) -> Self::Token<'_> {
2708                ()
2709            }
2710            #[inline]
2711            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2712                <Self::Parameters<
2713                    '_,
2714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2715                    .map(Self::new)
2716            }
2717        }
2718    };
2719    #[derive(serde::Serialize, serde::Deserialize)]
2720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2721    /**Custom error with signature `OnlySlashingRegistryCoordinatorOwner()` and selector `0xce98c24b`.
2722```solidity
2723error OnlySlashingRegistryCoordinatorOwner();
2724```*/
2725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2726    #[derive(Clone)]
2727    pub struct OnlySlashingRegistryCoordinatorOwner;
2728    #[allow(
2729        non_camel_case_types,
2730        non_snake_case,
2731        clippy::pub_underscore_fields,
2732        clippy::style
2733    )]
2734    const _: () = {
2735        use alloy::sol_types as alloy_sol_types;
2736        #[doc(hidden)]
2737        type UnderlyingSolTuple<'a> = ();
2738        #[doc(hidden)]
2739        type UnderlyingRustTuple<'a> = ();
2740        #[cfg(test)]
2741        #[allow(dead_code, unreachable_patterns)]
2742        fn _type_assertion(
2743            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2744        ) {
2745            match _t {
2746                alloy_sol_types::private::AssertTypeEq::<
2747                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2748                >(_) => {}
2749            }
2750        }
2751        #[automatically_derived]
2752        #[doc(hidden)]
2753        impl ::core::convert::From<OnlySlashingRegistryCoordinatorOwner>
2754        for UnderlyingRustTuple<'_> {
2755            fn from(value: OnlySlashingRegistryCoordinatorOwner) -> Self {
2756                ()
2757            }
2758        }
2759        #[automatically_derived]
2760        #[doc(hidden)]
2761        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2762        for OnlySlashingRegistryCoordinatorOwner {
2763            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2764                Self
2765            }
2766        }
2767        #[automatically_derived]
2768        impl alloy_sol_types::SolError for OnlySlashingRegistryCoordinatorOwner {
2769            type Parameters<'a> = UnderlyingSolTuple<'a>;
2770            type Token<'a> = <Self::Parameters<
2771                'a,
2772            > as alloy_sol_types::SolType>::Token<'a>;
2773            const SIGNATURE: &'static str = "OnlySlashingRegistryCoordinatorOwner()";
2774            const SELECTOR: [u8; 4] = [206u8, 152u8, 194u8, 75u8];
2775            #[inline]
2776            fn new<'a>(
2777                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2778            ) -> Self {
2779                tuple.into()
2780            }
2781            #[inline]
2782            fn tokenize(&self) -> Self::Token<'_> {
2783                ()
2784            }
2785            #[inline]
2786            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2787                <Self::Parameters<
2788                    '_,
2789                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2790                    .map(Self::new)
2791            }
2792        }
2793    };
2794    #[derive(serde::Serialize, serde::Deserialize)]
2795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2796    /**Custom error with signature `QuorumAlreadyExists()` and selector `0x4336945c`.
2797```solidity
2798error QuorumAlreadyExists();
2799```*/
2800    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2801    #[derive(Clone)]
2802    pub struct QuorumAlreadyExists;
2803    #[allow(
2804        non_camel_case_types,
2805        non_snake_case,
2806        clippy::pub_underscore_fields,
2807        clippy::style
2808    )]
2809    const _: () = {
2810        use alloy::sol_types as alloy_sol_types;
2811        #[doc(hidden)]
2812        type UnderlyingSolTuple<'a> = ();
2813        #[doc(hidden)]
2814        type UnderlyingRustTuple<'a> = ();
2815        #[cfg(test)]
2816        #[allow(dead_code, unreachable_patterns)]
2817        fn _type_assertion(
2818            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2819        ) {
2820            match _t {
2821                alloy_sol_types::private::AssertTypeEq::<
2822                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2823                >(_) => {}
2824            }
2825        }
2826        #[automatically_derived]
2827        #[doc(hidden)]
2828        impl ::core::convert::From<QuorumAlreadyExists> for UnderlyingRustTuple<'_> {
2829            fn from(value: QuorumAlreadyExists) -> Self {
2830                ()
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumAlreadyExists {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self
2838            }
2839        }
2840        #[automatically_derived]
2841        impl alloy_sol_types::SolError for QuorumAlreadyExists {
2842            type Parameters<'a> = UnderlyingSolTuple<'a>;
2843            type Token<'a> = <Self::Parameters<
2844                'a,
2845            > as alloy_sol_types::SolType>::Token<'a>;
2846            const SIGNATURE: &'static str = "QuorumAlreadyExists()";
2847            const SELECTOR: [u8; 4] = [67u8, 54u8, 148u8, 92u8];
2848            #[inline]
2849            fn new<'a>(
2850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2851            ) -> Self {
2852                tuple.into()
2853            }
2854            #[inline]
2855            fn tokenize(&self) -> Self::Token<'_> {
2856                ()
2857            }
2858            #[inline]
2859            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2860                <Self::Parameters<
2861                    '_,
2862                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2863                    .map(Self::new)
2864            }
2865        }
2866    };
2867    #[derive(serde::Serialize, serde::Deserialize)]
2868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2869    /**Custom error with signature `QuorumDoesNotExist()` and selector `0xe6219fea`.
2870```solidity
2871error QuorumDoesNotExist();
2872```*/
2873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2874    #[derive(Clone)]
2875    pub struct QuorumDoesNotExist;
2876    #[allow(
2877        non_camel_case_types,
2878        non_snake_case,
2879        clippy::pub_underscore_fields,
2880        clippy::style
2881    )]
2882    const _: () = {
2883        use alloy::sol_types as alloy_sol_types;
2884        #[doc(hidden)]
2885        type UnderlyingSolTuple<'a> = ();
2886        #[doc(hidden)]
2887        type UnderlyingRustTuple<'a> = ();
2888        #[cfg(test)]
2889        #[allow(dead_code, unreachable_patterns)]
2890        fn _type_assertion(
2891            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2892        ) {
2893            match _t {
2894                alloy_sol_types::private::AssertTypeEq::<
2895                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2896                >(_) => {}
2897            }
2898        }
2899        #[automatically_derived]
2900        #[doc(hidden)]
2901        impl ::core::convert::From<QuorumDoesNotExist> for UnderlyingRustTuple<'_> {
2902            fn from(value: QuorumDoesNotExist) -> Self {
2903                ()
2904            }
2905        }
2906        #[automatically_derived]
2907        #[doc(hidden)]
2908        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumDoesNotExist {
2909            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2910                Self
2911            }
2912        }
2913        #[automatically_derived]
2914        impl alloy_sol_types::SolError for QuorumDoesNotExist {
2915            type Parameters<'a> = UnderlyingSolTuple<'a>;
2916            type Token<'a> = <Self::Parameters<
2917                'a,
2918            > as alloy_sol_types::SolType>::Token<'a>;
2919            const SIGNATURE: &'static str = "QuorumDoesNotExist()";
2920            const SELECTOR: [u8; 4] = [230u8, 33u8, 159u8, 234u8];
2921            #[inline]
2922            fn new<'a>(
2923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2924            ) -> Self {
2925                tuple.into()
2926            }
2927            #[inline]
2928            fn tokenize(&self) -> Self::Token<'_> {
2929                ()
2930            }
2931            #[inline]
2932            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2933                <Self::Parameters<
2934                    '_,
2935                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2936                    .map(Self::new)
2937            }
2938        }
2939    };
2940    #[derive(serde::Serialize, serde::Deserialize)]
2941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2942    /**Custom error with signature `QuorumNotSlashable()` and selector `0xa3be2583`.
2943```solidity
2944error QuorumNotSlashable();
2945```*/
2946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2947    #[derive(Clone)]
2948    pub struct QuorumNotSlashable;
2949    #[allow(
2950        non_camel_case_types,
2951        non_snake_case,
2952        clippy::pub_underscore_fields,
2953        clippy::style
2954    )]
2955    const _: () = {
2956        use alloy::sol_types as alloy_sol_types;
2957        #[doc(hidden)]
2958        type UnderlyingSolTuple<'a> = ();
2959        #[doc(hidden)]
2960        type UnderlyingRustTuple<'a> = ();
2961        #[cfg(test)]
2962        #[allow(dead_code, unreachable_patterns)]
2963        fn _type_assertion(
2964            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2965        ) {
2966            match _t {
2967                alloy_sol_types::private::AssertTypeEq::<
2968                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2969                >(_) => {}
2970            }
2971        }
2972        #[automatically_derived]
2973        #[doc(hidden)]
2974        impl ::core::convert::From<QuorumNotSlashable> for UnderlyingRustTuple<'_> {
2975            fn from(value: QuorumNotSlashable) -> Self {
2976                ()
2977            }
2978        }
2979        #[automatically_derived]
2980        #[doc(hidden)]
2981        impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumNotSlashable {
2982            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2983                Self
2984            }
2985        }
2986        #[automatically_derived]
2987        impl alloy_sol_types::SolError for QuorumNotSlashable {
2988            type Parameters<'a> = UnderlyingSolTuple<'a>;
2989            type Token<'a> = <Self::Parameters<
2990                'a,
2991            > as alloy_sol_types::SolType>::Token<'a>;
2992            const SIGNATURE: &'static str = "QuorumNotSlashable()";
2993            const SELECTOR: [u8; 4] = [163u8, 190u8, 37u8, 131u8];
2994            #[inline]
2995            fn new<'a>(
2996                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2997            ) -> Self {
2998                tuple.into()
2999            }
3000            #[inline]
3001            fn tokenize(&self) -> Self::Token<'_> {
3002                ()
3003            }
3004            #[inline]
3005            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3006                <Self::Parameters<
3007                    '_,
3008                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3009                    .map(Self::new)
3010            }
3011        }
3012    };
3013    #[derive(serde::Serialize, serde::Deserialize)]
3014    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3015    /**Event with signature `LookAheadPeriodChanged(uint32,uint32)` and selector `0x28d7358b79f02d21b8b7e17aefc4185a64308aa37406fa5befc05b91932c39c7`.
3016```solidity
3017event LookAheadPeriodChanged(uint32 oldLookAheadBlocks, uint32 newLookAheadBlocks);
3018```*/
3019    #[allow(
3020        non_camel_case_types,
3021        non_snake_case,
3022        clippy::pub_underscore_fields,
3023        clippy::style
3024    )]
3025    #[derive(Clone)]
3026    pub struct LookAheadPeriodChanged {
3027        #[allow(missing_docs)]
3028        pub oldLookAheadBlocks: u32,
3029        #[allow(missing_docs)]
3030        pub newLookAheadBlocks: u32,
3031    }
3032    #[allow(
3033        non_camel_case_types,
3034        non_snake_case,
3035        clippy::pub_underscore_fields,
3036        clippy::style
3037    )]
3038    const _: () = {
3039        use alloy::sol_types as alloy_sol_types;
3040        #[automatically_derived]
3041        impl alloy_sol_types::SolEvent for LookAheadPeriodChanged {
3042            type DataTuple<'a> = (
3043                alloy::sol_types::sol_data::Uint<32>,
3044                alloy::sol_types::sol_data::Uint<32>,
3045            );
3046            type DataToken<'a> = <Self::DataTuple<
3047                'a,
3048            > as alloy_sol_types::SolType>::Token<'a>;
3049            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3050            const SIGNATURE: &'static str = "LookAheadPeriodChanged(uint32,uint32)";
3051            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3052                40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8,
3053                122u8, 239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8,
3054                250u8, 91u8, 239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
3055            ]);
3056            const ANONYMOUS: bool = false;
3057            #[allow(unused_variables)]
3058            #[inline]
3059            fn new(
3060                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3061                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3062            ) -> Self {
3063                Self {
3064                    oldLookAheadBlocks: data.0,
3065                    newLookAheadBlocks: data.1,
3066                }
3067            }
3068            #[inline]
3069            fn check_signature(
3070                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3071            ) -> alloy_sol_types::Result<()> {
3072                if topics.0 != Self::SIGNATURE_HASH {
3073                    return Err(
3074                        alloy_sol_types::Error::invalid_event_signature_hash(
3075                            Self::SIGNATURE,
3076                            topics.0,
3077                            Self::SIGNATURE_HASH,
3078                        ),
3079                    );
3080                }
3081                Ok(())
3082            }
3083            #[inline]
3084            fn tokenize_body(&self) -> Self::DataToken<'_> {
3085                (
3086                    <alloy::sol_types::sol_data::Uint<
3087                        32,
3088                    > as alloy_sol_types::SolType>::tokenize(&self.oldLookAheadBlocks),
3089                    <alloy::sol_types::sol_data::Uint<
3090                        32,
3091                    > as alloy_sol_types::SolType>::tokenize(&self.newLookAheadBlocks),
3092                )
3093            }
3094            #[inline]
3095            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3096                (Self::SIGNATURE_HASH.into(),)
3097            }
3098            #[inline]
3099            fn encode_topics_raw(
3100                &self,
3101                out: &mut [alloy_sol_types::abi::token::WordToken],
3102            ) -> alloy_sol_types::Result<()> {
3103                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3104                    return Err(alloy_sol_types::Error::Overrun);
3105                }
3106                out[0usize] = alloy_sol_types::abi::token::WordToken(
3107                    Self::SIGNATURE_HASH,
3108                );
3109                Ok(())
3110            }
3111        }
3112        #[automatically_derived]
3113        impl alloy_sol_types::private::IntoLogData for LookAheadPeriodChanged {
3114            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3115                From::from(self)
3116            }
3117            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3118                From::from(&self)
3119            }
3120        }
3121        #[automatically_derived]
3122        impl From<&LookAheadPeriodChanged> for alloy_sol_types::private::LogData {
3123            #[inline]
3124            fn from(this: &LookAheadPeriodChanged) -> alloy_sol_types::private::LogData {
3125                alloy_sol_types::SolEvent::encode_log_data(this)
3126            }
3127        }
3128    };
3129    #[derive(serde::Serialize, serde::Deserialize)]
3130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3131    /**Event with signature `MinimumStakeForQuorumUpdated(uint8,uint96)` and selector `0x26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf`.
3132```solidity
3133event MinimumStakeForQuorumUpdated(uint8 indexed quorumNumber, uint96 minimumStake);
3134```*/
3135    #[allow(
3136        non_camel_case_types,
3137        non_snake_case,
3138        clippy::pub_underscore_fields,
3139        clippy::style
3140    )]
3141    #[derive(Clone)]
3142    pub struct MinimumStakeForQuorumUpdated {
3143        #[allow(missing_docs)]
3144        pub quorumNumber: u8,
3145        #[allow(missing_docs)]
3146        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
3147    }
3148    #[allow(
3149        non_camel_case_types,
3150        non_snake_case,
3151        clippy::pub_underscore_fields,
3152        clippy::style
3153    )]
3154    const _: () = {
3155        use alloy::sol_types as alloy_sol_types;
3156        #[automatically_derived]
3157        impl alloy_sol_types::SolEvent for MinimumStakeForQuorumUpdated {
3158            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
3159            type DataToken<'a> = <Self::DataTuple<
3160                'a,
3161            > as alloy_sol_types::SolType>::Token<'a>;
3162            type TopicList = (
3163                alloy_sol_types::sol_data::FixedBytes<32>,
3164                alloy::sol_types::sol_data::Uint<8>,
3165            );
3166            const SIGNATURE: &'static str = "MinimumStakeForQuorumUpdated(uint8,uint96)";
3167            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3168                38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8,
3169                217u8, 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8,
3170                31u8, 196u8, 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
3171            ]);
3172            const ANONYMOUS: bool = false;
3173            #[allow(unused_variables)]
3174            #[inline]
3175            fn new(
3176                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3177                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3178            ) -> Self {
3179                Self {
3180                    quorumNumber: topics.1,
3181                    minimumStake: data.0,
3182                }
3183            }
3184            #[inline]
3185            fn check_signature(
3186                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3187            ) -> alloy_sol_types::Result<()> {
3188                if topics.0 != Self::SIGNATURE_HASH {
3189                    return Err(
3190                        alloy_sol_types::Error::invalid_event_signature_hash(
3191                            Self::SIGNATURE,
3192                            topics.0,
3193                            Self::SIGNATURE_HASH,
3194                        ),
3195                    );
3196                }
3197                Ok(())
3198            }
3199            #[inline]
3200            fn tokenize_body(&self) -> Self::DataToken<'_> {
3201                (
3202                    <alloy::sol_types::sol_data::Uint<
3203                        96,
3204                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
3205                )
3206            }
3207            #[inline]
3208            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3209                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3210            }
3211            #[inline]
3212            fn encode_topics_raw(
3213                &self,
3214                out: &mut [alloy_sol_types::abi::token::WordToken],
3215            ) -> alloy_sol_types::Result<()> {
3216                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3217                    return Err(alloy_sol_types::Error::Overrun);
3218                }
3219                out[0usize] = alloy_sol_types::abi::token::WordToken(
3220                    Self::SIGNATURE_HASH,
3221                );
3222                out[1usize] = <alloy::sol_types::sol_data::Uint<
3223                    8,
3224                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3225                Ok(())
3226            }
3227        }
3228        #[automatically_derived]
3229        impl alloy_sol_types::private::IntoLogData for MinimumStakeForQuorumUpdated {
3230            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3231                From::from(self)
3232            }
3233            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3234                From::from(&self)
3235            }
3236        }
3237        #[automatically_derived]
3238        impl From<&MinimumStakeForQuorumUpdated> for alloy_sol_types::private::LogData {
3239            #[inline]
3240            fn from(
3241                this: &MinimumStakeForQuorumUpdated,
3242            ) -> alloy_sol_types::private::LogData {
3243                alloy_sol_types::SolEvent::encode_log_data(this)
3244            }
3245        }
3246    };
3247    #[derive(serde::Serialize, serde::Deserialize)]
3248    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3249    /**Event with signature `OperatorStakeUpdate(bytes32,uint8,uint96)` and selector `0x2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d`.
3250```solidity
3251event OperatorStakeUpdate(bytes32 indexed operatorId, uint8 quorumNumber, uint96 stake);
3252```*/
3253    #[allow(
3254        non_camel_case_types,
3255        non_snake_case,
3256        clippy::pub_underscore_fields,
3257        clippy::style
3258    )]
3259    #[derive(Clone)]
3260    pub struct OperatorStakeUpdate {
3261        #[allow(missing_docs)]
3262        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
3263        #[allow(missing_docs)]
3264        pub quorumNumber: u8,
3265        #[allow(missing_docs)]
3266        pub stake: alloy::sol_types::private::primitives::aliases::U96,
3267    }
3268    #[allow(
3269        non_camel_case_types,
3270        non_snake_case,
3271        clippy::pub_underscore_fields,
3272        clippy::style
3273    )]
3274    const _: () = {
3275        use alloy::sol_types as alloy_sol_types;
3276        #[automatically_derived]
3277        impl alloy_sol_types::SolEvent for OperatorStakeUpdate {
3278            type DataTuple<'a> = (
3279                alloy::sol_types::sol_data::Uint<8>,
3280                alloy::sol_types::sol_data::Uint<96>,
3281            );
3282            type DataToken<'a> = <Self::DataTuple<
3283                'a,
3284            > as alloy_sol_types::SolType>::Token<'a>;
3285            type TopicList = (
3286                alloy_sol_types::sol_data::FixedBytes<32>,
3287                alloy::sol_types::sol_data::FixedBytes<32>,
3288            );
3289            const SIGNATURE: &'static str = "OperatorStakeUpdate(bytes32,uint8,uint96)";
3290            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3291                47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8,
3292                83u8, 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8,
3293                208u8, 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
3294            ]);
3295            const ANONYMOUS: bool = false;
3296            #[allow(unused_variables)]
3297            #[inline]
3298            fn new(
3299                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3300                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3301            ) -> Self {
3302                Self {
3303                    operatorId: topics.1,
3304                    quorumNumber: data.0,
3305                    stake: data.1,
3306                }
3307            }
3308            #[inline]
3309            fn check_signature(
3310                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3311            ) -> alloy_sol_types::Result<()> {
3312                if topics.0 != Self::SIGNATURE_HASH {
3313                    return Err(
3314                        alloy_sol_types::Error::invalid_event_signature_hash(
3315                            Self::SIGNATURE,
3316                            topics.0,
3317                            Self::SIGNATURE_HASH,
3318                        ),
3319                    );
3320                }
3321                Ok(())
3322            }
3323            #[inline]
3324            fn tokenize_body(&self) -> Self::DataToken<'_> {
3325                (
3326                    <alloy::sol_types::sol_data::Uint<
3327                        8,
3328                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
3329                    <alloy::sol_types::sol_data::Uint<
3330                        96,
3331                    > as alloy_sol_types::SolType>::tokenize(&self.stake),
3332                )
3333            }
3334            #[inline]
3335            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3336                (Self::SIGNATURE_HASH.into(), self.operatorId.clone())
3337            }
3338            #[inline]
3339            fn encode_topics_raw(
3340                &self,
3341                out: &mut [alloy_sol_types::abi::token::WordToken],
3342            ) -> alloy_sol_types::Result<()> {
3343                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3344                    return Err(alloy_sol_types::Error::Overrun);
3345                }
3346                out[0usize] = alloy_sol_types::abi::token::WordToken(
3347                    Self::SIGNATURE_HASH,
3348                );
3349                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3350                    32,
3351                > as alloy_sol_types::EventTopic>::encode_topic(&self.operatorId);
3352                Ok(())
3353            }
3354        }
3355        #[automatically_derived]
3356        impl alloy_sol_types::private::IntoLogData for OperatorStakeUpdate {
3357            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3358                From::from(self)
3359            }
3360            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3361                From::from(&self)
3362            }
3363        }
3364        #[automatically_derived]
3365        impl From<&OperatorStakeUpdate> for alloy_sol_types::private::LogData {
3366            #[inline]
3367            fn from(this: &OperatorStakeUpdate) -> alloy_sol_types::private::LogData {
3368                alloy_sol_types::SolEvent::encode_log_data(this)
3369            }
3370        }
3371    };
3372    #[derive(serde::Serialize, serde::Deserialize)]
3373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3374    /**Event with signature `QuorumCreated(uint8)` and selector `0x831a9c86c45bb303caf3f064be2bc2b9fd4ecf19e47c4ac02a61e75dabfe55b4`.
3375```solidity
3376event QuorumCreated(uint8 indexed quorumNumber);
3377```*/
3378    #[allow(
3379        non_camel_case_types,
3380        non_snake_case,
3381        clippy::pub_underscore_fields,
3382        clippy::style
3383    )]
3384    #[derive(Clone)]
3385    pub struct QuorumCreated {
3386        #[allow(missing_docs)]
3387        pub quorumNumber: u8,
3388    }
3389    #[allow(
3390        non_camel_case_types,
3391        non_snake_case,
3392        clippy::pub_underscore_fields,
3393        clippy::style
3394    )]
3395    const _: () = {
3396        use alloy::sol_types as alloy_sol_types;
3397        #[automatically_derived]
3398        impl alloy_sol_types::SolEvent for QuorumCreated {
3399            type DataTuple<'a> = ();
3400            type DataToken<'a> = <Self::DataTuple<
3401                'a,
3402            > as alloy_sol_types::SolType>::Token<'a>;
3403            type TopicList = (
3404                alloy_sol_types::sol_data::FixedBytes<32>,
3405                alloy::sol_types::sol_data::Uint<8>,
3406            );
3407            const SIGNATURE: &'static str = "QuorumCreated(uint8)";
3408            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3409                131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8,
3410                100u8, 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8,
3411                74u8, 192u8, 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
3412            ]);
3413            const ANONYMOUS: bool = false;
3414            #[allow(unused_variables)]
3415            #[inline]
3416            fn new(
3417                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3418                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3419            ) -> Self {
3420                Self { quorumNumber: topics.1 }
3421            }
3422            #[inline]
3423            fn check_signature(
3424                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3425            ) -> alloy_sol_types::Result<()> {
3426                if topics.0 != Self::SIGNATURE_HASH {
3427                    return Err(
3428                        alloy_sol_types::Error::invalid_event_signature_hash(
3429                            Self::SIGNATURE,
3430                            topics.0,
3431                            Self::SIGNATURE_HASH,
3432                        ),
3433                    );
3434                }
3435                Ok(())
3436            }
3437            #[inline]
3438            fn tokenize_body(&self) -> Self::DataToken<'_> {
3439                ()
3440            }
3441            #[inline]
3442            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3443                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3444            }
3445            #[inline]
3446            fn encode_topics_raw(
3447                &self,
3448                out: &mut [alloy_sol_types::abi::token::WordToken],
3449            ) -> alloy_sol_types::Result<()> {
3450                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3451                    return Err(alloy_sol_types::Error::Overrun);
3452                }
3453                out[0usize] = alloy_sol_types::abi::token::WordToken(
3454                    Self::SIGNATURE_HASH,
3455                );
3456                out[1usize] = <alloy::sol_types::sol_data::Uint<
3457                    8,
3458                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3459                Ok(())
3460            }
3461        }
3462        #[automatically_derived]
3463        impl alloy_sol_types::private::IntoLogData for QuorumCreated {
3464            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3465                From::from(self)
3466            }
3467            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3468                From::from(&self)
3469            }
3470        }
3471        #[automatically_derived]
3472        impl From<&QuorumCreated> for alloy_sol_types::private::LogData {
3473            #[inline]
3474            fn from(this: &QuorumCreated) -> alloy_sol_types::private::LogData {
3475                alloy_sol_types::SolEvent::encode_log_data(this)
3476            }
3477        }
3478    };
3479    #[derive(serde::Serialize, serde::Deserialize)]
3480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3481    /**Event with signature `StakeTypeSet(uint8)` and selector `0x7c112e863ccf007862e2c9e25819c933fedbc9350a6443423b4a8599c2e8a52d`.
3482```solidity
3483event StakeTypeSet(IStakeRegistryTypes.StakeType newStakeType);
3484```*/
3485    #[allow(
3486        non_camel_case_types,
3487        non_snake_case,
3488        clippy::pub_underscore_fields,
3489        clippy::style
3490    )]
3491    #[derive(Clone)]
3492    pub struct StakeTypeSet {
3493        #[allow(missing_docs)]
3494        pub newStakeType: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
3495    }
3496    #[allow(
3497        non_camel_case_types,
3498        non_snake_case,
3499        clippy::pub_underscore_fields,
3500        clippy::style
3501    )]
3502    const _: () = {
3503        use alloy::sol_types as alloy_sol_types;
3504        #[automatically_derived]
3505        impl alloy_sol_types::SolEvent for StakeTypeSet {
3506            type DataTuple<'a> = (IStakeRegistryTypes::StakeType,);
3507            type DataToken<'a> = <Self::DataTuple<
3508                'a,
3509            > as alloy_sol_types::SolType>::Token<'a>;
3510            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3511            const SIGNATURE: &'static str = "StakeTypeSet(uint8)";
3512            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3513                124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8,
3514                226u8, 88u8, 25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8,
3515                67u8, 66u8, 59u8, 74u8, 133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
3516            ]);
3517            const ANONYMOUS: bool = false;
3518            #[allow(unused_variables)]
3519            #[inline]
3520            fn new(
3521                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3522                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3523            ) -> Self {
3524                Self { newStakeType: data.0 }
3525            }
3526            #[inline]
3527            fn check_signature(
3528                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3529            ) -> alloy_sol_types::Result<()> {
3530                if topics.0 != Self::SIGNATURE_HASH {
3531                    return Err(
3532                        alloy_sol_types::Error::invalid_event_signature_hash(
3533                            Self::SIGNATURE,
3534                            topics.0,
3535                            Self::SIGNATURE_HASH,
3536                        ),
3537                    );
3538                }
3539                Ok(())
3540            }
3541            #[inline]
3542            fn tokenize_body(&self) -> Self::DataToken<'_> {
3543                (
3544                    <IStakeRegistryTypes::StakeType as alloy_sol_types::SolType>::tokenize(
3545                        &self.newStakeType,
3546                    ),
3547                )
3548            }
3549            #[inline]
3550            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3551                (Self::SIGNATURE_HASH.into(),)
3552            }
3553            #[inline]
3554            fn encode_topics_raw(
3555                &self,
3556                out: &mut [alloy_sol_types::abi::token::WordToken],
3557            ) -> alloy_sol_types::Result<()> {
3558                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3559                    return Err(alloy_sol_types::Error::Overrun);
3560                }
3561                out[0usize] = alloy_sol_types::abi::token::WordToken(
3562                    Self::SIGNATURE_HASH,
3563                );
3564                Ok(())
3565            }
3566        }
3567        #[automatically_derived]
3568        impl alloy_sol_types::private::IntoLogData for StakeTypeSet {
3569            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3570                From::from(self)
3571            }
3572            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3573                From::from(&self)
3574            }
3575        }
3576        #[automatically_derived]
3577        impl From<&StakeTypeSet> for alloy_sol_types::private::LogData {
3578            #[inline]
3579            fn from(this: &StakeTypeSet) -> alloy_sol_types::private::LogData {
3580                alloy_sol_types::SolEvent::encode_log_data(this)
3581            }
3582        }
3583    };
3584    #[derive(serde::Serialize, serde::Deserialize)]
3585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3586    /**Event with signature `StrategyAddedToQuorum(uint8,address)` and selector `0x10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f5404`.
3587```solidity
3588event StrategyAddedToQuorum(uint8 indexed quorumNumber, address strategy);
3589```*/
3590    #[allow(
3591        non_camel_case_types,
3592        non_snake_case,
3593        clippy::pub_underscore_fields,
3594        clippy::style
3595    )]
3596    #[derive(Clone)]
3597    pub struct StrategyAddedToQuorum {
3598        #[allow(missing_docs)]
3599        pub quorumNumber: u8,
3600        #[allow(missing_docs)]
3601        pub strategy: alloy::sol_types::private::Address,
3602    }
3603    #[allow(
3604        non_camel_case_types,
3605        non_snake_case,
3606        clippy::pub_underscore_fields,
3607        clippy::style
3608    )]
3609    const _: () = {
3610        use alloy::sol_types as alloy_sol_types;
3611        #[automatically_derived]
3612        impl alloy_sol_types::SolEvent for StrategyAddedToQuorum {
3613            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3614            type DataToken<'a> = <Self::DataTuple<
3615                'a,
3616            > as alloy_sol_types::SolType>::Token<'a>;
3617            type TopicList = (
3618                alloy_sol_types::sol_data::FixedBytes<32>,
3619                alloy::sol_types::sol_data::Uint<8>,
3620            );
3621            const SIGNATURE: &'static str = "StrategyAddedToQuorum(uint8,address)";
3622            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3623                16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8,
3624                69u8, 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8,
3625                19u8, 211u8, 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
3626            ]);
3627            const ANONYMOUS: bool = false;
3628            #[allow(unused_variables)]
3629            #[inline]
3630            fn new(
3631                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3632                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3633            ) -> Self {
3634                Self {
3635                    quorumNumber: topics.1,
3636                    strategy: data.0,
3637                }
3638            }
3639            #[inline]
3640            fn check_signature(
3641                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3642            ) -> alloy_sol_types::Result<()> {
3643                if topics.0 != Self::SIGNATURE_HASH {
3644                    return Err(
3645                        alloy_sol_types::Error::invalid_event_signature_hash(
3646                            Self::SIGNATURE,
3647                            topics.0,
3648                            Self::SIGNATURE_HASH,
3649                        ),
3650                    );
3651                }
3652                Ok(())
3653            }
3654            #[inline]
3655            fn tokenize_body(&self) -> Self::DataToken<'_> {
3656                (
3657                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3658                        &self.strategy,
3659                    ),
3660                )
3661            }
3662            #[inline]
3663            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3664                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3665            }
3666            #[inline]
3667            fn encode_topics_raw(
3668                &self,
3669                out: &mut [alloy_sol_types::abi::token::WordToken],
3670            ) -> alloy_sol_types::Result<()> {
3671                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3672                    return Err(alloy_sol_types::Error::Overrun);
3673                }
3674                out[0usize] = alloy_sol_types::abi::token::WordToken(
3675                    Self::SIGNATURE_HASH,
3676                );
3677                out[1usize] = <alloy::sol_types::sol_data::Uint<
3678                    8,
3679                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3680                Ok(())
3681            }
3682        }
3683        #[automatically_derived]
3684        impl alloy_sol_types::private::IntoLogData for StrategyAddedToQuorum {
3685            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3686                From::from(self)
3687            }
3688            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3689                From::from(&self)
3690            }
3691        }
3692        #[automatically_derived]
3693        impl From<&StrategyAddedToQuorum> for alloy_sol_types::private::LogData {
3694            #[inline]
3695            fn from(this: &StrategyAddedToQuorum) -> alloy_sol_types::private::LogData {
3696                alloy_sol_types::SolEvent::encode_log_data(this)
3697            }
3698        }
3699    };
3700    #[derive(serde::Serialize, serde::Deserialize)]
3701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3702    /**Event with signature `StrategyMultiplierUpdated(uint8,address,uint256)` and selector `0x11a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75`.
3703```solidity
3704event StrategyMultiplierUpdated(uint8 indexed quorumNumber, address strategy, uint256 multiplier);
3705```*/
3706    #[allow(
3707        non_camel_case_types,
3708        non_snake_case,
3709        clippy::pub_underscore_fields,
3710        clippy::style
3711    )]
3712    #[derive(Clone)]
3713    pub struct StrategyMultiplierUpdated {
3714        #[allow(missing_docs)]
3715        pub quorumNumber: u8,
3716        #[allow(missing_docs)]
3717        pub strategy: alloy::sol_types::private::Address,
3718        #[allow(missing_docs)]
3719        pub multiplier: alloy::sol_types::private::primitives::aliases::U256,
3720    }
3721    #[allow(
3722        non_camel_case_types,
3723        non_snake_case,
3724        clippy::pub_underscore_fields,
3725        clippy::style
3726    )]
3727    const _: () = {
3728        use alloy::sol_types as alloy_sol_types;
3729        #[automatically_derived]
3730        impl alloy_sol_types::SolEvent for StrategyMultiplierUpdated {
3731            type DataTuple<'a> = (
3732                alloy::sol_types::sol_data::Address,
3733                alloy::sol_types::sol_data::Uint<256>,
3734            );
3735            type DataToken<'a> = <Self::DataTuple<
3736                'a,
3737            > as alloy_sol_types::SolType>::Token<'a>;
3738            type TopicList = (
3739                alloy_sol_types::sol_data::FixedBytes<32>,
3740                alloy::sol_types::sol_data::Uint<8>,
3741            );
3742            const SIGNATURE: &'static str = "StrategyMultiplierUpdated(uint8,address,uint256)";
3743            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3744                17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8,
3745                110u8, 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8,
3746                205u8, 22u8, 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
3747            ]);
3748            const ANONYMOUS: bool = false;
3749            #[allow(unused_variables)]
3750            #[inline]
3751            fn new(
3752                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3753                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3754            ) -> Self {
3755                Self {
3756                    quorumNumber: topics.1,
3757                    strategy: data.0,
3758                    multiplier: data.1,
3759                }
3760            }
3761            #[inline]
3762            fn check_signature(
3763                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3764            ) -> alloy_sol_types::Result<()> {
3765                if topics.0 != Self::SIGNATURE_HASH {
3766                    return Err(
3767                        alloy_sol_types::Error::invalid_event_signature_hash(
3768                            Self::SIGNATURE,
3769                            topics.0,
3770                            Self::SIGNATURE_HASH,
3771                        ),
3772                    );
3773                }
3774                Ok(())
3775            }
3776            #[inline]
3777            fn tokenize_body(&self) -> Self::DataToken<'_> {
3778                (
3779                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3780                        &self.strategy,
3781                    ),
3782                    <alloy::sol_types::sol_data::Uint<
3783                        256,
3784                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
3785                )
3786            }
3787            #[inline]
3788            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3789                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3790            }
3791            #[inline]
3792            fn encode_topics_raw(
3793                &self,
3794                out: &mut [alloy_sol_types::abi::token::WordToken],
3795            ) -> alloy_sol_types::Result<()> {
3796                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3797                    return Err(alloy_sol_types::Error::Overrun);
3798                }
3799                out[0usize] = alloy_sol_types::abi::token::WordToken(
3800                    Self::SIGNATURE_HASH,
3801                );
3802                out[1usize] = <alloy::sol_types::sol_data::Uint<
3803                    8,
3804                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3805                Ok(())
3806            }
3807        }
3808        #[automatically_derived]
3809        impl alloy_sol_types::private::IntoLogData for StrategyMultiplierUpdated {
3810            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3811                From::from(self)
3812            }
3813            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3814                From::from(&self)
3815            }
3816        }
3817        #[automatically_derived]
3818        impl From<&StrategyMultiplierUpdated> for alloy_sol_types::private::LogData {
3819            #[inline]
3820            fn from(
3821                this: &StrategyMultiplierUpdated,
3822            ) -> alloy_sol_types::private::LogData {
3823                alloy_sol_types::SolEvent::encode_log_data(this)
3824            }
3825        }
3826    };
3827    #[derive(serde::Serialize, serde::Deserialize)]
3828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3829    /**Event with signature `StrategyRemovedFromQuorum(uint8,address)` and selector `0x31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f7`.
3830```solidity
3831event StrategyRemovedFromQuorum(uint8 indexed quorumNumber, address strategy);
3832```*/
3833    #[allow(
3834        non_camel_case_types,
3835        non_snake_case,
3836        clippy::pub_underscore_fields,
3837        clippy::style
3838    )]
3839    #[derive(Clone)]
3840    pub struct StrategyRemovedFromQuorum {
3841        #[allow(missing_docs)]
3842        pub quorumNumber: u8,
3843        #[allow(missing_docs)]
3844        pub strategy: alloy::sol_types::private::Address,
3845    }
3846    #[allow(
3847        non_camel_case_types,
3848        non_snake_case,
3849        clippy::pub_underscore_fields,
3850        clippy::style
3851    )]
3852    const _: () = {
3853        use alloy::sol_types as alloy_sol_types;
3854        #[automatically_derived]
3855        impl alloy_sol_types::SolEvent for StrategyRemovedFromQuorum {
3856            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3857            type DataToken<'a> = <Self::DataTuple<
3858                'a,
3859            > as alloy_sol_types::SolType>::Token<'a>;
3860            type TopicList = (
3861                alloy_sol_types::sol_data::FixedBytes<32>,
3862                alloy::sol_types::sol_data::Uint<8>,
3863            );
3864            const SIGNATURE: &'static str = "StrategyRemovedFromQuorum(uint8,address)";
3865            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3866                49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8,
3867                207u8, 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8,
3868                248u8, 211u8, 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
3869            ]);
3870            const ANONYMOUS: bool = false;
3871            #[allow(unused_variables)]
3872            #[inline]
3873            fn new(
3874                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3875                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3876            ) -> Self {
3877                Self {
3878                    quorumNumber: topics.1,
3879                    strategy: data.0,
3880                }
3881            }
3882            #[inline]
3883            fn check_signature(
3884                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3885            ) -> alloy_sol_types::Result<()> {
3886                if topics.0 != Self::SIGNATURE_HASH {
3887                    return Err(
3888                        alloy_sol_types::Error::invalid_event_signature_hash(
3889                            Self::SIGNATURE,
3890                            topics.0,
3891                            Self::SIGNATURE_HASH,
3892                        ),
3893                    );
3894                }
3895                Ok(())
3896            }
3897            #[inline]
3898            fn tokenize_body(&self) -> Self::DataToken<'_> {
3899                (
3900                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3901                        &self.strategy,
3902                    ),
3903                )
3904            }
3905            #[inline]
3906            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3907                (Self::SIGNATURE_HASH.into(), self.quorumNumber.clone())
3908            }
3909            #[inline]
3910            fn encode_topics_raw(
3911                &self,
3912                out: &mut [alloy_sol_types::abi::token::WordToken],
3913            ) -> alloy_sol_types::Result<()> {
3914                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3915                    return Err(alloy_sol_types::Error::Overrun);
3916                }
3917                out[0usize] = alloy_sol_types::abi::token::WordToken(
3918                    Self::SIGNATURE_HASH,
3919                );
3920                out[1usize] = <alloy::sol_types::sol_data::Uint<
3921                    8,
3922                > as alloy_sol_types::EventTopic>::encode_topic(&self.quorumNumber);
3923                Ok(())
3924            }
3925        }
3926        #[automatically_derived]
3927        impl alloy_sol_types::private::IntoLogData for StrategyRemovedFromQuorum {
3928            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3929                From::from(self)
3930            }
3931            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3932                From::from(&self)
3933            }
3934        }
3935        #[automatically_derived]
3936        impl From<&StrategyRemovedFromQuorum> for alloy_sol_types::private::LogData {
3937            #[inline]
3938            fn from(
3939                this: &StrategyRemovedFromQuorum,
3940            ) -> alloy_sol_types::private::LogData {
3941                alloy_sol_types::SolEvent::encode_log_data(this)
3942            }
3943        }
3944    };
3945    /**Constructor`.
3946```solidity
3947constructor(address _slashingRegistryCoordinator, address _delegationManager, address _avsDirectory, address _allocationManager);
3948```*/
3949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3950    #[derive(Clone)]
3951    pub struct constructorCall {
3952        #[allow(missing_docs)]
3953        pub _slashingRegistryCoordinator: alloy::sol_types::private::Address,
3954        #[allow(missing_docs)]
3955        pub _delegationManager: alloy::sol_types::private::Address,
3956        #[allow(missing_docs)]
3957        pub _avsDirectory: alloy::sol_types::private::Address,
3958        #[allow(missing_docs)]
3959        pub _allocationManager: alloy::sol_types::private::Address,
3960    }
3961    const _: () = {
3962        use alloy::sol_types as alloy_sol_types;
3963        {
3964            #[doc(hidden)]
3965            type UnderlyingSolTuple<'a> = (
3966                alloy::sol_types::sol_data::Address,
3967                alloy::sol_types::sol_data::Address,
3968                alloy::sol_types::sol_data::Address,
3969                alloy::sol_types::sol_data::Address,
3970            );
3971            #[doc(hidden)]
3972            type UnderlyingRustTuple<'a> = (
3973                alloy::sol_types::private::Address,
3974                alloy::sol_types::private::Address,
3975                alloy::sol_types::private::Address,
3976                alloy::sol_types::private::Address,
3977            );
3978            #[cfg(test)]
3979            #[allow(dead_code, unreachable_patterns)]
3980            fn _type_assertion(
3981                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3982            ) {
3983                match _t {
3984                    alloy_sol_types::private::AssertTypeEq::<
3985                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3986                    >(_) => {}
3987                }
3988            }
3989            #[automatically_derived]
3990            #[doc(hidden)]
3991            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3992                fn from(value: constructorCall) -> Self {
3993                    (
3994                        value._slashingRegistryCoordinator,
3995                        value._delegationManager,
3996                        value._avsDirectory,
3997                        value._allocationManager,
3998                    )
3999                }
4000            }
4001            #[automatically_derived]
4002            #[doc(hidden)]
4003            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
4004                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4005                    Self {
4006                        _slashingRegistryCoordinator: tuple.0,
4007                        _delegationManager: tuple.1,
4008                        _avsDirectory: tuple.2,
4009                        _allocationManager: tuple.3,
4010                    }
4011                }
4012            }
4013        }
4014        #[automatically_derived]
4015        impl alloy_sol_types::SolConstructor for constructorCall {
4016            type Parameters<'a> = (
4017                alloy::sol_types::sol_data::Address,
4018                alloy::sol_types::sol_data::Address,
4019                alloy::sol_types::sol_data::Address,
4020                alloy::sol_types::sol_data::Address,
4021            );
4022            type Token<'a> = <Self::Parameters<
4023                'a,
4024            > as alloy_sol_types::SolType>::Token<'a>;
4025            #[inline]
4026            fn new<'a>(
4027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4028            ) -> Self {
4029                tuple.into()
4030            }
4031            #[inline]
4032            fn tokenize(&self) -> Self::Token<'_> {
4033                (
4034                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4035                        &self._slashingRegistryCoordinator,
4036                    ),
4037                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4038                        &self._delegationManager,
4039                    ),
4040                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4041                        &self._avsDirectory,
4042                    ),
4043                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4044                        &self._allocationManager,
4045                    ),
4046                )
4047            }
4048        }
4049    };
4050    #[derive(serde::Serialize, serde::Deserialize)]
4051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4052    /**Function with signature `MAX_WEIGHING_FUNCTION_LENGTH()` and selector `0x7c172347`.
4053```solidity
4054function MAX_WEIGHING_FUNCTION_LENGTH() external view returns (uint8);
4055```*/
4056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4057    #[derive(Clone)]
4058    pub struct MAX_WEIGHING_FUNCTION_LENGTHCall;
4059    #[derive(serde::Serialize, serde::Deserialize)]
4060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4061    ///Container type for the return parameters of the [`MAX_WEIGHING_FUNCTION_LENGTH()`](MAX_WEIGHING_FUNCTION_LENGTHCall) function.
4062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4063    #[derive(Clone)]
4064    pub struct MAX_WEIGHING_FUNCTION_LENGTHReturn {
4065        #[allow(missing_docs)]
4066        pub _0: u8,
4067    }
4068    #[allow(
4069        non_camel_case_types,
4070        non_snake_case,
4071        clippy::pub_underscore_fields,
4072        clippy::style
4073    )]
4074    const _: () = {
4075        use alloy::sol_types as alloy_sol_types;
4076        {
4077            #[doc(hidden)]
4078            type UnderlyingSolTuple<'a> = ();
4079            #[doc(hidden)]
4080            type UnderlyingRustTuple<'a> = ();
4081            #[cfg(test)]
4082            #[allow(dead_code, unreachable_patterns)]
4083            fn _type_assertion(
4084                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4085            ) {
4086                match _t {
4087                    alloy_sol_types::private::AssertTypeEq::<
4088                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4089                    >(_) => {}
4090                }
4091            }
4092            #[automatically_derived]
4093            #[doc(hidden)]
4094            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHCall>
4095            for UnderlyingRustTuple<'_> {
4096                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHCall) -> Self {
4097                    ()
4098                }
4099            }
4100            #[automatically_derived]
4101            #[doc(hidden)]
4102            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4103            for MAX_WEIGHING_FUNCTION_LENGTHCall {
4104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4105                    Self
4106                }
4107            }
4108        }
4109        {
4110            #[doc(hidden)]
4111            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
4112            #[doc(hidden)]
4113            type UnderlyingRustTuple<'a> = (u8,);
4114            #[cfg(test)]
4115            #[allow(dead_code, unreachable_patterns)]
4116            fn _type_assertion(
4117                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4118            ) {
4119                match _t {
4120                    alloy_sol_types::private::AssertTypeEq::<
4121                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4122                    >(_) => {}
4123                }
4124            }
4125            #[automatically_derived]
4126            #[doc(hidden)]
4127            impl ::core::convert::From<MAX_WEIGHING_FUNCTION_LENGTHReturn>
4128            for UnderlyingRustTuple<'_> {
4129                fn from(value: MAX_WEIGHING_FUNCTION_LENGTHReturn) -> Self {
4130                    (value._0,)
4131                }
4132            }
4133            #[automatically_derived]
4134            #[doc(hidden)]
4135            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4136            for MAX_WEIGHING_FUNCTION_LENGTHReturn {
4137                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4138                    Self { _0: tuple.0 }
4139                }
4140            }
4141        }
4142        #[automatically_derived]
4143        impl alloy_sol_types::SolCall for MAX_WEIGHING_FUNCTION_LENGTHCall {
4144            type Parameters<'a> = ();
4145            type Token<'a> = <Self::Parameters<
4146                'a,
4147            > as alloy_sol_types::SolType>::Token<'a>;
4148            type Return = u8;
4149            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
4150            type ReturnToken<'a> = <Self::ReturnTuple<
4151                'a,
4152            > as alloy_sol_types::SolType>::Token<'a>;
4153            const SIGNATURE: &'static str = "MAX_WEIGHING_FUNCTION_LENGTH()";
4154            const SELECTOR: [u8; 4] = [124u8, 23u8, 35u8, 71u8];
4155            #[inline]
4156            fn new<'a>(
4157                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4158            ) -> Self {
4159                tuple.into()
4160            }
4161            #[inline]
4162            fn tokenize(&self) -> Self::Token<'_> {
4163                ()
4164            }
4165            #[inline]
4166            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4167                (
4168                    <alloy::sol_types::sol_data::Uint<
4169                        8,
4170                    > as alloy_sol_types::SolType>::tokenize(ret),
4171                )
4172            }
4173            #[inline]
4174            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4175                <Self::ReturnTuple<
4176                    '_,
4177                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4178                    .map(|r| {
4179                        let r: MAX_WEIGHING_FUNCTION_LENGTHReturn = r.into();
4180                        r._0
4181                    })
4182            }
4183            #[inline]
4184            fn abi_decode_returns_validate(
4185                data: &[u8],
4186            ) -> alloy_sol_types::Result<Self::Return> {
4187                <Self::ReturnTuple<
4188                    '_,
4189                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4190                    .map(|r| {
4191                        let r: MAX_WEIGHING_FUNCTION_LENGTHReturn = r.into();
4192                        r._0
4193                    })
4194            }
4195        }
4196    };
4197    #[derive(serde::Serialize, serde::Deserialize)]
4198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4199    /**Function with signature `WEIGHTING_DIVISOR()` and selector `0x5e5a6775`.
4200```solidity
4201function WEIGHTING_DIVISOR() external view returns (uint256);
4202```*/
4203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4204    #[derive(Clone)]
4205    pub struct WEIGHTING_DIVISORCall;
4206    #[derive(serde::Serialize, serde::Deserialize)]
4207    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4208    ///Container type for the return parameters of the [`WEIGHTING_DIVISOR()`](WEIGHTING_DIVISORCall) function.
4209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4210    #[derive(Clone)]
4211    pub struct WEIGHTING_DIVISORReturn {
4212        #[allow(missing_docs)]
4213        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4214    }
4215    #[allow(
4216        non_camel_case_types,
4217        non_snake_case,
4218        clippy::pub_underscore_fields,
4219        clippy::style
4220    )]
4221    const _: () = {
4222        use alloy::sol_types as alloy_sol_types;
4223        {
4224            #[doc(hidden)]
4225            type UnderlyingSolTuple<'a> = ();
4226            #[doc(hidden)]
4227            type UnderlyingRustTuple<'a> = ();
4228            #[cfg(test)]
4229            #[allow(dead_code, unreachable_patterns)]
4230            fn _type_assertion(
4231                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4232            ) {
4233                match _t {
4234                    alloy_sol_types::private::AssertTypeEq::<
4235                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4236                    >(_) => {}
4237                }
4238            }
4239            #[automatically_derived]
4240            #[doc(hidden)]
4241            impl ::core::convert::From<WEIGHTING_DIVISORCall>
4242            for UnderlyingRustTuple<'_> {
4243                fn from(value: WEIGHTING_DIVISORCall) -> Self {
4244                    ()
4245                }
4246            }
4247            #[automatically_derived]
4248            #[doc(hidden)]
4249            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4250            for WEIGHTING_DIVISORCall {
4251                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4252                    Self
4253                }
4254            }
4255        }
4256        {
4257            #[doc(hidden)]
4258            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4259            #[doc(hidden)]
4260            type UnderlyingRustTuple<'a> = (
4261                alloy::sol_types::private::primitives::aliases::U256,
4262            );
4263            #[cfg(test)]
4264            #[allow(dead_code, unreachable_patterns)]
4265            fn _type_assertion(
4266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4267            ) {
4268                match _t {
4269                    alloy_sol_types::private::AssertTypeEq::<
4270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4271                    >(_) => {}
4272                }
4273            }
4274            #[automatically_derived]
4275            #[doc(hidden)]
4276            impl ::core::convert::From<WEIGHTING_DIVISORReturn>
4277            for UnderlyingRustTuple<'_> {
4278                fn from(value: WEIGHTING_DIVISORReturn) -> Self {
4279                    (value._0,)
4280                }
4281            }
4282            #[automatically_derived]
4283            #[doc(hidden)]
4284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4285            for WEIGHTING_DIVISORReturn {
4286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4287                    Self { _0: tuple.0 }
4288                }
4289            }
4290        }
4291        #[automatically_derived]
4292        impl alloy_sol_types::SolCall for WEIGHTING_DIVISORCall {
4293            type Parameters<'a> = ();
4294            type Token<'a> = <Self::Parameters<
4295                'a,
4296            > as alloy_sol_types::SolType>::Token<'a>;
4297            type Return = alloy::sol_types::private::primitives::aliases::U256;
4298            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4299            type ReturnToken<'a> = <Self::ReturnTuple<
4300                'a,
4301            > as alloy_sol_types::SolType>::Token<'a>;
4302            const SIGNATURE: &'static str = "WEIGHTING_DIVISOR()";
4303            const SELECTOR: [u8; 4] = [94u8, 90u8, 103u8, 117u8];
4304            #[inline]
4305            fn new<'a>(
4306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4307            ) -> Self {
4308                tuple.into()
4309            }
4310            #[inline]
4311            fn tokenize(&self) -> Self::Token<'_> {
4312                ()
4313            }
4314            #[inline]
4315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4316                (
4317                    <alloy::sol_types::sol_data::Uint<
4318                        256,
4319                    > as alloy_sol_types::SolType>::tokenize(ret),
4320                )
4321            }
4322            #[inline]
4323            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4324                <Self::ReturnTuple<
4325                    '_,
4326                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4327                    .map(|r| {
4328                        let r: WEIGHTING_DIVISORReturn = r.into();
4329                        r._0
4330                    })
4331            }
4332            #[inline]
4333            fn abi_decode_returns_validate(
4334                data: &[u8],
4335            ) -> alloy_sol_types::Result<Self::Return> {
4336                <Self::ReturnTuple<
4337                    '_,
4338                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4339                    .map(|r| {
4340                        let r: WEIGHTING_DIVISORReturn = r.into();
4341                        r._0
4342                    })
4343            }
4344        }
4345    };
4346    #[derive(serde::Serialize, serde::Deserialize)]
4347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4348    /**Function with signature `addStrategies(uint8,(address,uint96)[])` and selector `0xc601527d`.
4349```solidity
4350function addStrategies(uint8 quorumNumber, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
4351```*/
4352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4353    #[derive(Clone)]
4354    pub struct addStrategiesCall {
4355        #[allow(missing_docs)]
4356        pub quorumNumber: u8,
4357        #[allow(missing_docs)]
4358        pub _strategyParams: alloy::sol_types::private::Vec<
4359            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4360        >,
4361    }
4362    ///Container type for the return parameters of the [`addStrategies(uint8,(address,uint96)[])`](addStrategiesCall) function.
4363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4364    #[derive(Clone)]
4365    pub struct addStrategiesReturn {}
4366    #[allow(
4367        non_camel_case_types,
4368        non_snake_case,
4369        clippy::pub_underscore_fields,
4370        clippy::style
4371    )]
4372    const _: () = {
4373        use alloy::sol_types as alloy_sol_types;
4374        {
4375            #[doc(hidden)]
4376            type UnderlyingSolTuple<'a> = (
4377                alloy::sol_types::sol_data::Uint<8>,
4378                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4379            );
4380            #[doc(hidden)]
4381            type UnderlyingRustTuple<'a> = (
4382                u8,
4383                alloy::sol_types::private::Vec<
4384                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
4385                >,
4386            );
4387            #[cfg(test)]
4388            #[allow(dead_code, unreachable_patterns)]
4389            fn _type_assertion(
4390                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4391            ) {
4392                match _t {
4393                    alloy_sol_types::private::AssertTypeEq::<
4394                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4395                    >(_) => {}
4396                }
4397            }
4398            #[automatically_derived]
4399            #[doc(hidden)]
4400            impl ::core::convert::From<addStrategiesCall> for UnderlyingRustTuple<'_> {
4401                fn from(value: addStrategiesCall) -> Self {
4402                    (value.quorumNumber, value._strategyParams)
4403                }
4404            }
4405            #[automatically_derived]
4406            #[doc(hidden)]
4407            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesCall {
4408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4409                    Self {
4410                        quorumNumber: tuple.0,
4411                        _strategyParams: tuple.1,
4412                    }
4413                }
4414            }
4415        }
4416        {
4417            #[doc(hidden)]
4418            type UnderlyingSolTuple<'a> = ();
4419            #[doc(hidden)]
4420            type UnderlyingRustTuple<'a> = ();
4421            #[cfg(test)]
4422            #[allow(dead_code, unreachable_patterns)]
4423            fn _type_assertion(
4424                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4425            ) {
4426                match _t {
4427                    alloy_sol_types::private::AssertTypeEq::<
4428                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4429                    >(_) => {}
4430                }
4431            }
4432            #[automatically_derived]
4433            #[doc(hidden)]
4434            impl ::core::convert::From<addStrategiesReturn> for UnderlyingRustTuple<'_> {
4435                fn from(value: addStrategiesReturn) -> Self {
4436                    ()
4437                }
4438            }
4439            #[automatically_derived]
4440            #[doc(hidden)]
4441            impl ::core::convert::From<UnderlyingRustTuple<'_>> for addStrategiesReturn {
4442                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4443                    Self {}
4444                }
4445            }
4446        }
4447        impl addStrategiesReturn {
4448            fn _tokenize(
4449                &self,
4450            ) -> <addStrategiesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4451                ()
4452            }
4453        }
4454        #[automatically_derived]
4455        impl alloy_sol_types::SolCall for addStrategiesCall {
4456            type Parameters<'a> = (
4457                alloy::sol_types::sol_data::Uint<8>,
4458                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
4459            );
4460            type Token<'a> = <Self::Parameters<
4461                'a,
4462            > as alloy_sol_types::SolType>::Token<'a>;
4463            type Return = addStrategiesReturn;
4464            type ReturnTuple<'a> = ();
4465            type ReturnToken<'a> = <Self::ReturnTuple<
4466                'a,
4467            > as alloy_sol_types::SolType>::Token<'a>;
4468            const SIGNATURE: &'static str = "addStrategies(uint8,(address,uint96)[])";
4469            const SELECTOR: [u8; 4] = [198u8, 1u8, 82u8, 125u8];
4470            #[inline]
4471            fn new<'a>(
4472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4473            ) -> Self {
4474                tuple.into()
4475            }
4476            #[inline]
4477            fn tokenize(&self) -> Self::Token<'_> {
4478                (
4479                    <alloy::sol_types::sol_data::Uint<
4480                        8,
4481                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
4482                    <alloy::sol_types::sol_data::Array<
4483                        IStakeRegistryTypes::StrategyParams,
4484                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
4485                )
4486            }
4487            #[inline]
4488            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4489                addStrategiesReturn::_tokenize(ret)
4490            }
4491            #[inline]
4492            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4493                <Self::ReturnTuple<
4494                    '_,
4495                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4496                    .map(Into::into)
4497            }
4498            #[inline]
4499            fn abi_decode_returns_validate(
4500                data: &[u8],
4501            ) -> alloy_sol_types::Result<Self::Return> {
4502                <Self::ReturnTuple<
4503                    '_,
4504                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4505                    .map(Into::into)
4506            }
4507        }
4508    };
4509    #[derive(serde::Serialize, serde::Deserialize)]
4510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4511    /**Function with signature `allocationManager()` and selector `0xca8aa7c7`.
4512```solidity
4513function allocationManager() external view returns (address);
4514```*/
4515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4516    #[derive(Clone)]
4517    pub struct allocationManagerCall;
4518    #[derive(serde::Serialize, serde::Deserialize)]
4519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4520    ///Container type for the return parameters of the [`allocationManager()`](allocationManagerCall) function.
4521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4522    #[derive(Clone)]
4523    pub struct allocationManagerReturn {
4524        #[allow(missing_docs)]
4525        pub _0: alloy::sol_types::private::Address,
4526    }
4527    #[allow(
4528        non_camel_case_types,
4529        non_snake_case,
4530        clippy::pub_underscore_fields,
4531        clippy::style
4532    )]
4533    const _: () = {
4534        use alloy::sol_types as alloy_sol_types;
4535        {
4536            #[doc(hidden)]
4537            type UnderlyingSolTuple<'a> = ();
4538            #[doc(hidden)]
4539            type UnderlyingRustTuple<'a> = ();
4540            #[cfg(test)]
4541            #[allow(dead_code, unreachable_patterns)]
4542            fn _type_assertion(
4543                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4544            ) {
4545                match _t {
4546                    alloy_sol_types::private::AssertTypeEq::<
4547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4548                    >(_) => {}
4549                }
4550            }
4551            #[automatically_derived]
4552            #[doc(hidden)]
4553            impl ::core::convert::From<allocationManagerCall>
4554            for UnderlyingRustTuple<'_> {
4555                fn from(value: allocationManagerCall) -> Self {
4556                    ()
4557                }
4558            }
4559            #[automatically_derived]
4560            #[doc(hidden)]
4561            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4562            for allocationManagerCall {
4563                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4564                    Self
4565                }
4566            }
4567        }
4568        {
4569            #[doc(hidden)]
4570            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4571            #[doc(hidden)]
4572            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4573            #[cfg(test)]
4574            #[allow(dead_code, unreachable_patterns)]
4575            fn _type_assertion(
4576                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4577            ) {
4578                match _t {
4579                    alloy_sol_types::private::AssertTypeEq::<
4580                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4581                    >(_) => {}
4582                }
4583            }
4584            #[automatically_derived]
4585            #[doc(hidden)]
4586            impl ::core::convert::From<allocationManagerReturn>
4587            for UnderlyingRustTuple<'_> {
4588                fn from(value: allocationManagerReturn) -> Self {
4589                    (value._0,)
4590                }
4591            }
4592            #[automatically_derived]
4593            #[doc(hidden)]
4594            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4595            for allocationManagerReturn {
4596                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4597                    Self { _0: tuple.0 }
4598                }
4599            }
4600        }
4601        #[automatically_derived]
4602        impl alloy_sol_types::SolCall for allocationManagerCall {
4603            type Parameters<'a> = ();
4604            type Token<'a> = <Self::Parameters<
4605                'a,
4606            > as alloy_sol_types::SolType>::Token<'a>;
4607            type Return = alloy::sol_types::private::Address;
4608            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4609            type ReturnToken<'a> = <Self::ReturnTuple<
4610                'a,
4611            > as alloy_sol_types::SolType>::Token<'a>;
4612            const SIGNATURE: &'static str = "allocationManager()";
4613            const SELECTOR: [u8; 4] = [202u8, 138u8, 167u8, 199u8];
4614            #[inline]
4615            fn new<'a>(
4616                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4617            ) -> Self {
4618                tuple.into()
4619            }
4620            #[inline]
4621            fn tokenize(&self) -> Self::Token<'_> {
4622                ()
4623            }
4624            #[inline]
4625            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4626                (
4627                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4628                        ret,
4629                    ),
4630                )
4631            }
4632            #[inline]
4633            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4634                <Self::ReturnTuple<
4635                    '_,
4636                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4637                    .map(|r| {
4638                        let r: allocationManagerReturn = r.into();
4639                        r._0
4640                    })
4641            }
4642            #[inline]
4643            fn abi_decode_returns_validate(
4644                data: &[u8],
4645            ) -> alloy_sol_types::Result<Self::Return> {
4646                <Self::ReturnTuple<
4647                    '_,
4648                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4649                    .map(|r| {
4650                        let r: allocationManagerReturn = r.into();
4651                        r._0
4652                    })
4653            }
4654        }
4655    };
4656    #[derive(serde::Serialize, serde::Deserialize)]
4657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4658    /**Function with signature `avsDirectory()` and selector `0x6b3aa72e`.
4659```solidity
4660function avsDirectory() external view returns (address);
4661```*/
4662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4663    #[derive(Clone)]
4664    pub struct avsDirectoryCall;
4665    #[derive(serde::Serialize, serde::Deserialize)]
4666    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4667    ///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function.
4668    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4669    #[derive(Clone)]
4670    pub struct avsDirectoryReturn {
4671        #[allow(missing_docs)]
4672        pub _0: alloy::sol_types::private::Address,
4673    }
4674    #[allow(
4675        non_camel_case_types,
4676        non_snake_case,
4677        clippy::pub_underscore_fields,
4678        clippy::style
4679    )]
4680    const _: () = {
4681        use alloy::sol_types as alloy_sol_types;
4682        {
4683            #[doc(hidden)]
4684            type UnderlyingSolTuple<'a> = ();
4685            #[doc(hidden)]
4686            type UnderlyingRustTuple<'a> = ();
4687            #[cfg(test)]
4688            #[allow(dead_code, unreachable_patterns)]
4689            fn _type_assertion(
4690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4691            ) {
4692                match _t {
4693                    alloy_sol_types::private::AssertTypeEq::<
4694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4695                    >(_) => {}
4696                }
4697            }
4698            #[automatically_derived]
4699            #[doc(hidden)]
4700            impl ::core::convert::From<avsDirectoryCall> for UnderlyingRustTuple<'_> {
4701                fn from(value: avsDirectoryCall) -> Self {
4702                    ()
4703                }
4704            }
4705            #[automatically_derived]
4706            #[doc(hidden)]
4707            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryCall {
4708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4709                    Self
4710                }
4711            }
4712        }
4713        {
4714            #[doc(hidden)]
4715            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4716            #[doc(hidden)]
4717            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4718            #[cfg(test)]
4719            #[allow(dead_code, unreachable_patterns)]
4720            fn _type_assertion(
4721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4722            ) {
4723                match _t {
4724                    alloy_sol_types::private::AssertTypeEq::<
4725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4726                    >(_) => {}
4727                }
4728            }
4729            #[automatically_derived]
4730            #[doc(hidden)]
4731            impl ::core::convert::From<avsDirectoryReturn> for UnderlyingRustTuple<'_> {
4732                fn from(value: avsDirectoryReturn) -> Self {
4733                    (value._0,)
4734                }
4735            }
4736            #[automatically_derived]
4737            #[doc(hidden)]
4738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryReturn {
4739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4740                    Self { _0: tuple.0 }
4741                }
4742            }
4743        }
4744        #[automatically_derived]
4745        impl alloy_sol_types::SolCall for avsDirectoryCall {
4746            type Parameters<'a> = ();
4747            type Token<'a> = <Self::Parameters<
4748                'a,
4749            > as alloy_sol_types::SolType>::Token<'a>;
4750            type Return = alloy::sol_types::private::Address;
4751            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4752            type ReturnToken<'a> = <Self::ReturnTuple<
4753                'a,
4754            > as alloy_sol_types::SolType>::Token<'a>;
4755            const SIGNATURE: &'static str = "avsDirectory()";
4756            const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8];
4757            #[inline]
4758            fn new<'a>(
4759                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4760            ) -> Self {
4761                tuple.into()
4762            }
4763            #[inline]
4764            fn tokenize(&self) -> Self::Token<'_> {
4765                ()
4766            }
4767            #[inline]
4768            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4769                (
4770                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4771                        ret,
4772                    ),
4773                )
4774            }
4775            #[inline]
4776            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4777                <Self::ReturnTuple<
4778                    '_,
4779                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4780                    .map(|r| {
4781                        let r: avsDirectoryReturn = r.into();
4782                        r._0
4783                    })
4784            }
4785            #[inline]
4786            fn abi_decode_returns_validate(
4787                data: &[u8],
4788            ) -> alloy_sol_types::Result<Self::Return> {
4789                <Self::ReturnTuple<
4790                    '_,
4791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4792                    .map(|r| {
4793                        let r: avsDirectoryReturn = r.into();
4794                        r._0
4795                    })
4796            }
4797        }
4798    };
4799    #[derive(serde::Serialize, serde::Deserialize)]
4800    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4801    /**Function with signature `delegation()` and selector `0xdf5cf723`.
4802```solidity
4803function delegation() external view returns (address);
4804```*/
4805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4806    #[derive(Clone)]
4807    pub struct delegationCall;
4808    #[derive(serde::Serialize, serde::Deserialize)]
4809    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4810    ///Container type for the return parameters of the [`delegation()`](delegationCall) function.
4811    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4812    #[derive(Clone)]
4813    pub struct delegationReturn {
4814        #[allow(missing_docs)]
4815        pub _0: alloy::sol_types::private::Address,
4816    }
4817    #[allow(
4818        non_camel_case_types,
4819        non_snake_case,
4820        clippy::pub_underscore_fields,
4821        clippy::style
4822    )]
4823    const _: () = {
4824        use alloy::sol_types as alloy_sol_types;
4825        {
4826            #[doc(hidden)]
4827            type UnderlyingSolTuple<'a> = ();
4828            #[doc(hidden)]
4829            type UnderlyingRustTuple<'a> = ();
4830            #[cfg(test)]
4831            #[allow(dead_code, unreachable_patterns)]
4832            fn _type_assertion(
4833                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4834            ) {
4835                match _t {
4836                    alloy_sol_types::private::AssertTypeEq::<
4837                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4838                    >(_) => {}
4839                }
4840            }
4841            #[automatically_derived]
4842            #[doc(hidden)]
4843            impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
4844                fn from(value: delegationCall) -> Self {
4845                    ()
4846                }
4847            }
4848            #[automatically_derived]
4849            #[doc(hidden)]
4850            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
4851                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4852                    Self
4853                }
4854            }
4855        }
4856        {
4857            #[doc(hidden)]
4858            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4859            #[doc(hidden)]
4860            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4861            #[cfg(test)]
4862            #[allow(dead_code, unreachable_patterns)]
4863            fn _type_assertion(
4864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4865            ) {
4866                match _t {
4867                    alloy_sol_types::private::AssertTypeEq::<
4868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4869                    >(_) => {}
4870                }
4871            }
4872            #[automatically_derived]
4873            #[doc(hidden)]
4874            impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
4875                fn from(value: delegationReturn) -> Self {
4876                    (value._0,)
4877                }
4878            }
4879            #[automatically_derived]
4880            #[doc(hidden)]
4881            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
4882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4883                    Self { _0: tuple.0 }
4884                }
4885            }
4886        }
4887        #[automatically_derived]
4888        impl alloy_sol_types::SolCall for delegationCall {
4889            type Parameters<'a> = ();
4890            type Token<'a> = <Self::Parameters<
4891                'a,
4892            > as alloy_sol_types::SolType>::Token<'a>;
4893            type Return = alloy::sol_types::private::Address;
4894            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4895            type ReturnToken<'a> = <Self::ReturnTuple<
4896                'a,
4897            > as alloy_sol_types::SolType>::Token<'a>;
4898            const SIGNATURE: &'static str = "delegation()";
4899            const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
4900            #[inline]
4901            fn new<'a>(
4902                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4903            ) -> Self {
4904                tuple.into()
4905            }
4906            #[inline]
4907            fn tokenize(&self) -> Self::Token<'_> {
4908                ()
4909            }
4910            #[inline]
4911            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4912                (
4913                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4914                        ret,
4915                    ),
4916                )
4917            }
4918            #[inline]
4919            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4920                <Self::ReturnTuple<
4921                    '_,
4922                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4923                    .map(|r| {
4924                        let r: delegationReturn = r.into();
4925                        r._0
4926                    })
4927            }
4928            #[inline]
4929            fn abi_decode_returns_validate(
4930                data: &[u8],
4931            ) -> alloy_sol_types::Result<Self::Return> {
4932                <Self::ReturnTuple<
4933                    '_,
4934                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4935                    .map(|r| {
4936                        let r: delegationReturn = r.into();
4937                        r._0
4938                    })
4939            }
4940        }
4941    };
4942    #[derive(serde::Serialize, serde::Deserialize)]
4943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4944    /**Function with signature `deregisterOperator(bytes32,bytes)` and selector `0xbd29b8cd`.
4945```solidity
4946function deregisterOperator(bytes32 operatorId, bytes memory quorumNumbers) external;
4947```*/
4948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4949    #[derive(Clone)]
4950    pub struct deregisterOperatorCall {
4951        #[allow(missing_docs)]
4952        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
4953        #[allow(missing_docs)]
4954        pub quorumNumbers: alloy::sol_types::private::Bytes,
4955    }
4956    ///Container type for the return parameters of the [`deregisterOperator(bytes32,bytes)`](deregisterOperatorCall) function.
4957    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4958    #[derive(Clone)]
4959    pub struct deregisterOperatorReturn {}
4960    #[allow(
4961        non_camel_case_types,
4962        non_snake_case,
4963        clippy::pub_underscore_fields,
4964        clippy::style
4965    )]
4966    const _: () = {
4967        use alloy::sol_types as alloy_sol_types;
4968        {
4969            #[doc(hidden)]
4970            type UnderlyingSolTuple<'a> = (
4971                alloy::sol_types::sol_data::FixedBytes<32>,
4972                alloy::sol_types::sol_data::Bytes,
4973            );
4974            #[doc(hidden)]
4975            type UnderlyingRustTuple<'a> = (
4976                alloy::sol_types::private::FixedBytes<32>,
4977                alloy::sol_types::private::Bytes,
4978            );
4979            #[cfg(test)]
4980            #[allow(dead_code, unreachable_patterns)]
4981            fn _type_assertion(
4982                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4983            ) {
4984                match _t {
4985                    alloy_sol_types::private::AssertTypeEq::<
4986                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4987                    >(_) => {}
4988                }
4989            }
4990            #[automatically_derived]
4991            #[doc(hidden)]
4992            impl ::core::convert::From<deregisterOperatorCall>
4993            for UnderlyingRustTuple<'_> {
4994                fn from(value: deregisterOperatorCall) -> Self {
4995                    (value.operatorId, value.quorumNumbers)
4996                }
4997            }
4998            #[automatically_derived]
4999            #[doc(hidden)]
5000            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5001            for deregisterOperatorCall {
5002                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5003                    Self {
5004                        operatorId: tuple.0,
5005                        quorumNumbers: tuple.1,
5006                    }
5007                }
5008            }
5009        }
5010        {
5011            #[doc(hidden)]
5012            type UnderlyingSolTuple<'a> = ();
5013            #[doc(hidden)]
5014            type UnderlyingRustTuple<'a> = ();
5015            #[cfg(test)]
5016            #[allow(dead_code, unreachable_patterns)]
5017            fn _type_assertion(
5018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5019            ) {
5020                match _t {
5021                    alloy_sol_types::private::AssertTypeEq::<
5022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5023                    >(_) => {}
5024                }
5025            }
5026            #[automatically_derived]
5027            #[doc(hidden)]
5028            impl ::core::convert::From<deregisterOperatorReturn>
5029            for UnderlyingRustTuple<'_> {
5030                fn from(value: deregisterOperatorReturn) -> Self {
5031                    ()
5032                }
5033            }
5034            #[automatically_derived]
5035            #[doc(hidden)]
5036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5037            for deregisterOperatorReturn {
5038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5039                    Self {}
5040                }
5041            }
5042        }
5043        impl deregisterOperatorReturn {
5044            fn _tokenize(
5045                &self,
5046            ) -> <deregisterOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5047                ()
5048            }
5049        }
5050        #[automatically_derived]
5051        impl alloy_sol_types::SolCall for deregisterOperatorCall {
5052            type Parameters<'a> = (
5053                alloy::sol_types::sol_data::FixedBytes<32>,
5054                alloy::sol_types::sol_data::Bytes,
5055            );
5056            type Token<'a> = <Self::Parameters<
5057                'a,
5058            > as alloy_sol_types::SolType>::Token<'a>;
5059            type Return = deregisterOperatorReturn;
5060            type ReturnTuple<'a> = ();
5061            type ReturnToken<'a> = <Self::ReturnTuple<
5062                'a,
5063            > as alloy_sol_types::SolType>::Token<'a>;
5064            const SIGNATURE: &'static str = "deregisterOperator(bytes32,bytes)";
5065            const SELECTOR: [u8; 4] = [189u8, 41u8, 184u8, 205u8];
5066            #[inline]
5067            fn new<'a>(
5068                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5069            ) -> Self {
5070                tuple.into()
5071            }
5072            #[inline]
5073            fn tokenize(&self) -> Self::Token<'_> {
5074                (
5075                    <alloy::sol_types::sol_data::FixedBytes<
5076                        32,
5077                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5078                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5079                        &self.quorumNumbers,
5080                    ),
5081                )
5082            }
5083            #[inline]
5084            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5085                deregisterOperatorReturn::_tokenize(ret)
5086            }
5087            #[inline]
5088            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5089                <Self::ReturnTuple<
5090                    '_,
5091                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5092                    .map(Into::into)
5093            }
5094            #[inline]
5095            fn abi_decode_returns_validate(
5096                data: &[u8],
5097            ) -> alloy_sol_types::Result<Self::Return> {
5098                <Self::ReturnTuple<
5099                    '_,
5100                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5101                    .map(Into::into)
5102            }
5103        }
5104    };
5105    #[derive(serde::Serialize, serde::Deserialize)]
5106    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5107    /**Function with signature `getCurrentStake(bytes32,uint8)` and selector `0x5401ed27`.
5108```solidity
5109function getCurrentStake(bytes32 operatorId, uint8 quorumNumber) external view returns (uint96);
5110```*/
5111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5112    #[derive(Clone)]
5113    pub struct getCurrentStakeCall {
5114        #[allow(missing_docs)]
5115        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5116        #[allow(missing_docs)]
5117        pub quorumNumber: u8,
5118    }
5119    #[derive(serde::Serialize, serde::Deserialize)]
5120    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5121    ///Container type for the return parameters of the [`getCurrentStake(bytes32,uint8)`](getCurrentStakeCall) function.
5122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5123    #[derive(Clone)]
5124    pub struct getCurrentStakeReturn {
5125        #[allow(missing_docs)]
5126        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5127    }
5128    #[allow(
5129        non_camel_case_types,
5130        non_snake_case,
5131        clippy::pub_underscore_fields,
5132        clippy::style
5133    )]
5134    const _: () = {
5135        use alloy::sol_types as alloy_sol_types;
5136        {
5137            #[doc(hidden)]
5138            type UnderlyingSolTuple<'a> = (
5139                alloy::sol_types::sol_data::FixedBytes<32>,
5140                alloy::sol_types::sol_data::Uint<8>,
5141            );
5142            #[doc(hidden)]
5143            type UnderlyingRustTuple<'a> = (
5144                alloy::sol_types::private::FixedBytes<32>,
5145                u8,
5146            );
5147            #[cfg(test)]
5148            #[allow(dead_code, unreachable_patterns)]
5149            fn _type_assertion(
5150                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5151            ) {
5152                match _t {
5153                    alloy_sol_types::private::AssertTypeEq::<
5154                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5155                    >(_) => {}
5156                }
5157            }
5158            #[automatically_derived]
5159            #[doc(hidden)]
5160            impl ::core::convert::From<getCurrentStakeCall> for UnderlyingRustTuple<'_> {
5161                fn from(value: getCurrentStakeCall) -> Self {
5162                    (value.operatorId, value.quorumNumber)
5163                }
5164            }
5165            #[automatically_derived]
5166            #[doc(hidden)]
5167            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getCurrentStakeCall {
5168                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5169                    Self {
5170                        operatorId: tuple.0,
5171                        quorumNumber: tuple.1,
5172                    }
5173                }
5174            }
5175        }
5176        {
5177            #[doc(hidden)]
5178            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5179            #[doc(hidden)]
5180            type UnderlyingRustTuple<'a> = (
5181                alloy::sol_types::private::primitives::aliases::U96,
5182            );
5183            #[cfg(test)]
5184            #[allow(dead_code, unreachable_patterns)]
5185            fn _type_assertion(
5186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5187            ) {
5188                match _t {
5189                    alloy_sol_types::private::AssertTypeEq::<
5190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5191                    >(_) => {}
5192                }
5193            }
5194            #[automatically_derived]
5195            #[doc(hidden)]
5196            impl ::core::convert::From<getCurrentStakeReturn>
5197            for UnderlyingRustTuple<'_> {
5198                fn from(value: getCurrentStakeReturn) -> Self {
5199                    (value._0,)
5200                }
5201            }
5202            #[automatically_derived]
5203            #[doc(hidden)]
5204            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5205            for getCurrentStakeReturn {
5206                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5207                    Self { _0: tuple.0 }
5208                }
5209            }
5210        }
5211        #[automatically_derived]
5212        impl alloy_sol_types::SolCall for getCurrentStakeCall {
5213            type Parameters<'a> = (
5214                alloy::sol_types::sol_data::FixedBytes<32>,
5215                alloy::sol_types::sol_data::Uint<8>,
5216            );
5217            type Token<'a> = <Self::Parameters<
5218                'a,
5219            > as alloy_sol_types::SolType>::Token<'a>;
5220            type Return = alloy::sol_types::private::primitives::aliases::U96;
5221            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5222            type ReturnToken<'a> = <Self::ReturnTuple<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            const SIGNATURE: &'static str = "getCurrentStake(bytes32,uint8)";
5226            const SELECTOR: [u8; 4] = [84u8, 1u8, 237u8, 39u8];
5227            #[inline]
5228            fn new<'a>(
5229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5230            ) -> Self {
5231                tuple.into()
5232            }
5233            #[inline]
5234            fn tokenize(&self) -> Self::Token<'_> {
5235                (
5236                    <alloy::sol_types::sol_data::FixedBytes<
5237                        32,
5238                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5239                    <alloy::sol_types::sol_data::Uint<
5240                        8,
5241                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5242                )
5243            }
5244            #[inline]
5245            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5246                (
5247                    <alloy::sol_types::sol_data::Uint<
5248                        96,
5249                    > as alloy_sol_types::SolType>::tokenize(ret),
5250                )
5251            }
5252            #[inline]
5253            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5254                <Self::ReturnTuple<
5255                    '_,
5256                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5257                    .map(|r| {
5258                        let r: getCurrentStakeReturn = r.into();
5259                        r._0
5260                    })
5261            }
5262            #[inline]
5263            fn abi_decode_returns_validate(
5264                data: &[u8],
5265            ) -> alloy_sol_types::Result<Self::Return> {
5266                <Self::ReturnTuple<
5267                    '_,
5268                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5269                    .map(|r| {
5270                        let r: getCurrentStakeReturn = r.into();
5271                        r._0
5272                    })
5273            }
5274        }
5275    };
5276    #[derive(serde::Serialize, serde::Deserialize)]
5277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5278    /**Function with signature `getCurrentTotalStake(uint8)` and selector `0xd5eccc05`.
5279```solidity
5280function getCurrentTotalStake(uint8 quorumNumber) external view returns (uint96);
5281```*/
5282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5283    #[derive(Clone)]
5284    pub struct getCurrentTotalStakeCall {
5285        #[allow(missing_docs)]
5286        pub quorumNumber: u8,
5287    }
5288    #[derive(serde::Serialize, serde::Deserialize)]
5289    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5290    ///Container type for the return parameters of the [`getCurrentTotalStake(uint8)`](getCurrentTotalStakeCall) function.
5291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5292    #[derive(Clone)]
5293    pub struct getCurrentTotalStakeReturn {
5294        #[allow(missing_docs)]
5295        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5296    }
5297    #[allow(
5298        non_camel_case_types,
5299        non_snake_case,
5300        clippy::pub_underscore_fields,
5301        clippy::style
5302    )]
5303    const _: () = {
5304        use alloy::sol_types as alloy_sol_types;
5305        {
5306            #[doc(hidden)]
5307            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5308            #[doc(hidden)]
5309            type UnderlyingRustTuple<'a> = (u8,);
5310            #[cfg(test)]
5311            #[allow(dead_code, unreachable_patterns)]
5312            fn _type_assertion(
5313                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5314            ) {
5315                match _t {
5316                    alloy_sol_types::private::AssertTypeEq::<
5317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5318                    >(_) => {}
5319                }
5320            }
5321            #[automatically_derived]
5322            #[doc(hidden)]
5323            impl ::core::convert::From<getCurrentTotalStakeCall>
5324            for UnderlyingRustTuple<'_> {
5325                fn from(value: getCurrentTotalStakeCall) -> Self {
5326                    (value.quorumNumber,)
5327                }
5328            }
5329            #[automatically_derived]
5330            #[doc(hidden)]
5331            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5332            for getCurrentTotalStakeCall {
5333                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5334                    Self { quorumNumber: tuple.0 }
5335                }
5336            }
5337        }
5338        {
5339            #[doc(hidden)]
5340            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5341            #[doc(hidden)]
5342            type UnderlyingRustTuple<'a> = (
5343                alloy::sol_types::private::primitives::aliases::U96,
5344            );
5345            #[cfg(test)]
5346            #[allow(dead_code, unreachable_patterns)]
5347            fn _type_assertion(
5348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5349            ) {
5350                match _t {
5351                    alloy_sol_types::private::AssertTypeEq::<
5352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5353                    >(_) => {}
5354                }
5355            }
5356            #[automatically_derived]
5357            #[doc(hidden)]
5358            impl ::core::convert::From<getCurrentTotalStakeReturn>
5359            for UnderlyingRustTuple<'_> {
5360                fn from(value: getCurrentTotalStakeReturn) -> Self {
5361                    (value._0,)
5362                }
5363            }
5364            #[automatically_derived]
5365            #[doc(hidden)]
5366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5367            for getCurrentTotalStakeReturn {
5368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5369                    Self { _0: tuple.0 }
5370                }
5371            }
5372        }
5373        #[automatically_derived]
5374        impl alloy_sol_types::SolCall for getCurrentTotalStakeCall {
5375            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
5376            type Token<'a> = <Self::Parameters<
5377                'a,
5378            > as alloy_sol_types::SolType>::Token<'a>;
5379            type Return = alloy::sol_types::private::primitives::aliases::U96;
5380            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5381            type ReturnToken<'a> = <Self::ReturnTuple<
5382                'a,
5383            > as alloy_sol_types::SolType>::Token<'a>;
5384            const SIGNATURE: &'static str = "getCurrentTotalStake(uint8)";
5385            const SELECTOR: [u8; 4] = [213u8, 236u8, 204u8, 5u8];
5386            #[inline]
5387            fn new<'a>(
5388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5389            ) -> Self {
5390                tuple.into()
5391            }
5392            #[inline]
5393            fn tokenize(&self) -> Self::Token<'_> {
5394                (
5395                    <alloy::sol_types::sol_data::Uint<
5396                        8,
5397                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5398                )
5399            }
5400            #[inline]
5401            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5402                (
5403                    <alloy::sol_types::sol_data::Uint<
5404                        96,
5405                    > as alloy_sol_types::SolType>::tokenize(ret),
5406                )
5407            }
5408            #[inline]
5409            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5410                <Self::ReturnTuple<
5411                    '_,
5412                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5413                    .map(|r| {
5414                        let r: getCurrentTotalStakeReturn = r.into();
5415                        r._0
5416                    })
5417            }
5418            #[inline]
5419            fn abi_decode_returns_validate(
5420                data: &[u8],
5421            ) -> alloy_sol_types::Result<Self::Return> {
5422                <Self::ReturnTuple<
5423                    '_,
5424                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5425                    .map(|r| {
5426                        let r: getCurrentTotalStakeReturn = r.into();
5427                        r._0
5428                    })
5429            }
5430        }
5431    };
5432    #[derive(serde::Serialize, serde::Deserialize)]
5433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5434    /**Function with signature `getLatestStakeUpdate(bytes32,uint8)` and selector `0xf851e198`.
5435```solidity
5436function getLatestStakeUpdate(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate memory);
5437```*/
5438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5439    #[derive(Clone)]
5440    pub struct getLatestStakeUpdateCall {
5441        #[allow(missing_docs)]
5442        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5443        #[allow(missing_docs)]
5444        pub quorumNumber: u8,
5445    }
5446    #[derive(serde::Serialize, serde::Deserialize)]
5447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5448    ///Container type for the return parameters of the [`getLatestStakeUpdate(bytes32,uint8)`](getLatestStakeUpdateCall) function.
5449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5450    #[derive(Clone)]
5451    pub struct getLatestStakeUpdateReturn {
5452        #[allow(missing_docs)]
5453        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5454    }
5455    #[allow(
5456        non_camel_case_types,
5457        non_snake_case,
5458        clippy::pub_underscore_fields,
5459        clippy::style
5460    )]
5461    const _: () = {
5462        use alloy::sol_types as alloy_sol_types;
5463        {
5464            #[doc(hidden)]
5465            type UnderlyingSolTuple<'a> = (
5466                alloy::sol_types::sol_data::FixedBytes<32>,
5467                alloy::sol_types::sol_data::Uint<8>,
5468            );
5469            #[doc(hidden)]
5470            type UnderlyingRustTuple<'a> = (
5471                alloy::sol_types::private::FixedBytes<32>,
5472                u8,
5473            );
5474            #[cfg(test)]
5475            #[allow(dead_code, unreachable_patterns)]
5476            fn _type_assertion(
5477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5478            ) {
5479                match _t {
5480                    alloy_sol_types::private::AssertTypeEq::<
5481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5482                    >(_) => {}
5483                }
5484            }
5485            #[automatically_derived]
5486            #[doc(hidden)]
5487            impl ::core::convert::From<getLatestStakeUpdateCall>
5488            for UnderlyingRustTuple<'_> {
5489                fn from(value: getLatestStakeUpdateCall) -> Self {
5490                    (value.operatorId, value.quorumNumber)
5491                }
5492            }
5493            #[automatically_derived]
5494            #[doc(hidden)]
5495            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5496            for getLatestStakeUpdateCall {
5497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5498                    Self {
5499                        operatorId: tuple.0,
5500                        quorumNumber: tuple.1,
5501                    }
5502                }
5503            }
5504        }
5505        {
5506            #[doc(hidden)]
5507            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5508            #[doc(hidden)]
5509            type UnderlyingRustTuple<'a> = (
5510                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
5511            );
5512            #[cfg(test)]
5513            #[allow(dead_code, unreachable_patterns)]
5514            fn _type_assertion(
5515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5516            ) {
5517                match _t {
5518                    alloy_sol_types::private::AssertTypeEq::<
5519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5520                    >(_) => {}
5521                }
5522            }
5523            #[automatically_derived]
5524            #[doc(hidden)]
5525            impl ::core::convert::From<getLatestStakeUpdateReturn>
5526            for UnderlyingRustTuple<'_> {
5527                fn from(value: getLatestStakeUpdateReturn) -> Self {
5528                    (value._0,)
5529                }
5530            }
5531            #[automatically_derived]
5532            #[doc(hidden)]
5533            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5534            for getLatestStakeUpdateReturn {
5535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5536                    Self { _0: tuple.0 }
5537                }
5538            }
5539        }
5540        #[automatically_derived]
5541        impl alloy_sol_types::SolCall for getLatestStakeUpdateCall {
5542            type Parameters<'a> = (
5543                alloy::sol_types::sol_data::FixedBytes<32>,
5544                alloy::sol_types::sol_data::Uint<8>,
5545            );
5546            type Token<'a> = <Self::Parameters<
5547                'a,
5548            > as alloy_sol_types::SolType>::Token<'a>;
5549            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
5550            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
5551            type ReturnToken<'a> = <Self::ReturnTuple<
5552                'a,
5553            > as alloy_sol_types::SolType>::Token<'a>;
5554            const SIGNATURE: &'static str = "getLatestStakeUpdate(bytes32,uint8)";
5555            const SELECTOR: [u8; 4] = [248u8, 81u8, 225u8, 152u8];
5556            #[inline]
5557            fn new<'a>(
5558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5559            ) -> Self {
5560                tuple.into()
5561            }
5562            #[inline]
5563            fn tokenize(&self) -> Self::Token<'_> {
5564                (
5565                    <alloy::sol_types::sol_data::FixedBytes<
5566                        32,
5567                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5568                    <alloy::sol_types::sol_data::Uint<
5569                        8,
5570                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5571                )
5572            }
5573            #[inline]
5574            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5575                (
5576                    <IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(
5577                        ret,
5578                    ),
5579                )
5580            }
5581            #[inline]
5582            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5583                <Self::ReturnTuple<
5584                    '_,
5585                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5586                    .map(|r| {
5587                        let r: getLatestStakeUpdateReturn = r.into();
5588                        r._0
5589                    })
5590            }
5591            #[inline]
5592            fn abi_decode_returns_validate(
5593                data: &[u8],
5594            ) -> alloy_sol_types::Result<Self::Return> {
5595                <Self::ReturnTuple<
5596                    '_,
5597                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5598                    .map(|r| {
5599                        let r: getLatestStakeUpdateReturn = r.into();
5600                        r._0
5601                    })
5602            }
5603        }
5604    };
5605    #[derive(serde::Serialize, serde::Deserialize)]
5606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5607    /**Function with signature `getStakeAtBlockNumber(bytes32,uint8,uint32)` and selector `0xfa28c627`.
5608```solidity
5609function getStakeAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint96);
5610```*/
5611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5612    #[derive(Clone)]
5613    pub struct getStakeAtBlockNumberCall {
5614        #[allow(missing_docs)]
5615        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5616        #[allow(missing_docs)]
5617        pub quorumNumber: u8,
5618        #[allow(missing_docs)]
5619        pub blockNumber: u32,
5620    }
5621    #[derive(serde::Serialize, serde::Deserialize)]
5622    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5623    ///Container type for the return parameters of the [`getStakeAtBlockNumber(bytes32,uint8,uint32)`](getStakeAtBlockNumberCall) function.
5624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5625    #[derive(Clone)]
5626    pub struct getStakeAtBlockNumberReturn {
5627        #[allow(missing_docs)]
5628        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5629    }
5630    #[allow(
5631        non_camel_case_types,
5632        non_snake_case,
5633        clippy::pub_underscore_fields,
5634        clippy::style
5635    )]
5636    const _: () = {
5637        use alloy::sol_types as alloy_sol_types;
5638        {
5639            #[doc(hidden)]
5640            type UnderlyingSolTuple<'a> = (
5641                alloy::sol_types::sol_data::FixedBytes<32>,
5642                alloy::sol_types::sol_data::Uint<8>,
5643                alloy::sol_types::sol_data::Uint<32>,
5644            );
5645            #[doc(hidden)]
5646            type UnderlyingRustTuple<'a> = (
5647                alloy::sol_types::private::FixedBytes<32>,
5648                u8,
5649                u32,
5650            );
5651            #[cfg(test)]
5652            #[allow(dead_code, unreachable_patterns)]
5653            fn _type_assertion(
5654                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5655            ) {
5656                match _t {
5657                    alloy_sol_types::private::AssertTypeEq::<
5658                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5659                    >(_) => {}
5660                }
5661            }
5662            #[automatically_derived]
5663            #[doc(hidden)]
5664            impl ::core::convert::From<getStakeAtBlockNumberCall>
5665            for UnderlyingRustTuple<'_> {
5666                fn from(value: getStakeAtBlockNumberCall) -> Self {
5667                    (value.operatorId, value.quorumNumber, value.blockNumber)
5668                }
5669            }
5670            #[automatically_derived]
5671            #[doc(hidden)]
5672            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5673            for getStakeAtBlockNumberCall {
5674                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5675                    Self {
5676                        operatorId: tuple.0,
5677                        quorumNumber: tuple.1,
5678                        blockNumber: tuple.2,
5679                    }
5680                }
5681            }
5682        }
5683        {
5684            #[doc(hidden)]
5685            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5686            #[doc(hidden)]
5687            type UnderlyingRustTuple<'a> = (
5688                alloy::sol_types::private::primitives::aliases::U96,
5689            );
5690            #[cfg(test)]
5691            #[allow(dead_code, unreachable_patterns)]
5692            fn _type_assertion(
5693                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5694            ) {
5695                match _t {
5696                    alloy_sol_types::private::AssertTypeEq::<
5697                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5698                    >(_) => {}
5699                }
5700            }
5701            #[automatically_derived]
5702            #[doc(hidden)]
5703            impl ::core::convert::From<getStakeAtBlockNumberReturn>
5704            for UnderlyingRustTuple<'_> {
5705                fn from(value: getStakeAtBlockNumberReturn) -> Self {
5706                    (value._0,)
5707                }
5708            }
5709            #[automatically_derived]
5710            #[doc(hidden)]
5711            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5712            for getStakeAtBlockNumberReturn {
5713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5714                    Self { _0: tuple.0 }
5715                }
5716            }
5717        }
5718        #[automatically_derived]
5719        impl alloy_sol_types::SolCall for getStakeAtBlockNumberCall {
5720            type Parameters<'a> = (
5721                alloy::sol_types::sol_data::FixedBytes<32>,
5722                alloy::sol_types::sol_data::Uint<8>,
5723                alloy::sol_types::sol_data::Uint<32>,
5724            );
5725            type Token<'a> = <Self::Parameters<
5726                'a,
5727            > as alloy_sol_types::SolType>::Token<'a>;
5728            type Return = alloy::sol_types::private::primitives::aliases::U96;
5729            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5730            type ReturnToken<'a> = <Self::ReturnTuple<
5731                'a,
5732            > as alloy_sol_types::SolType>::Token<'a>;
5733            const SIGNATURE: &'static str = "getStakeAtBlockNumber(bytes32,uint8,uint32)";
5734            const SELECTOR: [u8; 4] = [250u8, 40u8, 198u8, 39u8];
5735            #[inline]
5736            fn new<'a>(
5737                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5738            ) -> Self {
5739                tuple.into()
5740            }
5741            #[inline]
5742            fn tokenize(&self) -> Self::Token<'_> {
5743                (
5744                    <alloy::sol_types::sol_data::FixedBytes<
5745                        32,
5746                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5747                    <alloy::sol_types::sol_data::Uint<
5748                        8,
5749                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5750                    <alloy::sol_types::sol_data::Uint<
5751                        32,
5752                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5753                )
5754            }
5755            #[inline]
5756            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5757                (
5758                    <alloy::sol_types::sol_data::Uint<
5759                        96,
5760                    > as alloy_sol_types::SolType>::tokenize(ret),
5761                )
5762            }
5763            #[inline]
5764            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5765                <Self::ReturnTuple<
5766                    '_,
5767                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5768                    .map(|r| {
5769                        let r: getStakeAtBlockNumberReturn = r.into();
5770                        r._0
5771                    })
5772            }
5773            #[inline]
5774            fn abi_decode_returns_validate(
5775                data: &[u8],
5776            ) -> alloy_sol_types::Result<Self::Return> {
5777                <Self::ReturnTuple<
5778                    '_,
5779                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5780                    .map(|r| {
5781                        let r: getStakeAtBlockNumberReturn = r.into();
5782                        r._0
5783                    })
5784            }
5785        }
5786    };
5787    #[derive(serde::Serialize, serde::Deserialize)]
5788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5789    /**Function with signature `getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)` and selector `0xf2be94ae`.
5790```solidity
5791function getStakeAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, bytes32 operatorId, uint256 index) external view returns (uint96);
5792```*/
5793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5794    #[derive(Clone)]
5795    pub struct getStakeAtBlockNumberAndIndexCall {
5796        #[allow(missing_docs)]
5797        pub quorumNumber: u8,
5798        #[allow(missing_docs)]
5799        pub blockNumber: u32,
5800        #[allow(missing_docs)]
5801        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5802        #[allow(missing_docs)]
5803        pub index: alloy::sol_types::private::primitives::aliases::U256,
5804    }
5805    #[derive(serde::Serialize, serde::Deserialize)]
5806    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5807    ///Container type for the return parameters of the [`getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)`](getStakeAtBlockNumberAndIndexCall) function.
5808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5809    #[derive(Clone)]
5810    pub struct getStakeAtBlockNumberAndIndexReturn {
5811        #[allow(missing_docs)]
5812        pub _0: alloy::sol_types::private::primitives::aliases::U96,
5813    }
5814    #[allow(
5815        non_camel_case_types,
5816        non_snake_case,
5817        clippy::pub_underscore_fields,
5818        clippy::style
5819    )]
5820    const _: () = {
5821        use alloy::sol_types as alloy_sol_types;
5822        {
5823            #[doc(hidden)]
5824            type UnderlyingSolTuple<'a> = (
5825                alloy::sol_types::sol_data::Uint<8>,
5826                alloy::sol_types::sol_data::Uint<32>,
5827                alloy::sol_types::sol_data::FixedBytes<32>,
5828                alloy::sol_types::sol_data::Uint<256>,
5829            );
5830            #[doc(hidden)]
5831            type UnderlyingRustTuple<'a> = (
5832                u8,
5833                u32,
5834                alloy::sol_types::private::FixedBytes<32>,
5835                alloy::sol_types::private::primitives::aliases::U256,
5836            );
5837            #[cfg(test)]
5838            #[allow(dead_code, unreachable_patterns)]
5839            fn _type_assertion(
5840                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5841            ) {
5842                match _t {
5843                    alloy_sol_types::private::AssertTypeEq::<
5844                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5845                    >(_) => {}
5846                }
5847            }
5848            #[automatically_derived]
5849            #[doc(hidden)]
5850            impl ::core::convert::From<getStakeAtBlockNumberAndIndexCall>
5851            for UnderlyingRustTuple<'_> {
5852                fn from(value: getStakeAtBlockNumberAndIndexCall) -> Self {
5853                    (
5854                        value.quorumNumber,
5855                        value.blockNumber,
5856                        value.operatorId,
5857                        value.index,
5858                    )
5859                }
5860            }
5861            #[automatically_derived]
5862            #[doc(hidden)]
5863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5864            for getStakeAtBlockNumberAndIndexCall {
5865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5866                    Self {
5867                        quorumNumber: tuple.0,
5868                        blockNumber: tuple.1,
5869                        operatorId: tuple.2,
5870                        index: tuple.3,
5871                    }
5872                }
5873            }
5874        }
5875        {
5876            #[doc(hidden)]
5877            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5878            #[doc(hidden)]
5879            type UnderlyingRustTuple<'a> = (
5880                alloy::sol_types::private::primitives::aliases::U96,
5881            );
5882            #[cfg(test)]
5883            #[allow(dead_code, unreachable_patterns)]
5884            fn _type_assertion(
5885                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5886            ) {
5887                match _t {
5888                    alloy_sol_types::private::AssertTypeEq::<
5889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5890                    >(_) => {}
5891                }
5892            }
5893            #[automatically_derived]
5894            #[doc(hidden)]
5895            impl ::core::convert::From<getStakeAtBlockNumberAndIndexReturn>
5896            for UnderlyingRustTuple<'_> {
5897                fn from(value: getStakeAtBlockNumberAndIndexReturn) -> Self {
5898                    (value._0,)
5899                }
5900            }
5901            #[automatically_derived]
5902            #[doc(hidden)]
5903            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5904            for getStakeAtBlockNumberAndIndexReturn {
5905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5906                    Self { _0: tuple.0 }
5907                }
5908            }
5909        }
5910        #[automatically_derived]
5911        impl alloy_sol_types::SolCall for getStakeAtBlockNumberAndIndexCall {
5912            type Parameters<'a> = (
5913                alloy::sol_types::sol_data::Uint<8>,
5914                alloy::sol_types::sol_data::Uint<32>,
5915                alloy::sol_types::sol_data::FixedBytes<32>,
5916                alloy::sol_types::sol_data::Uint<256>,
5917            );
5918            type Token<'a> = <Self::Parameters<
5919                'a,
5920            > as alloy_sol_types::SolType>::Token<'a>;
5921            type Return = alloy::sol_types::private::primitives::aliases::U96;
5922            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
5923            type ReturnToken<'a> = <Self::ReturnTuple<
5924                'a,
5925            > as alloy_sol_types::SolType>::Token<'a>;
5926            const SIGNATURE: &'static str = "getStakeAtBlockNumberAndIndex(uint8,uint32,bytes32,uint256)";
5927            const SELECTOR: [u8; 4] = [242u8, 190u8, 148u8, 174u8];
5928            #[inline]
5929            fn new<'a>(
5930                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5931            ) -> Self {
5932                tuple.into()
5933            }
5934            #[inline]
5935            fn tokenize(&self) -> Self::Token<'_> {
5936                (
5937                    <alloy::sol_types::sol_data::Uint<
5938                        8,
5939                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
5940                    <alloy::sol_types::sol_data::Uint<
5941                        32,
5942                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
5943                    <alloy::sol_types::sol_data::FixedBytes<
5944                        32,
5945                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
5946                    <alloy::sol_types::sol_data::Uint<
5947                        256,
5948                    > as alloy_sol_types::SolType>::tokenize(&self.index),
5949                )
5950            }
5951            #[inline]
5952            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5953                (
5954                    <alloy::sol_types::sol_data::Uint<
5955                        96,
5956                    > as alloy_sol_types::SolType>::tokenize(ret),
5957                )
5958            }
5959            #[inline]
5960            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5961                <Self::ReturnTuple<
5962                    '_,
5963                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5964                    .map(|r| {
5965                        let r: getStakeAtBlockNumberAndIndexReturn = r.into();
5966                        r._0
5967                    })
5968            }
5969            #[inline]
5970            fn abi_decode_returns_validate(
5971                data: &[u8],
5972            ) -> alloy_sol_types::Result<Self::Return> {
5973                <Self::ReturnTuple<
5974                    '_,
5975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5976                    .map(|r| {
5977                        let r: getStakeAtBlockNumberAndIndexReturn = r.into();
5978                        r._0
5979                    })
5980            }
5981        }
5982    };
5983    #[derive(serde::Serialize, serde::Deserialize)]
5984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5985    /**Function with signature `getStakeHistory(bytes32,uint8)` and selector `0x2cd95940`.
5986```solidity
5987function getStakeHistory(bytes32 operatorId, uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeUpdate[] memory);
5988```*/
5989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5990    #[derive(Clone)]
5991    pub struct getStakeHistoryCall {
5992        #[allow(missing_docs)]
5993        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
5994        #[allow(missing_docs)]
5995        pub quorumNumber: u8,
5996    }
5997    #[derive(serde::Serialize, serde::Deserialize)]
5998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5999    ///Container type for the return parameters of the [`getStakeHistory(bytes32,uint8)`](getStakeHistoryCall) function.
6000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6001    #[derive(Clone)]
6002    pub struct getStakeHistoryReturn {
6003        #[allow(missing_docs)]
6004        pub _0: alloy::sol_types::private::Vec<
6005            <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6006        >,
6007    }
6008    #[allow(
6009        non_camel_case_types,
6010        non_snake_case,
6011        clippy::pub_underscore_fields,
6012        clippy::style
6013    )]
6014    const _: () = {
6015        use alloy::sol_types as alloy_sol_types;
6016        {
6017            #[doc(hidden)]
6018            type UnderlyingSolTuple<'a> = (
6019                alloy::sol_types::sol_data::FixedBytes<32>,
6020                alloy::sol_types::sol_data::Uint<8>,
6021            );
6022            #[doc(hidden)]
6023            type UnderlyingRustTuple<'a> = (
6024                alloy::sol_types::private::FixedBytes<32>,
6025                u8,
6026            );
6027            #[cfg(test)]
6028            #[allow(dead_code, unreachable_patterns)]
6029            fn _type_assertion(
6030                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6031            ) {
6032                match _t {
6033                    alloy_sol_types::private::AssertTypeEq::<
6034                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6035                    >(_) => {}
6036                }
6037            }
6038            #[automatically_derived]
6039            #[doc(hidden)]
6040            impl ::core::convert::From<getStakeHistoryCall> for UnderlyingRustTuple<'_> {
6041                fn from(value: getStakeHistoryCall) -> Self {
6042                    (value.operatorId, value.quorumNumber)
6043                }
6044            }
6045            #[automatically_derived]
6046            #[doc(hidden)]
6047            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStakeHistoryCall {
6048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6049                    Self {
6050                        operatorId: tuple.0,
6051                        quorumNumber: tuple.1,
6052                    }
6053                }
6054            }
6055        }
6056        {
6057            #[doc(hidden)]
6058            type UnderlyingSolTuple<'a> = (
6059                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,
6060            );
6061            #[doc(hidden)]
6062            type UnderlyingRustTuple<'a> = (
6063                alloy::sol_types::private::Vec<
6064                    <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6065                >,
6066            );
6067            #[cfg(test)]
6068            #[allow(dead_code, unreachable_patterns)]
6069            fn _type_assertion(
6070                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6071            ) {
6072                match _t {
6073                    alloy_sol_types::private::AssertTypeEq::<
6074                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6075                    >(_) => {}
6076                }
6077            }
6078            #[automatically_derived]
6079            #[doc(hidden)]
6080            impl ::core::convert::From<getStakeHistoryReturn>
6081            for UnderlyingRustTuple<'_> {
6082                fn from(value: getStakeHistoryReturn) -> Self {
6083                    (value._0,)
6084                }
6085            }
6086            #[automatically_derived]
6087            #[doc(hidden)]
6088            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6089            for getStakeHistoryReturn {
6090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6091                    Self { _0: tuple.0 }
6092                }
6093            }
6094        }
6095        #[automatically_derived]
6096        impl alloy_sol_types::SolCall for getStakeHistoryCall {
6097            type Parameters<'a> = (
6098                alloy::sol_types::sol_data::FixedBytes<32>,
6099                alloy::sol_types::sol_data::Uint<8>,
6100            );
6101            type Token<'a> = <Self::Parameters<
6102                'a,
6103            > as alloy_sol_types::SolType>::Token<'a>;
6104            type Return = alloy::sol_types::private::Vec<
6105                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6106            >;
6107            type ReturnTuple<'a> = (
6108                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StakeUpdate>,
6109            );
6110            type ReturnToken<'a> = <Self::ReturnTuple<
6111                'a,
6112            > as alloy_sol_types::SolType>::Token<'a>;
6113            const SIGNATURE: &'static str = "getStakeHistory(bytes32,uint8)";
6114            const SELECTOR: [u8; 4] = [44u8, 217u8, 89u8, 64u8];
6115            #[inline]
6116            fn new<'a>(
6117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6118            ) -> Self {
6119                tuple.into()
6120            }
6121            #[inline]
6122            fn tokenize(&self) -> Self::Token<'_> {
6123                (
6124                    <alloy::sol_types::sol_data::FixedBytes<
6125                        32,
6126                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6127                    <alloy::sol_types::sol_data::Uint<
6128                        8,
6129                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6130                )
6131            }
6132            #[inline]
6133            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6134                (
6135                    <alloy::sol_types::sol_data::Array<
6136                        IStakeRegistryTypes::StakeUpdate,
6137                    > as alloy_sol_types::SolType>::tokenize(ret),
6138                )
6139            }
6140            #[inline]
6141            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6142                <Self::ReturnTuple<
6143                    '_,
6144                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6145                    .map(|r| {
6146                        let r: getStakeHistoryReturn = r.into();
6147                        r._0
6148                    })
6149            }
6150            #[inline]
6151            fn abi_decode_returns_validate(
6152                data: &[u8],
6153            ) -> alloy_sol_types::Result<Self::Return> {
6154                <Self::ReturnTuple<
6155                    '_,
6156                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6157                    .map(|r| {
6158                        let r: getStakeHistoryReturn = r.into();
6159                        r._0
6160                    })
6161            }
6162        }
6163    };
6164    #[derive(serde::Serialize, serde::Deserialize)]
6165    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6166    /**Function with signature `getStakeHistoryLength(bytes32,uint8)` and selector `0x4bd26e09`.
6167```solidity
6168function getStakeHistoryLength(bytes32 operatorId, uint8 quorumNumber) external view returns (uint256);
6169```*/
6170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6171    #[derive(Clone)]
6172    pub struct getStakeHistoryLengthCall {
6173        #[allow(missing_docs)]
6174        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
6175        #[allow(missing_docs)]
6176        pub quorumNumber: u8,
6177    }
6178    #[derive(serde::Serialize, serde::Deserialize)]
6179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6180    ///Container type for the return parameters of the [`getStakeHistoryLength(bytes32,uint8)`](getStakeHistoryLengthCall) function.
6181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6182    #[derive(Clone)]
6183    pub struct getStakeHistoryLengthReturn {
6184        #[allow(missing_docs)]
6185        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6186    }
6187    #[allow(
6188        non_camel_case_types,
6189        non_snake_case,
6190        clippy::pub_underscore_fields,
6191        clippy::style
6192    )]
6193    const _: () = {
6194        use alloy::sol_types as alloy_sol_types;
6195        {
6196            #[doc(hidden)]
6197            type UnderlyingSolTuple<'a> = (
6198                alloy::sol_types::sol_data::FixedBytes<32>,
6199                alloy::sol_types::sol_data::Uint<8>,
6200            );
6201            #[doc(hidden)]
6202            type UnderlyingRustTuple<'a> = (
6203                alloy::sol_types::private::FixedBytes<32>,
6204                u8,
6205            );
6206            #[cfg(test)]
6207            #[allow(dead_code, unreachable_patterns)]
6208            fn _type_assertion(
6209                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6210            ) {
6211                match _t {
6212                    alloy_sol_types::private::AssertTypeEq::<
6213                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6214                    >(_) => {}
6215                }
6216            }
6217            #[automatically_derived]
6218            #[doc(hidden)]
6219            impl ::core::convert::From<getStakeHistoryLengthCall>
6220            for UnderlyingRustTuple<'_> {
6221                fn from(value: getStakeHistoryLengthCall) -> Self {
6222                    (value.operatorId, value.quorumNumber)
6223                }
6224            }
6225            #[automatically_derived]
6226            #[doc(hidden)]
6227            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6228            for getStakeHistoryLengthCall {
6229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6230                    Self {
6231                        operatorId: tuple.0,
6232                        quorumNumber: tuple.1,
6233                    }
6234                }
6235            }
6236        }
6237        {
6238            #[doc(hidden)]
6239            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6240            #[doc(hidden)]
6241            type UnderlyingRustTuple<'a> = (
6242                alloy::sol_types::private::primitives::aliases::U256,
6243            );
6244            #[cfg(test)]
6245            #[allow(dead_code, unreachable_patterns)]
6246            fn _type_assertion(
6247                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6248            ) {
6249                match _t {
6250                    alloy_sol_types::private::AssertTypeEq::<
6251                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6252                    >(_) => {}
6253                }
6254            }
6255            #[automatically_derived]
6256            #[doc(hidden)]
6257            impl ::core::convert::From<getStakeHistoryLengthReturn>
6258            for UnderlyingRustTuple<'_> {
6259                fn from(value: getStakeHistoryLengthReturn) -> Self {
6260                    (value._0,)
6261                }
6262            }
6263            #[automatically_derived]
6264            #[doc(hidden)]
6265            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6266            for getStakeHistoryLengthReturn {
6267                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6268                    Self { _0: tuple.0 }
6269                }
6270            }
6271        }
6272        #[automatically_derived]
6273        impl alloy_sol_types::SolCall for getStakeHistoryLengthCall {
6274            type Parameters<'a> = (
6275                alloy::sol_types::sol_data::FixedBytes<32>,
6276                alloy::sol_types::sol_data::Uint<8>,
6277            );
6278            type Token<'a> = <Self::Parameters<
6279                'a,
6280            > as alloy_sol_types::SolType>::Token<'a>;
6281            type Return = alloy::sol_types::private::primitives::aliases::U256;
6282            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6283            type ReturnToken<'a> = <Self::ReturnTuple<
6284                'a,
6285            > as alloy_sol_types::SolType>::Token<'a>;
6286            const SIGNATURE: &'static str = "getStakeHistoryLength(bytes32,uint8)";
6287            const SELECTOR: [u8; 4] = [75u8, 210u8, 110u8, 9u8];
6288            #[inline]
6289            fn new<'a>(
6290                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6291            ) -> Self {
6292                tuple.into()
6293            }
6294            #[inline]
6295            fn tokenize(&self) -> Self::Token<'_> {
6296                (
6297                    <alloy::sol_types::sol_data::FixedBytes<
6298                        32,
6299                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6300                    <alloy::sol_types::sol_data::Uint<
6301                        8,
6302                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6303                )
6304            }
6305            #[inline]
6306            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6307                (
6308                    <alloy::sol_types::sol_data::Uint<
6309                        256,
6310                    > as alloy_sol_types::SolType>::tokenize(ret),
6311                )
6312            }
6313            #[inline]
6314            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6315                <Self::ReturnTuple<
6316                    '_,
6317                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6318                    .map(|r| {
6319                        let r: getStakeHistoryLengthReturn = r.into();
6320                        r._0
6321                    })
6322            }
6323            #[inline]
6324            fn abi_decode_returns_validate(
6325                data: &[u8],
6326            ) -> alloy_sol_types::Result<Self::Return> {
6327                <Self::ReturnTuple<
6328                    '_,
6329                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6330                    .map(|r| {
6331                        let r: getStakeHistoryLengthReturn = r.into();
6332                        r._0
6333                    })
6334            }
6335        }
6336    };
6337    #[derive(serde::Serialize, serde::Deserialize)]
6338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6339    /**Function with signature `getStakeUpdateAtIndex(uint8,bytes32,uint256)` and selector `0xac6bfb03`.
6340```solidity
6341function getStakeUpdateAtIndex(uint8 quorumNumber, bytes32 operatorId, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
6342```*/
6343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6344    #[derive(Clone)]
6345    pub struct getStakeUpdateAtIndexCall {
6346        #[allow(missing_docs)]
6347        pub quorumNumber: u8,
6348        #[allow(missing_docs)]
6349        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
6350        #[allow(missing_docs)]
6351        pub index: alloy::sol_types::private::primitives::aliases::U256,
6352    }
6353    #[derive(serde::Serialize, serde::Deserialize)]
6354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6355    ///Container type for the return parameters of the [`getStakeUpdateAtIndex(uint8,bytes32,uint256)`](getStakeUpdateAtIndexCall) function.
6356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6357    #[derive(Clone)]
6358    pub struct getStakeUpdateAtIndexReturn {
6359        #[allow(missing_docs)]
6360        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6361    }
6362    #[allow(
6363        non_camel_case_types,
6364        non_snake_case,
6365        clippy::pub_underscore_fields,
6366        clippy::style
6367    )]
6368    const _: () = {
6369        use alloy::sol_types as alloy_sol_types;
6370        {
6371            #[doc(hidden)]
6372            type UnderlyingSolTuple<'a> = (
6373                alloy::sol_types::sol_data::Uint<8>,
6374                alloy::sol_types::sol_data::FixedBytes<32>,
6375                alloy::sol_types::sol_data::Uint<256>,
6376            );
6377            #[doc(hidden)]
6378            type UnderlyingRustTuple<'a> = (
6379                u8,
6380                alloy::sol_types::private::FixedBytes<32>,
6381                alloy::sol_types::private::primitives::aliases::U256,
6382            );
6383            #[cfg(test)]
6384            #[allow(dead_code, unreachable_patterns)]
6385            fn _type_assertion(
6386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6387            ) {
6388                match _t {
6389                    alloy_sol_types::private::AssertTypeEq::<
6390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6391                    >(_) => {}
6392                }
6393            }
6394            #[automatically_derived]
6395            #[doc(hidden)]
6396            impl ::core::convert::From<getStakeUpdateAtIndexCall>
6397            for UnderlyingRustTuple<'_> {
6398                fn from(value: getStakeUpdateAtIndexCall) -> Self {
6399                    (value.quorumNumber, value.operatorId, value.index)
6400                }
6401            }
6402            #[automatically_derived]
6403            #[doc(hidden)]
6404            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6405            for getStakeUpdateAtIndexCall {
6406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6407                    Self {
6408                        quorumNumber: tuple.0,
6409                        operatorId: tuple.1,
6410                        index: tuple.2,
6411                    }
6412                }
6413            }
6414        }
6415        {
6416            #[doc(hidden)]
6417            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6418            #[doc(hidden)]
6419            type UnderlyingRustTuple<'a> = (
6420                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
6421            );
6422            #[cfg(test)]
6423            #[allow(dead_code, unreachable_patterns)]
6424            fn _type_assertion(
6425                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6426            ) {
6427                match _t {
6428                    alloy_sol_types::private::AssertTypeEq::<
6429                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6430                    >(_) => {}
6431                }
6432            }
6433            #[automatically_derived]
6434            #[doc(hidden)]
6435            impl ::core::convert::From<getStakeUpdateAtIndexReturn>
6436            for UnderlyingRustTuple<'_> {
6437                fn from(value: getStakeUpdateAtIndexReturn) -> Self {
6438                    (value._0,)
6439                }
6440            }
6441            #[automatically_derived]
6442            #[doc(hidden)]
6443            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6444            for getStakeUpdateAtIndexReturn {
6445                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6446                    Self { _0: tuple.0 }
6447                }
6448            }
6449        }
6450        #[automatically_derived]
6451        impl alloy_sol_types::SolCall for getStakeUpdateAtIndexCall {
6452            type Parameters<'a> = (
6453                alloy::sol_types::sol_data::Uint<8>,
6454                alloy::sol_types::sol_data::FixedBytes<32>,
6455                alloy::sol_types::sol_data::Uint<256>,
6456            );
6457            type Token<'a> = <Self::Parameters<
6458                'a,
6459            > as alloy_sol_types::SolType>::Token<'a>;
6460            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
6461            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
6462            type ReturnToken<'a> = <Self::ReturnTuple<
6463                'a,
6464            > as alloy_sol_types::SolType>::Token<'a>;
6465            const SIGNATURE: &'static str = "getStakeUpdateAtIndex(uint8,bytes32,uint256)";
6466            const SELECTOR: [u8; 4] = [172u8, 107u8, 251u8, 3u8];
6467            #[inline]
6468            fn new<'a>(
6469                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6470            ) -> Self {
6471                tuple.into()
6472            }
6473            #[inline]
6474            fn tokenize(&self) -> Self::Token<'_> {
6475                (
6476                    <alloy::sol_types::sol_data::Uint<
6477                        8,
6478                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6479                    <alloy::sol_types::sol_data::FixedBytes<
6480                        32,
6481                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6482                    <alloy::sol_types::sol_data::Uint<
6483                        256,
6484                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6485                )
6486            }
6487            #[inline]
6488            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6489                (
6490                    <IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(
6491                        ret,
6492                    ),
6493                )
6494            }
6495            #[inline]
6496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6497                <Self::ReturnTuple<
6498                    '_,
6499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6500                    .map(|r| {
6501                        let r: getStakeUpdateAtIndexReturn = r.into();
6502                        r._0
6503                    })
6504            }
6505            #[inline]
6506            fn abi_decode_returns_validate(
6507                data: &[u8],
6508            ) -> alloy_sol_types::Result<Self::Return> {
6509                <Self::ReturnTuple<
6510                    '_,
6511                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6512                    .map(|r| {
6513                        let r: getStakeUpdateAtIndexReturn = r.into();
6514                        r._0
6515                    })
6516            }
6517        }
6518    };
6519    #[derive(serde::Serialize, serde::Deserialize)]
6520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6521    /**Function with signature `getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)` and selector `0xdd9846b9`.
6522```solidity
6523function getStakeUpdateIndexAtBlockNumber(bytes32 operatorId, uint8 quorumNumber, uint32 blockNumber) external view returns (uint32);
6524```*/
6525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6526    #[derive(Clone)]
6527    pub struct getStakeUpdateIndexAtBlockNumberCall {
6528        #[allow(missing_docs)]
6529        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
6530        #[allow(missing_docs)]
6531        pub quorumNumber: u8,
6532        #[allow(missing_docs)]
6533        pub blockNumber: u32,
6534    }
6535    #[derive(serde::Serialize, serde::Deserialize)]
6536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6537    ///Container type for the return parameters of the [`getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)`](getStakeUpdateIndexAtBlockNumberCall) function.
6538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6539    #[derive(Clone)]
6540    pub struct getStakeUpdateIndexAtBlockNumberReturn {
6541        #[allow(missing_docs)]
6542        pub _0: u32,
6543    }
6544    #[allow(
6545        non_camel_case_types,
6546        non_snake_case,
6547        clippy::pub_underscore_fields,
6548        clippy::style
6549    )]
6550    const _: () = {
6551        use alloy::sol_types as alloy_sol_types;
6552        {
6553            #[doc(hidden)]
6554            type UnderlyingSolTuple<'a> = (
6555                alloy::sol_types::sol_data::FixedBytes<32>,
6556                alloy::sol_types::sol_data::Uint<8>,
6557                alloy::sol_types::sol_data::Uint<32>,
6558            );
6559            #[doc(hidden)]
6560            type UnderlyingRustTuple<'a> = (
6561                alloy::sol_types::private::FixedBytes<32>,
6562                u8,
6563                u32,
6564            );
6565            #[cfg(test)]
6566            #[allow(dead_code, unreachable_patterns)]
6567            fn _type_assertion(
6568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6569            ) {
6570                match _t {
6571                    alloy_sol_types::private::AssertTypeEq::<
6572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6573                    >(_) => {}
6574                }
6575            }
6576            #[automatically_derived]
6577            #[doc(hidden)]
6578            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberCall>
6579            for UnderlyingRustTuple<'_> {
6580                fn from(value: getStakeUpdateIndexAtBlockNumberCall) -> Self {
6581                    (value.operatorId, value.quorumNumber, value.blockNumber)
6582                }
6583            }
6584            #[automatically_derived]
6585            #[doc(hidden)]
6586            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6587            for getStakeUpdateIndexAtBlockNumberCall {
6588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6589                    Self {
6590                        operatorId: tuple.0,
6591                        quorumNumber: tuple.1,
6592                        blockNumber: tuple.2,
6593                    }
6594                }
6595            }
6596        }
6597        {
6598            #[doc(hidden)]
6599            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6600            #[doc(hidden)]
6601            type UnderlyingRustTuple<'a> = (u32,);
6602            #[cfg(test)]
6603            #[allow(dead_code, unreachable_patterns)]
6604            fn _type_assertion(
6605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6606            ) {
6607                match _t {
6608                    alloy_sol_types::private::AssertTypeEq::<
6609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6610                    >(_) => {}
6611                }
6612            }
6613            #[automatically_derived]
6614            #[doc(hidden)]
6615            impl ::core::convert::From<getStakeUpdateIndexAtBlockNumberReturn>
6616            for UnderlyingRustTuple<'_> {
6617                fn from(value: getStakeUpdateIndexAtBlockNumberReturn) -> Self {
6618                    (value._0,)
6619                }
6620            }
6621            #[automatically_derived]
6622            #[doc(hidden)]
6623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6624            for getStakeUpdateIndexAtBlockNumberReturn {
6625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6626                    Self { _0: tuple.0 }
6627                }
6628            }
6629        }
6630        #[automatically_derived]
6631        impl alloy_sol_types::SolCall for getStakeUpdateIndexAtBlockNumberCall {
6632            type Parameters<'a> = (
6633                alloy::sol_types::sol_data::FixedBytes<32>,
6634                alloy::sol_types::sol_data::Uint<8>,
6635                alloy::sol_types::sol_data::Uint<32>,
6636            );
6637            type Token<'a> = <Self::Parameters<
6638                'a,
6639            > as alloy_sol_types::SolType>::Token<'a>;
6640            type Return = u32;
6641            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
6642            type ReturnToken<'a> = <Self::ReturnTuple<
6643                'a,
6644            > as alloy_sol_types::SolType>::Token<'a>;
6645            const SIGNATURE: &'static str = "getStakeUpdateIndexAtBlockNumber(bytes32,uint8,uint32)";
6646            const SELECTOR: [u8; 4] = [221u8, 152u8, 70u8, 185u8];
6647            #[inline]
6648            fn new<'a>(
6649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6650            ) -> Self {
6651                tuple.into()
6652            }
6653            #[inline]
6654            fn tokenize(&self) -> Self::Token<'_> {
6655                (
6656                    <alloy::sol_types::sol_data::FixedBytes<
6657                        32,
6658                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
6659                    <alloy::sol_types::sol_data::Uint<
6660                        8,
6661                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6662                    <alloy::sol_types::sol_data::Uint<
6663                        32,
6664                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6665                )
6666            }
6667            #[inline]
6668            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6669                (
6670                    <alloy::sol_types::sol_data::Uint<
6671                        32,
6672                    > as alloy_sol_types::SolType>::tokenize(ret),
6673                )
6674            }
6675            #[inline]
6676            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6677                <Self::ReturnTuple<
6678                    '_,
6679                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6680                    .map(|r| {
6681                        let r: getStakeUpdateIndexAtBlockNumberReturn = r.into();
6682                        r._0
6683                    })
6684            }
6685            #[inline]
6686            fn abi_decode_returns_validate(
6687                data: &[u8],
6688            ) -> alloy_sol_types::Result<Self::Return> {
6689                <Self::ReturnTuple<
6690                    '_,
6691                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6692                    .map(|r| {
6693                        let r: getStakeUpdateIndexAtBlockNumberReturn = r.into();
6694                        r._0
6695                    })
6696            }
6697        }
6698    };
6699    #[derive(serde::Serialize, serde::Deserialize)]
6700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6701    /**Function with signature `getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)` and selector `0xc8294c56`.
6702```solidity
6703function getTotalStakeAtBlockNumberFromIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (uint96);
6704```*/
6705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6706    #[derive(Clone)]
6707    pub struct getTotalStakeAtBlockNumberFromIndexCall {
6708        #[allow(missing_docs)]
6709        pub quorumNumber: u8,
6710        #[allow(missing_docs)]
6711        pub blockNumber: u32,
6712        #[allow(missing_docs)]
6713        pub index: alloy::sol_types::private::primitives::aliases::U256,
6714    }
6715    #[derive(serde::Serialize, serde::Deserialize)]
6716    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6717    ///Container type for the return parameters of the [`getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)`](getTotalStakeAtBlockNumberFromIndexCall) function.
6718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6719    #[derive(Clone)]
6720    pub struct getTotalStakeAtBlockNumberFromIndexReturn {
6721        #[allow(missing_docs)]
6722        pub _0: alloy::sol_types::private::primitives::aliases::U96,
6723    }
6724    #[allow(
6725        non_camel_case_types,
6726        non_snake_case,
6727        clippy::pub_underscore_fields,
6728        clippy::style
6729    )]
6730    const _: () = {
6731        use alloy::sol_types as alloy_sol_types;
6732        {
6733            #[doc(hidden)]
6734            type UnderlyingSolTuple<'a> = (
6735                alloy::sol_types::sol_data::Uint<8>,
6736                alloy::sol_types::sol_data::Uint<32>,
6737                alloy::sol_types::sol_data::Uint<256>,
6738            );
6739            #[doc(hidden)]
6740            type UnderlyingRustTuple<'a> = (
6741                u8,
6742                u32,
6743                alloy::sol_types::private::primitives::aliases::U256,
6744            );
6745            #[cfg(test)]
6746            #[allow(dead_code, unreachable_patterns)]
6747            fn _type_assertion(
6748                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6749            ) {
6750                match _t {
6751                    alloy_sol_types::private::AssertTypeEq::<
6752                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6753                    >(_) => {}
6754                }
6755            }
6756            #[automatically_derived]
6757            #[doc(hidden)]
6758            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexCall>
6759            for UnderlyingRustTuple<'_> {
6760                fn from(value: getTotalStakeAtBlockNumberFromIndexCall) -> Self {
6761                    (value.quorumNumber, value.blockNumber, value.index)
6762                }
6763            }
6764            #[automatically_derived]
6765            #[doc(hidden)]
6766            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6767            for getTotalStakeAtBlockNumberFromIndexCall {
6768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6769                    Self {
6770                        quorumNumber: tuple.0,
6771                        blockNumber: tuple.1,
6772                        index: tuple.2,
6773                    }
6774                }
6775            }
6776        }
6777        {
6778            #[doc(hidden)]
6779            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6780            #[doc(hidden)]
6781            type UnderlyingRustTuple<'a> = (
6782                alloy::sol_types::private::primitives::aliases::U96,
6783            );
6784            #[cfg(test)]
6785            #[allow(dead_code, unreachable_patterns)]
6786            fn _type_assertion(
6787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6788            ) {
6789                match _t {
6790                    alloy_sol_types::private::AssertTypeEq::<
6791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6792                    >(_) => {}
6793                }
6794            }
6795            #[automatically_derived]
6796            #[doc(hidden)]
6797            impl ::core::convert::From<getTotalStakeAtBlockNumberFromIndexReturn>
6798            for UnderlyingRustTuple<'_> {
6799                fn from(value: getTotalStakeAtBlockNumberFromIndexReturn) -> Self {
6800                    (value._0,)
6801                }
6802            }
6803            #[automatically_derived]
6804            #[doc(hidden)]
6805            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6806            for getTotalStakeAtBlockNumberFromIndexReturn {
6807                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6808                    Self { _0: tuple.0 }
6809                }
6810            }
6811        }
6812        #[automatically_derived]
6813        impl alloy_sol_types::SolCall for getTotalStakeAtBlockNumberFromIndexCall {
6814            type Parameters<'a> = (
6815                alloy::sol_types::sol_data::Uint<8>,
6816                alloy::sol_types::sol_data::Uint<32>,
6817                alloy::sol_types::sol_data::Uint<256>,
6818            );
6819            type Token<'a> = <Self::Parameters<
6820                'a,
6821            > as alloy_sol_types::SolType>::Token<'a>;
6822            type Return = alloy::sol_types::private::primitives::aliases::U96;
6823            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
6824            type ReturnToken<'a> = <Self::ReturnTuple<
6825                'a,
6826            > as alloy_sol_types::SolType>::Token<'a>;
6827            const SIGNATURE: &'static str = "getTotalStakeAtBlockNumberFromIndex(uint8,uint32,uint256)";
6828            const SELECTOR: [u8; 4] = [200u8, 41u8, 76u8, 86u8];
6829            #[inline]
6830            fn new<'a>(
6831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6832            ) -> Self {
6833                tuple.into()
6834            }
6835            #[inline]
6836            fn tokenize(&self) -> Self::Token<'_> {
6837                (
6838                    <alloy::sol_types::sol_data::Uint<
6839                        8,
6840                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
6841                    <alloy::sol_types::sol_data::Uint<
6842                        32,
6843                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
6844                    <alloy::sol_types::sol_data::Uint<
6845                        256,
6846                    > as alloy_sol_types::SolType>::tokenize(&self.index),
6847                )
6848            }
6849            #[inline]
6850            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6851                (
6852                    <alloy::sol_types::sol_data::Uint<
6853                        96,
6854                    > as alloy_sol_types::SolType>::tokenize(ret),
6855                )
6856            }
6857            #[inline]
6858            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6859                <Self::ReturnTuple<
6860                    '_,
6861                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6862                    .map(|r| {
6863                        let r: getTotalStakeAtBlockNumberFromIndexReturn = r.into();
6864                        r._0
6865                    })
6866            }
6867            #[inline]
6868            fn abi_decode_returns_validate(
6869                data: &[u8],
6870            ) -> alloy_sol_types::Result<Self::Return> {
6871                <Self::ReturnTuple<
6872                    '_,
6873                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6874                    .map(|r| {
6875                        let r: getTotalStakeAtBlockNumberFromIndexReturn = r.into();
6876                        r._0
6877                    })
6878            }
6879        }
6880    };
6881    #[derive(serde::Serialize, serde::Deserialize)]
6882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6883    /**Function with signature `getTotalStakeHistoryLength(uint8)` and selector `0x0491b41c`.
6884```solidity
6885function getTotalStakeHistoryLength(uint8 quorumNumber) external view returns (uint256);
6886```*/
6887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6888    #[derive(Clone)]
6889    pub struct getTotalStakeHistoryLengthCall {
6890        #[allow(missing_docs)]
6891        pub quorumNumber: u8,
6892    }
6893    #[derive(serde::Serialize, serde::Deserialize)]
6894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6895    ///Container type for the return parameters of the [`getTotalStakeHistoryLength(uint8)`](getTotalStakeHistoryLengthCall) function.
6896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6897    #[derive(Clone)]
6898    pub struct getTotalStakeHistoryLengthReturn {
6899        #[allow(missing_docs)]
6900        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6901    }
6902    #[allow(
6903        non_camel_case_types,
6904        non_snake_case,
6905        clippy::pub_underscore_fields,
6906        clippy::style
6907    )]
6908    const _: () = {
6909        use alloy::sol_types as alloy_sol_types;
6910        {
6911            #[doc(hidden)]
6912            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6913            #[doc(hidden)]
6914            type UnderlyingRustTuple<'a> = (u8,);
6915            #[cfg(test)]
6916            #[allow(dead_code, unreachable_patterns)]
6917            fn _type_assertion(
6918                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6919            ) {
6920                match _t {
6921                    alloy_sol_types::private::AssertTypeEq::<
6922                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6923                    >(_) => {}
6924                }
6925            }
6926            #[automatically_derived]
6927            #[doc(hidden)]
6928            impl ::core::convert::From<getTotalStakeHistoryLengthCall>
6929            for UnderlyingRustTuple<'_> {
6930                fn from(value: getTotalStakeHistoryLengthCall) -> Self {
6931                    (value.quorumNumber,)
6932                }
6933            }
6934            #[automatically_derived]
6935            #[doc(hidden)]
6936            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6937            for getTotalStakeHistoryLengthCall {
6938                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6939                    Self { quorumNumber: tuple.0 }
6940                }
6941            }
6942        }
6943        {
6944            #[doc(hidden)]
6945            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6946            #[doc(hidden)]
6947            type UnderlyingRustTuple<'a> = (
6948                alloy::sol_types::private::primitives::aliases::U256,
6949            );
6950            #[cfg(test)]
6951            #[allow(dead_code, unreachable_patterns)]
6952            fn _type_assertion(
6953                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6954            ) {
6955                match _t {
6956                    alloy_sol_types::private::AssertTypeEq::<
6957                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6958                    >(_) => {}
6959                }
6960            }
6961            #[automatically_derived]
6962            #[doc(hidden)]
6963            impl ::core::convert::From<getTotalStakeHistoryLengthReturn>
6964            for UnderlyingRustTuple<'_> {
6965                fn from(value: getTotalStakeHistoryLengthReturn) -> Self {
6966                    (value._0,)
6967                }
6968            }
6969            #[automatically_derived]
6970            #[doc(hidden)]
6971            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6972            for getTotalStakeHistoryLengthReturn {
6973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6974                    Self { _0: tuple.0 }
6975                }
6976            }
6977        }
6978        #[automatically_derived]
6979        impl alloy_sol_types::SolCall for getTotalStakeHistoryLengthCall {
6980            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
6981            type Token<'a> = <Self::Parameters<
6982                'a,
6983            > as alloy_sol_types::SolType>::Token<'a>;
6984            type Return = alloy::sol_types::private::primitives::aliases::U256;
6985            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6986            type ReturnToken<'a> = <Self::ReturnTuple<
6987                'a,
6988            > as alloy_sol_types::SolType>::Token<'a>;
6989            const SIGNATURE: &'static str = "getTotalStakeHistoryLength(uint8)";
6990            const SELECTOR: [u8; 4] = [4u8, 145u8, 180u8, 28u8];
6991            #[inline]
6992            fn new<'a>(
6993                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6994            ) -> Self {
6995                tuple.into()
6996            }
6997            #[inline]
6998            fn tokenize(&self) -> Self::Token<'_> {
6999                (
7000                    <alloy::sol_types::sol_data::Uint<
7001                        8,
7002                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7003                )
7004            }
7005            #[inline]
7006            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7007                (
7008                    <alloy::sol_types::sol_data::Uint<
7009                        256,
7010                    > as alloy_sol_types::SolType>::tokenize(ret),
7011                )
7012            }
7013            #[inline]
7014            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7015                <Self::ReturnTuple<
7016                    '_,
7017                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7018                    .map(|r| {
7019                        let r: getTotalStakeHistoryLengthReturn = r.into();
7020                        r._0
7021                    })
7022            }
7023            #[inline]
7024            fn abi_decode_returns_validate(
7025                data: &[u8],
7026            ) -> alloy_sol_types::Result<Self::Return> {
7027                <Self::ReturnTuple<
7028                    '_,
7029                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7030                    .map(|r| {
7031                        let r: getTotalStakeHistoryLengthReturn = r.into();
7032                        r._0
7033                    })
7034            }
7035        }
7036    };
7037    #[derive(serde::Serialize, serde::Deserialize)]
7038    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7039    /**Function with signature `getTotalStakeIndicesAtBlockNumber(uint32,bytes)` and selector `0x81c07502`.
7040```solidity
7041function getTotalStakeIndicesAtBlockNumber(uint32 blockNumber, bytes memory quorumNumbers) external view returns (uint32[] memory);
7042```*/
7043    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7044    #[derive(Clone)]
7045    pub struct getTotalStakeIndicesAtBlockNumberCall {
7046        #[allow(missing_docs)]
7047        pub blockNumber: u32,
7048        #[allow(missing_docs)]
7049        pub quorumNumbers: alloy::sol_types::private::Bytes,
7050    }
7051    #[derive(serde::Serialize, serde::Deserialize)]
7052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7053    ///Container type for the return parameters of the [`getTotalStakeIndicesAtBlockNumber(uint32,bytes)`](getTotalStakeIndicesAtBlockNumberCall) function.
7054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7055    #[derive(Clone)]
7056    pub struct getTotalStakeIndicesAtBlockNumberReturn {
7057        #[allow(missing_docs)]
7058        pub _0: alloy::sol_types::private::Vec<u32>,
7059    }
7060    #[allow(
7061        non_camel_case_types,
7062        non_snake_case,
7063        clippy::pub_underscore_fields,
7064        clippy::style
7065    )]
7066    const _: () = {
7067        use alloy::sol_types as alloy_sol_types;
7068        {
7069            #[doc(hidden)]
7070            type UnderlyingSolTuple<'a> = (
7071                alloy::sol_types::sol_data::Uint<32>,
7072                alloy::sol_types::sol_data::Bytes,
7073            );
7074            #[doc(hidden)]
7075            type UnderlyingRustTuple<'a> = (u32, alloy::sol_types::private::Bytes);
7076            #[cfg(test)]
7077            #[allow(dead_code, unreachable_patterns)]
7078            fn _type_assertion(
7079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7080            ) {
7081                match _t {
7082                    alloy_sol_types::private::AssertTypeEq::<
7083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7084                    >(_) => {}
7085                }
7086            }
7087            #[automatically_derived]
7088            #[doc(hidden)]
7089            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberCall>
7090            for UnderlyingRustTuple<'_> {
7091                fn from(value: getTotalStakeIndicesAtBlockNumberCall) -> Self {
7092                    (value.blockNumber, value.quorumNumbers)
7093                }
7094            }
7095            #[automatically_derived]
7096            #[doc(hidden)]
7097            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7098            for getTotalStakeIndicesAtBlockNumberCall {
7099                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7100                    Self {
7101                        blockNumber: tuple.0,
7102                        quorumNumbers: tuple.1,
7103                    }
7104                }
7105            }
7106        }
7107        {
7108            #[doc(hidden)]
7109            type UnderlyingSolTuple<'a> = (
7110                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
7111            );
7112            #[doc(hidden)]
7113            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<u32>,);
7114            #[cfg(test)]
7115            #[allow(dead_code, unreachable_patterns)]
7116            fn _type_assertion(
7117                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7118            ) {
7119                match _t {
7120                    alloy_sol_types::private::AssertTypeEq::<
7121                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7122                    >(_) => {}
7123                }
7124            }
7125            #[automatically_derived]
7126            #[doc(hidden)]
7127            impl ::core::convert::From<getTotalStakeIndicesAtBlockNumberReturn>
7128            for UnderlyingRustTuple<'_> {
7129                fn from(value: getTotalStakeIndicesAtBlockNumberReturn) -> Self {
7130                    (value._0,)
7131                }
7132            }
7133            #[automatically_derived]
7134            #[doc(hidden)]
7135            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7136            for getTotalStakeIndicesAtBlockNumberReturn {
7137                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7138                    Self { _0: tuple.0 }
7139                }
7140            }
7141        }
7142        #[automatically_derived]
7143        impl alloy_sol_types::SolCall for getTotalStakeIndicesAtBlockNumberCall {
7144            type Parameters<'a> = (
7145                alloy::sol_types::sol_data::Uint<32>,
7146                alloy::sol_types::sol_data::Bytes,
7147            );
7148            type Token<'a> = <Self::Parameters<
7149                'a,
7150            > as alloy_sol_types::SolType>::Token<'a>;
7151            type Return = alloy::sol_types::private::Vec<u32>;
7152            type ReturnTuple<'a> = (
7153                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
7154            );
7155            type ReturnToken<'a> = <Self::ReturnTuple<
7156                'a,
7157            > as alloy_sol_types::SolType>::Token<'a>;
7158            const SIGNATURE: &'static str = "getTotalStakeIndicesAtBlockNumber(uint32,bytes)";
7159            const SELECTOR: [u8; 4] = [129u8, 192u8, 117u8, 2u8];
7160            #[inline]
7161            fn new<'a>(
7162                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7163            ) -> Self {
7164                tuple.into()
7165            }
7166            #[inline]
7167            fn tokenize(&self) -> Self::Token<'_> {
7168                (
7169                    <alloy::sol_types::sol_data::Uint<
7170                        32,
7171                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
7172                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7173                        &self.quorumNumbers,
7174                    ),
7175                )
7176            }
7177            #[inline]
7178            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7179                (
7180                    <alloy::sol_types::sol_data::Array<
7181                        alloy::sol_types::sol_data::Uint<32>,
7182                    > as alloy_sol_types::SolType>::tokenize(ret),
7183                )
7184            }
7185            #[inline]
7186            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7187                <Self::ReturnTuple<
7188                    '_,
7189                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7190                    .map(|r| {
7191                        let r: getTotalStakeIndicesAtBlockNumberReturn = r.into();
7192                        r._0
7193                    })
7194            }
7195            #[inline]
7196            fn abi_decode_returns_validate(
7197                data: &[u8],
7198            ) -> alloy_sol_types::Result<Self::Return> {
7199                <Self::ReturnTuple<
7200                    '_,
7201                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7202                    .map(|r| {
7203                        let r: getTotalStakeIndicesAtBlockNumberReturn = r.into();
7204                        r._0
7205                    })
7206            }
7207        }
7208    };
7209    #[derive(serde::Serialize, serde::Deserialize)]
7210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7211    /**Function with signature `getTotalStakeUpdateAtIndex(uint8,uint256)` and selector `0xb6904b78`.
7212```solidity
7213function getTotalStakeUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StakeUpdate memory);
7214```*/
7215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7216    #[derive(Clone)]
7217    pub struct getTotalStakeUpdateAtIndexCall {
7218        #[allow(missing_docs)]
7219        pub quorumNumber: u8,
7220        #[allow(missing_docs)]
7221        pub index: alloy::sol_types::private::primitives::aliases::U256,
7222    }
7223    #[derive(serde::Serialize, serde::Deserialize)]
7224    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7225    ///Container type for the return parameters of the [`getTotalStakeUpdateAtIndex(uint8,uint256)`](getTotalStakeUpdateAtIndexCall) function.
7226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7227    #[derive(Clone)]
7228    pub struct getTotalStakeUpdateAtIndexReturn {
7229        #[allow(missing_docs)]
7230        pub _0: <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
7231    }
7232    #[allow(
7233        non_camel_case_types,
7234        non_snake_case,
7235        clippy::pub_underscore_fields,
7236        clippy::style
7237    )]
7238    const _: () = {
7239        use alloy::sol_types as alloy_sol_types;
7240        {
7241            #[doc(hidden)]
7242            type UnderlyingSolTuple<'a> = (
7243                alloy::sol_types::sol_data::Uint<8>,
7244                alloy::sol_types::sol_data::Uint<256>,
7245            );
7246            #[doc(hidden)]
7247            type UnderlyingRustTuple<'a> = (
7248                u8,
7249                alloy::sol_types::private::primitives::aliases::U256,
7250            );
7251            #[cfg(test)]
7252            #[allow(dead_code, unreachable_patterns)]
7253            fn _type_assertion(
7254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7255            ) {
7256                match _t {
7257                    alloy_sol_types::private::AssertTypeEq::<
7258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7259                    >(_) => {}
7260                }
7261            }
7262            #[automatically_derived]
7263            #[doc(hidden)]
7264            impl ::core::convert::From<getTotalStakeUpdateAtIndexCall>
7265            for UnderlyingRustTuple<'_> {
7266                fn from(value: getTotalStakeUpdateAtIndexCall) -> Self {
7267                    (value.quorumNumber, value.index)
7268                }
7269            }
7270            #[automatically_derived]
7271            #[doc(hidden)]
7272            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7273            for getTotalStakeUpdateAtIndexCall {
7274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7275                    Self {
7276                        quorumNumber: tuple.0,
7277                        index: tuple.1,
7278                    }
7279                }
7280            }
7281        }
7282        {
7283            #[doc(hidden)]
7284            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
7285            #[doc(hidden)]
7286            type UnderlyingRustTuple<'a> = (
7287                <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType,
7288            );
7289            #[cfg(test)]
7290            #[allow(dead_code, unreachable_patterns)]
7291            fn _type_assertion(
7292                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7293            ) {
7294                match _t {
7295                    alloy_sol_types::private::AssertTypeEq::<
7296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7297                    >(_) => {}
7298                }
7299            }
7300            #[automatically_derived]
7301            #[doc(hidden)]
7302            impl ::core::convert::From<getTotalStakeUpdateAtIndexReturn>
7303            for UnderlyingRustTuple<'_> {
7304                fn from(value: getTotalStakeUpdateAtIndexReturn) -> Self {
7305                    (value._0,)
7306                }
7307            }
7308            #[automatically_derived]
7309            #[doc(hidden)]
7310            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7311            for getTotalStakeUpdateAtIndexReturn {
7312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7313                    Self { _0: tuple.0 }
7314                }
7315            }
7316        }
7317        #[automatically_derived]
7318        impl alloy_sol_types::SolCall for getTotalStakeUpdateAtIndexCall {
7319            type Parameters<'a> = (
7320                alloy::sol_types::sol_data::Uint<8>,
7321                alloy::sol_types::sol_data::Uint<256>,
7322            );
7323            type Token<'a> = <Self::Parameters<
7324                'a,
7325            > as alloy_sol_types::SolType>::Token<'a>;
7326            type Return = <IStakeRegistryTypes::StakeUpdate as alloy::sol_types::SolType>::RustType;
7327            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeUpdate,);
7328            type ReturnToken<'a> = <Self::ReturnTuple<
7329                'a,
7330            > as alloy_sol_types::SolType>::Token<'a>;
7331            const SIGNATURE: &'static str = "getTotalStakeUpdateAtIndex(uint8,uint256)";
7332            const SELECTOR: [u8; 4] = [182u8, 144u8, 75u8, 120u8];
7333            #[inline]
7334            fn new<'a>(
7335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7336            ) -> Self {
7337                tuple.into()
7338            }
7339            #[inline]
7340            fn tokenize(&self) -> Self::Token<'_> {
7341                (
7342                    <alloy::sol_types::sol_data::Uint<
7343                        8,
7344                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7345                    <alloy::sol_types::sol_data::Uint<
7346                        256,
7347                    > as alloy_sol_types::SolType>::tokenize(&self.index),
7348                )
7349            }
7350            #[inline]
7351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7352                (
7353                    <IStakeRegistryTypes::StakeUpdate as alloy_sol_types::SolType>::tokenize(
7354                        ret,
7355                    ),
7356                )
7357            }
7358            #[inline]
7359            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7360                <Self::ReturnTuple<
7361                    '_,
7362                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7363                    .map(|r| {
7364                        let r: getTotalStakeUpdateAtIndexReturn = r.into();
7365                        r._0
7366                    })
7367            }
7368            #[inline]
7369            fn abi_decode_returns_validate(
7370                data: &[u8],
7371            ) -> alloy_sol_types::Result<Self::Return> {
7372                <Self::ReturnTuple<
7373                    '_,
7374                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7375                    .map(|r| {
7376                        let r: getTotalStakeUpdateAtIndexReturn = r.into();
7377                        r._0
7378                    })
7379            }
7380        }
7381    };
7382    #[derive(serde::Serialize, serde::Deserialize)]
7383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7384    /**Function with signature `initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])` and selector `0x75d4173a`.
7385```solidity
7386function initializeDelegatedStakeQuorum(uint8 quorumNumber, uint96 minimumStake, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
7387```*/
7388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7389    #[derive(Clone)]
7390    pub struct initializeDelegatedStakeQuorumCall {
7391        #[allow(missing_docs)]
7392        pub quorumNumber: u8,
7393        #[allow(missing_docs)]
7394        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
7395        #[allow(missing_docs)]
7396        pub _strategyParams: alloy::sol_types::private::Vec<
7397            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
7398        >,
7399    }
7400    ///Container type for the return parameters of the [`initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])`](initializeDelegatedStakeQuorumCall) function.
7401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7402    #[derive(Clone)]
7403    pub struct initializeDelegatedStakeQuorumReturn {}
7404    #[allow(
7405        non_camel_case_types,
7406        non_snake_case,
7407        clippy::pub_underscore_fields,
7408        clippy::style
7409    )]
7410    const _: () = {
7411        use alloy::sol_types as alloy_sol_types;
7412        {
7413            #[doc(hidden)]
7414            type UnderlyingSolTuple<'a> = (
7415                alloy::sol_types::sol_data::Uint<8>,
7416                alloy::sol_types::sol_data::Uint<96>,
7417                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7418            );
7419            #[doc(hidden)]
7420            type UnderlyingRustTuple<'a> = (
7421                u8,
7422                alloy::sol_types::private::primitives::aliases::U96,
7423                alloy::sol_types::private::Vec<
7424                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
7425                >,
7426            );
7427            #[cfg(test)]
7428            #[allow(dead_code, unreachable_patterns)]
7429            fn _type_assertion(
7430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7431            ) {
7432                match _t {
7433                    alloy_sol_types::private::AssertTypeEq::<
7434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7435                    >(_) => {}
7436                }
7437            }
7438            #[automatically_derived]
7439            #[doc(hidden)]
7440            impl ::core::convert::From<initializeDelegatedStakeQuorumCall>
7441            for UnderlyingRustTuple<'_> {
7442                fn from(value: initializeDelegatedStakeQuorumCall) -> Self {
7443                    (value.quorumNumber, value.minimumStake, value._strategyParams)
7444                }
7445            }
7446            #[automatically_derived]
7447            #[doc(hidden)]
7448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7449            for initializeDelegatedStakeQuorumCall {
7450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7451                    Self {
7452                        quorumNumber: tuple.0,
7453                        minimumStake: tuple.1,
7454                        _strategyParams: tuple.2,
7455                    }
7456                }
7457            }
7458        }
7459        {
7460            #[doc(hidden)]
7461            type UnderlyingSolTuple<'a> = ();
7462            #[doc(hidden)]
7463            type UnderlyingRustTuple<'a> = ();
7464            #[cfg(test)]
7465            #[allow(dead_code, unreachable_patterns)]
7466            fn _type_assertion(
7467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7468            ) {
7469                match _t {
7470                    alloy_sol_types::private::AssertTypeEq::<
7471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7472                    >(_) => {}
7473                }
7474            }
7475            #[automatically_derived]
7476            #[doc(hidden)]
7477            impl ::core::convert::From<initializeDelegatedStakeQuorumReturn>
7478            for UnderlyingRustTuple<'_> {
7479                fn from(value: initializeDelegatedStakeQuorumReturn) -> Self {
7480                    ()
7481                }
7482            }
7483            #[automatically_derived]
7484            #[doc(hidden)]
7485            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7486            for initializeDelegatedStakeQuorumReturn {
7487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7488                    Self {}
7489                }
7490            }
7491        }
7492        impl initializeDelegatedStakeQuorumReturn {
7493            fn _tokenize(
7494                &self,
7495            ) -> <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::ReturnToken<
7496                '_,
7497            > {
7498                ()
7499            }
7500        }
7501        #[automatically_derived]
7502        impl alloy_sol_types::SolCall for initializeDelegatedStakeQuorumCall {
7503            type Parameters<'a> = (
7504                alloy::sol_types::sol_data::Uint<8>,
7505                alloy::sol_types::sol_data::Uint<96>,
7506                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7507            );
7508            type Token<'a> = <Self::Parameters<
7509                'a,
7510            > as alloy_sol_types::SolType>::Token<'a>;
7511            type Return = initializeDelegatedStakeQuorumReturn;
7512            type ReturnTuple<'a> = ();
7513            type ReturnToken<'a> = <Self::ReturnTuple<
7514                'a,
7515            > as alloy_sol_types::SolType>::Token<'a>;
7516            const SIGNATURE: &'static str = "initializeDelegatedStakeQuorum(uint8,uint96,(address,uint96)[])";
7517            const SELECTOR: [u8; 4] = [117u8, 212u8, 23u8, 58u8];
7518            #[inline]
7519            fn new<'a>(
7520                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7521            ) -> Self {
7522                tuple.into()
7523            }
7524            #[inline]
7525            fn tokenize(&self) -> Self::Token<'_> {
7526                (
7527                    <alloy::sol_types::sol_data::Uint<
7528                        8,
7529                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7530                    <alloy::sol_types::sol_data::Uint<
7531                        96,
7532                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
7533                    <alloy::sol_types::sol_data::Array<
7534                        IStakeRegistryTypes::StrategyParams,
7535                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
7536                )
7537            }
7538            #[inline]
7539            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7540                initializeDelegatedStakeQuorumReturn::_tokenize(ret)
7541            }
7542            #[inline]
7543            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7544                <Self::ReturnTuple<
7545                    '_,
7546                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7547                    .map(Into::into)
7548            }
7549            #[inline]
7550            fn abi_decode_returns_validate(
7551                data: &[u8],
7552            ) -> alloy_sol_types::Result<Self::Return> {
7553                <Self::ReturnTuple<
7554                    '_,
7555                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7556                    .map(Into::into)
7557            }
7558        }
7559    };
7560    #[derive(serde::Serialize, serde::Deserialize)]
7561    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7562    /**Function with signature `initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])` and selector `0xcc5a7c20`.
7563```solidity
7564function initializeSlashableStakeQuorum(uint8 quorumNumber, uint96 minimumStake, uint32 lookAheadPeriod, IStakeRegistryTypes.StrategyParams[] memory _strategyParams) external;
7565```*/
7566    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7567    #[derive(Clone)]
7568    pub struct initializeSlashableStakeQuorumCall {
7569        #[allow(missing_docs)]
7570        pub quorumNumber: u8,
7571        #[allow(missing_docs)]
7572        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
7573        #[allow(missing_docs)]
7574        pub lookAheadPeriod: u32,
7575        #[allow(missing_docs)]
7576        pub _strategyParams: alloy::sol_types::private::Vec<
7577            <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
7578        >,
7579    }
7580    ///Container type for the return parameters of the [`initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])`](initializeSlashableStakeQuorumCall) function.
7581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7582    #[derive(Clone)]
7583    pub struct initializeSlashableStakeQuorumReturn {}
7584    #[allow(
7585        non_camel_case_types,
7586        non_snake_case,
7587        clippy::pub_underscore_fields,
7588        clippy::style
7589    )]
7590    const _: () = {
7591        use alloy::sol_types as alloy_sol_types;
7592        {
7593            #[doc(hidden)]
7594            type UnderlyingSolTuple<'a> = (
7595                alloy::sol_types::sol_data::Uint<8>,
7596                alloy::sol_types::sol_data::Uint<96>,
7597                alloy::sol_types::sol_data::Uint<32>,
7598                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7599            );
7600            #[doc(hidden)]
7601            type UnderlyingRustTuple<'a> = (
7602                u8,
7603                alloy::sol_types::private::primitives::aliases::U96,
7604                u32,
7605                alloy::sol_types::private::Vec<
7606                    <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
7607                >,
7608            );
7609            #[cfg(test)]
7610            #[allow(dead_code, unreachable_patterns)]
7611            fn _type_assertion(
7612                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7613            ) {
7614                match _t {
7615                    alloy_sol_types::private::AssertTypeEq::<
7616                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7617                    >(_) => {}
7618                }
7619            }
7620            #[automatically_derived]
7621            #[doc(hidden)]
7622            impl ::core::convert::From<initializeSlashableStakeQuorumCall>
7623            for UnderlyingRustTuple<'_> {
7624                fn from(value: initializeSlashableStakeQuorumCall) -> Self {
7625                    (
7626                        value.quorumNumber,
7627                        value.minimumStake,
7628                        value.lookAheadPeriod,
7629                        value._strategyParams,
7630                    )
7631                }
7632            }
7633            #[automatically_derived]
7634            #[doc(hidden)]
7635            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7636            for initializeSlashableStakeQuorumCall {
7637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7638                    Self {
7639                        quorumNumber: tuple.0,
7640                        minimumStake: tuple.1,
7641                        lookAheadPeriod: tuple.2,
7642                        _strategyParams: tuple.3,
7643                    }
7644                }
7645            }
7646        }
7647        {
7648            #[doc(hidden)]
7649            type UnderlyingSolTuple<'a> = ();
7650            #[doc(hidden)]
7651            type UnderlyingRustTuple<'a> = ();
7652            #[cfg(test)]
7653            #[allow(dead_code, unreachable_patterns)]
7654            fn _type_assertion(
7655                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7656            ) {
7657                match _t {
7658                    alloy_sol_types::private::AssertTypeEq::<
7659                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7660                    >(_) => {}
7661                }
7662            }
7663            #[automatically_derived]
7664            #[doc(hidden)]
7665            impl ::core::convert::From<initializeSlashableStakeQuorumReturn>
7666            for UnderlyingRustTuple<'_> {
7667                fn from(value: initializeSlashableStakeQuorumReturn) -> Self {
7668                    ()
7669                }
7670            }
7671            #[automatically_derived]
7672            #[doc(hidden)]
7673            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7674            for initializeSlashableStakeQuorumReturn {
7675                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7676                    Self {}
7677                }
7678            }
7679        }
7680        impl initializeSlashableStakeQuorumReturn {
7681            fn _tokenize(
7682                &self,
7683            ) -> <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::ReturnToken<
7684                '_,
7685            > {
7686                ()
7687            }
7688        }
7689        #[automatically_derived]
7690        impl alloy_sol_types::SolCall for initializeSlashableStakeQuorumCall {
7691            type Parameters<'a> = (
7692                alloy::sol_types::sol_data::Uint<8>,
7693                alloy::sol_types::sol_data::Uint<96>,
7694                alloy::sol_types::sol_data::Uint<32>,
7695                alloy::sol_types::sol_data::Array<IStakeRegistryTypes::StrategyParams>,
7696            );
7697            type Token<'a> = <Self::Parameters<
7698                'a,
7699            > as alloy_sol_types::SolType>::Token<'a>;
7700            type Return = initializeSlashableStakeQuorumReturn;
7701            type ReturnTuple<'a> = ();
7702            type ReturnToken<'a> = <Self::ReturnTuple<
7703                'a,
7704            > as alloy_sol_types::SolType>::Token<'a>;
7705            const SIGNATURE: &'static str = "initializeSlashableStakeQuorum(uint8,uint96,uint32,(address,uint96)[])";
7706            const SELECTOR: [u8; 4] = [204u8, 90u8, 124u8, 32u8];
7707            #[inline]
7708            fn new<'a>(
7709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7710            ) -> Self {
7711                tuple.into()
7712            }
7713            #[inline]
7714            fn tokenize(&self) -> Self::Token<'_> {
7715                (
7716                    <alloy::sol_types::sol_data::Uint<
7717                        8,
7718                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
7719                    <alloy::sol_types::sol_data::Uint<
7720                        96,
7721                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
7722                    <alloy::sol_types::sol_data::Uint<
7723                        32,
7724                    > as alloy_sol_types::SolType>::tokenize(&self.lookAheadPeriod),
7725                    <alloy::sol_types::sol_data::Array<
7726                        IStakeRegistryTypes::StrategyParams,
7727                    > as alloy_sol_types::SolType>::tokenize(&self._strategyParams),
7728                )
7729            }
7730            #[inline]
7731            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7732                initializeSlashableStakeQuorumReturn::_tokenize(ret)
7733            }
7734            #[inline]
7735            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7736                <Self::ReturnTuple<
7737                    '_,
7738                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7739                    .map(Into::into)
7740            }
7741            #[inline]
7742            fn abi_decode_returns_validate(
7743                data: &[u8],
7744            ) -> alloy_sol_types::Result<Self::Return> {
7745                <Self::ReturnTuple<
7746                    '_,
7747                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7748                    .map(Into::into)
7749            }
7750        }
7751    };
7752    #[derive(serde::Serialize, serde::Deserialize)]
7753    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7754    /**Function with signature `minimumStakeForQuorum(uint8)` and selector `0xc46778a5`.
7755```solidity
7756function minimumStakeForQuorum(uint8) external view returns (uint96);
7757```*/
7758    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7759    #[derive(Clone)]
7760    pub struct minimumStakeForQuorumCall(pub u8);
7761    #[derive(serde::Serialize, serde::Deserialize)]
7762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7763    ///Container type for the return parameters of the [`minimumStakeForQuorum(uint8)`](minimumStakeForQuorumCall) function.
7764    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7765    #[derive(Clone)]
7766    pub struct minimumStakeForQuorumReturn {
7767        #[allow(missing_docs)]
7768        pub _0: alloy::sol_types::private::primitives::aliases::U96,
7769    }
7770    #[allow(
7771        non_camel_case_types,
7772        non_snake_case,
7773        clippy::pub_underscore_fields,
7774        clippy::style
7775    )]
7776    const _: () = {
7777        use alloy::sol_types as alloy_sol_types;
7778        {
7779            #[doc(hidden)]
7780            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7781            #[doc(hidden)]
7782            type UnderlyingRustTuple<'a> = (u8,);
7783            #[cfg(test)]
7784            #[allow(dead_code, unreachable_patterns)]
7785            fn _type_assertion(
7786                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7787            ) {
7788                match _t {
7789                    alloy_sol_types::private::AssertTypeEq::<
7790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7791                    >(_) => {}
7792                }
7793            }
7794            #[automatically_derived]
7795            #[doc(hidden)]
7796            impl ::core::convert::From<minimumStakeForQuorumCall>
7797            for UnderlyingRustTuple<'_> {
7798                fn from(value: minimumStakeForQuorumCall) -> Self {
7799                    (value.0,)
7800                }
7801            }
7802            #[automatically_derived]
7803            #[doc(hidden)]
7804            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7805            for minimumStakeForQuorumCall {
7806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7807                    Self(tuple.0)
7808                }
7809            }
7810        }
7811        {
7812            #[doc(hidden)]
7813            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7814            #[doc(hidden)]
7815            type UnderlyingRustTuple<'a> = (
7816                alloy::sol_types::private::primitives::aliases::U96,
7817            );
7818            #[cfg(test)]
7819            #[allow(dead_code, unreachable_patterns)]
7820            fn _type_assertion(
7821                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7822            ) {
7823                match _t {
7824                    alloy_sol_types::private::AssertTypeEq::<
7825                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7826                    >(_) => {}
7827                }
7828            }
7829            #[automatically_derived]
7830            #[doc(hidden)]
7831            impl ::core::convert::From<minimumStakeForQuorumReturn>
7832            for UnderlyingRustTuple<'_> {
7833                fn from(value: minimumStakeForQuorumReturn) -> Self {
7834                    (value._0,)
7835                }
7836            }
7837            #[automatically_derived]
7838            #[doc(hidden)]
7839            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7840            for minimumStakeForQuorumReturn {
7841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7842                    Self { _0: tuple.0 }
7843                }
7844            }
7845        }
7846        #[automatically_derived]
7847        impl alloy_sol_types::SolCall for minimumStakeForQuorumCall {
7848            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
7849            type Token<'a> = <Self::Parameters<
7850                'a,
7851            > as alloy_sol_types::SolType>::Token<'a>;
7852            type Return = alloy::sol_types::private::primitives::aliases::U96;
7853            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
7854            type ReturnToken<'a> = <Self::ReturnTuple<
7855                'a,
7856            > as alloy_sol_types::SolType>::Token<'a>;
7857            const SIGNATURE: &'static str = "minimumStakeForQuorum(uint8)";
7858            const SELECTOR: [u8; 4] = [196u8, 103u8, 120u8, 165u8];
7859            #[inline]
7860            fn new<'a>(
7861                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7862            ) -> Self {
7863                tuple.into()
7864            }
7865            #[inline]
7866            fn tokenize(&self) -> Self::Token<'_> {
7867                (
7868                    <alloy::sol_types::sol_data::Uint<
7869                        8,
7870                    > as alloy_sol_types::SolType>::tokenize(&self.0),
7871                )
7872            }
7873            #[inline]
7874            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7875                (
7876                    <alloy::sol_types::sol_data::Uint<
7877                        96,
7878                    > as alloy_sol_types::SolType>::tokenize(ret),
7879                )
7880            }
7881            #[inline]
7882            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7883                <Self::ReturnTuple<
7884                    '_,
7885                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7886                    .map(|r| {
7887                        let r: minimumStakeForQuorumReturn = r.into();
7888                        r._0
7889                    })
7890            }
7891            #[inline]
7892            fn abi_decode_returns_validate(
7893                data: &[u8],
7894            ) -> alloy_sol_types::Result<Self::Return> {
7895                <Self::ReturnTuple<
7896                    '_,
7897                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7898                    .map(|r| {
7899                        let r: minimumStakeForQuorumReturn = r.into();
7900                        r._0
7901                    })
7902            }
7903        }
7904    };
7905    #[derive(serde::Serialize, serde::Deserialize)]
7906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7907    /**Function with signature `modifyStrategyParams(uint8,uint256[],uint96[])` and selector `0x20b66298`.
7908```solidity
7909function modifyStrategyParams(uint8 quorumNumber, uint256[] memory strategyIndices, uint96[] memory newMultipliers) external;
7910```*/
7911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7912    #[derive(Clone)]
7913    pub struct modifyStrategyParamsCall {
7914        #[allow(missing_docs)]
7915        pub quorumNumber: u8,
7916        #[allow(missing_docs)]
7917        pub strategyIndices: alloy::sol_types::private::Vec<
7918            alloy::sol_types::private::primitives::aliases::U256,
7919        >,
7920        #[allow(missing_docs)]
7921        pub newMultipliers: alloy::sol_types::private::Vec<
7922            alloy::sol_types::private::primitives::aliases::U96,
7923        >,
7924    }
7925    ///Container type for the return parameters of the [`modifyStrategyParams(uint8,uint256[],uint96[])`](modifyStrategyParamsCall) function.
7926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7927    #[derive(Clone)]
7928    pub struct modifyStrategyParamsReturn {}
7929    #[allow(
7930        non_camel_case_types,
7931        non_snake_case,
7932        clippy::pub_underscore_fields,
7933        clippy::style
7934    )]
7935    const _: () = {
7936        use alloy::sol_types as alloy_sol_types;
7937        {
7938            #[doc(hidden)]
7939            type UnderlyingSolTuple<'a> = (
7940                alloy::sol_types::sol_data::Uint<8>,
7941                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7942                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
7943            );
7944            #[doc(hidden)]
7945            type UnderlyingRustTuple<'a> = (
7946                u8,
7947                alloy::sol_types::private::Vec<
7948                    alloy::sol_types::private::primitives::aliases::U256,
7949                >,
7950                alloy::sol_types::private::Vec<
7951                    alloy::sol_types::private::primitives::aliases::U96,
7952                >,
7953            );
7954            #[cfg(test)]
7955            #[allow(dead_code, unreachable_patterns)]
7956            fn _type_assertion(
7957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7958            ) {
7959                match _t {
7960                    alloy_sol_types::private::AssertTypeEq::<
7961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7962                    >(_) => {}
7963                }
7964            }
7965            #[automatically_derived]
7966            #[doc(hidden)]
7967            impl ::core::convert::From<modifyStrategyParamsCall>
7968            for UnderlyingRustTuple<'_> {
7969                fn from(value: modifyStrategyParamsCall) -> Self {
7970                    (value.quorumNumber, value.strategyIndices, value.newMultipliers)
7971                }
7972            }
7973            #[automatically_derived]
7974            #[doc(hidden)]
7975            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7976            for modifyStrategyParamsCall {
7977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7978                    Self {
7979                        quorumNumber: tuple.0,
7980                        strategyIndices: tuple.1,
7981                        newMultipliers: tuple.2,
7982                    }
7983                }
7984            }
7985        }
7986        {
7987            #[doc(hidden)]
7988            type UnderlyingSolTuple<'a> = ();
7989            #[doc(hidden)]
7990            type UnderlyingRustTuple<'a> = ();
7991            #[cfg(test)]
7992            #[allow(dead_code, unreachable_patterns)]
7993            fn _type_assertion(
7994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7995            ) {
7996                match _t {
7997                    alloy_sol_types::private::AssertTypeEq::<
7998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7999                    >(_) => {}
8000                }
8001            }
8002            #[automatically_derived]
8003            #[doc(hidden)]
8004            impl ::core::convert::From<modifyStrategyParamsReturn>
8005            for UnderlyingRustTuple<'_> {
8006                fn from(value: modifyStrategyParamsReturn) -> Self {
8007                    ()
8008                }
8009            }
8010            #[automatically_derived]
8011            #[doc(hidden)]
8012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8013            for modifyStrategyParamsReturn {
8014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8015                    Self {}
8016                }
8017            }
8018        }
8019        impl modifyStrategyParamsReturn {
8020            fn _tokenize(
8021                &self,
8022            ) -> <modifyStrategyParamsCall as alloy_sol_types::SolCall>::ReturnToken<
8023                '_,
8024            > {
8025                ()
8026            }
8027        }
8028        #[automatically_derived]
8029        impl alloy_sol_types::SolCall for modifyStrategyParamsCall {
8030            type Parameters<'a> = (
8031                alloy::sol_types::sol_data::Uint<8>,
8032                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8033                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
8034            );
8035            type Token<'a> = <Self::Parameters<
8036                'a,
8037            > as alloy_sol_types::SolType>::Token<'a>;
8038            type Return = modifyStrategyParamsReturn;
8039            type ReturnTuple<'a> = ();
8040            type ReturnToken<'a> = <Self::ReturnTuple<
8041                'a,
8042            > as alloy_sol_types::SolType>::Token<'a>;
8043            const SIGNATURE: &'static str = "modifyStrategyParams(uint8,uint256[],uint96[])";
8044            const SELECTOR: [u8; 4] = [32u8, 182u8, 98u8, 152u8];
8045            #[inline]
8046            fn new<'a>(
8047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8048            ) -> Self {
8049                tuple.into()
8050            }
8051            #[inline]
8052            fn tokenize(&self) -> Self::Token<'_> {
8053                (
8054                    <alloy::sol_types::sol_data::Uint<
8055                        8,
8056                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8057                    <alloy::sol_types::sol_data::Array<
8058                        alloy::sol_types::sol_data::Uint<256>,
8059                    > as alloy_sol_types::SolType>::tokenize(&self.strategyIndices),
8060                    <alloy::sol_types::sol_data::Array<
8061                        alloy::sol_types::sol_data::Uint<96>,
8062                    > as alloy_sol_types::SolType>::tokenize(&self.newMultipliers),
8063                )
8064            }
8065            #[inline]
8066            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8067                modifyStrategyParamsReturn::_tokenize(ret)
8068            }
8069            #[inline]
8070            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8071                <Self::ReturnTuple<
8072                    '_,
8073                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8074                    .map(Into::into)
8075            }
8076            #[inline]
8077            fn abi_decode_returns_validate(
8078                data: &[u8],
8079            ) -> alloy_sol_types::Result<Self::Return> {
8080                <Self::ReturnTuple<
8081                    '_,
8082                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8083                    .map(Into::into)
8084            }
8085        }
8086    };
8087    #[derive(serde::Serialize, serde::Deserialize)]
8088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8089    /**Function with signature `registerOperator(address,bytes32,bytes)` and selector `0x25504777`.
8090```solidity
8091function registerOperator(address operator, bytes32 operatorId, bytes memory quorumNumbers) external returns (uint96[] memory, uint96[] memory);
8092```*/
8093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8094    #[derive(Clone)]
8095    pub struct registerOperatorCall {
8096        #[allow(missing_docs)]
8097        pub operator: alloy::sol_types::private::Address,
8098        #[allow(missing_docs)]
8099        pub operatorId: alloy::sol_types::private::FixedBytes<32>,
8100        #[allow(missing_docs)]
8101        pub quorumNumbers: alloy::sol_types::private::Bytes,
8102    }
8103    #[derive(serde::Serialize, serde::Deserialize)]
8104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8105    ///Container type for the return parameters of the [`registerOperator(address,bytes32,bytes)`](registerOperatorCall) function.
8106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8107    #[derive(Clone)]
8108    pub struct registerOperatorReturn {
8109        #[allow(missing_docs)]
8110        pub _0: alloy::sol_types::private::Vec<
8111            alloy::sol_types::private::primitives::aliases::U96,
8112        >,
8113        #[allow(missing_docs)]
8114        pub _1: alloy::sol_types::private::Vec<
8115            alloy::sol_types::private::primitives::aliases::U96,
8116        >,
8117    }
8118    #[allow(
8119        non_camel_case_types,
8120        non_snake_case,
8121        clippy::pub_underscore_fields,
8122        clippy::style
8123    )]
8124    const _: () = {
8125        use alloy::sol_types as alloy_sol_types;
8126        {
8127            #[doc(hidden)]
8128            type UnderlyingSolTuple<'a> = (
8129                alloy::sol_types::sol_data::Address,
8130                alloy::sol_types::sol_data::FixedBytes<32>,
8131                alloy::sol_types::sol_data::Bytes,
8132            );
8133            #[doc(hidden)]
8134            type UnderlyingRustTuple<'a> = (
8135                alloy::sol_types::private::Address,
8136                alloy::sol_types::private::FixedBytes<32>,
8137                alloy::sol_types::private::Bytes,
8138            );
8139            #[cfg(test)]
8140            #[allow(dead_code, unreachable_patterns)]
8141            fn _type_assertion(
8142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8143            ) {
8144                match _t {
8145                    alloy_sol_types::private::AssertTypeEq::<
8146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8147                    >(_) => {}
8148                }
8149            }
8150            #[automatically_derived]
8151            #[doc(hidden)]
8152            impl ::core::convert::From<registerOperatorCall>
8153            for UnderlyingRustTuple<'_> {
8154                fn from(value: registerOperatorCall) -> Self {
8155                    (value.operator, value.operatorId, value.quorumNumbers)
8156                }
8157            }
8158            #[automatically_derived]
8159            #[doc(hidden)]
8160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8161            for registerOperatorCall {
8162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8163                    Self {
8164                        operator: tuple.0,
8165                        operatorId: tuple.1,
8166                        quorumNumbers: tuple.2,
8167                    }
8168                }
8169            }
8170        }
8171        {
8172            #[doc(hidden)]
8173            type UnderlyingSolTuple<'a> = (
8174                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
8175                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
8176            );
8177            #[doc(hidden)]
8178            type UnderlyingRustTuple<'a> = (
8179                alloy::sol_types::private::Vec<
8180                    alloy::sol_types::private::primitives::aliases::U96,
8181                >,
8182                alloy::sol_types::private::Vec<
8183                    alloy::sol_types::private::primitives::aliases::U96,
8184                >,
8185            );
8186            #[cfg(test)]
8187            #[allow(dead_code, unreachable_patterns)]
8188            fn _type_assertion(
8189                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8190            ) {
8191                match _t {
8192                    alloy_sol_types::private::AssertTypeEq::<
8193                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8194                    >(_) => {}
8195                }
8196            }
8197            #[automatically_derived]
8198            #[doc(hidden)]
8199            impl ::core::convert::From<registerOperatorReturn>
8200            for UnderlyingRustTuple<'_> {
8201                fn from(value: registerOperatorReturn) -> Self {
8202                    (value._0, value._1)
8203                }
8204            }
8205            #[automatically_derived]
8206            #[doc(hidden)]
8207            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8208            for registerOperatorReturn {
8209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8210                    Self { _0: tuple.0, _1: tuple.1 }
8211                }
8212            }
8213        }
8214        impl registerOperatorReturn {
8215            fn _tokenize(
8216                &self,
8217            ) -> <registerOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8218                (
8219                    <alloy::sol_types::sol_data::Array<
8220                        alloy::sol_types::sol_data::Uint<96>,
8221                    > as alloy_sol_types::SolType>::tokenize(&self._0),
8222                    <alloy::sol_types::sol_data::Array<
8223                        alloy::sol_types::sol_data::Uint<96>,
8224                    > as alloy_sol_types::SolType>::tokenize(&self._1),
8225                )
8226            }
8227        }
8228        #[automatically_derived]
8229        impl alloy_sol_types::SolCall for registerOperatorCall {
8230            type Parameters<'a> = (
8231                alloy::sol_types::sol_data::Address,
8232                alloy::sol_types::sol_data::FixedBytes<32>,
8233                alloy::sol_types::sol_data::Bytes,
8234            );
8235            type Token<'a> = <Self::Parameters<
8236                'a,
8237            > as alloy_sol_types::SolType>::Token<'a>;
8238            type Return = registerOperatorReturn;
8239            type ReturnTuple<'a> = (
8240                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
8241                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
8242            );
8243            type ReturnToken<'a> = <Self::ReturnTuple<
8244                'a,
8245            > as alloy_sol_types::SolType>::Token<'a>;
8246            const SIGNATURE: &'static str = "registerOperator(address,bytes32,bytes)";
8247            const SELECTOR: [u8; 4] = [37u8, 80u8, 71u8, 119u8];
8248            #[inline]
8249            fn new<'a>(
8250                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8251            ) -> Self {
8252                tuple.into()
8253            }
8254            #[inline]
8255            fn tokenize(&self) -> Self::Token<'_> {
8256                (
8257                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8258                        &self.operator,
8259                    ),
8260                    <alloy::sol_types::sol_data::FixedBytes<
8261                        32,
8262                    > as alloy_sol_types::SolType>::tokenize(&self.operatorId),
8263                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8264                        &self.quorumNumbers,
8265                    ),
8266                )
8267            }
8268            #[inline]
8269            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8270                registerOperatorReturn::_tokenize(ret)
8271            }
8272            #[inline]
8273            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8274                <Self::ReturnTuple<
8275                    '_,
8276                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8277                    .map(Into::into)
8278            }
8279            #[inline]
8280            fn abi_decode_returns_validate(
8281                data: &[u8],
8282            ) -> alloy_sol_types::Result<Self::Return> {
8283                <Self::ReturnTuple<
8284                    '_,
8285                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8286                    .map(Into::into)
8287            }
8288        }
8289    };
8290    #[derive(serde::Serialize, serde::Deserialize)]
8291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8292    /**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
8293```solidity
8294function registryCoordinator() external view returns (address);
8295```*/
8296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8297    #[derive(Clone)]
8298    pub struct registryCoordinatorCall;
8299    #[derive(serde::Serialize, serde::Deserialize)]
8300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8301    ///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
8302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8303    #[derive(Clone)]
8304    pub struct registryCoordinatorReturn {
8305        #[allow(missing_docs)]
8306        pub _0: alloy::sol_types::private::Address,
8307    }
8308    #[allow(
8309        non_camel_case_types,
8310        non_snake_case,
8311        clippy::pub_underscore_fields,
8312        clippy::style
8313    )]
8314    const _: () = {
8315        use alloy::sol_types as alloy_sol_types;
8316        {
8317            #[doc(hidden)]
8318            type UnderlyingSolTuple<'a> = ();
8319            #[doc(hidden)]
8320            type UnderlyingRustTuple<'a> = ();
8321            #[cfg(test)]
8322            #[allow(dead_code, unreachable_patterns)]
8323            fn _type_assertion(
8324                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8325            ) {
8326                match _t {
8327                    alloy_sol_types::private::AssertTypeEq::<
8328                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8329                    >(_) => {}
8330                }
8331            }
8332            #[automatically_derived]
8333            #[doc(hidden)]
8334            impl ::core::convert::From<registryCoordinatorCall>
8335            for UnderlyingRustTuple<'_> {
8336                fn from(value: registryCoordinatorCall) -> Self {
8337                    ()
8338                }
8339            }
8340            #[automatically_derived]
8341            #[doc(hidden)]
8342            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8343            for registryCoordinatorCall {
8344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8345                    Self
8346                }
8347            }
8348        }
8349        {
8350            #[doc(hidden)]
8351            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8352            #[doc(hidden)]
8353            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8354            #[cfg(test)]
8355            #[allow(dead_code, unreachable_patterns)]
8356            fn _type_assertion(
8357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8358            ) {
8359                match _t {
8360                    alloy_sol_types::private::AssertTypeEq::<
8361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8362                    >(_) => {}
8363                }
8364            }
8365            #[automatically_derived]
8366            #[doc(hidden)]
8367            impl ::core::convert::From<registryCoordinatorReturn>
8368            for UnderlyingRustTuple<'_> {
8369                fn from(value: registryCoordinatorReturn) -> Self {
8370                    (value._0,)
8371                }
8372            }
8373            #[automatically_derived]
8374            #[doc(hidden)]
8375            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8376            for registryCoordinatorReturn {
8377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8378                    Self { _0: tuple.0 }
8379                }
8380            }
8381        }
8382        #[automatically_derived]
8383        impl alloy_sol_types::SolCall for registryCoordinatorCall {
8384            type Parameters<'a> = ();
8385            type Token<'a> = <Self::Parameters<
8386                'a,
8387            > as alloy_sol_types::SolType>::Token<'a>;
8388            type Return = alloy::sol_types::private::Address;
8389            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8390            type ReturnToken<'a> = <Self::ReturnTuple<
8391                'a,
8392            > as alloy_sol_types::SolType>::Token<'a>;
8393            const SIGNATURE: &'static str = "registryCoordinator()";
8394            const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
8395            #[inline]
8396            fn new<'a>(
8397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8398            ) -> Self {
8399                tuple.into()
8400            }
8401            #[inline]
8402            fn tokenize(&self) -> Self::Token<'_> {
8403                ()
8404            }
8405            #[inline]
8406            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8407                (
8408                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8409                        ret,
8410                    ),
8411                )
8412            }
8413            #[inline]
8414            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8415                <Self::ReturnTuple<
8416                    '_,
8417                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8418                    .map(|r| {
8419                        let r: registryCoordinatorReturn = r.into();
8420                        r._0
8421                    })
8422            }
8423            #[inline]
8424            fn abi_decode_returns_validate(
8425                data: &[u8],
8426            ) -> alloy_sol_types::Result<Self::Return> {
8427                <Self::ReturnTuple<
8428                    '_,
8429                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8430                    .map(|r| {
8431                        let r: registryCoordinatorReturn = r.into();
8432                        r._0
8433                    })
8434            }
8435        }
8436    };
8437    #[derive(serde::Serialize, serde::Deserialize)]
8438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8439    /**Function with signature `removeStrategies(uint8,uint256[])` and selector `0x5f1f2d77`.
8440```solidity
8441function removeStrategies(uint8 quorumNumber, uint256[] memory indicesToRemove) external;
8442```*/
8443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8444    #[derive(Clone)]
8445    pub struct removeStrategiesCall {
8446        #[allow(missing_docs)]
8447        pub quorumNumber: u8,
8448        #[allow(missing_docs)]
8449        pub indicesToRemove: alloy::sol_types::private::Vec<
8450            alloy::sol_types::private::primitives::aliases::U256,
8451        >,
8452    }
8453    ///Container type for the return parameters of the [`removeStrategies(uint8,uint256[])`](removeStrategiesCall) function.
8454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8455    #[derive(Clone)]
8456    pub struct removeStrategiesReturn {}
8457    #[allow(
8458        non_camel_case_types,
8459        non_snake_case,
8460        clippy::pub_underscore_fields,
8461        clippy::style
8462    )]
8463    const _: () = {
8464        use alloy::sol_types as alloy_sol_types;
8465        {
8466            #[doc(hidden)]
8467            type UnderlyingSolTuple<'a> = (
8468                alloy::sol_types::sol_data::Uint<8>,
8469                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8470            );
8471            #[doc(hidden)]
8472            type UnderlyingRustTuple<'a> = (
8473                u8,
8474                alloy::sol_types::private::Vec<
8475                    alloy::sol_types::private::primitives::aliases::U256,
8476                >,
8477            );
8478            #[cfg(test)]
8479            #[allow(dead_code, unreachable_patterns)]
8480            fn _type_assertion(
8481                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8482            ) {
8483                match _t {
8484                    alloy_sol_types::private::AssertTypeEq::<
8485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8486                    >(_) => {}
8487                }
8488            }
8489            #[automatically_derived]
8490            #[doc(hidden)]
8491            impl ::core::convert::From<removeStrategiesCall>
8492            for UnderlyingRustTuple<'_> {
8493                fn from(value: removeStrategiesCall) -> Self {
8494                    (value.quorumNumber, value.indicesToRemove)
8495                }
8496            }
8497            #[automatically_derived]
8498            #[doc(hidden)]
8499            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8500            for removeStrategiesCall {
8501                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8502                    Self {
8503                        quorumNumber: tuple.0,
8504                        indicesToRemove: tuple.1,
8505                    }
8506                }
8507            }
8508        }
8509        {
8510            #[doc(hidden)]
8511            type UnderlyingSolTuple<'a> = ();
8512            #[doc(hidden)]
8513            type UnderlyingRustTuple<'a> = ();
8514            #[cfg(test)]
8515            #[allow(dead_code, unreachable_patterns)]
8516            fn _type_assertion(
8517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8518            ) {
8519                match _t {
8520                    alloy_sol_types::private::AssertTypeEq::<
8521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8522                    >(_) => {}
8523                }
8524            }
8525            #[automatically_derived]
8526            #[doc(hidden)]
8527            impl ::core::convert::From<removeStrategiesReturn>
8528            for UnderlyingRustTuple<'_> {
8529                fn from(value: removeStrategiesReturn) -> Self {
8530                    ()
8531                }
8532            }
8533            #[automatically_derived]
8534            #[doc(hidden)]
8535            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8536            for removeStrategiesReturn {
8537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8538                    Self {}
8539                }
8540            }
8541        }
8542        impl removeStrategiesReturn {
8543            fn _tokenize(
8544                &self,
8545            ) -> <removeStrategiesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8546                ()
8547            }
8548        }
8549        #[automatically_derived]
8550        impl alloy_sol_types::SolCall for removeStrategiesCall {
8551            type Parameters<'a> = (
8552                alloy::sol_types::sol_data::Uint<8>,
8553                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
8554            );
8555            type Token<'a> = <Self::Parameters<
8556                'a,
8557            > as alloy_sol_types::SolType>::Token<'a>;
8558            type Return = removeStrategiesReturn;
8559            type ReturnTuple<'a> = ();
8560            type ReturnToken<'a> = <Self::ReturnTuple<
8561                'a,
8562            > as alloy_sol_types::SolType>::Token<'a>;
8563            const SIGNATURE: &'static str = "removeStrategies(uint8,uint256[])";
8564            const SELECTOR: [u8; 4] = [95u8, 31u8, 45u8, 119u8];
8565            #[inline]
8566            fn new<'a>(
8567                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8568            ) -> Self {
8569                tuple.into()
8570            }
8571            #[inline]
8572            fn tokenize(&self) -> Self::Token<'_> {
8573                (
8574                    <alloy::sol_types::sol_data::Uint<
8575                        8,
8576                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8577                    <alloy::sol_types::sol_data::Array<
8578                        alloy::sol_types::sol_data::Uint<256>,
8579                    > as alloy_sol_types::SolType>::tokenize(&self.indicesToRemove),
8580                )
8581            }
8582            #[inline]
8583            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8584                removeStrategiesReturn::_tokenize(ret)
8585            }
8586            #[inline]
8587            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8588                <Self::ReturnTuple<
8589                    '_,
8590                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8591                    .map(Into::into)
8592            }
8593            #[inline]
8594            fn abi_decode_returns_validate(
8595                data: &[u8],
8596            ) -> alloy_sol_types::Result<Self::Return> {
8597                <Self::ReturnTuple<
8598                    '_,
8599                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8600                    .map(Into::into)
8601            }
8602        }
8603    };
8604    #[derive(serde::Serialize, serde::Deserialize)]
8605    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8606    /**Function with signature `setMinimumStakeForQuorum(uint8,uint96)` and selector `0xbc9a40c3`.
8607```solidity
8608function setMinimumStakeForQuorum(uint8 quorumNumber, uint96 minimumStake) external;
8609```*/
8610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8611    #[derive(Clone)]
8612    pub struct setMinimumStakeForQuorumCall {
8613        #[allow(missing_docs)]
8614        pub quorumNumber: u8,
8615        #[allow(missing_docs)]
8616        pub minimumStake: alloy::sol_types::private::primitives::aliases::U96,
8617    }
8618    ///Container type for the return parameters of the [`setMinimumStakeForQuorum(uint8,uint96)`](setMinimumStakeForQuorumCall) function.
8619    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8620    #[derive(Clone)]
8621    pub struct setMinimumStakeForQuorumReturn {}
8622    #[allow(
8623        non_camel_case_types,
8624        non_snake_case,
8625        clippy::pub_underscore_fields,
8626        clippy::style
8627    )]
8628    const _: () = {
8629        use alloy::sol_types as alloy_sol_types;
8630        {
8631            #[doc(hidden)]
8632            type UnderlyingSolTuple<'a> = (
8633                alloy::sol_types::sol_data::Uint<8>,
8634                alloy::sol_types::sol_data::Uint<96>,
8635            );
8636            #[doc(hidden)]
8637            type UnderlyingRustTuple<'a> = (
8638                u8,
8639                alloy::sol_types::private::primitives::aliases::U96,
8640            );
8641            #[cfg(test)]
8642            #[allow(dead_code, unreachable_patterns)]
8643            fn _type_assertion(
8644                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8645            ) {
8646                match _t {
8647                    alloy_sol_types::private::AssertTypeEq::<
8648                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8649                    >(_) => {}
8650                }
8651            }
8652            #[automatically_derived]
8653            #[doc(hidden)]
8654            impl ::core::convert::From<setMinimumStakeForQuorumCall>
8655            for UnderlyingRustTuple<'_> {
8656                fn from(value: setMinimumStakeForQuorumCall) -> Self {
8657                    (value.quorumNumber, value.minimumStake)
8658                }
8659            }
8660            #[automatically_derived]
8661            #[doc(hidden)]
8662            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8663            for setMinimumStakeForQuorumCall {
8664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8665                    Self {
8666                        quorumNumber: tuple.0,
8667                        minimumStake: tuple.1,
8668                    }
8669                }
8670            }
8671        }
8672        {
8673            #[doc(hidden)]
8674            type UnderlyingSolTuple<'a> = ();
8675            #[doc(hidden)]
8676            type UnderlyingRustTuple<'a> = ();
8677            #[cfg(test)]
8678            #[allow(dead_code, unreachable_patterns)]
8679            fn _type_assertion(
8680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8681            ) {
8682                match _t {
8683                    alloy_sol_types::private::AssertTypeEq::<
8684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8685                    >(_) => {}
8686                }
8687            }
8688            #[automatically_derived]
8689            #[doc(hidden)]
8690            impl ::core::convert::From<setMinimumStakeForQuorumReturn>
8691            for UnderlyingRustTuple<'_> {
8692                fn from(value: setMinimumStakeForQuorumReturn) -> Self {
8693                    ()
8694                }
8695            }
8696            #[automatically_derived]
8697            #[doc(hidden)]
8698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8699            for setMinimumStakeForQuorumReturn {
8700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8701                    Self {}
8702                }
8703            }
8704        }
8705        impl setMinimumStakeForQuorumReturn {
8706            fn _tokenize(
8707                &self,
8708            ) -> <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::ReturnToken<
8709                '_,
8710            > {
8711                ()
8712            }
8713        }
8714        #[automatically_derived]
8715        impl alloy_sol_types::SolCall for setMinimumStakeForQuorumCall {
8716            type Parameters<'a> = (
8717                alloy::sol_types::sol_data::Uint<8>,
8718                alloy::sol_types::sol_data::Uint<96>,
8719            );
8720            type Token<'a> = <Self::Parameters<
8721                'a,
8722            > as alloy_sol_types::SolType>::Token<'a>;
8723            type Return = setMinimumStakeForQuorumReturn;
8724            type ReturnTuple<'a> = ();
8725            type ReturnToken<'a> = <Self::ReturnTuple<
8726                'a,
8727            > as alloy_sol_types::SolType>::Token<'a>;
8728            const SIGNATURE: &'static str = "setMinimumStakeForQuorum(uint8,uint96)";
8729            const SELECTOR: [u8; 4] = [188u8, 154u8, 64u8, 195u8];
8730            #[inline]
8731            fn new<'a>(
8732                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8733            ) -> Self {
8734                tuple.into()
8735            }
8736            #[inline]
8737            fn tokenize(&self) -> Self::Token<'_> {
8738                (
8739                    <alloy::sol_types::sol_data::Uint<
8740                        8,
8741                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8742                    <alloy::sol_types::sol_data::Uint<
8743                        96,
8744                    > as alloy_sol_types::SolType>::tokenize(&self.minimumStake),
8745                )
8746            }
8747            #[inline]
8748            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8749                setMinimumStakeForQuorumReturn::_tokenize(ret)
8750            }
8751            #[inline]
8752            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8753                <Self::ReturnTuple<
8754                    '_,
8755                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8756                    .map(Into::into)
8757            }
8758            #[inline]
8759            fn abi_decode_returns_validate(
8760                data: &[u8],
8761            ) -> alloy_sol_types::Result<Self::Return> {
8762                <Self::ReturnTuple<
8763                    '_,
8764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8765                    .map(Into::into)
8766            }
8767        }
8768    };
8769    #[derive(serde::Serialize, serde::Deserialize)]
8770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8771    /**Function with signature `setSlashableStakeLookahead(uint8,uint32)` and selector `0xe086adb3`.
8772```solidity
8773function setSlashableStakeLookahead(uint8 quorumNumber, uint32 _lookAheadBlocks) external;
8774```*/
8775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8776    #[derive(Clone)]
8777    pub struct setSlashableStakeLookaheadCall {
8778        #[allow(missing_docs)]
8779        pub quorumNumber: u8,
8780        #[allow(missing_docs)]
8781        pub _lookAheadBlocks: u32,
8782    }
8783    ///Container type for the return parameters of the [`setSlashableStakeLookahead(uint8,uint32)`](setSlashableStakeLookaheadCall) function.
8784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8785    #[derive(Clone)]
8786    pub struct setSlashableStakeLookaheadReturn {}
8787    #[allow(
8788        non_camel_case_types,
8789        non_snake_case,
8790        clippy::pub_underscore_fields,
8791        clippy::style
8792    )]
8793    const _: () = {
8794        use alloy::sol_types as alloy_sol_types;
8795        {
8796            #[doc(hidden)]
8797            type UnderlyingSolTuple<'a> = (
8798                alloy::sol_types::sol_data::Uint<8>,
8799                alloy::sol_types::sol_data::Uint<32>,
8800            );
8801            #[doc(hidden)]
8802            type UnderlyingRustTuple<'a> = (u8, u32);
8803            #[cfg(test)]
8804            #[allow(dead_code, unreachable_patterns)]
8805            fn _type_assertion(
8806                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8807            ) {
8808                match _t {
8809                    alloy_sol_types::private::AssertTypeEq::<
8810                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8811                    >(_) => {}
8812                }
8813            }
8814            #[automatically_derived]
8815            #[doc(hidden)]
8816            impl ::core::convert::From<setSlashableStakeLookaheadCall>
8817            for UnderlyingRustTuple<'_> {
8818                fn from(value: setSlashableStakeLookaheadCall) -> Self {
8819                    (value.quorumNumber, value._lookAheadBlocks)
8820                }
8821            }
8822            #[automatically_derived]
8823            #[doc(hidden)]
8824            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8825            for setSlashableStakeLookaheadCall {
8826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8827                    Self {
8828                        quorumNumber: tuple.0,
8829                        _lookAheadBlocks: tuple.1,
8830                    }
8831                }
8832            }
8833        }
8834        {
8835            #[doc(hidden)]
8836            type UnderlyingSolTuple<'a> = ();
8837            #[doc(hidden)]
8838            type UnderlyingRustTuple<'a> = ();
8839            #[cfg(test)]
8840            #[allow(dead_code, unreachable_patterns)]
8841            fn _type_assertion(
8842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8843            ) {
8844                match _t {
8845                    alloy_sol_types::private::AssertTypeEq::<
8846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8847                    >(_) => {}
8848                }
8849            }
8850            #[automatically_derived]
8851            #[doc(hidden)]
8852            impl ::core::convert::From<setSlashableStakeLookaheadReturn>
8853            for UnderlyingRustTuple<'_> {
8854                fn from(value: setSlashableStakeLookaheadReturn) -> Self {
8855                    ()
8856                }
8857            }
8858            #[automatically_derived]
8859            #[doc(hidden)]
8860            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8861            for setSlashableStakeLookaheadReturn {
8862                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8863                    Self {}
8864                }
8865            }
8866        }
8867        impl setSlashableStakeLookaheadReturn {
8868            fn _tokenize(
8869                &self,
8870            ) -> <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::ReturnToken<
8871                '_,
8872            > {
8873                ()
8874            }
8875        }
8876        #[automatically_derived]
8877        impl alloy_sol_types::SolCall for setSlashableStakeLookaheadCall {
8878            type Parameters<'a> = (
8879                alloy::sol_types::sol_data::Uint<8>,
8880                alloy::sol_types::sol_data::Uint<32>,
8881            );
8882            type Token<'a> = <Self::Parameters<
8883                'a,
8884            > as alloy_sol_types::SolType>::Token<'a>;
8885            type Return = setSlashableStakeLookaheadReturn;
8886            type ReturnTuple<'a> = ();
8887            type ReturnToken<'a> = <Self::ReturnTuple<
8888                'a,
8889            > as alloy_sol_types::SolType>::Token<'a>;
8890            const SIGNATURE: &'static str = "setSlashableStakeLookahead(uint8,uint32)";
8891            const SELECTOR: [u8; 4] = [224u8, 134u8, 173u8, 179u8];
8892            #[inline]
8893            fn new<'a>(
8894                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8895            ) -> Self {
8896                tuple.into()
8897            }
8898            #[inline]
8899            fn tokenize(&self) -> Self::Token<'_> {
8900                (
8901                    <alloy::sol_types::sol_data::Uint<
8902                        8,
8903                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
8904                    <alloy::sol_types::sol_data::Uint<
8905                        32,
8906                    > as alloy_sol_types::SolType>::tokenize(&self._lookAheadBlocks),
8907                )
8908            }
8909            #[inline]
8910            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8911                setSlashableStakeLookaheadReturn::_tokenize(ret)
8912            }
8913            #[inline]
8914            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8915                <Self::ReturnTuple<
8916                    '_,
8917                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8918                    .map(Into::into)
8919            }
8920            #[inline]
8921            fn abi_decode_returns_validate(
8922                data: &[u8],
8923            ) -> alloy_sol_types::Result<Self::Return> {
8924                <Self::ReturnTuple<
8925                    '_,
8926                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8927                    .map(Into::into)
8928            }
8929        }
8930    };
8931    #[derive(serde::Serialize, serde::Deserialize)]
8932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8933    /**Function with signature `slashableStakeLookAheadPerQuorum(uint8)` and selector `0x9ab4d6ff`.
8934```solidity
8935function slashableStakeLookAheadPerQuorum(uint8 quorumNumber) external view returns (uint32);
8936```*/
8937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8938    #[derive(Clone)]
8939    pub struct slashableStakeLookAheadPerQuorumCall {
8940        #[allow(missing_docs)]
8941        pub quorumNumber: u8,
8942    }
8943    #[derive(serde::Serialize, serde::Deserialize)]
8944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8945    ///Container type for the return parameters of the [`slashableStakeLookAheadPerQuorum(uint8)`](slashableStakeLookAheadPerQuorumCall) function.
8946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8947    #[derive(Clone)]
8948    pub struct slashableStakeLookAheadPerQuorumReturn {
8949        #[allow(missing_docs)]
8950        pub _0: u32,
8951    }
8952    #[allow(
8953        non_camel_case_types,
8954        non_snake_case,
8955        clippy::pub_underscore_fields,
8956        clippy::style
8957    )]
8958    const _: () = {
8959        use alloy::sol_types as alloy_sol_types;
8960        {
8961            #[doc(hidden)]
8962            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
8963            #[doc(hidden)]
8964            type UnderlyingRustTuple<'a> = (u8,);
8965            #[cfg(test)]
8966            #[allow(dead_code, unreachable_patterns)]
8967            fn _type_assertion(
8968                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8969            ) {
8970                match _t {
8971                    alloy_sol_types::private::AssertTypeEq::<
8972                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8973                    >(_) => {}
8974                }
8975            }
8976            #[automatically_derived]
8977            #[doc(hidden)]
8978            impl ::core::convert::From<slashableStakeLookAheadPerQuorumCall>
8979            for UnderlyingRustTuple<'_> {
8980                fn from(value: slashableStakeLookAheadPerQuorumCall) -> Self {
8981                    (value.quorumNumber,)
8982                }
8983            }
8984            #[automatically_derived]
8985            #[doc(hidden)]
8986            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8987            for slashableStakeLookAheadPerQuorumCall {
8988                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8989                    Self { quorumNumber: tuple.0 }
8990                }
8991            }
8992        }
8993        {
8994            #[doc(hidden)]
8995            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8996            #[doc(hidden)]
8997            type UnderlyingRustTuple<'a> = (u32,);
8998            #[cfg(test)]
8999            #[allow(dead_code, unreachable_patterns)]
9000            fn _type_assertion(
9001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9002            ) {
9003                match _t {
9004                    alloy_sol_types::private::AssertTypeEq::<
9005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9006                    >(_) => {}
9007                }
9008            }
9009            #[automatically_derived]
9010            #[doc(hidden)]
9011            impl ::core::convert::From<slashableStakeLookAheadPerQuorumReturn>
9012            for UnderlyingRustTuple<'_> {
9013                fn from(value: slashableStakeLookAheadPerQuorumReturn) -> Self {
9014                    (value._0,)
9015                }
9016            }
9017            #[automatically_derived]
9018            #[doc(hidden)]
9019            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9020            for slashableStakeLookAheadPerQuorumReturn {
9021                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9022                    Self { _0: tuple.0 }
9023                }
9024            }
9025        }
9026        #[automatically_derived]
9027        impl alloy_sol_types::SolCall for slashableStakeLookAheadPerQuorumCall {
9028            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9029            type Token<'a> = <Self::Parameters<
9030                'a,
9031            > as alloy_sol_types::SolType>::Token<'a>;
9032            type Return = u32;
9033            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9034            type ReturnToken<'a> = <Self::ReturnTuple<
9035                'a,
9036            > as alloy_sol_types::SolType>::Token<'a>;
9037            const SIGNATURE: &'static str = "slashableStakeLookAheadPerQuorum(uint8)";
9038            const SELECTOR: [u8; 4] = [154u8, 180u8, 214u8, 255u8];
9039            #[inline]
9040            fn new<'a>(
9041                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9042            ) -> Self {
9043                tuple.into()
9044            }
9045            #[inline]
9046            fn tokenize(&self) -> Self::Token<'_> {
9047                (
9048                    <alloy::sol_types::sol_data::Uint<
9049                        8,
9050                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9051                )
9052            }
9053            #[inline]
9054            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9055                (
9056                    <alloy::sol_types::sol_data::Uint<
9057                        32,
9058                    > as alloy_sol_types::SolType>::tokenize(ret),
9059                )
9060            }
9061            #[inline]
9062            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9063                <Self::ReturnTuple<
9064                    '_,
9065                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9066                    .map(|r| {
9067                        let r: slashableStakeLookAheadPerQuorumReturn = r.into();
9068                        r._0
9069                    })
9070            }
9071            #[inline]
9072            fn abi_decode_returns_validate(
9073                data: &[u8],
9074            ) -> alloy_sol_types::Result<Self::Return> {
9075                <Self::ReturnTuple<
9076                    '_,
9077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9078                    .map(|r| {
9079                        let r: slashableStakeLookAheadPerQuorumReturn = r.into();
9080                        r._0
9081                    })
9082            }
9083        }
9084    };
9085    #[derive(serde::Serialize, serde::Deserialize)]
9086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9087    /**Function with signature `stakeTypePerQuorum(uint8)` and selector `0x697fbd93`.
9088```solidity
9089function stakeTypePerQuorum(uint8 quorumNumber) external view returns (IStakeRegistryTypes.StakeType);
9090```*/
9091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9092    #[derive(Clone)]
9093    pub struct stakeTypePerQuorumCall {
9094        #[allow(missing_docs)]
9095        pub quorumNumber: u8,
9096    }
9097    #[derive(serde::Serialize, serde::Deserialize)]
9098    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9099    ///Container type for the return parameters of the [`stakeTypePerQuorum(uint8)`](stakeTypePerQuorumCall) function.
9100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9101    #[derive(Clone)]
9102    pub struct stakeTypePerQuorumReturn {
9103        #[allow(missing_docs)]
9104        pub _0: <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
9105    }
9106    #[allow(
9107        non_camel_case_types,
9108        non_snake_case,
9109        clippy::pub_underscore_fields,
9110        clippy::style
9111    )]
9112    const _: () = {
9113        use alloy::sol_types as alloy_sol_types;
9114        {
9115            #[doc(hidden)]
9116            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9117            #[doc(hidden)]
9118            type UnderlyingRustTuple<'a> = (u8,);
9119            #[cfg(test)]
9120            #[allow(dead_code, unreachable_patterns)]
9121            fn _type_assertion(
9122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9123            ) {
9124                match _t {
9125                    alloy_sol_types::private::AssertTypeEq::<
9126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9127                    >(_) => {}
9128                }
9129            }
9130            #[automatically_derived]
9131            #[doc(hidden)]
9132            impl ::core::convert::From<stakeTypePerQuorumCall>
9133            for UnderlyingRustTuple<'_> {
9134                fn from(value: stakeTypePerQuorumCall) -> Self {
9135                    (value.quorumNumber,)
9136                }
9137            }
9138            #[automatically_derived]
9139            #[doc(hidden)]
9140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9141            for stakeTypePerQuorumCall {
9142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9143                    Self { quorumNumber: tuple.0 }
9144                }
9145            }
9146        }
9147        {
9148            #[doc(hidden)]
9149            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StakeType,);
9150            #[doc(hidden)]
9151            type UnderlyingRustTuple<'a> = (
9152                <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType,
9153            );
9154            #[cfg(test)]
9155            #[allow(dead_code, unreachable_patterns)]
9156            fn _type_assertion(
9157                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9158            ) {
9159                match _t {
9160                    alloy_sol_types::private::AssertTypeEq::<
9161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9162                    >(_) => {}
9163                }
9164            }
9165            #[automatically_derived]
9166            #[doc(hidden)]
9167            impl ::core::convert::From<stakeTypePerQuorumReturn>
9168            for UnderlyingRustTuple<'_> {
9169                fn from(value: stakeTypePerQuorumReturn) -> Self {
9170                    (value._0,)
9171                }
9172            }
9173            #[automatically_derived]
9174            #[doc(hidden)]
9175            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9176            for stakeTypePerQuorumReturn {
9177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9178                    Self { _0: tuple.0 }
9179                }
9180            }
9181        }
9182        #[automatically_derived]
9183        impl alloy_sol_types::SolCall for stakeTypePerQuorumCall {
9184            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9185            type Token<'a> = <Self::Parameters<
9186                'a,
9187            > as alloy_sol_types::SolType>::Token<'a>;
9188            type Return = <IStakeRegistryTypes::StakeType as alloy::sol_types::SolType>::RustType;
9189            type ReturnTuple<'a> = (IStakeRegistryTypes::StakeType,);
9190            type ReturnToken<'a> = <Self::ReturnTuple<
9191                'a,
9192            > as alloy_sol_types::SolType>::Token<'a>;
9193            const SIGNATURE: &'static str = "stakeTypePerQuorum(uint8)";
9194            const SELECTOR: [u8; 4] = [105u8, 127u8, 189u8, 147u8];
9195            #[inline]
9196            fn new<'a>(
9197                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9198            ) -> Self {
9199                tuple.into()
9200            }
9201            #[inline]
9202            fn tokenize(&self) -> Self::Token<'_> {
9203                (
9204                    <alloy::sol_types::sol_data::Uint<
9205                        8,
9206                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9207                )
9208            }
9209            #[inline]
9210            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9211                (
9212                    <IStakeRegistryTypes::StakeType as alloy_sol_types::SolType>::tokenize(
9213                        ret,
9214                    ),
9215                )
9216            }
9217            #[inline]
9218            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9219                <Self::ReturnTuple<
9220                    '_,
9221                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9222                    .map(|r| {
9223                        let r: stakeTypePerQuorumReturn = r.into();
9224                        r._0
9225                    })
9226            }
9227            #[inline]
9228            fn abi_decode_returns_validate(
9229                data: &[u8],
9230            ) -> alloy_sol_types::Result<Self::Return> {
9231                <Self::ReturnTuple<
9232                    '_,
9233                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9234                    .map(|r| {
9235                        let r: stakeTypePerQuorumReturn = r.into();
9236                        r._0
9237                    })
9238            }
9239        }
9240    };
9241    #[derive(serde::Serialize, serde::Deserialize)]
9242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9243    /**Function with signature `strategiesPerQuorum(uint8,uint256)` and selector `0x9f3ccf65`.
9244```solidity
9245function strategiesPerQuorum(uint8 quorumNumber, uint256) external view returns (address);
9246```*/
9247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9248    #[derive(Clone)]
9249    pub struct strategiesPerQuorumCall {
9250        #[allow(missing_docs)]
9251        pub quorumNumber: u8,
9252        #[allow(missing_docs)]
9253        pub _1: alloy::sol_types::private::primitives::aliases::U256,
9254    }
9255    #[derive(serde::Serialize, serde::Deserialize)]
9256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9257    ///Container type for the return parameters of the [`strategiesPerQuorum(uint8,uint256)`](strategiesPerQuorumCall) function.
9258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9259    #[derive(Clone)]
9260    pub struct strategiesPerQuorumReturn {
9261        #[allow(missing_docs)]
9262        pub _0: alloy::sol_types::private::Address,
9263    }
9264    #[allow(
9265        non_camel_case_types,
9266        non_snake_case,
9267        clippy::pub_underscore_fields,
9268        clippy::style
9269    )]
9270    const _: () = {
9271        use alloy::sol_types as alloy_sol_types;
9272        {
9273            #[doc(hidden)]
9274            type UnderlyingSolTuple<'a> = (
9275                alloy::sol_types::sol_data::Uint<8>,
9276                alloy::sol_types::sol_data::Uint<256>,
9277            );
9278            #[doc(hidden)]
9279            type UnderlyingRustTuple<'a> = (
9280                u8,
9281                alloy::sol_types::private::primitives::aliases::U256,
9282            );
9283            #[cfg(test)]
9284            #[allow(dead_code, unreachable_patterns)]
9285            fn _type_assertion(
9286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9287            ) {
9288                match _t {
9289                    alloy_sol_types::private::AssertTypeEq::<
9290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9291                    >(_) => {}
9292                }
9293            }
9294            #[automatically_derived]
9295            #[doc(hidden)]
9296            impl ::core::convert::From<strategiesPerQuorumCall>
9297            for UnderlyingRustTuple<'_> {
9298                fn from(value: strategiesPerQuorumCall) -> Self {
9299                    (value.quorumNumber, value._1)
9300                }
9301            }
9302            #[automatically_derived]
9303            #[doc(hidden)]
9304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9305            for strategiesPerQuorumCall {
9306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9307                    Self {
9308                        quorumNumber: tuple.0,
9309                        _1: tuple.1,
9310                    }
9311                }
9312            }
9313        }
9314        {
9315            #[doc(hidden)]
9316            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9317            #[doc(hidden)]
9318            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9319            #[cfg(test)]
9320            #[allow(dead_code, unreachable_patterns)]
9321            fn _type_assertion(
9322                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9323            ) {
9324                match _t {
9325                    alloy_sol_types::private::AssertTypeEq::<
9326                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9327                    >(_) => {}
9328                }
9329            }
9330            #[automatically_derived]
9331            #[doc(hidden)]
9332            impl ::core::convert::From<strategiesPerQuorumReturn>
9333            for UnderlyingRustTuple<'_> {
9334                fn from(value: strategiesPerQuorumReturn) -> Self {
9335                    (value._0,)
9336                }
9337            }
9338            #[automatically_derived]
9339            #[doc(hidden)]
9340            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9341            for strategiesPerQuorumReturn {
9342                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9343                    Self { _0: tuple.0 }
9344                }
9345            }
9346        }
9347        #[automatically_derived]
9348        impl alloy_sol_types::SolCall for strategiesPerQuorumCall {
9349            type Parameters<'a> = (
9350                alloy::sol_types::sol_data::Uint<8>,
9351                alloy::sol_types::sol_data::Uint<256>,
9352            );
9353            type Token<'a> = <Self::Parameters<
9354                'a,
9355            > as alloy_sol_types::SolType>::Token<'a>;
9356            type Return = alloy::sol_types::private::Address;
9357            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9358            type ReturnToken<'a> = <Self::ReturnTuple<
9359                'a,
9360            > as alloy_sol_types::SolType>::Token<'a>;
9361            const SIGNATURE: &'static str = "strategiesPerQuorum(uint8,uint256)";
9362            const SELECTOR: [u8; 4] = [159u8, 60u8, 207u8, 101u8];
9363            #[inline]
9364            fn new<'a>(
9365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9366            ) -> Self {
9367                tuple.into()
9368            }
9369            #[inline]
9370            fn tokenize(&self) -> Self::Token<'_> {
9371                (
9372                    <alloy::sol_types::sol_data::Uint<
9373                        8,
9374                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9375                    <alloy::sol_types::sol_data::Uint<
9376                        256,
9377                    > as alloy_sol_types::SolType>::tokenize(&self._1),
9378                )
9379            }
9380            #[inline]
9381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9382                (
9383                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9384                        ret,
9385                    ),
9386                )
9387            }
9388            #[inline]
9389            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9390                <Self::ReturnTuple<
9391                    '_,
9392                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9393                    .map(|r| {
9394                        let r: strategiesPerQuorumReturn = r.into();
9395                        r._0
9396                    })
9397            }
9398            #[inline]
9399            fn abi_decode_returns_validate(
9400                data: &[u8],
9401            ) -> alloy_sol_types::Result<Self::Return> {
9402                <Self::ReturnTuple<
9403                    '_,
9404                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9405                    .map(|r| {
9406                        let r: strategiesPerQuorumReturn = r.into();
9407                        r._0
9408                    })
9409            }
9410        }
9411    };
9412    #[derive(serde::Serialize, serde::Deserialize)]
9413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9414    /**Function with signature `strategyParams(uint8,uint256)` and selector `0x08732461`.
9415```solidity
9416function strategyParams(uint8 quorumNumber, uint256) external view returns (address strategy, uint96 multiplier);
9417```*/
9418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9419    #[derive(Clone)]
9420    pub struct strategyParamsCall {
9421        #[allow(missing_docs)]
9422        pub quorumNumber: u8,
9423        #[allow(missing_docs)]
9424        pub _1: alloy::sol_types::private::primitives::aliases::U256,
9425    }
9426    #[derive(serde::Serialize, serde::Deserialize)]
9427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9428    ///Container type for the return parameters of the [`strategyParams(uint8,uint256)`](strategyParamsCall) function.
9429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9430    #[derive(Clone)]
9431    pub struct strategyParamsReturn {
9432        #[allow(missing_docs)]
9433        pub strategy: alloy::sol_types::private::Address,
9434        #[allow(missing_docs)]
9435        pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
9436    }
9437    #[allow(
9438        non_camel_case_types,
9439        non_snake_case,
9440        clippy::pub_underscore_fields,
9441        clippy::style
9442    )]
9443    const _: () = {
9444        use alloy::sol_types as alloy_sol_types;
9445        {
9446            #[doc(hidden)]
9447            type UnderlyingSolTuple<'a> = (
9448                alloy::sol_types::sol_data::Uint<8>,
9449                alloy::sol_types::sol_data::Uint<256>,
9450            );
9451            #[doc(hidden)]
9452            type UnderlyingRustTuple<'a> = (
9453                u8,
9454                alloy::sol_types::private::primitives::aliases::U256,
9455            );
9456            #[cfg(test)]
9457            #[allow(dead_code, unreachable_patterns)]
9458            fn _type_assertion(
9459                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9460            ) {
9461                match _t {
9462                    alloy_sol_types::private::AssertTypeEq::<
9463                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9464                    >(_) => {}
9465                }
9466            }
9467            #[automatically_derived]
9468            #[doc(hidden)]
9469            impl ::core::convert::From<strategyParamsCall> for UnderlyingRustTuple<'_> {
9470                fn from(value: strategyParamsCall) -> Self {
9471                    (value.quorumNumber, value._1)
9472                }
9473            }
9474            #[automatically_derived]
9475            #[doc(hidden)]
9476            impl ::core::convert::From<UnderlyingRustTuple<'_>> for strategyParamsCall {
9477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9478                    Self {
9479                        quorumNumber: tuple.0,
9480                        _1: tuple.1,
9481                    }
9482                }
9483            }
9484        }
9485        {
9486            #[doc(hidden)]
9487            type UnderlyingSolTuple<'a> = (
9488                alloy::sol_types::sol_data::Address,
9489                alloy::sol_types::sol_data::Uint<96>,
9490            );
9491            #[doc(hidden)]
9492            type UnderlyingRustTuple<'a> = (
9493                alloy::sol_types::private::Address,
9494                alloy::sol_types::private::primitives::aliases::U96,
9495            );
9496            #[cfg(test)]
9497            #[allow(dead_code, unreachable_patterns)]
9498            fn _type_assertion(
9499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9500            ) {
9501                match _t {
9502                    alloy_sol_types::private::AssertTypeEq::<
9503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9504                    >(_) => {}
9505                }
9506            }
9507            #[automatically_derived]
9508            #[doc(hidden)]
9509            impl ::core::convert::From<strategyParamsReturn>
9510            for UnderlyingRustTuple<'_> {
9511                fn from(value: strategyParamsReturn) -> Self {
9512                    (value.strategy, value.multiplier)
9513                }
9514            }
9515            #[automatically_derived]
9516            #[doc(hidden)]
9517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9518            for strategyParamsReturn {
9519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9520                    Self {
9521                        strategy: tuple.0,
9522                        multiplier: tuple.1,
9523                    }
9524                }
9525            }
9526        }
9527        impl strategyParamsReturn {
9528            fn _tokenize(
9529                &self,
9530            ) -> <strategyParamsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9531                (
9532                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9533                        &self.strategy,
9534                    ),
9535                    <alloy::sol_types::sol_data::Uint<
9536                        96,
9537                    > as alloy_sol_types::SolType>::tokenize(&self.multiplier),
9538                )
9539            }
9540        }
9541        #[automatically_derived]
9542        impl alloy_sol_types::SolCall for strategyParamsCall {
9543            type Parameters<'a> = (
9544                alloy::sol_types::sol_data::Uint<8>,
9545                alloy::sol_types::sol_data::Uint<256>,
9546            );
9547            type Token<'a> = <Self::Parameters<
9548                'a,
9549            > as alloy_sol_types::SolType>::Token<'a>;
9550            type Return = strategyParamsReturn;
9551            type ReturnTuple<'a> = (
9552                alloy::sol_types::sol_data::Address,
9553                alloy::sol_types::sol_data::Uint<96>,
9554            );
9555            type ReturnToken<'a> = <Self::ReturnTuple<
9556                'a,
9557            > as alloy_sol_types::SolType>::Token<'a>;
9558            const SIGNATURE: &'static str = "strategyParams(uint8,uint256)";
9559            const SELECTOR: [u8; 4] = [8u8, 115u8, 36u8, 97u8];
9560            #[inline]
9561            fn new<'a>(
9562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9563            ) -> Self {
9564                tuple.into()
9565            }
9566            #[inline]
9567            fn tokenize(&self) -> Self::Token<'_> {
9568                (
9569                    <alloy::sol_types::sol_data::Uint<
9570                        8,
9571                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9572                    <alloy::sol_types::sol_data::Uint<
9573                        256,
9574                    > as alloy_sol_types::SolType>::tokenize(&self._1),
9575                )
9576            }
9577            #[inline]
9578            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9579                strategyParamsReturn::_tokenize(ret)
9580            }
9581            #[inline]
9582            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9583                <Self::ReturnTuple<
9584                    '_,
9585                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9586                    .map(Into::into)
9587            }
9588            #[inline]
9589            fn abi_decode_returns_validate(
9590                data: &[u8],
9591            ) -> alloy_sol_types::Result<Self::Return> {
9592                <Self::ReturnTuple<
9593                    '_,
9594                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9595                    .map(Into::into)
9596            }
9597        }
9598    };
9599    #[derive(serde::Serialize, serde::Deserialize)]
9600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9601    /**Function with signature `strategyParamsByIndex(uint8,uint256)` and selector `0xadc804da`.
9602```solidity
9603function strategyParamsByIndex(uint8 quorumNumber, uint256 index) external view returns (IStakeRegistryTypes.StrategyParams memory);
9604```*/
9605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9606    #[derive(Clone)]
9607    pub struct strategyParamsByIndexCall {
9608        #[allow(missing_docs)]
9609        pub quorumNumber: u8,
9610        #[allow(missing_docs)]
9611        pub index: alloy::sol_types::private::primitives::aliases::U256,
9612    }
9613    #[derive(serde::Serialize, serde::Deserialize)]
9614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9615    ///Container type for the return parameters of the [`strategyParamsByIndex(uint8,uint256)`](strategyParamsByIndexCall) function.
9616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9617    #[derive(Clone)]
9618    pub struct strategyParamsByIndexReturn {
9619        #[allow(missing_docs)]
9620        pub _0: <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
9621    }
9622    #[allow(
9623        non_camel_case_types,
9624        non_snake_case,
9625        clippy::pub_underscore_fields,
9626        clippy::style
9627    )]
9628    const _: () = {
9629        use alloy::sol_types as alloy_sol_types;
9630        {
9631            #[doc(hidden)]
9632            type UnderlyingSolTuple<'a> = (
9633                alloy::sol_types::sol_data::Uint<8>,
9634                alloy::sol_types::sol_data::Uint<256>,
9635            );
9636            #[doc(hidden)]
9637            type UnderlyingRustTuple<'a> = (
9638                u8,
9639                alloy::sol_types::private::primitives::aliases::U256,
9640            );
9641            #[cfg(test)]
9642            #[allow(dead_code, unreachable_patterns)]
9643            fn _type_assertion(
9644                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9645            ) {
9646                match _t {
9647                    alloy_sol_types::private::AssertTypeEq::<
9648                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9649                    >(_) => {}
9650                }
9651            }
9652            #[automatically_derived]
9653            #[doc(hidden)]
9654            impl ::core::convert::From<strategyParamsByIndexCall>
9655            for UnderlyingRustTuple<'_> {
9656                fn from(value: strategyParamsByIndexCall) -> Self {
9657                    (value.quorumNumber, value.index)
9658                }
9659            }
9660            #[automatically_derived]
9661            #[doc(hidden)]
9662            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9663            for strategyParamsByIndexCall {
9664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9665                    Self {
9666                        quorumNumber: tuple.0,
9667                        index: tuple.1,
9668                    }
9669                }
9670            }
9671        }
9672        {
9673            #[doc(hidden)]
9674            type UnderlyingSolTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
9675            #[doc(hidden)]
9676            type UnderlyingRustTuple<'a> = (
9677                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
9678            );
9679            #[cfg(test)]
9680            #[allow(dead_code, unreachable_patterns)]
9681            fn _type_assertion(
9682                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9683            ) {
9684                match _t {
9685                    alloy_sol_types::private::AssertTypeEq::<
9686                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9687                    >(_) => {}
9688                }
9689            }
9690            #[automatically_derived]
9691            #[doc(hidden)]
9692            impl ::core::convert::From<strategyParamsByIndexReturn>
9693            for UnderlyingRustTuple<'_> {
9694                fn from(value: strategyParamsByIndexReturn) -> Self {
9695                    (value._0,)
9696                }
9697            }
9698            #[automatically_derived]
9699            #[doc(hidden)]
9700            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9701            for strategyParamsByIndexReturn {
9702                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9703                    Self { _0: tuple.0 }
9704                }
9705            }
9706        }
9707        #[automatically_derived]
9708        impl alloy_sol_types::SolCall for strategyParamsByIndexCall {
9709            type Parameters<'a> = (
9710                alloy::sol_types::sol_data::Uint<8>,
9711                alloy::sol_types::sol_data::Uint<256>,
9712            );
9713            type Token<'a> = <Self::Parameters<
9714                'a,
9715            > as alloy_sol_types::SolType>::Token<'a>;
9716            type Return = <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType;
9717            type ReturnTuple<'a> = (IStakeRegistryTypes::StrategyParams,);
9718            type ReturnToken<'a> = <Self::ReturnTuple<
9719                'a,
9720            > as alloy_sol_types::SolType>::Token<'a>;
9721            const SIGNATURE: &'static str = "strategyParamsByIndex(uint8,uint256)";
9722            const SELECTOR: [u8; 4] = [173u8, 200u8, 4u8, 218u8];
9723            #[inline]
9724            fn new<'a>(
9725                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9726            ) -> Self {
9727                tuple.into()
9728            }
9729            #[inline]
9730            fn tokenize(&self) -> Self::Token<'_> {
9731                (
9732                    <alloy::sol_types::sol_data::Uint<
9733                        8,
9734                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9735                    <alloy::sol_types::sol_data::Uint<
9736                        256,
9737                    > as alloy_sol_types::SolType>::tokenize(&self.index),
9738                )
9739            }
9740            #[inline]
9741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9742                (
9743                    <IStakeRegistryTypes::StrategyParams as alloy_sol_types::SolType>::tokenize(
9744                        ret,
9745                    ),
9746                )
9747            }
9748            #[inline]
9749            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9750                <Self::ReturnTuple<
9751                    '_,
9752                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9753                    .map(|r| {
9754                        let r: strategyParamsByIndexReturn = r.into();
9755                        r._0
9756                    })
9757            }
9758            #[inline]
9759            fn abi_decode_returns_validate(
9760                data: &[u8],
9761            ) -> alloy_sol_types::Result<Self::Return> {
9762                <Self::ReturnTuple<
9763                    '_,
9764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9765                    .map(|r| {
9766                        let r: strategyParamsByIndexReturn = r.into();
9767                        r._0
9768                    })
9769            }
9770        }
9771    };
9772    #[derive(serde::Serialize, serde::Deserialize)]
9773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9774    /**Function with signature `strategyParamsLength(uint8)` and selector `0x3ca5a5f5`.
9775```solidity
9776function strategyParamsLength(uint8 quorumNumber) external view returns (uint256);
9777```*/
9778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9779    #[derive(Clone)]
9780    pub struct strategyParamsLengthCall {
9781        #[allow(missing_docs)]
9782        pub quorumNumber: u8,
9783    }
9784    #[derive(serde::Serialize, serde::Deserialize)]
9785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9786    ///Container type for the return parameters of the [`strategyParamsLength(uint8)`](strategyParamsLengthCall) function.
9787    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9788    #[derive(Clone)]
9789    pub struct strategyParamsLengthReturn {
9790        #[allow(missing_docs)]
9791        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9792    }
9793    #[allow(
9794        non_camel_case_types,
9795        non_snake_case,
9796        clippy::pub_underscore_fields,
9797        clippy::style
9798    )]
9799    const _: () = {
9800        use alloy::sol_types as alloy_sol_types;
9801        {
9802            #[doc(hidden)]
9803            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9804            #[doc(hidden)]
9805            type UnderlyingRustTuple<'a> = (u8,);
9806            #[cfg(test)]
9807            #[allow(dead_code, unreachable_patterns)]
9808            fn _type_assertion(
9809                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9810            ) {
9811                match _t {
9812                    alloy_sol_types::private::AssertTypeEq::<
9813                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9814                    >(_) => {}
9815                }
9816            }
9817            #[automatically_derived]
9818            #[doc(hidden)]
9819            impl ::core::convert::From<strategyParamsLengthCall>
9820            for UnderlyingRustTuple<'_> {
9821                fn from(value: strategyParamsLengthCall) -> Self {
9822                    (value.quorumNumber,)
9823                }
9824            }
9825            #[automatically_derived]
9826            #[doc(hidden)]
9827            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9828            for strategyParamsLengthCall {
9829                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9830                    Self { quorumNumber: tuple.0 }
9831                }
9832            }
9833        }
9834        {
9835            #[doc(hidden)]
9836            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9837            #[doc(hidden)]
9838            type UnderlyingRustTuple<'a> = (
9839                alloy::sol_types::private::primitives::aliases::U256,
9840            );
9841            #[cfg(test)]
9842            #[allow(dead_code, unreachable_patterns)]
9843            fn _type_assertion(
9844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9845            ) {
9846                match _t {
9847                    alloy_sol_types::private::AssertTypeEq::<
9848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9849                    >(_) => {}
9850                }
9851            }
9852            #[automatically_derived]
9853            #[doc(hidden)]
9854            impl ::core::convert::From<strategyParamsLengthReturn>
9855            for UnderlyingRustTuple<'_> {
9856                fn from(value: strategyParamsLengthReturn) -> Self {
9857                    (value._0,)
9858                }
9859            }
9860            #[automatically_derived]
9861            #[doc(hidden)]
9862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9863            for strategyParamsLengthReturn {
9864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9865                    Self { _0: tuple.0 }
9866                }
9867            }
9868        }
9869        #[automatically_derived]
9870        impl alloy_sol_types::SolCall for strategyParamsLengthCall {
9871            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
9872            type Token<'a> = <Self::Parameters<
9873                'a,
9874            > as alloy_sol_types::SolType>::Token<'a>;
9875            type Return = alloy::sol_types::private::primitives::aliases::U256;
9876            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9877            type ReturnToken<'a> = <Self::ReturnTuple<
9878                'a,
9879            > as alloy_sol_types::SolType>::Token<'a>;
9880            const SIGNATURE: &'static str = "strategyParamsLength(uint8)";
9881            const SELECTOR: [u8; 4] = [60u8, 165u8, 165u8, 245u8];
9882            #[inline]
9883            fn new<'a>(
9884                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9885            ) -> Self {
9886                tuple.into()
9887            }
9888            #[inline]
9889            fn tokenize(&self) -> Self::Token<'_> {
9890                (
9891                    <alloy::sol_types::sol_data::Uint<
9892                        8,
9893                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
9894                )
9895            }
9896            #[inline]
9897            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9898                (
9899                    <alloy::sol_types::sol_data::Uint<
9900                        256,
9901                    > as alloy_sol_types::SolType>::tokenize(ret),
9902                )
9903            }
9904            #[inline]
9905            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9906                <Self::ReturnTuple<
9907                    '_,
9908                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9909                    .map(|r| {
9910                        let r: strategyParamsLengthReturn = r.into();
9911                        r._0
9912                    })
9913            }
9914            #[inline]
9915            fn abi_decode_returns_validate(
9916                data: &[u8],
9917            ) -> alloy_sol_types::Result<Self::Return> {
9918                <Self::ReturnTuple<
9919                    '_,
9920                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9921                    .map(|r| {
9922                        let r: strategyParamsLengthReturn = r.into();
9923                        r._0
9924                    })
9925            }
9926        }
9927    };
9928    #[derive(serde::Serialize, serde::Deserialize)]
9929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9930    /**Function with signature `updateOperatorsStake(address[],bytes32[],uint8)` and selector `0x6c3fb4bf`.
9931```solidity
9932function updateOperatorsStake(address[] memory operators, bytes32[] memory operatorIds, uint8 quorumNumber) external returns (bool[] memory);
9933```*/
9934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9935    #[derive(Clone)]
9936    pub struct updateOperatorsStakeCall {
9937        #[allow(missing_docs)]
9938        pub operators: alloy::sol_types::private::Vec<
9939            alloy::sol_types::private::Address,
9940        >,
9941        #[allow(missing_docs)]
9942        pub operatorIds: alloy::sol_types::private::Vec<
9943            alloy::sol_types::private::FixedBytes<32>,
9944        >,
9945        #[allow(missing_docs)]
9946        pub quorumNumber: u8,
9947    }
9948    #[derive(serde::Serialize, serde::Deserialize)]
9949    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9950    ///Container type for the return parameters of the [`updateOperatorsStake(address[],bytes32[],uint8)`](updateOperatorsStakeCall) function.
9951    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9952    #[derive(Clone)]
9953    pub struct updateOperatorsStakeReturn {
9954        #[allow(missing_docs)]
9955        pub _0: alloy::sol_types::private::Vec<bool>,
9956    }
9957    #[allow(
9958        non_camel_case_types,
9959        non_snake_case,
9960        clippy::pub_underscore_fields,
9961        clippy::style
9962    )]
9963    const _: () = {
9964        use alloy::sol_types as alloy_sol_types;
9965        {
9966            #[doc(hidden)]
9967            type UnderlyingSolTuple<'a> = (
9968                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
9969                alloy::sol_types::sol_data::Array<
9970                    alloy::sol_types::sol_data::FixedBytes<32>,
9971                >,
9972                alloy::sol_types::sol_data::Uint<8>,
9973            );
9974            #[doc(hidden)]
9975            type UnderlyingRustTuple<'a> = (
9976                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9977                alloy::sol_types::private::Vec<
9978                    alloy::sol_types::private::FixedBytes<32>,
9979                >,
9980                u8,
9981            );
9982            #[cfg(test)]
9983            #[allow(dead_code, unreachable_patterns)]
9984            fn _type_assertion(
9985                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9986            ) {
9987                match _t {
9988                    alloy_sol_types::private::AssertTypeEq::<
9989                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9990                    >(_) => {}
9991                }
9992            }
9993            #[automatically_derived]
9994            #[doc(hidden)]
9995            impl ::core::convert::From<updateOperatorsStakeCall>
9996            for UnderlyingRustTuple<'_> {
9997                fn from(value: updateOperatorsStakeCall) -> Self {
9998                    (value.operators, value.operatorIds, value.quorumNumber)
9999                }
10000            }
10001            #[automatically_derived]
10002            #[doc(hidden)]
10003            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10004            for updateOperatorsStakeCall {
10005                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10006                    Self {
10007                        operators: tuple.0,
10008                        operatorIds: tuple.1,
10009                        quorumNumber: tuple.2,
10010                    }
10011                }
10012            }
10013        }
10014        {
10015            #[doc(hidden)]
10016            type UnderlyingSolTuple<'a> = (
10017                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
10018            );
10019            #[doc(hidden)]
10020            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<bool>,);
10021            #[cfg(test)]
10022            #[allow(dead_code, unreachable_patterns)]
10023            fn _type_assertion(
10024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10025            ) {
10026                match _t {
10027                    alloy_sol_types::private::AssertTypeEq::<
10028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10029                    >(_) => {}
10030                }
10031            }
10032            #[automatically_derived]
10033            #[doc(hidden)]
10034            impl ::core::convert::From<updateOperatorsStakeReturn>
10035            for UnderlyingRustTuple<'_> {
10036                fn from(value: updateOperatorsStakeReturn) -> Self {
10037                    (value._0,)
10038                }
10039            }
10040            #[automatically_derived]
10041            #[doc(hidden)]
10042            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10043            for updateOperatorsStakeReturn {
10044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10045                    Self { _0: tuple.0 }
10046                }
10047            }
10048        }
10049        #[automatically_derived]
10050        impl alloy_sol_types::SolCall for updateOperatorsStakeCall {
10051            type Parameters<'a> = (
10052                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
10053                alloy::sol_types::sol_data::Array<
10054                    alloy::sol_types::sol_data::FixedBytes<32>,
10055                >,
10056                alloy::sol_types::sol_data::Uint<8>,
10057            );
10058            type Token<'a> = <Self::Parameters<
10059                'a,
10060            > as alloy_sol_types::SolType>::Token<'a>;
10061            type Return = alloy::sol_types::private::Vec<bool>;
10062            type ReturnTuple<'a> = (
10063                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bool>,
10064            );
10065            type ReturnToken<'a> = <Self::ReturnTuple<
10066                'a,
10067            > as alloy_sol_types::SolType>::Token<'a>;
10068            const SIGNATURE: &'static str = "updateOperatorsStake(address[],bytes32[],uint8)";
10069            const SELECTOR: [u8; 4] = [108u8, 63u8, 180u8, 191u8];
10070            #[inline]
10071            fn new<'a>(
10072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10073            ) -> Self {
10074                tuple.into()
10075            }
10076            #[inline]
10077            fn tokenize(&self) -> Self::Token<'_> {
10078                (
10079                    <alloy::sol_types::sol_data::Array<
10080                        alloy::sol_types::sol_data::Address,
10081                    > as alloy_sol_types::SolType>::tokenize(&self.operators),
10082                    <alloy::sol_types::sol_data::Array<
10083                        alloy::sol_types::sol_data::FixedBytes<32>,
10084                    > as alloy_sol_types::SolType>::tokenize(&self.operatorIds),
10085                    <alloy::sol_types::sol_data::Uint<
10086                        8,
10087                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
10088                )
10089            }
10090            #[inline]
10091            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10092                (
10093                    <alloy::sol_types::sol_data::Array<
10094                        alloy::sol_types::sol_data::Bool,
10095                    > as alloy_sol_types::SolType>::tokenize(ret),
10096                )
10097            }
10098            #[inline]
10099            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10100                <Self::ReturnTuple<
10101                    '_,
10102                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10103                    .map(|r| {
10104                        let r: updateOperatorsStakeReturn = r.into();
10105                        r._0
10106                    })
10107            }
10108            #[inline]
10109            fn abi_decode_returns_validate(
10110                data: &[u8],
10111            ) -> alloy_sol_types::Result<Self::Return> {
10112                <Self::ReturnTuple<
10113                    '_,
10114                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10115                    .map(|r| {
10116                        let r: updateOperatorsStakeReturn = r.into();
10117                        r._0
10118                    })
10119            }
10120        }
10121    };
10122    #[derive(serde::Serialize, serde::Deserialize)]
10123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10124    /**Function with signature `weightOfOperatorForQuorum(uint8,address)` and selector `0x1f9b74e0`.
10125```solidity
10126function weightOfOperatorForQuorum(uint8 quorumNumber, address operator) external view returns (uint96);
10127```*/
10128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10129    #[derive(Clone)]
10130    pub struct weightOfOperatorForQuorumCall {
10131        #[allow(missing_docs)]
10132        pub quorumNumber: u8,
10133        #[allow(missing_docs)]
10134        pub operator: alloy::sol_types::private::Address,
10135    }
10136    #[derive(serde::Serialize, serde::Deserialize)]
10137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10138    ///Container type for the return parameters of the [`weightOfOperatorForQuorum(uint8,address)`](weightOfOperatorForQuorumCall) function.
10139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10140    #[derive(Clone)]
10141    pub struct weightOfOperatorForQuorumReturn {
10142        #[allow(missing_docs)]
10143        pub _0: alloy::sol_types::private::primitives::aliases::U96,
10144    }
10145    #[allow(
10146        non_camel_case_types,
10147        non_snake_case,
10148        clippy::pub_underscore_fields,
10149        clippy::style
10150    )]
10151    const _: () = {
10152        use alloy::sol_types as alloy_sol_types;
10153        {
10154            #[doc(hidden)]
10155            type UnderlyingSolTuple<'a> = (
10156                alloy::sol_types::sol_data::Uint<8>,
10157                alloy::sol_types::sol_data::Address,
10158            );
10159            #[doc(hidden)]
10160            type UnderlyingRustTuple<'a> = (u8, alloy::sol_types::private::Address);
10161            #[cfg(test)]
10162            #[allow(dead_code, unreachable_patterns)]
10163            fn _type_assertion(
10164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10165            ) {
10166                match _t {
10167                    alloy_sol_types::private::AssertTypeEq::<
10168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10169                    >(_) => {}
10170                }
10171            }
10172            #[automatically_derived]
10173            #[doc(hidden)]
10174            impl ::core::convert::From<weightOfOperatorForQuorumCall>
10175            for UnderlyingRustTuple<'_> {
10176                fn from(value: weightOfOperatorForQuorumCall) -> Self {
10177                    (value.quorumNumber, value.operator)
10178                }
10179            }
10180            #[automatically_derived]
10181            #[doc(hidden)]
10182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10183            for weightOfOperatorForQuorumCall {
10184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10185                    Self {
10186                        quorumNumber: tuple.0,
10187                        operator: tuple.1,
10188                    }
10189                }
10190            }
10191        }
10192        {
10193            #[doc(hidden)]
10194            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
10195            #[doc(hidden)]
10196            type UnderlyingRustTuple<'a> = (
10197                alloy::sol_types::private::primitives::aliases::U96,
10198            );
10199            #[cfg(test)]
10200            #[allow(dead_code, unreachable_patterns)]
10201            fn _type_assertion(
10202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10203            ) {
10204                match _t {
10205                    alloy_sol_types::private::AssertTypeEq::<
10206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10207                    >(_) => {}
10208                }
10209            }
10210            #[automatically_derived]
10211            #[doc(hidden)]
10212            impl ::core::convert::From<weightOfOperatorForQuorumReturn>
10213            for UnderlyingRustTuple<'_> {
10214                fn from(value: weightOfOperatorForQuorumReturn) -> Self {
10215                    (value._0,)
10216                }
10217            }
10218            #[automatically_derived]
10219            #[doc(hidden)]
10220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10221            for weightOfOperatorForQuorumReturn {
10222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10223                    Self { _0: tuple.0 }
10224                }
10225            }
10226        }
10227        #[automatically_derived]
10228        impl alloy_sol_types::SolCall for weightOfOperatorForQuorumCall {
10229            type Parameters<'a> = (
10230                alloy::sol_types::sol_data::Uint<8>,
10231                alloy::sol_types::sol_data::Address,
10232            );
10233            type Token<'a> = <Self::Parameters<
10234                'a,
10235            > as alloy_sol_types::SolType>::Token<'a>;
10236            type Return = alloy::sol_types::private::primitives::aliases::U96;
10237            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<96>,);
10238            type ReturnToken<'a> = <Self::ReturnTuple<
10239                'a,
10240            > as alloy_sol_types::SolType>::Token<'a>;
10241            const SIGNATURE: &'static str = "weightOfOperatorForQuorum(uint8,address)";
10242            const SELECTOR: [u8; 4] = [31u8, 155u8, 116u8, 224u8];
10243            #[inline]
10244            fn new<'a>(
10245                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10246            ) -> Self {
10247                tuple.into()
10248            }
10249            #[inline]
10250            fn tokenize(&self) -> Self::Token<'_> {
10251                (
10252                    <alloy::sol_types::sol_data::Uint<
10253                        8,
10254                    > as alloy_sol_types::SolType>::tokenize(&self.quorumNumber),
10255                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10256                        &self.operator,
10257                    ),
10258                )
10259            }
10260            #[inline]
10261            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10262                (
10263                    <alloy::sol_types::sol_data::Uint<
10264                        96,
10265                    > as alloy_sol_types::SolType>::tokenize(ret),
10266                )
10267            }
10268            #[inline]
10269            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10270                <Self::ReturnTuple<
10271                    '_,
10272                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10273                    .map(|r| {
10274                        let r: weightOfOperatorForQuorumReturn = r.into();
10275                        r._0
10276                    })
10277            }
10278            #[inline]
10279            fn abi_decode_returns_validate(
10280                data: &[u8],
10281            ) -> alloy_sol_types::Result<Self::Return> {
10282                <Self::ReturnTuple<
10283                    '_,
10284                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10285                    .map(|r| {
10286                        let r: weightOfOperatorForQuorumReturn = r.into();
10287                        r._0
10288                    })
10289            }
10290        }
10291    };
10292    ///Container for all the [`StakeRegistry`](self) function calls.
10293    #[derive(serde::Serialize, serde::Deserialize)]
10294    #[derive()]
10295    pub enum StakeRegistryCalls {
10296        #[allow(missing_docs)]
10297        MAX_WEIGHING_FUNCTION_LENGTH(MAX_WEIGHING_FUNCTION_LENGTHCall),
10298        #[allow(missing_docs)]
10299        WEIGHTING_DIVISOR(WEIGHTING_DIVISORCall),
10300        #[allow(missing_docs)]
10301        addStrategies(addStrategiesCall),
10302        #[allow(missing_docs)]
10303        allocationManager(allocationManagerCall),
10304        #[allow(missing_docs)]
10305        avsDirectory(avsDirectoryCall),
10306        #[allow(missing_docs)]
10307        delegation(delegationCall),
10308        #[allow(missing_docs)]
10309        deregisterOperator(deregisterOperatorCall),
10310        #[allow(missing_docs)]
10311        getCurrentStake(getCurrentStakeCall),
10312        #[allow(missing_docs)]
10313        getCurrentTotalStake(getCurrentTotalStakeCall),
10314        #[allow(missing_docs)]
10315        getLatestStakeUpdate(getLatestStakeUpdateCall),
10316        #[allow(missing_docs)]
10317        getStakeAtBlockNumber(getStakeAtBlockNumberCall),
10318        #[allow(missing_docs)]
10319        getStakeAtBlockNumberAndIndex(getStakeAtBlockNumberAndIndexCall),
10320        #[allow(missing_docs)]
10321        getStakeHistory(getStakeHistoryCall),
10322        #[allow(missing_docs)]
10323        getStakeHistoryLength(getStakeHistoryLengthCall),
10324        #[allow(missing_docs)]
10325        getStakeUpdateAtIndex(getStakeUpdateAtIndexCall),
10326        #[allow(missing_docs)]
10327        getStakeUpdateIndexAtBlockNumber(getStakeUpdateIndexAtBlockNumberCall),
10328        #[allow(missing_docs)]
10329        getTotalStakeAtBlockNumberFromIndex(getTotalStakeAtBlockNumberFromIndexCall),
10330        #[allow(missing_docs)]
10331        getTotalStakeHistoryLength(getTotalStakeHistoryLengthCall),
10332        #[allow(missing_docs)]
10333        getTotalStakeIndicesAtBlockNumber(getTotalStakeIndicesAtBlockNumberCall),
10334        #[allow(missing_docs)]
10335        getTotalStakeUpdateAtIndex(getTotalStakeUpdateAtIndexCall),
10336        #[allow(missing_docs)]
10337        initializeDelegatedStakeQuorum(initializeDelegatedStakeQuorumCall),
10338        #[allow(missing_docs)]
10339        initializeSlashableStakeQuorum(initializeSlashableStakeQuorumCall),
10340        #[allow(missing_docs)]
10341        minimumStakeForQuorum(minimumStakeForQuorumCall),
10342        #[allow(missing_docs)]
10343        modifyStrategyParams(modifyStrategyParamsCall),
10344        #[allow(missing_docs)]
10345        registerOperator(registerOperatorCall),
10346        #[allow(missing_docs)]
10347        registryCoordinator(registryCoordinatorCall),
10348        #[allow(missing_docs)]
10349        removeStrategies(removeStrategiesCall),
10350        #[allow(missing_docs)]
10351        setMinimumStakeForQuorum(setMinimumStakeForQuorumCall),
10352        #[allow(missing_docs)]
10353        setSlashableStakeLookahead(setSlashableStakeLookaheadCall),
10354        #[allow(missing_docs)]
10355        slashableStakeLookAheadPerQuorum(slashableStakeLookAheadPerQuorumCall),
10356        #[allow(missing_docs)]
10357        stakeTypePerQuorum(stakeTypePerQuorumCall),
10358        #[allow(missing_docs)]
10359        strategiesPerQuorum(strategiesPerQuorumCall),
10360        #[allow(missing_docs)]
10361        strategyParams(strategyParamsCall),
10362        #[allow(missing_docs)]
10363        strategyParamsByIndex(strategyParamsByIndexCall),
10364        #[allow(missing_docs)]
10365        strategyParamsLength(strategyParamsLengthCall),
10366        #[allow(missing_docs)]
10367        updateOperatorsStake(updateOperatorsStakeCall),
10368        #[allow(missing_docs)]
10369        weightOfOperatorForQuorum(weightOfOperatorForQuorumCall),
10370    }
10371    #[automatically_derived]
10372    impl StakeRegistryCalls {
10373        /// All the selectors of this enum.
10374        ///
10375        /// Note that the selectors might not be in the same order as the variants.
10376        /// No guarantees are made about the order of the selectors.
10377        ///
10378        /// Prefer using `SolInterface` methods instead.
10379        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10380            [4u8, 145u8, 180u8, 28u8],
10381            [8u8, 115u8, 36u8, 97u8],
10382            [31u8, 155u8, 116u8, 224u8],
10383            [32u8, 182u8, 98u8, 152u8],
10384            [37u8, 80u8, 71u8, 119u8],
10385            [44u8, 217u8, 89u8, 64u8],
10386            [60u8, 165u8, 165u8, 245u8],
10387            [75u8, 210u8, 110u8, 9u8],
10388            [84u8, 1u8, 237u8, 39u8],
10389            [94u8, 90u8, 103u8, 117u8],
10390            [95u8, 31u8, 45u8, 119u8],
10391            [105u8, 127u8, 189u8, 147u8],
10392            [107u8, 58u8, 167u8, 46u8],
10393            [108u8, 63u8, 180u8, 191u8],
10394            [109u8, 20u8, 169u8, 135u8],
10395            [117u8, 212u8, 23u8, 58u8],
10396            [124u8, 23u8, 35u8, 71u8],
10397            [129u8, 192u8, 117u8, 2u8],
10398            [154u8, 180u8, 214u8, 255u8],
10399            [159u8, 60u8, 207u8, 101u8],
10400            [172u8, 107u8, 251u8, 3u8],
10401            [173u8, 200u8, 4u8, 218u8],
10402            [182u8, 144u8, 75u8, 120u8],
10403            [188u8, 154u8, 64u8, 195u8],
10404            [189u8, 41u8, 184u8, 205u8],
10405            [196u8, 103u8, 120u8, 165u8],
10406            [198u8, 1u8, 82u8, 125u8],
10407            [200u8, 41u8, 76u8, 86u8],
10408            [202u8, 138u8, 167u8, 199u8],
10409            [204u8, 90u8, 124u8, 32u8],
10410            [213u8, 236u8, 204u8, 5u8],
10411            [221u8, 152u8, 70u8, 185u8],
10412            [223u8, 92u8, 247u8, 35u8],
10413            [224u8, 134u8, 173u8, 179u8],
10414            [242u8, 190u8, 148u8, 174u8],
10415            [248u8, 81u8, 225u8, 152u8],
10416            [250u8, 40u8, 198u8, 39u8],
10417        ];
10418    }
10419    #[automatically_derived]
10420    impl alloy_sol_types::SolInterface for StakeRegistryCalls {
10421        const NAME: &'static str = "StakeRegistryCalls";
10422        const MIN_DATA_LENGTH: usize = 0usize;
10423        const COUNT: usize = 37usize;
10424        #[inline]
10425        fn selector(&self) -> [u8; 4] {
10426            match self {
10427                Self::MAX_WEIGHING_FUNCTION_LENGTH(_) => {
10428                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
10429                }
10430                Self::WEIGHTING_DIVISOR(_) => {
10431                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::SELECTOR
10432                }
10433                Self::addStrategies(_) => {
10434                    <addStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
10435                }
10436                Self::allocationManager(_) => {
10437                    <allocationManagerCall as alloy_sol_types::SolCall>::SELECTOR
10438                }
10439                Self::avsDirectory(_) => {
10440                    <avsDirectoryCall as alloy_sol_types::SolCall>::SELECTOR
10441                }
10442                Self::delegation(_) => {
10443                    <delegationCall as alloy_sol_types::SolCall>::SELECTOR
10444                }
10445                Self::deregisterOperator(_) => {
10446                    <deregisterOperatorCall as alloy_sol_types::SolCall>::SELECTOR
10447                }
10448                Self::getCurrentStake(_) => {
10449                    <getCurrentStakeCall as alloy_sol_types::SolCall>::SELECTOR
10450                }
10451                Self::getCurrentTotalStake(_) => {
10452                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::SELECTOR
10453                }
10454                Self::getLatestStakeUpdate(_) => {
10455                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::SELECTOR
10456                }
10457                Self::getStakeAtBlockNumber(_) => {
10458                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10459                }
10460                Self::getStakeAtBlockNumberAndIndex(_) => {
10461                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::SELECTOR
10462                }
10463                Self::getStakeHistory(_) => {
10464                    <getStakeHistoryCall as alloy_sol_types::SolCall>::SELECTOR
10465                }
10466                Self::getStakeHistoryLength(_) => {
10467                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
10468                }
10469                Self::getStakeUpdateAtIndex(_) => {
10470                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
10471                }
10472                Self::getStakeUpdateIndexAtBlockNumber(_) => {
10473                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10474                }
10475                Self::getTotalStakeAtBlockNumberFromIndex(_) => {
10476                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::SELECTOR
10477                }
10478                Self::getTotalStakeHistoryLength(_) => {
10479                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
10480                }
10481                Self::getTotalStakeIndicesAtBlockNumber(_) => {
10482                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10483                }
10484                Self::getTotalStakeUpdateAtIndex(_) => {
10485                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
10486                }
10487                Self::initializeDelegatedStakeQuorum(_) => {
10488                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10489                }
10490                Self::initializeSlashableStakeQuorum(_) => {
10491                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10492                }
10493                Self::minimumStakeForQuorum(_) => {
10494                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10495                }
10496                Self::modifyStrategyParams(_) => {
10497                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
10498                }
10499                Self::registerOperator(_) => {
10500                    <registerOperatorCall as alloy_sol_types::SolCall>::SELECTOR
10501                }
10502                Self::registryCoordinator(_) => {
10503                    <registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
10504                }
10505                Self::removeStrategies(_) => {
10506                    <removeStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
10507                }
10508                Self::setMinimumStakeForQuorum(_) => {
10509                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10510                }
10511                Self::setSlashableStakeLookahead(_) => {
10512                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::SELECTOR
10513                }
10514                Self::slashableStakeLookAheadPerQuorum(_) => {
10515                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10516                }
10517                Self::stakeTypePerQuorum(_) => {
10518                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10519                }
10520                Self::strategiesPerQuorum(_) => {
10521                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10522                }
10523                Self::strategyParams(_) => {
10524                    <strategyParamsCall as alloy_sol_types::SolCall>::SELECTOR
10525                }
10526                Self::strategyParamsByIndex(_) => {
10527                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::SELECTOR
10528                }
10529                Self::strategyParamsLength(_) => {
10530                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::SELECTOR
10531                }
10532                Self::updateOperatorsStake(_) => {
10533                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::SELECTOR
10534                }
10535                Self::weightOfOperatorForQuorum(_) => {
10536                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::SELECTOR
10537                }
10538            }
10539        }
10540        #[inline]
10541        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10542            Self::SELECTORS.get(i).copied()
10543        }
10544        #[inline]
10545        fn valid_selector(selector: [u8; 4]) -> bool {
10546            Self::SELECTORS.binary_search(&selector).is_ok()
10547        }
10548        #[inline]
10549        #[allow(non_snake_case)]
10550        fn abi_decode_raw(
10551            selector: [u8; 4],
10552            data: &[u8],
10553        ) -> alloy_sol_types::Result<Self> {
10554            static DECODE_SHIMS: &[fn(
10555                &[u8],
10556            ) -> alloy_sol_types::Result<StakeRegistryCalls>] = &[
10557                {
10558                    fn getTotalStakeHistoryLength(
10559                        data: &[u8],
10560                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10561                        <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
10562                                data,
10563                            )
10564                            .map(StakeRegistryCalls::getTotalStakeHistoryLength)
10565                    }
10566                    getTotalStakeHistoryLength
10567                },
10568                {
10569                    fn strategyParams(
10570                        data: &[u8],
10571                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10572                        <strategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10573                                data,
10574                            )
10575                            .map(StakeRegistryCalls::strategyParams)
10576                    }
10577                    strategyParams
10578                },
10579                {
10580                    fn weightOfOperatorForQuorum(
10581                        data: &[u8],
10582                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10583                        <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10584                                data,
10585                            )
10586                            .map(StakeRegistryCalls::weightOfOperatorForQuorum)
10587                    }
10588                    weightOfOperatorForQuorum
10589                },
10590                {
10591                    fn modifyStrategyParams(
10592                        data: &[u8],
10593                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10594                        <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10595                                data,
10596                            )
10597                            .map(StakeRegistryCalls::modifyStrategyParams)
10598                    }
10599                    modifyStrategyParams
10600                },
10601                {
10602                    fn registerOperator(
10603                        data: &[u8],
10604                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10605                        <registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
10606                                data,
10607                            )
10608                            .map(StakeRegistryCalls::registerOperator)
10609                    }
10610                    registerOperator
10611                },
10612                {
10613                    fn getStakeHistory(
10614                        data: &[u8],
10615                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10616                        <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
10617                                data,
10618                            )
10619                            .map(StakeRegistryCalls::getStakeHistory)
10620                    }
10621                    getStakeHistory
10622                },
10623                {
10624                    fn strategyParamsLength(
10625                        data: &[u8],
10626                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10627                        <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
10628                                data,
10629                            )
10630                            .map(StakeRegistryCalls::strategyParamsLength)
10631                    }
10632                    strategyParamsLength
10633                },
10634                {
10635                    fn getStakeHistoryLength(
10636                        data: &[u8],
10637                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10638                        <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(
10639                                data,
10640                            )
10641                            .map(StakeRegistryCalls::getStakeHistoryLength)
10642                    }
10643                    getStakeHistoryLength
10644                },
10645                {
10646                    fn getCurrentStake(
10647                        data: &[u8],
10648                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10649                        <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10650                                data,
10651                            )
10652                            .map(StakeRegistryCalls::getCurrentStake)
10653                    }
10654                    getCurrentStake
10655                },
10656                {
10657                    fn WEIGHTING_DIVISOR(
10658                        data: &[u8],
10659                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10660                        <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_decode_raw(
10661                                data,
10662                            )
10663                            .map(StakeRegistryCalls::WEIGHTING_DIVISOR)
10664                    }
10665                    WEIGHTING_DIVISOR
10666                },
10667                {
10668                    fn removeStrategies(
10669                        data: &[u8],
10670                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10671                        <removeStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
10672                                data,
10673                            )
10674                            .map(StakeRegistryCalls::removeStrategies)
10675                    }
10676                    removeStrategies
10677                },
10678                {
10679                    fn stakeTypePerQuorum(
10680                        data: &[u8],
10681                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10682                        <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10683                                data,
10684                            )
10685                            .map(StakeRegistryCalls::stakeTypePerQuorum)
10686                    }
10687                    stakeTypePerQuorum
10688                },
10689                {
10690                    fn avsDirectory(
10691                        data: &[u8],
10692                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10693                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
10694                                data,
10695                            )
10696                            .map(StakeRegistryCalls::avsDirectory)
10697                    }
10698                    avsDirectory
10699                },
10700                {
10701                    fn updateOperatorsStake(
10702                        data: &[u8],
10703                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10704                        <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10705                                data,
10706                            )
10707                            .map(StakeRegistryCalls::updateOperatorsStake)
10708                    }
10709                    updateOperatorsStake
10710                },
10711                {
10712                    fn registryCoordinator(
10713                        data: &[u8],
10714                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10715                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
10716                                data,
10717                            )
10718                            .map(StakeRegistryCalls::registryCoordinator)
10719                    }
10720                    registryCoordinator
10721                },
10722                {
10723                    fn initializeDelegatedStakeQuorum(
10724                        data: &[u8],
10725                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10726                        <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10727                                data,
10728                            )
10729                            .map(StakeRegistryCalls::initializeDelegatedStakeQuorum)
10730                    }
10731                    initializeDelegatedStakeQuorum
10732                },
10733                {
10734                    fn MAX_WEIGHING_FUNCTION_LENGTH(
10735                        data: &[u8],
10736                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10737                        <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
10738                                data,
10739                            )
10740                            .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH)
10741                    }
10742                    MAX_WEIGHING_FUNCTION_LENGTH
10743                },
10744                {
10745                    fn getTotalStakeIndicesAtBlockNumber(
10746                        data: &[u8],
10747                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10748                        <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10749                                data,
10750                            )
10751                            .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber)
10752                    }
10753                    getTotalStakeIndicesAtBlockNumber
10754                },
10755                {
10756                    fn slashableStakeLookAheadPerQuorum(
10757                        data: &[u8],
10758                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10759                        <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10760                                data,
10761                            )
10762                            .map(StakeRegistryCalls::slashableStakeLookAheadPerQuorum)
10763                    }
10764                    slashableStakeLookAheadPerQuorum
10765                },
10766                {
10767                    fn strategiesPerQuorum(
10768                        data: &[u8],
10769                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10770                        <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10771                                data,
10772                            )
10773                            .map(StakeRegistryCalls::strategiesPerQuorum)
10774                    }
10775                    strategiesPerQuorum
10776                },
10777                {
10778                    fn getStakeUpdateAtIndex(
10779                        data: &[u8],
10780                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10781                        <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10782                                data,
10783                            )
10784                            .map(StakeRegistryCalls::getStakeUpdateAtIndex)
10785                    }
10786                    getStakeUpdateAtIndex
10787                },
10788                {
10789                    fn strategyParamsByIndex(
10790                        data: &[u8],
10791                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10792                        <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10793                                data,
10794                            )
10795                            .map(StakeRegistryCalls::strategyParamsByIndex)
10796                    }
10797                    strategyParamsByIndex
10798                },
10799                {
10800                    fn getTotalStakeUpdateAtIndex(
10801                        data: &[u8],
10802                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10803                        <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10804                                data,
10805                            )
10806                            .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex)
10807                    }
10808                    getTotalStakeUpdateAtIndex
10809                },
10810                {
10811                    fn setMinimumStakeForQuorum(
10812                        data: &[u8],
10813                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10814                        <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10815                                data,
10816                            )
10817                            .map(StakeRegistryCalls::setMinimumStakeForQuorum)
10818                    }
10819                    setMinimumStakeForQuorum
10820                },
10821                {
10822                    fn deregisterOperator(
10823                        data: &[u8],
10824                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10825                        <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
10826                                data,
10827                            )
10828                            .map(StakeRegistryCalls::deregisterOperator)
10829                    }
10830                    deregisterOperator
10831                },
10832                {
10833                    fn minimumStakeForQuorum(
10834                        data: &[u8],
10835                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10836                        <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10837                                data,
10838                            )
10839                            .map(StakeRegistryCalls::minimumStakeForQuorum)
10840                    }
10841                    minimumStakeForQuorum
10842                },
10843                {
10844                    fn addStrategies(
10845                        data: &[u8],
10846                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10847                        <addStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
10848                                data,
10849                            )
10850                            .map(StakeRegistryCalls::addStrategies)
10851                    }
10852                    addStrategies
10853                },
10854                {
10855                    fn getTotalStakeAtBlockNumberFromIndex(
10856                        data: &[u8],
10857                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10858                        <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10859                                data,
10860                            )
10861                            .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex)
10862                    }
10863                    getTotalStakeAtBlockNumberFromIndex
10864                },
10865                {
10866                    fn allocationManager(
10867                        data: &[u8],
10868                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10869                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw(
10870                                data,
10871                            )
10872                            .map(StakeRegistryCalls::allocationManager)
10873                    }
10874                    allocationManager
10875                },
10876                {
10877                    fn initializeSlashableStakeQuorum(
10878                        data: &[u8],
10879                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10880                        <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(
10881                                data,
10882                            )
10883                            .map(StakeRegistryCalls::initializeSlashableStakeQuorum)
10884                    }
10885                    initializeSlashableStakeQuorum
10886                },
10887                {
10888                    fn getCurrentTotalStake(
10889                        data: &[u8],
10890                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10891                        <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10892                                data,
10893                            )
10894                            .map(StakeRegistryCalls::getCurrentTotalStake)
10895                    }
10896                    getCurrentTotalStake
10897                },
10898                {
10899                    fn getStakeUpdateIndexAtBlockNumber(
10900                        data: &[u8],
10901                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10902                        <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10903                                data,
10904                            )
10905                            .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber)
10906                    }
10907                    getStakeUpdateIndexAtBlockNumber
10908                },
10909                {
10910                    fn delegation(
10911                        data: &[u8],
10912                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10913                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
10914                                data,
10915                            )
10916                            .map(StakeRegistryCalls::delegation)
10917                    }
10918                    delegation
10919                },
10920                {
10921                    fn setSlashableStakeLookahead(
10922                        data: &[u8],
10923                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10924                        <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_decode_raw(
10925                                data,
10926                            )
10927                            .map(StakeRegistryCalls::setSlashableStakeLookahead)
10928                    }
10929                    setSlashableStakeLookahead
10930                },
10931                {
10932                    fn getStakeAtBlockNumberAndIndex(
10933                        data: &[u8],
10934                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10935                        <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10936                                data,
10937                            )
10938                            .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex)
10939                    }
10940                    getStakeAtBlockNumberAndIndex
10941                },
10942                {
10943                    fn getLatestStakeUpdate(
10944                        data: &[u8],
10945                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10946                        <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10947                                data,
10948                            )
10949                            .map(StakeRegistryCalls::getLatestStakeUpdate)
10950                    }
10951                    getLatestStakeUpdate
10952                },
10953                {
10954                    fn getStakeAtBlockNumber(
10955                        data: &[u8],
10956                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10957                        <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10958                                data,
10959                            )
10960                            .map(StakeRegistryCalls::getStakeAtBlockNumber)
10961                    }
10962                    getStakeAtBlockNumber
10963                },
10964            ];
10965            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10966                return Err(
10967                    alloy_sol_types::Error::unknown_selector(
10968                        <Self as alloy_sol_types::SolInterface>::NAME,
10969                        selector,
10970                    ),
10971                );
10972            };
10973            DECODE_SHIMS[idx](data)
10974        }
10975        #[inline]
10976        #[allow(non_snake_case)]
10977        fn abi_decode_raw_validate(
10978            selector: [u8; 4],
10979            data: &[u8],
10980        ) -> alloy_sol_types::Result<Self> {
10981            static DECODE_VALIDATE_SHIMS: &[fn(
10982                &[u8],
10983            ) -> alloy_sol_types::Result<StakeRegistryCalls>] = &[
10984                {
10985                    fn getTotalStakeHistoryLength(
10986                        data: &[u8],
10987                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10988                        <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
10989                                data,
10990                            )
10991                            .map(StakeRegistryCalls::getTotalStakeHistoryLength)
10992                    }
10993                    getTotalStakeHistoryLength
10994                },
10995                {
10996                    fn strategyParams(
10997                        data: &[u8],
10998                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
10999                        <strategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11000                                data,
11001                            )
11002                            .map(StakeRegistryCalls::strategyParams)
11003                    }
11004                    strategyParams
11005                },
11006                {
11007                    fn weightOfOperatorForQuorum(
11008                        data: &[u8],
11009                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11010                        <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11011                                data,
11012                            )
11013                            .map(StakeRegistryCalls::weightOfOperatorForQuorum)
11014                    }
11015                    weightOfOperatorForQuorum
11016                },
11017                {
11018                    fn modifyStrategyParams(
11019                        data: &[u8],
11020                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11021                        <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11022                                data,
11023                            )
11024                            .map(StakeRegistryCalls::modifyStrategyParams)
11025                    }
11026                    modifyStrategyParams
11027                },
11028                {
11029                    fn registerOperator(
11030                        data: &[u8],
11031                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11032                        <registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11033                                data,
11034                            )
11035                            .map(StakeRegistryCalls::registerOperator)
11036                    }
11037                    registerOperator
11038                },
11039                {
11040                    fn getStakeHistory(
11041                        data: &[u8],
11042                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11043                        <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11044                                data,
11045                            )
11046                            .map(StakeRegistryCalls::getStakeHistory)
11047                    }
11048                    getStakeHistory
11049                },
11050                {
11051                    fn strategyParamsLength(
11052                        data: &[u8],
11053                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11054                        <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11055                                data,
11056                            )
11057                            .map(StakeRegistryCalls::strategyParamsLength)
11058                    }
11059                    strategyParamsLength
11060                },
11061                {
11062                    fn getStakeHistoryLength(
11063                        data: &[u8],
11064                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11065                        <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11066                                data,
11067                            )
11068                            .map(StakeRegistryCalls::getStakeHistoryLength)
11069                    }
11070                    getStakeHistoryLength
11071                },
11072                {
11073                    fn getCurrentStake(
11074                        data: &[u8],
11075                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11076                        <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11077                                data,
11078                            )
11079                            .map(StakeRegistryCalls::getCurrentStake)
11080                    }
11081                    getCurrentStake
11082                },
11083                {
11084                    fn WEIGHTING_DIVISOR(
11085                        data: &[u8],
11086                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11087                        <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11088                                data,
11089                            )
11090                            .map(StakeRegistryCalls::WEIGHTING_DIVISOR)
11091                    }
11092                    WEIGHTING_DIVISOR
11093                },
11094                {
11095                    fn removeStrategies(
11096                        data: &[u8],
11097                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11098                        <removeStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11099                                data,
11100                            )
11101                            .map(StakeRegistryCalls::removeStrategies)
11102                    }
11103                    removeStrategies
11104                },
11105                {
11106                    fn stakeTypePerQuorum(
11107                        data: &[u8],
11108                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11109                        <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11110                                data,
11111                            )
11112                            .map(StakeRegistryCalls::stakeTypePerQuorum)
11113                    }
11114                    stakeTypePerQuorum
11115                },
11116                {
11117                    fn avsDirectory(
11118                        data: &[u8],
11119                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11120                        <avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11121                                data,
11122                            )
11123                            .map(StakeRegistryCalls::avsDirectory)
11124                    }
11125                    avsDirectory
11126                },
11127                {
11128                    fn updateOperatorsStake(
11129                        data: &[u8],
11130                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11131                        <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11132                                data,
11133                            )
11134                            .map(StakeRegistryCalls::updateOperatorsStake)
11135                    }
11136                    updateOperatorsStake
11137                },
11138                {
11139                    fn registryCoordinator(
11140                        data: &[u8],
11141                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11142                        <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11143                                data,
11144                            )
11145                            .map(StakeRegistryCalls::registryCoordinator)
11146                    }
11147                    registryCoordinator
11148                },
11149                {
11150                    fn initializeDelegatedStakeQuorum(
11151                        data: &[u8],
11152                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11153                        <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11154                                data,
11155                            )
11156                            .map(StakeRegistryCalls::initializeDelegatedStakeQuorum)
11157                    }
11158                    initializeDelegatedStakeQuorum
11159                },
11160                {
11161                    fn MAX_WEIGHING_FUNCTION_LENGTH(
11162                        data: &[u8],
11163                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11164                        <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11165                                data,
11166                            )
11167                            .map(StakeRegistryCalls::MAX_WEIGHING_FUNCTION_LENGTH)
11168                    }
11169                    MAX_WEIGHING_FUNCTION_LENGTH
11170                },
11171                {
11172                    fn getTotalStakeIndicesAtBlockNumber(
11173                        data: &[u8],
11174                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11175                        <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11176                                data,
11177                            )
11178                            .map(StakeRegistryCalls::getTotalStakeIndicesAtBlockNumber)
11179                    }
11180                    getTotalStakeIndicesAtBlockNumber
11181                },
11182                {
11183                    fn slashableStakeLookAheadPerQuorum(
11184                        data: &[u8],
11185                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11186                        <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11187                                data,
11188                            )
11189                            .map(StakeRegistryCalls::slashableStakeLookAheadPerQuorum)
11190                    }
11191                    slashableStakeLookAheadPerQuorum
11192                },
11193                {
11194                    fn strategiesPerQuorum(
11195                        data: &[u8],
11196                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11197                        <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11198                                data,
11199                            )
11200                            .map(StakeRegistryCalls::strategiesPerQuorum)
11201                    }
11202                    strategiesPerQuorum
11203                },
11204                {
11205                    fn getStakeUpdateAtIndex(
11206                        data: &[u8],
11207                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11208                        <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11209                                data,
11210                            )
11211                            .map(StakeRegistryCalls::getStakeUpdateAtIndex)
11212                    }
11213                    getStakeUpdateAtIndex
11214                },
11215                {
11216                    fn strategyParamsByIndex(
11217                        data: &[u8],
11218                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11219                        <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11220                                data,
11221                            )
11222                            .map(StakeRegistryCalls::strategyParamsByIndex)
11223                    }
11224                    strategyParamsByIndex
11225                },
11226                {
11227                    fn getTotalStakeUpdateAtIndex(
11228                        data: &[u8],
11229                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11230                        <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11231                                data,
11232                            )
11233                            .map(StakeRegistryCalls::getTotalStakeUpdateAtIndex)
11234                    }
11235                    getTotalStakeUpdateAtIndex
11236                },
11237                {
11238                    fn setMinimumStakeForQuorum(
11239                        data: &[u8],
11240                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11241                        <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11242                                data,
11243                            )
11244                            .map(StakeRegistryCalls::setMinimumStakeForQuorum)
11245                    }
11246                    setMinimumStakeForQuorum
11247                },
11248                {
11249                    fn deregisterOperator(
11250                        data: &[u8],
11251                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11252                        <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11253                                data,
11254                            )
11255                            .map(StakeRegistryCalls::deregisterOperator)
11256                    }
11257                    deregisterOperator
11258                },
11259                {
11260                    fn minimumStakeForQuorum(
11261                        data: &[u8],
11262                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11263                        <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11264                                data,
11265                            )
11266                            .map(StakeRegistryCalls::minimumStakeForQuorum)
11267                    }
11268                    minimumStakeForQuorum
11269                },
11270                {
11271                    fn addStrategies(
11272                        data: &[u8],
11273                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11274                        <addStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11275                                data,
11276                            )
11277                            .map(StakeRegistryCalls::addStrategies)
11278                    }
11279                    addStrategies
11280                },
11281                {
11282                    fn getTotalStakeAtBlockNumberFromIndex(
11283                        data: &[u8],
11284                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11285                        <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11286                                data,
11287                            )
11288                            .map(StakeRegistryCalls::getTotalStakeAtBlockNumberFromIndex)
11289                    }
11290                    getTotalStakeAtBlockNumberFromIndex
11291                },
11292                {
11293                    fn allocationManager(
11294                        data: &[u8],
11295                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11296                        <allocationManagerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11297                                data,
11298                            )
11299                            .map(StakeRegistryCalls::allocationManager)
11300                    }
11301                    allocationManager
11302                },
11303                {
11304                    fn initializeSlashableStakeQuorum(
11305                        data: &[u8],
11306                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11307                        <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11308                                data,
11309                            )
11310                            .map(StakeRegistryCalls::initializeSlashableStakeQuorum)
11311                    }
11312                    initializeSlashableStakeQuorum
11313                },
11314                {
11315                    fn getCurrentTotalStake(
11316                        data: &[u8],
11317                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11318                        <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11319                                data,
11320                            )
11321                            .map(StakeRegistryCalls::getCurrentTotalStake)
11322                    }
11323                    getCurrentTotalStake
11324                },
11325                {
11326                    fn getStakeUpdateIndexAtBlockNumber(
11327                        data: &[u8],
11328                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11329                        <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11330                                data,
11331                            )
11332                            .map(StakeRegistryCalls::getStakeUpdateIndexAtBlockNumber)
11333                    }
11334                    getStakeUpdateIndexAtBlockNumber
11335                },
11336                {
11337                    fn delegation(
11338                        data: &[u8],
11339                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11340                        <delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11341                                data,
11342                            )
11343                            .map(StakeRegistryCalls::delegation)
11344                    }
11345                    delegation
11346                },
11347                {
11348                    fn setSlashableStakeLookahead(
11349                        data: &[u8],
11350                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11351                        <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11352                                data,
11353                            )
11354                            .map(StakeRegistryCalls::setSlashableStakeLookahead)
11355                    }
11356                    setSlashableStakeLookahead
11357                },
11358                {
11359                    fn getStakeAtBlockNumberAndIndex(
11360                        data: &[u8],
11361                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11362                        <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11363                                data,
11364                            )
11365                            .map(StakeRegistryCalls::getStakeAtBlockNumberAndIndex)
11366                    }
11367                    getStakeAtBlockNumberAndIndex
11368                },
11369                {
11370                    fn getLatestStakeUpdate(
11371                        data: &[u8],
11372                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11373                        <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11374                                data,
11375                            )
11376                            .map(StakeRegistryCalls::getLatestStakeUpdate)
11377                    }
11378                    getLatestStakeUpdate
11379                },
11380                {
11381                    fn getStakeAtBlockNumber(
11382                        data: &[u8],
11383                    ) -> alloy_sol_types::Result<StakeRegistryCalls> {
11384                        <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11385                                data,
11386                            )
11387                            .map(StakeRegistryCalls::getStakeAtBlockNumber)
11388                    }
11389                    getStakeAtBlockNumber
11390                },
11391            ];
11392            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11393                return Err(
11394                    alloy_sol_types::Error::unknown_selector(
11395                        <Self as alloy_sol_types::SolInterface>::NAME,
11396                        selector,
11397                    ),
11398                );
11399            };
11400            DECODE_VALIDATE_SHIMS[idx](data)
11401        }
11402        #[inline]
11403        fn abi_encoded_size(&self) -> usize {
11404            match self {
11405                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
11406                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
11407                        inner,
11408                    )
11409                }
11410                Self::WEIGHTING_DIVISOR(inner) => {
11411                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encoded_size(
11412                        inner,
11413                    )
11414                }
11415                Self::addStrategies(inner) => {
11416                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
11417                        inner,
11418                    )
11419                }
11420                Self::allocationManager(inner) => {
11421                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encoded_size(
11422                        inner,
11423                    )
11424                }
11425                Self::avsDirectory(inner) => {
11426                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
11427                        inner,
11428                    )
11429                }
11430                Self::delegation(inner) => {
11431                    <delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11432                }
11433                Self::deregisterOperator(inner) => {
11434                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
11435                        inner,
11436                    )
11437                }
11438                Self::getCurrentStake(inner) => {
11439                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11440                        inner,
11441                    )
11442                }
11443                Self::getCurrentTotalStake(inner) => {
11444                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11445                        inner,
11446                    )
11447                }
11448                Self::getLatestStakeUpdate(inner) => {
11449                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11450                        inner,
11451                    )
11452                }
11453                Self::getStakeAtBlockNumber(inner) => {
11454                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11455                        inner,
11456                    )
11457                }
11458                Self::getStakeAtBlockNumberAndIndex(inner) => {
11459                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11460                        inner,
11461                    )
11462                }
11463                Self::getStakeHistory(inner) => {
11464                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
11465                        inner,
11466                    )
11467                }
11468                Self::getStakeHistoryLength(inner) => {
11469                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
11470                        inner,
11471                    )
11472                }
11473                Self::getStakeUpdateAtIndex(inner) => {
11474                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11475                        inner,
11476                    )
11477                }
11478                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
11479                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11480                        inner,
11481                    )
11482                }
11483                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
11484                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11485                        inner,
11486                    )
11487                }
11488                Self::getTotalStakeHistoryLength(inner) => {
11489                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
11490                        inner,
11491                    )
11492                }
11493                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
11494                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11495                        inner,
11496                    )
11497                }
11498                Self::getTotalStakeUpdateAtIndex(inner) => {
11499                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11500                        inner,
11501                    )
11502                }
11503                Self::initializeDelegatedStakeQuorum(inner) => {
11504                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11505                        inner,
11506                    )
11507                }
11508                Self::initializeSlashableStakeQuorum(inner) => {
11509                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11510                        inner,
11511                    )
11512                }
11513                Self::minimumStakeForQuorum(inner) => {
11514                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11515                        inner,
11516                    )
11517                }
11518                Self::modifyStrategyParams(inner) => {
11519                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11520                        inner,
11521                    )
11522                }
11523                Self::registerOperator(inner) => {
11524                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
11525                        inner,
11526                    )
11527                }
11528                Self::registryCoordinator(inner) => {
11529                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
11530                        inner,
11531                    )
11532                }
11533                Self::removeStrategies(inner) => {
11534                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
11535                        inner,
11536                    )
11537                }
11538                Self::setMinimumStakeForQuorum(inner) => {
11539                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11540                        inner,
11541                    )
11542                }
11543                Self::setSlashableStakeLookahead(inner) => {
11544                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encoded_size(
11545                        inner,
11546                    )
11547                }
11548                Self::slashableStakeLookAheadPerQuorum(inner) => {
11549                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11550                        inner,
11551                    )
11552                }
11553                Self::stakeTypePerQuorum(inner) => {
11554                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11555                        inner,
11556                    )
11557                }
11558                Self::strategiesPerQuorum(inner) => {
11559                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11560                        inner,
11561                    )
11562                }
11563                Self::strategyParams(inner) => {
11564                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11565                        inner,
11566                    )
11567                }
11568                Self::strategyParamsByIndex(inner) => {
11569                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11570                        inner,
11571                    )
11572                }
11573                Self::strategyParamsLength(inner) => {
11574                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
11575                        inner,
11576                    )
11577                }
11578                Self::updateOperatorsStake(inner) => {
11579                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11580                        inner,
11581                    )
11582                }
11583                Self::weightOfOperatorForQuorum(inner) => {
11584                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
11585                        inner,
11586                    )
11587                }
11588            }
11589        }
11590        #[inline]
11591        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11592            match self {
11593                Self::MAX_WEIGHING_FUNCTION_LENGTH(inner) => {
11594                    <MAX_WEIGHING_FUNCTION_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
11595                        inner,
11596                        out,
11597                    )
11598                }
11599                Self::WEIGHTING_DIVISOR(inner) => {
11600                    <WEIGHTING_DIVISORCall as alloy_sol_types::SolCall>::abi_encode_raw(
11601                        inner,
11602                        out,
11603                    )
11604                }
11605                Self::addStrategies(inner) => {
11606                    <addStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
11607                        inner,
11608                        out,
11609                    )
11610                }
11611                Self::allocationManager(inner) => {
11612                    <allocationManagerCall as alloy_sol_types::SolCall>::abi_encode_raw(
11613                        inner,
11614                        out,
11615                    )
11616                }
11617                Self::avsDirectory(inner) => {
11618                    <avsDirectoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
11619                        inner,
11620                        out,
11621                    )
11622                }
11623                Self::delegation(inner) => {
11624                    <delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
11625                        inner,
11626                        out,
11627                    )
11628                }
11629                Self::deregisterOperator(inner) => {
11630                    <deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
11631                        inner,
11632                        out,
11633                    )
11634                }
11635                Self::getCurrentStake(inner) => {
11636                    <getCurrentStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11637                        inner,
11638                        out,
11639                    )
11640                }
11641                Self::getCurrentTotalStake(inner) => {
11642                    <getCurrentTotalStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11643                        inner,
11644                        out,
11645                    )
11646                }
11647                Self::getLatestStakeUpdate(inner) => {
11648                    <getLatestStakeUpdateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11649                        inner,
11650                        out,
11651                    )
11652                }
11653                Self::getStakeAtBlockNumber(inner) => {
11654                    <getStakeAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11655                        inner,
11656                        out,
11657                    )
11658                }
11659                Self::getStakeAtBlockNumberAndIndex(inner) => {
11660                    <getStakeAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11661                        inner,
11662                        out,
11663                    )
11664                }
11665                Self::getStakeHistory(inner) => {
11666                    <getStakeHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
11667                        inner,
11668                        out,
11669                    )
11670                }
11671                Self::getStakeHistoryLength(inner) => {
11672                    <getStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
11673                        inner,
11674                        out,
11675                    )
11676                }
11677                Self::getStakeUpdateAtIndex(inner) => {
11678                    <getStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11679                        inner,
11680                        out,
11681                    )
11682                }
11683                Self::getStakeUpdateIndexAtBlockNumber(inner) => {
11684                    <getStakeUpdateIndexAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11685                        inner,
11686                        out,
11687                    )
11688                }
11689                Self::getTotalStakeAtBlockNumberFromIndex(inner) => {
11690                    <getTotalStakeAtBlockNumberFromIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11691                        inner,
11692                        out,
11693                    )
11694                }
11695                Self::getTotalStakeHistoryLength(inner) => {
11696                    <getTotalStakeHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
11697                        inner,
11698                        out,
11699                    )
11700                }
11701                Self::getTotalStakeIndicesAtBlockNumber(inner) => {
11702                    <getTotalStakeIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11703                        inner,
11704                        out,
11705                    )
11706                }
11707                Self::getTotalStakeUpdateAtIndex(inner) => {
11708                    <getTotalStakeUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11709                        inner,
11710                        out,
11711                    )
11712                }
11713                Self::initializeDelegatedStakeQuorum(inner) => {
11714                    <initializeDelegatedStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11715                        inner,
11716                        out,
11717                    )
11718                }
11719                Self::initializeSlashableStakeQuorum(inner) => {
11720                    <initializeSlashableStakeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11721                        inner,
11722                        out,
11723                    )
11724                }
11725                Self::minimumStakeForQuorum(inner) => {
11726                    <minimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11727                        inner,
11728                        out,
11729                    )
11730                }
11731                Self::modifyStrategyParams(inner) => {
11732                    <modifyStrategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11733                        inner,
11734                        out,
11735                    )
11736                }
11737                Self::registerOperator(inner) => {
11738                    <registerOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
11739                        inner,
11740                        out,
11741                    )
11742                }
11743                Self::registryCoordinator(inner) => {
11744                    <registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
11745                        inner,
11746                        out,
11747                    )
11748                }
11749                Self::removeStrategies(inner) => {
11750                    <removeStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
11751                        inner,
11752                        out,
11753                    )
11754                }
11755                Self::setMinimumStakeForQuorum(inner) => {
11756                    <setMinimumStakeForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11757                        inner,
11758                        out,
11759                    )
11760                }
11761                Self::setSlashableStakeLookahead(inner) => {
11762                    <setSlashableStakeLookaheadCall as alloy_sol_types::SolCall>::abi_encode_raw(
11763                        inner,
11764                        out,
11765                    )
11766                }
11767                Self::slashableStakeLookAheadPerQuorum(inner) => {
11768                    <slashableStakeLookAheadPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11769                        inner,
11770                        out,
11771                    )
11772                }
11773                Self::stakeTypePerQuorum(inner) => {
11774                    <stakeTypePerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11775                        inner,
11776                        out,
11777                    )
11778                }
11779                Self::strategiesPerQuorum(inner) => {
11780                    <strategiesPerQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11781                        inner,
11782                        out,
11783                    )
11784                }
11785                Self::strategyParams(inner) => {
11786                    <strategyParamsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11787                        inner,
11788                        out,
11789                    )
11790                }
11791                Self::strategyParamsByIndex(inner) => {
11792                    <strategyParamsByIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11793                        inner,
11794                        out,
11795                    )
11796                }
11797                Self::strategyParamsLength(inner) => {
11798                    <strategyParamsLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
11799                        inner,
11800                        out,
11801                    )
11802                }
11803                Self::updateOperatorsStake(inner) => {
11804                    <updateOperatorsStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11805                        inner,
11806                        out,
11807                    )
11808                }
11809                Self::weightOfOperatorForQuorum(inner) => {
11810                    <weightOfOperatorForQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
11811                        inner,
11812                        out,
11813                    )
11814                }
11815            }
11816        }
11817    }
11818    ///Container for all the [`StakeRegistry`](self) custom errors.
11819    #[derive(serde::Serialize, serde::Deserialize)]
11820    #[derive(Debug, PartialEq, Eq, Hash)]
11821    pub enum StakeRegistryErrors {
11822        #[allow(missing_docs)]
11823        BelowMinimumStakeRequirement(BelowMinimumStakeRequirement),
11824        #[allow(missing_docs)]
11825        EmptyStakeHistory(EmptyStakeHistory),
11826        #[allow(missing_docs)]
11827        InputArrayLengthMismatch(InputArrayLengthMismatch),
11828        #[allow(missing_docs)]
11829        InputArrayLengthZero(InputArrayLengthZero),
11830        #[allow(missing_docs)]
11831        InputDuplicateStrategy(InputDuplicateStrategy),
11832        #[allow(missing_docs)]
11833        InputMultiplierZero(InputMultiplierZero),
11834        #[allow(missing_docs)]
11835        InvalidBlockNumber(InvalidBlockNumber),
11836        #[allow(missing_docs)]
11837        LookAheadPeriodTooLong(LookAheadPeriodTooLong),
11838        #[allow(missing_docs)]
11839        OnlySlashingRegistryCoordinator(OnlySlashingRegistryCoordinator),
11840        #[allow(missing_docs)]
11841        OnlySlashingRegistryCoordinatorOwner(OnlySlashingRegistryCoordinatorOwner),
11842        #[allow(missing_docs)]
11843        QuorumAlreadyExists(QuorumAlreadyExists),
11844        #[allow(missing_docs)]
11845        QuorumDoesNotExist(QuorumDoesNotExist),
11846        #[allow(missing_docs)]
11847        QuorumNotSlashable(QuorumNotSlashable),
11848    }
11849    #[automatically_derived]
11850    impl StakeRegistryErrors {
11851        /// All the selectors of this enum.
11852        ///
11853        /// Note that the selectors might not be in the same order as the variants.
11854        /// No guarantees are made about the order of the selectors.
11855        ///
11856        /// Prefer using `SolInterface` methods instead.
11857        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11858            [47u8, 81u8, 6u8, 228u8],
11859            [64u8, 254u8, 39u8, 198u8],
11860            [67u8, 54u8, 148u8, 92u8],
11861            [67u8, 113u8, 74u8, 253u8],
11862            [78u8, 71u8, 132u8, 108u8],
11863            [114u8, 87u8, 18u8, 81u8],
11864            [121u8, 108u8, 197u8, 37u8],
11865            [123u8, 116u8, 52u8, 11u8],
11866            [163u8, 190u8, 37u8, 131u8],
11867            [176u8, 6u8, 200u8, 20u8],
11868            [204u8, 100u8, 101u8, 115u8],
11869            [206u8, 152u8, 194u8, 75u8],
11870            [230u8, 33u8, 159u8, 234u8],
11871        ];
11872    }
11873    #[automatically_derived]
11874    impl alloy_sol_types::SolInterface for StakeRegistryErrors {
11875        const NAME: &'static str = "StakeRegistryErrors";
11876        const MIN_DATA_LENGTH: usize = 0usize;
11877        const COUNT: usize = 13usize;
11878        #[inline]
11879        fn selector(&self) -> [u8; 4] {
11880            match self {
11881                Self::BelowMinimumStakeRequirement(_) => {
11882                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::SELECTOR
11883                }
11884                Self::EmptyStakeHistory(_) => {
11885                    <EmptyStakeHistory as alloy_sol_types::SolError>::SELECTOR
11886                }
11887                Self::InputArrayLengthMismatch(_) => {
11888                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::SELECTOR
11889                }
11890                Self::InputArrayLengthZero(_) => {
11891                    <InputArrayLengthZero as alloy_sol_types::SolError>::SELECTOR
11892                }
11893                Self::InputDuplicateStrategy(_) => {
11894                    <InputDuplicateStrategy as alloy_sol_types::SolError>::SELECTOR
11895                }
11896                Self::InputMultiplierZero(_) => {
11897                    <InputMultiplierZero as alloy_sol_types::SolError>::SELECTOR
11898                }
11899                Self::InvalidBlockNumber(_) => {
11900                    <InvalidBlockNumber as alloy_sol_types::SolError>::SELECTOR
11901                }
11902                Self::LookAheadPeriodTooLong(_) => {
11903                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::SELECTOR
11904                }
11905                Self::OnlySlashingRegistryCoordinator(_) => {
11906                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::SELECTOR
11907                }
11908                Self::OnlySlashingRegistryCoordinatorOwner(_) => {
11909                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
11910                }
11911                Self::QuorumAlreadyExists(_) => {
11912                    <QuorumAlreadyExists as alloy_sol_types::SolError>::SELECTOR
11913                }
11914                Self::QuorumDoesNotExist(_) => {
11915                    <QuorumDoesNotExist as alloy_sol_types::SolError>::SELECTOR
11916                }
11917                Self::QuorumNotSlashable(_) => {
11918                    <QuorumNotSlashable as alloy_sol_types::SolError>::SELECTOR
11919                }
11920            }
11921        }
11922        #[inline]
11923        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11924            Self::SELECTORS.get(i).copied()
11925        }
11926        #[inline]
11927        fn valid_selector(selector: [u8; 4]) -> bool {
11928            Self::SELECTORS.binary_search(&selector).is_ok()
11929        }
11930        #[inline]
11931        #[allow(non_snake_case)]
11932        fn abi_decode_raw(
11933            selector: [u8; 4],
11934            data: &[u8],
11935        ) -> alloy_sol_types::Result<Self> {
11936            static DECODE_SHIMS: &[fn(
11937                &[u8],
11938            ) -> alloy_sol_types::Result<StakeRegistryErrors>] = &[
11939                {
11940                    fn LookAheadPeriodTooLong(
11941                        data: &[u8],
11942                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11943                        <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_decode_raw(
11944                                data,
11945                            )
11946                            .map(StakeRegistryErrors::LookAheadPeriodTooLong)
11947                    }
11948                    LookAheadPeriodTooLong
11949                },
11950                {
11951                    fn BelowMinimumStakeRequirement(
11952                        data: &[u8],
11953                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11954                        <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_decode_raw(
11955                                data,
11956                            )
11957                            .map(StakeRegistryErrors::BelowMinimumStakeRequirement)
11958                    }
11959                    BelowMinimumStakeRequirement
11960                },
11961                {
11962                    fn QuorumAlreadyExists(
11963                        data: &[u8],
11964                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11965                        <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
11966                                data,
11967                            )
11968                            .map(StakeRegistryErrors::QuorumAlreadyExists)
11969                    }
11970                    QuorumAlreadyExists
11971                },
11972                {
11973                    fn InputArrayLengthMismatch(
11974                        data: &[u8],
11975                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11976                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw(
11977                                data,
11978                            )
11979                            .map(StakeRegistryErrors::InputArrayLengthMismatch)
11980                    }
11981                    InputArrayLengthMismatch
11982                },
11983                {
11984                    fn InvalidBlockNumber(
11985                        data: &[u8],
11986                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11987                        <InvalidBlockNumber as alloy_sol_types::SolError>::abi_decode_raw(
11988                                data,
11989                            )
11990                            .map(StakeRegistryErrors::InvalidBlockNumber)
11991                    }
11992                    InvalidBlockNumber
11993                },
11994                {
11995                    fn InputMultiplierZero(
11996                        data: &[u8],
11997                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
11998                        <InputMultiplierZero as alloy_sol_types::SolError>::abi_decode_raw(
11999                                data,
12000                            )
12001                            .map(StakeRegistryErrors::InputMultiplierZero)
12002                    }
12003                    InputMultiplierZero
12004                },
12005                {
12006                    fn InputArrayLengthZero(
12007                        data: &[u8],
12008                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12009                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw(
12010                                data,
12011                            )
12012                            .map(StakeRegistryErrors::InputArrayLengthZero)
12013                    }
12014                    InputArrayLengthZero
12015                },
12016                {
12017                    fn InputDuplicateStrategy(
12018                        data: &[u8],
12019                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12020                        <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_decode_raw(
12021                                data,
12022                            )
12023                            .map(StakeRegistryErrors::InputDuplicateStrategy)
12024                    }
12025                    InputDuplicateStrategy
12026                },
12027                {
12028                    fn QuorumNotSlashable(
12029                        data: &[u8],
12030                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12031                        <QuorumNotSlashable as alloy_sol_types::SolError>::abi_decode_raw(
12032                                data,
12033                            )
12034                            .map(StakeRegistryErrors::QuorumNotSlashable)
12035                    }
12036                    QuorumNotSlashable
12037                },
12038                {
12039                    fn OnlySlashingRegistryCoordinator(
12040                        data: &[u8],
12041                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12042                        <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw(
12043                                data,
12044                            )
12045                            .map(StakeRegistryErrors::OnlySlashingRegistryCoordinator)
12046                    }
12047                    OnlySlashingRegistryCoordinator
12048                },
12049                {
12050                    fn EmptyStakeHistory(
12051                        data: &[u8],
12052                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12053                        <EmptyStakeHistory as alloy_sol_types::SolError>::abi_decode_raw(
12054                                data,
12055                            )
12056                            .map(StakeRegistryErrors::EmptyStakeHistory)
12057                    }
12058                    EmptyStakeHistory
12059                },
12060                {
12061                    fn OnlySlashingRegistryCoordinatorOwner(
12062                        data: &[u8],
12063                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12064                        <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
12065                                data,
12066                            )
12067                            .map(
12068                                StakeRegistryErrors::OnlySlashingRegistryCoordinatorOwner,
12069                            )
12070                    }
12071                    OnlySlashingRegistryCoordinatorOwner
12072                },
12073                {
12074                    fn QuorumDoesNotExist(
12075                        data: &[u8],
12076                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12077                        <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw(
12078                                data,
12079                            )
12080                            .map(StakeRegistryErrors::QuorumDoesNotExist)
12081                    }
12082                    QuorumDoesNotExist
12083                },
12084            ];
12085            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12086                return Err(
12087                    alloy_sol_types::Error::unknown_selector(
12088                        <Self as alloy_sol_types::SolInterface>::NAME,
12089                        selector,
12090                    ),
12091                );
12092            };
12093            DECODE_SHIMS[idx](data)
12094        }
12095        #[inline]
12096        #[allow(non_snake_case)]
12097        fn abi_decode_raw_validate(
12098            selector: [u8; 4],
12099            data: &[u8],
12100        ) -> alloy_sol_types::Result<Self> {
12101            static DECODE_VALIDATE_SHIMS: &[fn(
12102                &[u8],
12103            ) -> alloy_sol_types::Result<StakeRegistryErrors>] = &[
12104                {
12105                    fn LookAheadPeriodTooLong(
12106                        data: &[u8],
12107                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12108                        <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_decode_raw_validate(
12109                                data,
12110                            )
12111                            .map(StakeRegistryErrors::LookAheadPeriodTooLong)
12112                    }
12113                    LookAheadPeriodTooLong
12114                },
12115                {
12116                    fn BelowMinimumStakeRequirement(
12117                        data: &[u8],
12118                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12119                        <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_decode_raw_validate(
12120                                data,
12121                            )
12122                            .map(StakeRegistryErrors::BelowMinimumStakeRequirement)
12123                    }
12124                    BelowMinimumStakeRequirement
12125                },
12126                {
12127                    fn QuorumAlreadyExists(
12128                        data: &[u8],
12129                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12130                        <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
12131                                data,
12132                            )
12133                            .map(StakeRegistryErrors::QuorumAlreadyExists)
12134                    }
12135                    QuorumAlreadyExists
12136                },
12137                {
12138                    fn InputArrayLengthMismatch(
12139                        data: &[u8],
12140                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12141                        <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_decode_raw_validate(
12142                                data,
12143                            )
12144                            .map(StakeRegistryErrors::InputArrayLengthMismatch)
12145                    }
12146                    InputArrayLengthMismatch
12147                },
12148                {
12149                    fn InvalidBlockNumber(
12150                        data: &[u8],
12151                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12152                        <InvalidBlockNumber as alloy_sol_types::SolError>::abi_decode_raw_validate(
12153                                data,
12154                            )
12155                            .map(StakeRegistryErrors::InvalidBlockNumber)
12156                    }
12157                    InvalidBlockNumber
12158                },
12159                {
12160                    fn InputMultiplierZero(
12161                        data: &[u8],
12162                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12163                        <InputMultiplierZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
12164                                data,
12165                            )
12166                            .map(StakeRegistryErrors::InputMultiplierZero)
12167                    }
12168                    InputMultiplierZero
12169                },
12170                {
12171                    fn InputArrayLengthZero(
12172                        data: &[u8],
12173                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12174                        <InputArrayLengthZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
12175                                data,
12176                            )
12177                            .map(StakeRegistryErrors::InputArrayLengthZero)
12178                    }
12179                    InputArrayLengthZero
12180                },
12181                {
12182                    fn InputDuplicateStrategy(
12183                        data: &[u8],
12184                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12185                        <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_decode_raw_validate(
12186                                data,
12187                            )
12188                            .map(StakeRegistryErrors::InputDuplicateStrategy)
12189                    }
12190                    InputDuplicateStrategy
12191                },
12192                {
12193                    fn QuorumNotSlashable(
12194                        data: &[u8],
12195                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12196                        <QuorumNotSlashable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12197                                data,
12198                            )
12199                            .map(StakeRegistryErrors::QuorumNotSlashable)
12200                    }
12201                    QuorumNotSlashable
12202                },
12203                {
12204                    fn OnlySlashingRegistryCoordinator(
12205                        data: &[u8],
12206                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12207                        <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw_validate(
12208                                data,
12209                            )
12210                            .map(StakeRegistryErrors::OnlySlashingRegistryCoordinator)
12211                    }
12212                    OnlySlashingRegistryCoordinator
12213                },
12214                {
12215                    fn EmptyStakeHistory(
12216                        data: &[u8],
12217                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12218                        <EmptyStakeHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12219                                data,
12220                            )
12221                            .map(StakeRegistryErrors::EmptyStakeHistory)
12222                    }
12223                    EmptyStakeHistory
12224                },
12225                {
12226                    fn OnlySlashingRegistryCoordinatorOwner(
12227                        data: &[u8],
12228                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12229                        <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12230                                data,
12231                            )
12232                            .map(
12233                                StakeRegistryErrors::OnlySlashingRegistryCoordinatorOwner,
12234                            )
12235                    }
12236                    OnlySlashingRegistryCoordinatorOwner
12237                },
12238                {
12239                    fn QuorumDoesNotExist(
12240                        data: &[u8],
12241                    ) -> alloy_sol_types::Result<StakeRegistryErrors> {
12242                        <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw_validate(
12243                                data,
12244                            )
12245                            .map(StakeRegistryErrors::QuorumDoesNotExist)
12246                    }
12247                    QuorumDoesNotExist
12248                },
12249            ];
12250            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12251                return Err(
12252                    alloy_sol_types::Error::unknown_selector(
12253                        <Self as alloy_sol_types::SolInterface>::NAME,
12254                        selector,
12255                    ),
12256                );
12257            };
12258            DECODE_VALIDATE_SHIMS[idx](data)
12259        }
12260        #[inline]
12261        fn abi_encoded_size(&self) -> usize {
12262            match self {
12263                Self::BelowMinimumStakeRequirement(inner) => {
12264                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encoded_size(
12265                        inner,
12266                    )
12267                }
12268                Self::EmptyStakeHistory(inner) => {
12269                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encoded_size(
12270                        inner,
12271                    )
12272                }
12273                Self::InputArrayLengthMismatch(inner) => {
12274                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encoded_size(
12275                        inner,
12276                    )
12277                }
12278                Self::InputArrayLengthZero(inner) => {
12279                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encoded_size(
12280                        inner,
12281                    )
12282                }
12283                Self::InputDuplicateStrategy(inner) => {
12284                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encoded_size(
12285                        inner,
12286                    )
12287                }
12288                Self::InputMultiplierZero(inner) => {
12289                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encoded_size(
12290                        inner,
12291                    )
12292                }
12293                Self::InvalidBlockNumber(inner) => {
12294                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encoded_size(
12295                        inner,
12296                    )
12297                }
12298                Self::LookAheadPeriodTooLong(inner) => {
12299                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_encoded_size(
12300                        inner,
12301                    )
12302                }
12303                Self::OnlySlashingRegistryCoordinator(inner) => {
12304                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encoded_size(
12305                        inner,
12306                    )
12307                }
12308                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
12309                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
12310                        inner,
12311                    )
12312                }
12313                Self::QuorumAlreadyExists(inner) => {
12314                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
12315                        inner,
12316                    )
12317                }
12318                Self::QuorumDoesNotExist(inner) => {
12319                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encoded_size(
12320                        inner,
12321                    )
12322                }
12323                Self::QuorumNotSlashable(inner) => {
12324                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encoded_size(
12325                        inner,
12326                    )
12327                }
12328            }
12329        }
12330        #[inline]
12331        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12332            match self {
12333                Self::BelowMinimumStakeRequirement(inner) => {
12334                    <BelowMinimumStakeRequirement as alloy_sol_types::SolError>::abi_encode_raw(
12335                        inner,
12336                        out,
12337                    )
12338                }
12339                Self::EmptyStakeHistory(inner) => {
12340                    <EmptyStakeHistory as alloy_sol_types::SolError>::abi_encode_raw(
12341                        inner,
12342                        out,
12343                    )
12344                }
12345                Self::InputArrayLengthMismatch(inner) => {
12346                    <InputArrayLengthMismatch as alloy_sol_types::SolError>::abi_encode_raw(
12347                        inner,
12348                        out,
12349                    )
12350                }
12351                Self::InputArrayLengthZero(inner) => {
12352                    <InputArrayLengthZero as alloy_sol_types::SolError>::abi_encode_raw(
12353                        inner,
12354                        out,
12355                    )
12356                }
12357                Self::InputDuplicateStrategy(inner) => {
12358                    <InputDuplicateStrategy as alloy_sol_types::SolError>::abi_encode_raw(
12359                        inner,
12360                        out,
12361                    )
12362                }
12363                Self::InputMultiplierZero(inner) => {
12364                    <InputMultiplierZero as alloy_sol_types::SolError>::abi_encode_raw(
12365                        inner,
12366                        out,
12367                    )
12368                }
12369                Self::InvalidBlockNumber(inner) => {
12370                    <InvalidBlockNumber as alloy_sol_types::SolError>::abi_encode_raw(
12371                        inner,
12372                        out,
12373                    )
12374                }
12375                Self::LookAheadPeriodTooLong(inner) => {
12376                    <LookAheadPeriodTooLong as alloy_sol_types::SolError>::abi_encode_raw(
12377                        inner,
12378                        out,
12379                    )
12380                }
12381                Self::OnlySlashingRegistryCoordinator(inner) => {
12382                    <OnlySlashingRegistryCoordinator as alloy_sol_types::SolError>::abi_encode_raw(
12383                        inner,
12384                        out,
12385                    )
12386                }
12387                Self::OnlySlashingRegistryCoordinatorOwner(inner) => {
12388                    <OnlySlashingRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
12389                        inner,
12390                        out,
12391                    )
12392                }
12393                Self::QuorumAlreadyExists(inner) => {
12394                    <QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
12395                        inner,
12396                        out,
12397                    )
12398                }
12399                Self::QuorumDoesNotExist(inner) => {
12400                    <QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encode_raw(
12401                        inner,
12402                        out,
12403                    )
12404                }
12405                Self::QuorumNotSlashable(inner) => {
12406                    <QuorumNotSlashable as alloy_sol_types::SolError>::abi_encode_raw(
12407                        inner,
12408                        out,
12409                    )
12410                }
12411            }
12412        }
12413    }
12414    ///Container for all the [`StakeRegistry`](self) events.
12415    #[derive(serde::Serialize, serde::Deserialize)]
12416    #[derive(Debug, PartialEq, Eq, Hash)]
12417    pub enum StakeRegistryEvents {
12418        #[allow(missing_docs)]
12419        LookAheadPeriodChanged(LookAheadPeriodChanged),
12420        #[allow(missing_docs)]
12421        MinimumStakeForQuorumUpdated(MinimumStakeForQuorumUpdated),
12422        #[allow(missing_docs)]
12423        OperatorStakeUpdate(OperatorStakeUpdate),
12424        #[allow(missing_docs)]
12425        QuorumCreated(QuorumCreated),
12426        #[allow(missing_docs)]
12427        StakeTypeSet(StakeTypeSet),
12428        #[allow(missing_docs)]
12429        StrategyAddedToQuorum(StrategyAddedToQuorum),
12430        #[allow(missing_docs)]
12431        StrategyMultiplierUpdated(StrategyMultiplierUpdated),
12432        #[allow(missing_docs)]
12433        StrategyRemovedFromQuorum(StrategyRemovedFromQuorum),
12434    }
12435    #[automatically_derived]
12436    impl StakeRegistryEvents {
12437        /// All the selectors of this enum.
12438        ///
12439        /// Note that the selectors might not be in the same order as the variants.
12440        /// No guarantees are made about the order of the selectors.
12441        ///
12442        /// Prefer using `SolInterface` methods instead.
12443        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12444            [
12445                16u8, 86u8, 94u8, 86u8, 202u8, 203u8, 243u8, 46u8, 202u8, 38u8, 121u8,
12446                69u8, 240u8, 84u8, 254u8, 192u8, 46u8, 89u8, 117u8, 0u8, 50u8, 209u8,
12447                19u8, 211u8, 48u8, 33u8, 130u8, 173u8, 150u8, 127u8, 84u8, 4u8,
12448            ],
12449            [
12450                17u8, 165u8, 100u8, 19u8, 34u8, 218u8, 29u8, 255u8, 86u8, 164u8, 182u8,
12451                110u8, 170u8, 195u8, 31u8, 250u8, 70u8, 82u8, 149u8, 236u8, 233u8, 7u8,
12452                205u8, 22u8, 52u8, 55u8, 121u8, 59u8, 77u8, 0u8, 154u8, 117u8,
12453            ],
12454            [
12455                38u8, 238u8, 207u8, 242u8, 183u8, 11u8, 10u8, 113u8, 16u8, 79u8, 244u8,
12456                217u8, 64u8, 186u8, 113u8, 98u8, 210u8, 58u8, 149u8, 194u8, 72u8, 119u8,
12457                31u8, 196u8, 135u8, 167u8, 190u8, 23u8, 165u8, 150u8, 179u8, 207u8,
12458            ],
12459            [
12460                40u8, 215u8, 53u8, 139u8, 121u8, 240u8, 45u8, 33u8, 184u8, 183u8, 225u8,
12461                122u8, 239u8, 196u8, 24u8, 90u8, 100u8, 48u8, 138u8, 163u8, 116u8, 6u8,
12462                250u8, 91u8, 239u8, 192u8, 91u8, 145u8, 147u8, 44u8, 57u8, 199u8,
12463            ],
12464            [
12465                47u8, 82u8, 125u8, 82u8, 126u8, 149u8, 216u8, 254u8, 64u8, 174u8, 197u8,
12466                83u8, 119u8, 116u8, 59u8, 183u8, 121u8, 8u8, 125u8, 163u8, 246u8, 208u8,
12467                208u8, 143u8, 18u8, 227u8, 100u8, 68u8, 218u8, 98u8, 50u8, 125u8,
12468            ],
12469            [
12470                49u8, 250u8, 46u8, 44u8, 210u8, 128u8, 201u8, 55u8, 94u8, 19u8, 255u8,
12471                207u8, 61u8, 129u8, 226u8, 55u8, 129u8, 0u8, 24u8, 110u8, 64u8, 88u8,
12472                248u8, 211u8, 221u8, 182u8, 144u8, 184u8, 45u8, 205u8, 49u8, 247u8,
12473            ],
12474            [
12475                124u8, 17u8, 46u8, 134u8, 60u8, 207u8, 0u8, 120u8, 98u8, 226u8, 201u8,
12476                226u8, 88u8, 25u8, 201u8, 51u8, 254u8, 219u8, 201u8, 53u8, 10u8, 100u8,
12477                67u8, 66u8, 59u8, 74u8, 133u8, 153u8, 194u8, 232u8, 165u8, 45u8,
12478            ],
12479            [
12480                131u8, 26u8, 156u8, 134u8, 196u8, 91u8, 179u8, 3u8, 202u8, 243u8, 240u8,
12481                100u8, 190u8, 43u8, 194u8, 185u8, 253u8, 78u8, 207u8, 25u8, 228u8, 124u8,
12482                74u8, 192u8, 42u8, 97u8, 231u8, 93u8, 171u8, 254u8, 85u8, 180u8,
12483            ],
12484        ];
12485    }
12486    #[automatically_derived]
12487    impl alloy_sol_types::SolEventInterface for StakeRegistryEvents {
12488        const NAME: &'static str = "StakeRegistryEvents";
12489        const COUNT: usize = 8usize;
12490        fn decode_raw_log(
12491            topics: &[alloy_sol_types::Word],
12492            data: &[u8],
12493        ) -> alloy_sol_types::Result<Self> {
12494            match topics.first().copied() {
12495                Some(
12496                    <LookAheadPeriodChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12497                ) => {
12498                    <LookAheadPeriodChanged as alloy_sol_types::SolEvent>::decode_raw_log(
12499                            topics,
12500                            data,
12501                        )
12502                        .map(Self::LookAheadPeriodChanged)
12503                }
12504                Some(
12505                    <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12506                ) => {
12507                    <MinimumStakeForQuorumUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
12508                            topics,
12509                            data,
12510                        )
12511                        .map(Self::MinimumStakeForQuorumUpdated)
12512                }
12513                Some(
12514                    <OperatorStakeUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12515                ) => {
12516                    <OperatorStakeUpdate as alloy_sol_types::SolEvent>::decode_raw_log(
12517                            topics,
12518                            data,
12519                        )
12520                        .map(Self::OperatorStakeUpdate)
12521                }
12522                Some(<QuorumCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12523                    <QuorumCreated as alloy_sol_types::SolEvent>::decode_raw_log(
12524                            topics,
12525                            data,
12526                        )
12527                        .map(Self::QuorumCreated)
12528                }
12529                Some(<StakeTypeSet as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12530                    <StakeTypeSet as alloy_sol_types::SolEvent>::decode_raw_log(
12531                            topics,
12532                            data,
12533                        )
12534                        .map(Self::StakeTypeSet)
12535                }
12536                Some(
12537                    <StrategyAddedToQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12538                ) => {
12539                    <StrategyAddedToQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
12540                            topics,
12541                            data,
12542                        )
12543                        .map(Self::StrategyAddedToQuorum)
12544                }
12545                Some(
12546                    <StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12547                ) => {
12548                    <StrategyMultiplierUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
12549                            topics,
12550                            data,
12551                        )
12552                        .map(Self::StrategyMultiplierUpdated)
12553                }
12554                Some(
12555                    <StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12556                ) => {
12557                    <StrategyRemovedFromQuorum as alloy_sol_types::SolEvent>::decode_raw_log(
12558                            topics,
12559                            data,
12560                        )
12561                        .map(Self::StrategyRemovedFromQuorum)
12562                }
12563                _ => {
12564                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12565                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12566                        log: alloy_sol_types::private::Box::new(
12567                            alloy_sol_types::private::LogData::new_unchecked(
12568                                topics.to_vec(),
12569                                data.to_vec().into(),
12570                            ),
12571                        ),
12572                    })
12573                }
12574            }
12575        }
12576    }
12577    #[automatically_derived]
12578    impl alloy_sol_types::private::IntoLogData for StakeRegistryEvents {
12579        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12580            match self {
12581                Self::LookAheadPeriodChanged(inner) => {
12582                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12583                }
12584                Self::MinimumStakeForQuorumUpdated(inner) => {
12585                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12586                }
12587                Self::OperatorStakeUpdate(inner) => {
12588                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12589                }
12590                Self::QuorumCreated(inner) => {
12591                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12592                }
12593                Self::StakeTypeSet(inner) => {
12594                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12595                }
12596                Self::StrategyAddedToQuorum(inner) => {
12597                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12598                }
12599                Self::StrategyMultiplierUpdated(inner) => {
12600                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12601                }
12602                Self::StrategyRemovedFromQuorum(inner) => {
12603                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12604                }
12605            }
12606        }
12607        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12608            match self {
12609                Self::LookAheadPeriodChanged(inner) => {
12610                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12611                }
12612                Self::MinimumStakeForQuorumUpdated(inner) => {
12613                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12614                }
12615                Self::OperatorStakeUpdate(inner) => {
12616                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12617                }
12618                Self::QuorumCreated(inner) => {
12619                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12620                }
12621                Self::StakeTypeSet(inner) => {
12622                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12623                }
12624                Self::StrategyAddedToQuorum(inner) => {
12625                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12626                }
12627                Self::StrategyMultiplierUpdated(inner) => {
12628                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12629                }
12630                Self::StrategyRemovedFromQuorum(inner) => {
12631                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12632                }
12633            }
12634        }
12635    }
12636    use alloy::contract as alloy_contract;
12637    /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
12638
12639See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
12640    #[inline]
12641    pub const fn new<
12642        P: alloy_contract::private::Provider<N>,
12643        N: alloy_contract::private::Network,
12644    >(
12645        address: alloy_sol_types::private::Address,
12646        provider: P,
12647    ) -> StakeRegistryInstance<P, N> {
12648        StakeRegistryInstance::<P, N>::new(address, provider)
12649    }
12650    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12651
12652Returns a new instance of the contract, if the deployment was successful.
12653
12654For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12655    #[inline]
12656    pub fn deploy<
12657        P: alloy_contract::private::Provider<N>,
12658        N: alloy_contract::private::Network,
12659    >(
12660        provider: P,
12661        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
12662        _delegationManager: alloy::sol_types::private::Address,
12663        _avsDirectory: alloy::sol_types::private::Address,
12664        _allocationManager: alloy::sol_types::private::Address,
12665    ) -> impl ::core::future::Future<
12666        Output = alloy_contract::Result<StakeRegistryInstance<P, N>>,
12667    > {
12668        StakeRegistryInstance::<
12669            P,
12670            N,
12671        >::deploy(
12672            provider,
12673            _slashingRegistryCoordinator,
12674            _delegationManager,
12675            _avsDirectory,
12676            _allocationManager,
12677        )
12678    }
12679    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12680and constructor arguments, if any.
12681
12682This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12683the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12684    #[inline]
12685    pub fn deploy_builder<
12686        P: alloy_contract::private::Provider<N>,
12687        N: alloy_contract::private::Network,
12688    >(
12689        provider: P,
12690        _slashingRegistryCoordinator: alloy::sol_types::private::Address,
12691        _delegationManager: alloy::sol_types::private::Address,
12692        _avsDirectory: alloy::sol_types::private::Address,
12693        _allocationManager: alloy::sol_types::private::Address,
12694    ) -> alloy_contract::RawCallBuilder<P, N> {
12695        StakeRegistryInstance::<
12696            P,
12697            N,
12698        >::deploy_builder(
12699            provider,
12700            _slashingRegistryCoordinator,
12701            _delegationManager,
12702            _avsDirectory,
12703            _allocationManager,
12704        )
12705    }
12706    /**A [`StakeRegistry`](self) instance.
12707
12708Contains type-safe methods for interacting with an on-chain instance of the
12709[`StakeRegistry`](self) contract located at a given `address`, using a given
12710provider `P`.
12711
12712If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12713documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12714be used to deploy a new instance of the contract.
12715
12716See the [module-level documentation](self) for all the available methods.*/
12717    #[derive(Clone)]
12718    pub struct StakeRegistryInstance<P, N = alloy_contract::private::Ethereum> {
12719        address: alloy_sol_types::private::Address,
12720        provider: P,
12721        _network: ::core::marker::PhantomData<N>,
12722    }
12723    #[automatically_derived]
12724    impl<P, N> ::core::fmt::Debug for StakeRegistryInstance<P, N> {
12725        #[inline]
12726        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12727            f.debug_tuple("StakeRegistryInstance").field(&self.address).finish()
12728        }
12729    }
12730    /// Instantiation and getters/setters.
12731    #[automatically_derived]
12732    impl<
12733        P: alloy_contract::private::Provider<N>,
12734        N: alloy_contract::private::Network,
12735    > StakeRegistryInstance<P, N> {
12736        /**Creates a new wrapper around an on-chain [`StakeRegistry`](self) contract instance.
12737
12738See the [wrapper's documentation](`StakeRegistryInstance`) for more details.*/
12739        #[inline]
12740        pub const fn new(
12741            address: alloy_sol_types::private::Address,
12742            provider: P,
12743        ) -> Self {
12744            Self {
12745                address,
12746                provider,
12747                _network: ::core::marker::PhantomData,
12748            }
12749        }
12750        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12751
12752Returns a new instance of the contract, if the deployment was successful.
12753
12754For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12755        #[inline]
12756        pub async fn deploy(
12757            provider: P,
12758            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
12759            _delegationManager: alloy::sol_types::private::Address,
12760            _avsDirectory: alloy::sol_types::private::Address,
12761            _allocationManager: alloy::sol_types::private::Address,
12762        ) -> alloy_contract::Result<StakeRegistryInstance<P, N>> {
12763            let call_builder = Self::deploy_builder(
12764                provider,
12765                _slashingRegistryCoordinator,
12766                _delegationManager,
12767                _avsDirectory,
12768                _allocationManager,
12769            );
12770            let contract_address = call_builder.deploy().await?;
12771            Ok(Self::new(contract_address, call_builder.provider))
12772        }
12773        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12774and constructor arguments, if any.
12775
12776This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12777the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12778        #[inline]
12779        pub fn deploy_builder(
12780            provider: P,
12781            _slashingRegistryCoordinator: alloy::sol_types::private::Address,
12782            _delegationManager: alloy::sol_types::private::Address,
12783            _avsDirectory: alloy::sol_types::private::Address,
12784            _allocationManager: alloy::sol_types::private::Address,
12785        ) -> alloy_contract::RawCallBuilder<P, N> {
12786            alloy_contract::RawCallBuilder::new_raw_deploy(
12787                provider,
12788                [
12789                    &BYTECODE[..],
12790                    &alloy_sol_types::SolConstructor::abi_encode(
12791                        &constructorCall {
12792                            _slashingRegistryCoordinator,
12793                            _delegationManager,
12794                            _avsDirectory,
12795                            _allocationManager,
12796                        },
12797                    )[..],
12798                ]
12799                    .concat()
12800                    .into(),
12801            )
12802        }
12803        /// Returns a reference to the address.
12804        #[inline]
12805        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12806            &self.address
12807        }
12808        /// Sets the address.
12809        #[inline]
12810        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12811            self.address = address;
12812        }
12813        /// Sets the address and returns `self`.
12814        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12815            self.set_address(address);
12816            self
12817        }
12818        /// Returns a reference to the provider.
12819        #[inline]
12820        pub const fn provider(&self) -> &P {
12821            &self.provider
12822        }
12823    }
12824    impl<P: ::core::clone::Clone, N> StakeRegistryInstance<&P, N> {
12825        /// Clones the provider and returns a new instance with the cloned provider.
12826        #[inline]
12827        pub fn with_cloned_provider(self) -> StakeRegistryInstance<P, N> {
12828            StakeRegistryInstance {
12829                address: self.address,
12830                provider: ::core::clone::Clone::clone(&self.provider),
12831                _network: ::core::marker::PhantomData,
12832            }
12833        }
12834    }
12835    /// Function calls.
12836    #[automatically_derived]
12837    impl<
12838        P: alloy_contract::private::Provider<N>,
12839        N: alloy_contract::private::Network,
12840    > StakeRegistryInstance<P, N> {
12841        /// Creates a new call builder using this contract instance's provider and address.
12842        ///
12843        /// Note that the call can be any function call, not just those defined in this
12844        /// contract. Prefer using the other methods for building type-safe contract calls.
12845        pub fn call_builder<C: alloy_sol_types::SolCall>(
12846            &self,
12847            call: &C,
12848        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12849            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12850        }
12851        ///Creates a new call builder for the [`MAX_WEIGHING_FUNCTION_LENGTH`] function.
12852        pub fn MAX_WEIGHING_FUNCTION_LENGTH(
12853            &self,
12854        ) -> alloy_contract::SolCallBuilder<&P, MAX_WEIGHING_FUNCTION_LENGTHCall, N> {
12855            self.call_builder(&MAX_WEIGHING_FUNCTION_LENGTHCall)
12856        }
12857        ///Creates a new call builder for the [`WEIGHTING_DIVISOR`] function.
12858        pub fn WEIGHTING_DIVISOR(
12859            &self,
12860        ) -> alloy_contract::SolCallBuilder<&P, WEIGHTING_DIVISORCall, N> {
12861            self.call_builder(&WEIGHTING_DIVISORCall)
12862        }
12863        ///Creates a new call builder for the [`addStrategies`] function.
12864        pub fn addStrategies(
12865            &self,
12866            quorumNumber: u8,
12867            _strategyParams: alloy::sol_types::private::Vec<
12868                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
12869            >,
12870        ) -> alloy_contract::SolCallBuilder<&P, addStrategiesCall, N> {
12871            self.call_builder(
12872                &addStrategiesCall {
12873                    quorumNumber,
12874                    _strategyParams,
12875                },
12876            )
12877        }
12878        ///Creates a new call builder for the [`allocationManager`] function.
12879        pub fn allocationManager(
12880            &self,
12881        ) -> alloy_contract::SolCallBuilder<&P, allocationManagerCall, N> {
12882            self.call_builder(&allocationManagerCall)
12883        }
12884        ///Creates a new call builder for the [`avsDirectory`] function.
12885        pub fn avsDirectory(
12886            &self,
12887        ) -> alloy_contract::SolCallBuilder<&P, avsDirectoryCall, N> {
12888            self.call_builder(&avsDirectoryCall)
12889        }
12890        ///Creates a new call builder for the [`delegation`] function.
12891        pub fn delegation(
12892            &self,
12893        ) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
12894            self.call_builder(&delegationCall)
12895        }
12896        ///Creates a new call builder for the [`deregisterOperator`] function.
12897        pub fn deregisterOperator(
12898            &self,
12899            operatorId: alloy::sol_types::private::FixedBytes<32>,
12900            quorumNumbers: alloy::sol_types::private::Bytes,
12901        ) -> alloy_contract::SolCallBuilder<&P, deregisterOperatorCall, N> {
12902            self.call_builder(
12903                &deregisterOperatorCall {
12904                    operatorId,
12905                    quorumNumbers,
12906                },
12907            )
12908        }
12909        ///Creates a new call builder for the [`getCurrentStake`] function.
12910        pub fn getCurrentStake(
12911            &self,
12912            operatorId: alloy::sol_types::private::FixedBytes<32>,
12913            quorumNumber: u8,
12914        ) -> alloy_contract::SolCallBuilder<&P, getCurrentStakeCall, N> {
12915            self.call_builder(
12916                &getCurrentStakeCall {
12917                    operatorId,
12918                    quorumNumber,
12919                },
12920            )
12921        }
12922        ///Creates a new call builder for the [`getCurrentTotalStake`] function.
12923        pub fn getCurrentTotalStake(
12924            &self,
12925            quorumNumber: u8,
12926        ) -> alloy_contract::SolCallBuilder<&P, getCurrentTotalStakeCall, N> {
12927            self.call_builder(
12928                &getCurrentTotalStakeCall {
12929                    quorumNumber,
12930                },
12931            )
12932        }
12933        ///Creates a new call builder for the [`getLatestStakeUpdate`] function.
12934        pub fn getLatestStakeUpdate(
12935            &self,
12936            operatorId: alloy::sol_types::private::FixedBytes<32>,
12937            quorumNumber: u8,
12938        ) -> alloy_contract::SolCallBuilder<&P, getLatestStakeUpdateCall, N> {
12939            self.call_builder(
12940                &getLatestStakeUpdateCall {
12941                    operatorId,
12942                    quorumNumber,
12943                },
12944            )
12945        }
12946        ///Creates a new call builder for the [`getStakeAtBlockNumber`] function.
12947        pub fn getStakeAtBlockNumber(
12948            &self,
12949            operatorId: alloy::sol_types::private::FixedBytes<32>,
12950            quorumNumber: u8,
12951            blockNumber: u32,
12952        ) -> alloy_contract::SolCallBuilder<&P, getStakeAtBlockNumberCall, N> {
12953            self.call_builder(
12954                &getStakeAtBlockNumberCall {
12955                    operatorId,
12956                    quorumNumber,
12957                    blockNumber,
12958                },
12959            )
12960        }
12961        ///Creates a new call builder for the [`getStakeAtBlockNumberAndIndex`] function.
12962        pub fn getStakeAtBlockNumberAndIndex(
12963            &self,
12964            quorumNumber: u8,
12965            blockNumber: u32,
12966            operatorId: alloy::sol_types::private::FixedBytes<32>,
12967            index: alloy::sol_types::private::primitives::aliases::U256,
12968        ) -> alloy_contract::SolCallBuilder<&P, getStakeAtBlockNumberAndIndexCall, N> {
12969            self.call_builder(
12970                &getStakeAtBlockNumberAndIndexCall {
12971                    quorumNumber,
12972                    blockNumber,
12973                    operatorId,
12974                    index,
12975                },
12976            )
12977        }
12978        ///Creates a new call builder for the [`getStakeHistory`] function.
12979        pub fn getStakeHistory(
12980            &self,
12981            operatorId: alloy::sol_types::private::FixedBytes<32>,
12982            quorumNumber: u8,
12983        ) -> alloy_contract::SolCallBuilder<&P, getStakeHistoryCall, N> {
12984            self.call_builder(
12985                &getStakeHistoryCall {
12986                    operatorId,
12987                    quorumNumber,
12988                },
12989            )
12990        }
12991        ///Creates a new call builder for the [`getStakeHistoryLength`] function.
12992        pub fn getStakeHistoryLength(
12993            &self,
12994            operatorId: alloy::sol_types::private::FixedBytes<32>,
12995            quorumNumber: u8,
12996        ) -> alloy_contract::SolCallBuilder<&P, getStakeHistoryLengthCall, N> {
12997            self.call_builder(
12998                &getStakeHistoryLengthCall {
12999                    operatorId,
13000                    quorumNumber,
13001                },
13002            )
13003        }
13004        ///Creates a new call builder for the [`getStakeUpdateAtIndex`] function.
13005        pub fn getStakeUpdateAtIndex(
13006            &self,
13007            quorumNumber: u8,
13008            operatorId: alloy::sol_types::private::FixedBytes<32>,
13009            index: alloy::sol_types::private::primitives::aliases::U256,
13010        ) -> alloy_contract::SolCallBuilder<&P, getStakeUpdateAtIndexCall, N> {
13011            self.call_builder(
13012                &getStakeUpdateAtIndexCall {
13013                    quorumNumber,
13014                    operatorId,
13015                    index,
13016                },
13017            )
13018        }
13019        ///Creates a new call builder for the [`getStakeUpdateIndexAtBlockNumber`] function.
13020        pub fn getStakeUpdateIndexAtBlockNumber(
13021            &self,
13022            operatorId: alloy::sol_types::private::FixedBytes<32>,
13023            quorumNumber: u8,
13024            blockNumber: u32,
13025        ) -> alloy_contract::SolCallBuilder<
13026            &P,
13027            getStakeUpdateIndexAtBlockNumberCall,
13028            N,
13029        > {
13030            self.call_builder(
13031                &getStakeUpdateIndexAtBlockNumberCall {
13032                    operatorId,
13033                    quorumNumber,
13034                    blockNumber,
13035                },
13036            )
13037        }
13038        ///Creates a new call builder for the [`getTotalStakeAtBlockNumberFromIndex`] function.
13039        pub fn getTotalStakeAtBlockNumberFromIndex(
13040            &self,
13041            quorumNumber: u8,
13042            blockNumber: u32,
13043            index: alloy::sol_types::private::primitives::aliases::U256,
13044        ) -> alloy_contract::SolCallBuilder<
13045            &P,
13046            getTotalStakeAtBlockNumberFromIndexCall,
13047            N,
13048        > {
13049            self.call_builder(
13050                &getTotalStakeAtBlockNumberFromIndexCall {
13051                    quorumNumber,
13052                    blockNumber,
13053                    index,
13054                },
13055            )
13056        }
13057        ///Creates a new call builder for the [`getTotalStakeHistoryLength`] function.
13058        pub fn getTotalStakeHistoryLength(
13059            &self,
13060            quorumNumber: u8,
13061        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeHistoryLengthCall, N> {
13062            self.call_builder(
13063                &getTotalStakeHistoryLengthCall {
13064                    quorumNumber,
13065                },
13066            )
13067        }
13068        ///Creates a new call builder for the [`getTotalStakeIndicesAtBlockNumber`] function.
13069        pub fn getTotalStakeIndicesAtBlockNumber(
13070            &self,
13071            blockNumber: u32,
13072            quorumNumbers: alloy::sol_types::private::Bytes,
13073        ) -> alloy_contract::SolCallBuilder<
13074            &P,
13075            getTotalStakeIndicesAtBlockNumberCall,
13076            N,
13077        > {
13078            self.call_builder(
13079                &getTotalStakeIndicesAtBlockNumberCall {
13080                    blockNumber,
13081                    quorumNumbers,
13082                },
13083            )
13084        }
13085        ///Creates a new call builder for the [`getTotalStakeUpdateAtIndex`] function.
13086        pub fn getTotalStakeUpdateAtIndex(
13087            &self,
13088            quorumNumber: u8,
13089            index: alloy::sol_types::private::primitives::aliases::U256,
13090        ) -> alloy_contract::SolCallBuilder<&P, getTotalStakeUpdateAtIndexCall, N> {
13091            self.call_builder(
13092                &getTotalStakeUpdateAtIndexCall {
13093                    quorumNumber,
13094                    index,
13095                },
13096            )
13097        }
13098        ///Creates a new call builder for the [`initializeDelegatedStakeQuorum`] function.
13099        pub fn initializeDelegatedStakeQuorum(
13100            &self,
13101            quorumNumber: u8,
13102            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
13103            _strategyParams: alloy::sol_types::private::Vec<
13104                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
13105            >,
13106        ) -> alloy_contract::SolCallBuilder<&P, initializeDelegatedStakeQuorumCall, N> {
13107            self.call_builder(
13108                &initializeDelegatedStakeQuorumCall {
13109                    quorumNumber,
13110                    minimumStake,
13111                    _strategyParams,
13112                },
13113            )
13114        }
13115        ///Creates a new call builder for the [`initializeSlashableStakeQuorum`] function.
13116        pub fn initializeSlashableStakeQuorum(
13117            &self,
13118            quorumNumber: u8,
13119            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
13120            lookAheadPeriod: u32,
13121            _strategyParams: alloy::sol_types::private::Vec<
13122                <IStakeRegistryTypes::StrategyParams as alloy::sol_types::SolType>::RustType,
13123            >,
13124        ) -> alloy_contract::SolCallBuilder<&P, initializeSlashableStakeQuorumCall, N> {
13125            self.call_builder(
13126                &initializeSlashableStakeQuorumCall {
13127                    quorumNumber,
13128                    minimumStake,
13129                    lookAheadPeriod,
13130                    _strategyParams,
13131                },
13132            )
13133        }
13134        ///Creates a new call builder for the [`minimumStakeForQuorum`] function.
13135        pub fn minimumStakeForQuorum(
13136            &self,
13137            _0: u8,
13138        ) -> alloy_contract::SolCallBuilder<&P, minimumStakeForQuorumCall, N> {
13139            self.call_builder(&minimumStakeForQuorumCall(_0))
13140        }
13141        ///Creates a new call builder for the [`modifyStrategyParams`] function.
13142        pub fn modifyStrategyParams(
13143            &self,
13144            quorumNumber: u8,
13145            strategyIndices: alloy::sol_types::private::Vec<
13146                alloy::sol_types::private::primitives::aliases::U256,
13147            >,
13148            newMultipliers: alloy::sol_types::private::Vec<
13149                alloy::sol_types::private::primitives::aliases::U96,
13150            >,
13151        ) -> alloy_contract::SolCallBuilder<&P, modifyStrategyParamsCall, N> {
13152            self.call_builder(
13153                &modifyStrategyParamsCall {
13154                    quorumNumber,
13155                    strategyIndices,
13156                    newMultipliers,
13157                },
13158            )
13159        }
13160        ///Creates a new call builder for the [`registerOperator`] function.
13161        pub fn registerOperator(
13162            &self,
13163            operator: alloy::sol_types::private::Address,
13164            operatorId: alloy::sol_types::private::FixedBytes<32>,
13165            quorumNumbers: alloy::sol_types::private::Bytes,
13166        ) -> alloy_contract::SolCallBuilder<&P, registerOperatorCall, N> {
13167            self.call_builder(
13168                &registerOperatorCall {
13169                    operator,
13170                    operatorId,
13171                    quorumNumbers,
13172                },
13173            )
13174        }
13175        ///Creates a new call builder for the [`registryCoordinator`] function.
13176        pub fn registryCoordinator(
13177            &self,
13178        ) -> alloy_contract::SolCallBuilder<&P, registryCoordinatorCall, N> {
13179            self.call_builder(&registryCoordinatorCall)
13180        }
13181        ///Creates a new call builder for the [`removeStrategies`] function.
13182        pub fn removeStrategies(
13183            &self,
13184            quorumNumber: u8,
13185            indicesToRemove: alloy::sol_types::private::Vec<
13186                alloy::sol_types::private::primitives::aliases::U256,
13187            >,
13188        ) -> alloy_contract::SolCallBuilder<&P, removeStrategiesCall, N> {
13189            self.call_builder(
13190                &removeStrategiesCall {
13191                    quorumNumber,
13192                    indicesToRemove,
13193                },
13194            )
13195        }
13196        ///Creates a new call builder for the [`setMinimumStakeForQuorum`] function.
13197        pub fn setMinimumStakeForQuorum(
13198            &self,
13199            quorumNumber: u8,
13200            minimumStake: alloy::sol_types::private::primitives::aliases::U96,
13201        ) -> alloy_contract::SolCallBuilder<&P, setMinimumStakeForQuorumCall, N> {
13202            self.call_builder(
13203                &setMinimumStakeForQuorumCall {
13204                    quorumNumber,
13205                    minimumStake,
13206                },
13207            )
13208        }
13209        ///Creates a new call builder for the [`setSlashableStakeLookahead`] function.
13210        pub fn setSlashableStakeLookahead(
13211            &self,
13212            quorumNumber: u8,
13213            _lookAheadBlocks: u32,
13214        ) -> alloy_contract::SolCallBuilder<&P, setSlashableStakeLookaheadCall, N> {
13215            self.call_builder(
13216                &setSlashableStakeLookaheadCall {
13217                    quorumNumber,
13218                    _lookAheadBlocks,
13219                },
13220            )
13221        }
13222        ///Creates a new call builder for the [`slashableStakeLookAheadPerQuorum`] function.
13223        pub fn slashableStakeLookAheadPerQuorum(
13224            &self,
13225            quorumNumber: u8,
13226        ) -> alloy_contract::SolCallBuilder<
13227            &P,
13228            slashableStakeLookAheadPerQuorumCall,
13229            N,
13230        > {
13231            self.call_builder(
13232                &slashableStakeLookAheadPerQuorumCall {
13233                    quorumNumber,
13234                },
13235            )
13236        }
13237        ///Creates a new call builder for the [`stakeTypePerQuorum`] function.
13238        pub fn stakeTypePerQuorum(
13239            &self,
13240            quorumNumber: u8,
13241        ) -> alloy_contract::SolCallBuilder<&P, stakeTypePerQuorumCall, N> {
13242            self.call_builder(
13243                &stakeTypePerQuorumCall {
13244                    quorumNumber,
13245                },
13246            )
13247        }
13248        ///Creates a new call builder for the [`strategiesPerQuorum`] function.
13249        pub fn strategiesPerQuorum(
13250            &self,
13251            quorumNumber: u8,
13252            _1: alloy::sol_types::private::primitives::aliases::U256,
13253        ) -> alloy_contract::SolCallBuilder<&P, strategiesPerQuorumCall, N> {
13254            self.call_builder(
13255                &strategiesPerQuorumCall {
13256                    quorumNumber,
13257                    _1,
13258                },
13259            )
13260        }
13261        ///Creates a new call builder for the [`strategyParams`] function.
13262        pub fn strategyParams(
13263            &self,
13264            quorumNumber: u8,
13265            _1: alloy::sol_types::private::primitives::aliases::U256,
13266        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsCall, N> {
13267            self.call_builder(
13268                &strategyParamsCall {
13269                    quorumNumber,
13270                    _1,
13271                },
13272            )
13273        }
13274        ///Creates a new call builder for the [`strategyParamsByIndex`] function.
13275        pub fn strategyParamsByIndex(
13276            &self,
13277            quorumNumber: u8,
13278            index: alloy::sol_types::private::primitives::aliases::U256,
13279        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsByIndexCall, N> {
13280            self.call_builder(
13281                &strategyParamsByIndexCall {
13282                    quorumNumber,
13283                    index,
13284                },
13285            )
13286        }
13287        ///Creates a new call builder for the [`strategyParamsLength`] function.
13288        pub fn strategyParamsLength(
13289            &self,
13290            quorumNumber: u8,
13291        ) -> alloy_contract::SolCallBuilder<&P, strategyParamsLengthCall, N> {
13292            self.call_builder(
13293                &strategyParamsLengthCall {
13294                    quorumNumber,
13295                },
13296            )
13297        }
13298        ///Creates a new call builder for the [`updateOperatorsStake`] function.
13299        pub fn updateOperatorsStake(
13300            &self,
13301            operators: alloy::sol_types::private::Vec<
13302                alloy::sol_types::private::Address,
13303            >,
13304            operatorIds: alloy::sol_types::private::Vec<
13305                alloy::sol_types::private::FixedBytes<32>,
13306            >,
13307            quorumNumber: u8,
13308        ) -> alloy_contract::SolCallBuilder<&P, updateOperatorsStakeCall, N> {
13309            self.call_builder(
13310                &updateOperatorsStakeCall {
13311                    operators,
13312                    operatorIds,
13313                    quorumNumber,
13314                },
13315            )
13316        }
13317        ///Creates a new call builder for the [`weightOfOperatorForQuorum`] function.
13318        pub fn weightOfOperatorForQuorum(
13319            &self,
13320            quorumNumber: u8,
13321            operator: alloy::sol_types::private::Address,
13322        ) -> alloy_contract::SolCallBuilder<&P, weightOfOperatorForQuorumCall, N> {
13323            self.call_builder(
13324                &weightOfOperatorForQuorumCall {
13325                    quorumNumber,
13326                    operator,
13327                },
13328            )
13329        }
13330    }
13331    /// Event filters.
13332    #[automatically_derived]
13333    impl<
13334        P: alloy_contract::private::Provider<N>,
13335        N: alloy_contract::private::Network,
13336    > StakeRegistryInstance<P, N> {
13337        /// Creates a new event filter using this contract instance's provider and address.
13338        ///
13339        /// Note that the type can be any event, not just those defined in this contract.
13340        /// Prefer using the other methods for building type-safe event filters.
13341        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13342            &self,
13343        ) -> alloy_contract::Event<&P, E, N> {
13344            alloy_contract::Event::new_sol(&self.provider, &self.address)
13345        }
13346        ///Creates a new event filter for the [`LookAheadPeriodChanged`] event.
13347        pub fn LookAheadPeriodChanged_filter(
13348            &self,
13349        ) -> alloy_contract::Event<&P, LookAheadPeriodChanged, N> {
13350            self.event_filter::<LookAheadPeriodChanged>()
13351        }
13352        ///Creates a new event filter for the [`MinimumStakeForQuorumUpdated`] event.
13353        pub fn MinimumStakeForQuorumUpdated_filter(
13354            &self,
13355        ) -> alloy_contract::Event<&P, MinimumStakeForQuorumUpdated, N> {
13356            self.event_filter::<MinimumStakeForQuorumUpdated>()
13357        }
13358        ///Creates a new event filter for the [`OperatorStakeUpdate`] event.
13359        pub fn OperatorStakeUpdate_filter(
13360            &self,
13361        ) -> alloy_contract::Event<&P, OperatorStakeUpdate, N> {
13362            self.event_filter::<OperatorStakeUpdate>()
13363        }
13364        ///Creates a new event filter for the [`QuorumCreated`] event.
13365        pub fn QuorumCreated_filter(
13366            &self,
13367        ) -> alloy_contract::Event<&P, QuorumCreated, N> {
13368            self.event_filter::<QuorumCreated>()
13369        }
13370        ///Creates a new event filter for the [`StakeTypeSet`] event.
13371        pub fn StakeTypeSet_filter(&self) -> alloy_contract::Event<&P, StakeTypeSet, N> {
13372            self.event_filter::<StakeTypeSet>()
13373        }
13374        ///Creates a new event filter for the [`StrategyAddedToQuorum`] event.
13375        pub fn StrategyAddedToQuorum_filter(
13376            &self,
13377        ) -> alloy_contract::Event<&P, StrategyAddedToQuorum, N> {
13378            self.event_filter::<StrategyAddedToQuorum>()
13379        }
13380        ///Creates a new event filter for the [`StrategyMultiplierUpdated`] event.
13381        pub fn StrategyMultiplierUpdated_filter(
13382            &self,
13383        ) -> alloy_contract::Event<&P, StrategyMultiplierUpdated, N> {
13384            self.event_filter::<StrategyMultiplierUpdated>()
13385        }
13386        ///Creates a new event filter for the [`StrategyRemovedFromQuorum`] event.
13387        pub fn StrategyRemovedFromQuorum_filter(
13388            &self,
13389        ) -> alloy_contract::Event<&P, StrategyRemovedFromQuorum, N> {
13390            self.event_filter::<StrategyRemovedFromQuorum>()
13391        }
13392    }
13393}