Skip to main content

hotshot_contract_adapter/bindings/
stake_table_v2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    /**```solidity
168struct G1Point { BaseField x; BaseField y; }
169```*/
170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
171    #[derive(Clone)]
172    pub struct G1Point {
173        #[allow(missing_docs)]
174        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
175        #[allow(missing_docs)]
176        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[doc(hidden)]
187        #[allow(dead_code)]
188        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
189        #[doc(hidden)]
190        type UnderlyingRustTuple<'a> = (
191            <BaseField as alloy::sol_types::SolType>::RustType,
192            <BaseField as alloy::sol_types::SolType>::RustType,
193        );
194        #[cfg(test)]
195        #[allow(dead_code, unreachable_patterns)]
196        fn _type_assertion(
197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
198        ) {
199            match _t {
200                alloy_sol_types::private::AssertTypeEq::<
201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
202                >(_) => {}
203            }
204        }
205        #[automatically_derived]
206        #[doc(hidden)]
207        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
208            fn from(value: G1Point) -> Self {
209                (value.x, value.y)
210            }
211        }
212        #[automatically_derived]
213        #[doc(hidden)]
214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
216                Self { x: tuple.0, y: tuple.1 }
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolValue for G1Point {
221            type SolType = Self;
222        }
223        #[automatically_derived]
224        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
225            #[inline]
226            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
227                (
228                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
230                )
231            }
232            #[inline]
233            fn stv_abi_encoded_size(&self) -> usize {
234                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
235                    return size;
236                }
237                let tuple = <UnderlyingRustTuple<
238                    '_,
239                > as ::core::convert::From<Self>>::from(self.clone());
240                <UnderlyingSolTuple<
241                    '_,
242                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
243            }
244            #[inline]
245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
246                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
247            }
248            #[inline]
249            fn stv_abi_encode_packed_to(
250                &self,
251                out: &mut alloy_sol_types::private::Vec<u8>,
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_encode_packed_to(&tuple, out)
259            }
260            #[inline]
261            fn stv_abi_packed_encoded_size(&self) -> usize {
262                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
263                    return size;
264                }
265                let tuple = <UnderlyingRustTuple<
266                    '_,
267                > as ::core::convert::From<Self>>::from(self.clone());
268                <UnderlyingSolTuple<
269                    '_,
270                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
271            }
272        }
273        #[automatically_derived]
274        impl alloy_sol_types::SolType for G1Point {
275            type RustType = Self;
276            type Token<'a> = <UnderlyingSolTuple<
277                'a,
278            > as alloy_sol_types::SolType>::Token<'a>;
279            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
280            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
281                '_,
282            > as alloy_sol_types::SolType>::ENCODED_SIZE;
283            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
284                '_,
285            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
286            #[inline]
287            fn valid_token(token: &Self::Token<'_>) -> bool {
288                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
289            }
290            #[inline]
291            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
292                let tuple = <UnderlyingSolTuple<
293                    '_,
294                > as alloy_sol_types::SolType>::detokenize(token);
295                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolStruct for G1Point {
300            const NAME: &'static str = "G1Point";
301            #[inline]
302            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
303                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
304            }
305            #[inline]
306            fn eip712_components() -> alloy_sol_types::private::Vec<
307                alloy_sol_types::private::Cow<'static, str>,
308            > {
309                alloy_sol_types::private::Vec::new()
310            }
311            #[inline]
312            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
313                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
314            }
315            #[inline]
316            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
317                [
318                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
320                ]
321                    .concat()
322            }
323        }
324        #[automatically_derived]
325        impl alloy_sol_types::EventTopic for G1Point {
326            #[inline]
327            fn topic_preimage_length(rust: &Self::RustType) -> usize {
328                0usize
329                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.x,
331                    )
332                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
333                        &rust.y,
334                    )
335            }
336            #[inline]
337            fn encode_topic_preimage(
338                rust: &Self::RustType,
339                out: &mut alloy_sol_types::private::Vec<u8>,
340            ) {
341                out.reserve(
342                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
343                );
344                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
345                    &rust.x,
346                    out,
347                );
348                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
349                    &rust.y,
350                    out,
351                );
352            }
353            #[inline]
354            fn encode_topic(
355                rust: &Self::RustType,
356            ) -> alloy_sol_types::abi::token::WordToken {
357                let mut out = alloy_sol_types::private::Vec::new();
358                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
359                    rust,
360                    &mut out,
361                );
362                alloy_sol_types::abi::token::WordToken(
363                    alloy_sol_types::private::keccak256(out),
364                )
365            }
366        }
367    };
368    #[derive(serde::Serialize, serde::Deserialize)]
369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
370    /**```solidity
371struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
372```*/
373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
374    #[derive(Clone)]
375    pub struct G2Point {
376        #[allow(missing_docs)]
377        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
378        #[allow(missing_docs)]
379        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
380        #[allow(missing_docs)]
381        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
382        #[allow(missing_docs)]
383        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
384    }
385    #[allow(
386        non_camel_case_types,
387        non_snake_case,
388        clippy::pub_underscore_fields,
389        clippy::style
390    )]
391    const _: () = {
392        use alloy::sol_types as alloy_sol_types;
393        #[doc(hidden)]
394        #[allow(dead_code)]
395        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
396        #[doc(hidden)]
397        type UnderlyingRustTuple<'a> = (
398            <BaseField as alloy::sol_types::SolType>::RustType,
399            <BaseField as alloy::sol_types::SolType>::RustType,
400            <BaseField as alloy::sol_types::SolType>::RustType,
401            <BaseField as alloy::sol_types::SolType>::RustType,
402        );
403        #[cfg(test)]
404        #[allow(dead_code, unreachable_patterns)]
405        fn _type_assertion(
406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407        ) {
408            match _t {
409                alloy_sol_types::private::AssertTypeEq::<
410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                >(_) => {}
412            }
413        }
414        #[automatically_derived]
415        #[doc(hidden)]
416        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
417            fn from(value: G2Point) -> Self {
418                (value.x0, value.x1, value.y0, value.y1)
419            }
420        }
421        #[automatically_derived]
422        #[doc(hidden)]
423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                Self {
426                    x0: tuple.0,
427                    x1: tuple.1,
428                    y0: tuple.2,
429                    y1: tuple.3,
430                }
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolValue for G2Point {
435            type SolType = Self;
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
439            #[inline]
440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
441                (
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
446                )
447            }
448            #[inline]
449            fn stv_abi_encoded_size(&self) -> usize {
450                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
451                    return size;
452                }
453                let tuple = <UnderlyingRustTuple<
454                    '_,
455                > as ::core::convert::From<Self>>::from(self.clone());
456                <UnderlyingSolTuple<
457                    '_,
458                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
459            }
460            #[inline]
461            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
462                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
463            }
464            #[inline]
465            fn stv_abi_encode_packed_to(
466                &self,
467                out: &mut alloy_sol_types::private::Vec<u8>,
468            ) {
469                let tuple = <UnderlyingRustTuple<
470                    '_,
471                > as ::core::convert::From<Self>>::from(self.clone());
472                <UnderlyingSolTuple<
473                    '_,
474                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
475            }
476            #[inline]
477            fn stv_abi_packed_encoded_size(&self) -> usize {
478                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
479                    return size;
480                }
481                let tuple = <UnderlyingRustTuple<
482                    '_,
483                > as ::core::convert::From<Self>>::from(self.clone());
484                <UnderlyingSolTuple<
485                    '_,
486                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
487            }
488        }
489        #[automatically_derived]
490        impl alloy_sol_types::SolType for G2Point {
491            type RustType = Self;
492            type Token<'a> = <UnderlyingSolTuple<
493                'a,
494            > as alloy_sol_types::SolType>::Token<'a>;
495            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
496            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
497                '_,
498            > as alloy_sol_types::SolType>::ENCODED_SIZE;
499            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
500                '_,
501            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
502            #[inline]
503            fn valid_token(token: &Self::Token<'_>) -> bool {
504                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
505            }
506            #[inline]
507            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
508                let tuple = <UnderlyingSolTuple<
509                    '_,
510                > as alloy_sol_types::SolType>::detokenize(token);
511                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
512            }
513        }
514        #[automatically_derived]
515        impl alloy_sol_types::SolStruct for G2Point {
516            const NAME: &'static str = "G2Point";
517            #[inline]
518            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
519                alloy_sol_types::private::Cow::Borrowed(
520                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
521                )
522            }
523            #[inline]
524            fn eip712_components() -> alloy_sol_types::private::Vec<
525                alloy_sol_types::private::Cow<'static, str>,
526            > {
527                alloy_sol_types::private::Vec::new()
528            }
529            #[inline]
530            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
531                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
532            }
533            #[inline]
534            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
535                [
536                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
537                        .0,
538                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
539                        .0,
540                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
541                        .0,
542                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
543                ]
544                    .concat()
545            }
546        }
547        #[automatically_derived]
548        impl alloy_sol_types::EventTopic for G2Point {
549            #[inline]
550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
551                0usize
552                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
553                        &rust.x0,
554                    )
555                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.x1,
557                    )
558                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
559                        &rust.y0,
560                    )
561                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
562                        &rust.y1,
563                    )
564            }
565            #[inline]
566            fn encode_topic_preimage(
567                rust: &Self::RustType,
568                out: &mut alloy_sol_types::private::Vec<u8>,
569            ) {
570                out.reserve(
571                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
572                );
573                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.x0,
575                    out,
576                );
577                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    &rust.x1,
579                    out,
580                );
581                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.y0,
583                    out,
584                );
585                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.y1,
587                    out,
588                );
589            }
590            #[inline]
591            fn encode_topic(
592                rust: &Self::RustType,
593            ) -> alloy_sol_types::abi::token::WordToken {
594                let mut out = alloy_sol_types::private::Vec::new();
595                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
596                    rust,
597                    &mut out,
598                );
599                alloy_sol_types::abi::token::WordToken(
600                    alloy_sol_types::private::keccak256(out),
601                )
602            }
603        }
604    };
605    use alloy::contract as alloy_contract;
606    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
607
608See the [wrapper's documentation](`BN254Instance`) for more details.*/
609    #[inline]
610    pub const fn new<
611        P: alloy_contract::private::Provider<N>,
612        N: alloy_contract::private::Network,
613    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
614        BN254Instance::<P, N>::new(address, __provider)
615    }
616    /**A [`BN254`](self) instance.
617
618Contains type-safe methods for interacting with an on-chain instance of the
619[`BN254`](self) contract located at a given `address`, using a given
620provider `P`.
621
622If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
623documentation on how to provide it), the `deploy` and `deploy_builder` methods can
624be used to deploy a new instance of the contract.
625
626See the [module-level documentation](self) for all the available methods.*/
627    #[derive(Clone)]
628    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
629        address: alloy_sol_types::private::Address,
630        provider: P,
631        _network: ::core::marker::PhantomData<N>,
632    }
633    #[automatically_derived]
634    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
635        #[inline]
636        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
637            f.debug_tuple("BN254Instance").field(&self.address).finish()
638        }
639    }
640    /// Instantiation and getters/setters.
641    impl<
642        P: alloy_contract::private::Provider<N>,
643        N: alloy_contract::private::Network,
644    > BN254Instance<P, N> {
645        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
646
647See the [wrapper's documentation](`BN254Instance`) for more details.*/
648        #[inline]
649        pub const fn new(
650            address: alloy_sol_types::private::Address,
651            __provider: P,
652        ) -> Self {
653            Self {
654                address,
655                provider: __provider,
656                _network: ::core::marker::PhantomData,
657            }
658        }
659        /// Returns a reference to the address.
660        #[inline]
661        pub const fn address(&self) -> &alloy_sol_types::private::Address {
662            &self.address
663        }
664        /// Sets the address.
665        #[inline]
666        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
667            self.address = address;
668        }
669        /// Sets the address and returns `self`.
670        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
671            self.set_address(address);
672            self
673        }
674        /// Returns a reference to the provider.
675        #[inline]
676        pub const fn provider(&self) -> &P {
677            &self.provider
678        }
679    }
680    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
681        /// Clones the provider and returns a new instance with the cloned provider.
682        #[inline]
683        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
684            BN254Instance {
685                address: self.address,
686                provider: ::core::clone::Clone::clone(&self.provider),
687                _network: ::core::marker::PhantomData,
688            }
689        }
690    }
691    /// Function calls.
692    impl<
693        P: alloy_contract::private::Provider<N>,
694        N: alloy_contract::private::Network,
695    > BN254Instance<P, N> {
696        /// Creates a new call builder using this contract instance's provider and address.
697        ///
698        /// Note that the call can be any function call, not just those defined in this
699        /// contract. Prefer using the other methods for building type-safe contract calls.
700        pub fn call_builder<C: alloy_sol_types::SolCall>(
701            &self,
702            call: &C,
703        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
704            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
705        }
706    }
707    /// Event filters.
708    impl<
709        P: alloy_contract::private::Provider<N>,
710        N: alloy_contract::private::Network,
711    > BN254Instance<P, N> {
712        /// Creates a new event filter using this contract instance's provider and address.
713        ///
714        /// Note that the type can be any event, not just those defined in this contract.
715        /// Prefer using the other methods for building type-safe event filters.
716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
717            &self,
718        ) -> alloy_contract::Event<&P, E, N> {
719            alloy_contract::Event::new_sol(&self.provider, &self.address)
720        }
721    }
722}
723///Module containing a contract's types and functions.
724/**
725
726```solidity
727library EdOnBN254 {
728    struct EdOnBN254Point { uint256 x; uint256 y; }
729}
730```*/
731#[allow(
732    non_camel_case_types,
733    non_snake_case,
734    clippy::pub_underscore_fields,
735    clippy::style,
736    clippy::empty_structs_with_brackets
737)]
738pub mod EdOnBN254 {
739    use super::*;
740    use alloy::sol_types as alloy_sol_types;
741    #[derive(serde::Serialize, serde::Deserialize)]
742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
743    /**```solidity
744struct EdOnBN254Point { uint256 x; uint256 y; }
745```*/
746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
747    #[derive(Clone)]
748    pub struct EdOnBN254Point {
749        #[allow(missing_docs)]
750        pub x: alloy::sol_types::private::primitives::aliases::U256,
751        #[allow(missing_docs)]
752        pub y: alloy::sol_types::private::primitives::aliases::U256,
753    }
754    #[allow(
755        non_camel_case_types,
756        non_snake_case,
757        clippy::pub_underscore_fields,
758        clippy::style
759    )]
760    const _: () = {
761        use alloy::sol_types as alloy_sol_types;
762        #[doc(hidden)]
763        #[allow(dead_code)]
764        type UnderlyingSolTuple<'a> = (
765            alloy::sol_types::sol_data::Uint<256>,
766            alloy::sol_types::sol_data::Uint<256>,
767        );
768        #[doc(hidden)]
769        type UnderlyingRustTuple<'a> = (
770            alloy::sol_types::private::primitives::aliases::U256,
771            alloy::sol_types::private::primitives::aliases::U256,
772        );
773        #[cfg(test)]
774        #[allow(dead_code, unreachable_patterns)]
775        fn _type_assertion(
776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
777        ) {
778            match _t {
779                alloy_sol_types::private::AssertTypeEq::<
780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
781                >(_) => {}
782            }
783        }
784        #[automatically_derived]
785        #[doc(hidden)]
786        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
787            fn from(value: EdOnBN254Point) -> Self {
788                (value.x, value.y)
789            }
790        }
791        #[automatically_derived]
792        #[doc(hidden)]
793        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
794            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
795                Self { x: tuple.0, y: tuple.1 }
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolValue for EdOnBN254Point {
800            type SolType = Self;
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
804            #[inline]
805            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
806                (
807                    <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::SolType>::tokenize(&self.x),
810                    <alloy::sol_types::sol_data::Uint<
811                        256,
812                    > as alloy_sol_types::SolType>::tokenize(&self.y),
813                )
814            }
815            #[inline]
816            fn stv_abi_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
818                    return size;
819                }
820                let tuple = <UnderlyingRustTuple<
821                    '_,
822                > as ::core::convert::From<Self>>::from(self.clone());
823                <UnderlyingSolTuple<
824                    '_,
825                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
826            }
827            #[inline]
828            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
829                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
830            }
831            #[inline]
832            fn stv_abi_encode_packed_to(
833                &self,
834                out: &mut alloy_sol_types::private::Vec<u8>,
835            ) {
836                let tuple = <UnderlyingRustTuple<
837                    '_,
838                > as ::core::convert::From<Self>>::from(self.clone());
839                <UnderlyingSolTuple<
840                    '_,
841                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
842            }
843            #[inline]
844            fn stv_abi_packed_encoded_size(&self) -> usize {
845                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
846                    return size;
847                }
848                let tuple = <UnderlyingRustTuple<
849                    '_,
850                > as ::core::convert::From<Self>>::from(self.clone());
851                <UnderlyingSolTuple<
852                    '_,
853                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
854            }
855        }
856        #[automatically_derived]
857        impl alloy_sol_types::SolType for EdOnBN254Point {
858            type RustType = Self;
859            type Token<'a> = <UnderlyingSolTuple<
860                'a,
861            > as alloy_sol_types::SolType>::Token<'a>;
862            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
863            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
864                '_,
865            > as alloy_sol_types::SolType>::ENCODED_SIZE;
866            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
867                '_,
868            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
869            #[inline]
870            fn valid_token(token: &Self::Token<'_>) -> bool {
871                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
872            }
873            #[inline]
874            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
875                let tuple = <UnderlyingSolTuple<
876                    '_,
877                > as alloy_sol_types::SolType>::detokenize(token);
878                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
879            }
880        }
881        #[automatically_derived]
882        impl alloy_sol_types::SolStruct for EdOnBN254Point {
883            const NAME: &'static str = "EdOnBN254Point";
884            #[inline]
885            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
886                alloy_sol_types::private::Cow::Borrowed(
887                    "EdOnBN254Point(uint256 x,uint256 y)",
888                )
889            }
890            #[inline]
891            fn eip712_components() -> alloy_sol_types::private::Vec<
892                alloy_sol_types::private::Cow<'static, str>,
893            > {
894                alloy_sol_types::private::Vec::new()
895            }
896            #[inline]
897            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
898                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
899            }
900            #[inline]
901            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
902                [
903                    <alloy::sol_types::sol_data::Uint<
904                        256,
905                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
906                        .0,
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
910                        .0,
911                ]
912                    .concat()
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::EventTopic for EdOnBN254Point {
917            #[inline]
918            fn topic_preimage_length(rust: &Self::RustType) -> usize {
919                0usize
920                    + <alloy::sol_types::sol_data::Uint<
921                        256,
922                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
923                    + <alloy::sol_types::sol_data::Uint<
924                        256,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
926            }
927            #[inline]
928            fn encode_topic_preimage(
929                rust: &Self::RustType,
930                out: &mut alloy_sol_types::private::Vec<u8>,
931            ) {
932                out.reserve(
933                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
934                );
935                <alloy::sol_types::sol_data::Uint<
936                    256,
937                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
938                <alloy::sol_types::sol_data::Uint<
939                    256,
940                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
941            }
942            #[inline]
943            fn encode_topic(
944                rust: &Self::RustType,
945            ) -> alloy_sol_types::abi::token::WordToken {
946                let mut out = alloy_sol_types::private::Vec::new();
947                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
948                    rust,
949                    &mut out,
950                );
951                alloy_sol_types::abi::token::WordToken(
952                    alloy_sol_types::private::keccak256(out),
953                )
954            }
955        }
956    };
957    use alloy::contract as alloy_contract;
958    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
959
960See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
961    #[inline]
962    pub const fn new<
963        P: alloy_contract::private::Provider<N>,
964        N: alloy_contract::private::Network,
965    >(
966        address: alloy_sol_types::private::Address,
967        __provider: P,
968    ) -> EdOnBN254Instance<P, N> {
969        EdOnBN254Instance::<P, N>::new(address, __provider)
970    }
971    /**A [`EdOnBN254`](self) instance.
972
973Contains type-safe methods for interacting with an on-chain instance of the
974[`EdOnBN254`](self) contract located at a given `address`, using a given
975provider `P`.
976
977If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
978documentation on how to provide it), the `deploy` and `deploy_builder` methods can
979be used to deploy a new instance of the contract.
980
981See the [module-level documentation](self) for all the available methods.*/
982    #[derive(Clone)]
983    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
984        address: alloy_sol_types::private::Address,
985        provider: P,
986        _network: ::core::marker::PhantomData<N>,
987    }
988    #[automatically_derived]
989    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
990        #[inline]
991        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
992            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
993        }
994    }
995    /// Instantiation and getters/setters.
996    impl<
997        P: alloy_contract::private::Provider<N>,
998        N: alloy_contract::private::Network,
999    > EdOnBN254Instance<P, N> {
1000        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1001
1002See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1003        #[inline]
1004        pub const fn new(
1005            address: alloy_sol_types::private::Address,
1006            __provider: P,
1007        ) -> Self {
1008            Self {
1009                address,
1010                provider: __provider,
1011                _network: ::core::marker::PhantomData,
1012            }
1013        }
1014        /// Returns a reference to the address.
1015        #[inline]
1016        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1017            &self.address
1018        }
1019        /// Sets the address.
1020        #[inline]
1021        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1022            self.address = address;
1023        }
1024        /// Sets the address and returns `self`.
1025        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1026            self.set_address(address);
1027            self
1028        }
1029        /// Returns a reference to the provider.
1030        #[inline]
1031        pub const fn provider(&self) -> &P {
1032            &self.provider
1033        }
1034    }
1035    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1036        /// Clones the provider and returns a new instance with the cloned provider.
1037        #[inline]
1038        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1039            EdOnBN254Instance {
1040                address: self.address,
1041                provider: ::core::clone::Clone::clone(&self.provider),
1042                _network: ::core::marker::PhantomData,
1043            }
1044        }
1045    }
1046    /// Function calls.
1047    impl<
1048        P: alloy_contract::private::Provider<N>,
1049        N: alloy_contract::private::Network,
1050    > EdOnBN254Instance<P, N> {
1051        /// Creates a new call builder using this contract instance's provider and address.
1052        ///
1053        /// Note that the call can be any function call, not just those defined in this
1054        /// contract. Prefer using the other methods for building type-safe contract calls.
1055        pub fn call_builder<C: alloy_sol_types::SolCall>(
1056            &self,
1057            call: &C,
1058        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1059            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1060        }
1061    }
1062    /// Event filters.
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > EdOnBN254Instance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078///Module containing a contract's types and functions.
1079/**
1080
1081```solidity
1082library StakeTable {
1083    type ValidatorStatus is uint8;
1084}
1085```*/
1086#[allow(
1087    non_camel_case_types,
1088    non_snake_case,
1089    clippy::pub_underscore_fields,
1090    clippy::style,
1091    clippy::empty_structs_with_brackets
1092)]
1093pub mod StakeTable {
1094    use super::*;
1095    use alloy::sol_types as alloy_sol_types;
1096    #[derive(serde::Serialize, serde::Deserialize)]
1097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1099    #[derive(Clone)]
1100    pub struct ValidatorStatus(u8);
1101    const _: () = {
1102        use alloy::sol_types as alloy_sol_types;
1103        #[automatically_derived]
1104        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1105            #[inline]
1106            fn stv_to_tokens(
1107                &self,
1108            ) -> <alloy::sol_types::sol_data::Uint<
1109                8,
1110            > as alloy_sol_types::SolType>::Token<'_> {
1111                alloy_sol_types::private::SolTypeValue::<
1112                    alloy::sol_types::sol_data::Uint<8>,
1113                >::stv_to_tokens(self)
1114            }
1115            #[inline]
1116            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1117                <alloy::sol_types::sol_data::Uint<
1118                    8,
1119                > as alloy_sol_types::SolType>::tokenize(self)
1120                    .0
1121            }
1122            #[inline]
1123            fn stv_abi_encode_packed_to(
1124                &self,
1125                out: &mut alloy_sol_types::private::Vec<u8>,
1126            ) {
1127                <alloy::sol_types::sol_data::Uint<
1128                    8,
1129                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1130            }
1131            #[inline]
1132            fn stv_abi_packed_encoded_size(&self) -> usize {
1133                <alloy::sol_types::sol_data::Uint<
1134                    8,
1135                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1136            }
1137        }
1138        impl ValidatorStatus {
1139            /// The Solidity type name.
1140            pub const NAME: &'static str = stringify!(@ name);
1141            /// Convert from the underlying value type.
1142            #[inline]
1143            pub const fn from_underlying(value: u8) -> Self {
1144                Self(value)
1145            }
1146            /// Return the underlying value.
1147            #[inline]
1148            pub const fn into_underlying(self) -> u8 {
1149                self.0
1150            }
1151            /// Return the single encoding of this value, delegating to the
1152            /// underlying type.
1153            #[inline]
1154            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1155                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1156            }
1157            /// Return the packed encoding of this value, delegating to the
1158            /// underlying type.
1159            #[inline]
1160            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1161                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1162            }
1163        }
1164        #[automatically_derived]
1165        impl From<u8> for ValidatorStatus {
1166            fn from(value: u8) -> Self {
1167                Self::from_underlying(value)
1168            }
1169        }
1170        #[automatically_derived]
1171        impl From<ValidatorStatus> for u8 {
1172            fn from(value: ValidatorStatus) -> Self {
1173                value.into_underlying()
1174            }
1175        }
1176        #[automatically_derived]
1177        impl alloy_sol_types::SolType for ValidatorStatus {
1178            type RustType = u8;
1179            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1180                8,
1181            > as alloy_sol_types::SolType>::Token<'a>;
1182            const SOL_NAME: &'static str = Self::NAME;
1183            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1184                8,
1185            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1186            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1189            #[inline]
1190            fn valid_token(token: &Self::Token<'_>) -> bool {
1191                Self::type_check(token).is_ok()
1192            }
1193            #[inline]
1194            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::SolType>::type_check(token)
1198            }
1199            #[inline]
1200            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1201                <alloy::sol_types::sol_data::Uint<
1202                    8,
1203                > as alloy_sol_types::SolType>::detokenize(token)
1204            }
1205        }
1206        #[automatically_derived]
1207        impl alloy_sol_types::EventTopic for ValidatorStatus {
1208            #[inline]
1209            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1210                <alloy::sol_types::sol_data::Uint<
1211                    8,
1212                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1213            }
1214            #[inline]
1215            fn encode_topic_preimage(
1216                rust: &Self::RustType,
1217                out: &mut alloy_sol_types::private::Vec<u8>,
1218            ) {
1219                <alloy::sol_types::sol_data::Uint<
1220                    8,
1221                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1222            }
1223            #[inline]
1224            fn encode_topic(
1225                rust: &Self::RustType,
1226            ) -> alloy_sol_types::abi::token::WordToken {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1230            }
1231        }
1232    };
1233    use alloy::contract as alloy_contract;
1234    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1235
1236See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1237    #[inline]
1238    pub const fn new<
1239        P: alloy_contract::private::Provider<N>,
1240        N: alloy_contract::private::Network,
1241    >(
1242        address: alloy_sol_types::private::Address,
1243        __provider: P,
1244    ) -> StakeTableInstance<P, N> {
1245        StakeTableInstance::<P, N>::new(address, __provider)
1246    }
1247    /**A [`StakeTable`](self) instance.
1248
1249Contains type-safe methods for interacting with an on-chain instance of the
1250[`StakeTable`](self) contract located at a given `address`, using a given
1251provider `P`.
1252
1253If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1254documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1255be used to deploy a new instance of the contract.
1256
1257See the [module-level documentation](self) for all the available methods.*/
1258    #[derive(Clone)]
1259    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1260        address: alloy_sol_types::private::Address,
1261        provider: P,
1262        _network: ::core::marker::PhantomData<N>,
1263    }
1264    #[automatically_derived]
1265    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1266        #[inline]
1267        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1268            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1269        }
1270    }
1271    /// Instantiation and getters/setters.
1272    impl<
1273        P: alloy_contract::private::Provider<N>,
1274        N: alloy_contract::private::Network,
1275    > StakeTableInstance<P, N> {
1276        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1277
1278See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1279        #[inline]
1280        pub const fn new(
1281            address: alloy_sol_types::private::Address,
1282            __provider: P,
1283        ) -> Self {
1284            Self {
1285                address,
1286                provider: __provider,
1287                _network: ::core::marker::PhantomData,
1288            }
1289        }
1290        /// Returns a reference to the address.
1291        #[inline]
1292        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1293            &self.address
1294        }
1295        /// Sets the address.
1296        #[inline]
1297        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1298            self.address = address;
1299        }
1300        /// Sets the address and returns `self`.
1301        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1302            self.set_address(address);
1303            self
1304        }
1305        /// Returns a reference to the provider.
1306        #[inline]
1307        pub const fn provider(&self) -> &P {
1308            &self.provider
1309        }
1310    }
1311    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1312        /// Clones the provider and returns a new instance with the cloned provider.
1313        #[inline]
1314        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1315            StakeTableInstance {
1316                address: self.address,
1317                provider: ::core::clone::Clone::clone(&self.provider),
1318                _network: ::core::marker::PhantomData,
1319            }
1320        }
1321    }
1322    /// Function calls.
1323    impl<
1324        P: alloy_contract::private::Provider<N>,
1325        N: alloy_contract::private::Network,
1326    > StakeTableInstance<P, N> {
1327        /// Creates a new call builder using this contract instance's provider and address.
1328        ///
1329        /// Note that the call can be any function call, not just those defined in this
1330        /// contract. Prefer using the other methods for building type-safe contract calls.
1331        pub fn call_builder<C: alloy_sol_types::SolCall>(
1332            &self,
1333            call: &C,
1334        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1335            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1336        }
1337    }
1338    /// Event filters.
1339    impl<
1340        P: alloy_contract::private::Provider<N>,
1341        N: alloy_contract::private::Network,
1342    > StakeTableInstance<P, N> {
1343        /// Creates a new event filter using this contract instance's provider and address.
1344        ///
1345        /// Note that the type can be any event, not just those defined in this contract.
1346        /// Prefer using the other methods for building type-safe event filters.
1347        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1348            &self,
1349        ) -> alloy_contract::Event<&P, E, N> {
1350            alloy_contract::Event::new_sol(&self.provider, &self.address)
1351        }
1352    }
1353}
1354/**
1355
1356Generated by the following Solidity interface...
1357```solidity
1358library BN254 {
1359    type BaseField is uint256;
1360    struct G1Point {
1361        BaseField x;
1362        BaseField y;
1363    }
1364    struct G2Point {
1365        BaseField x0;
1366        BaseField x1;
1367        BaseField y0;
1368        BaseField y1;
1369    }
1370}
1371
1372library EdOnBN254 {
1373    struct EdOnBN254Point {
1374        uint256 x;
1375        uint256 y;
1376    }
1377}
1378
1379library StakeTable {
1380    type ValidatorStatus is uint8;
1381}
1382
1383interface StakeTableV2 {
1384    struct InitialCommission {
1385        address validator;
1386        uint16 commission;
1387    }
1388
1389    error AccessControlBadConfirmation();
1390    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1391    error AddressEmptyCode(address target);
1392    error BLSSigIsInfinity();
1393    error BLSSigVerificationFailed();
1394    error BLSVKIsInfinity();
1395    error BN254PairingProdFailed();
1396    error BlsKeyAlreadyUsed();
1397    error CommissionAlreadyInitialized(address validator);
1398    error CommissionIncreaseExceedsMax();
1399    error CommissionUnchanged();
1400    error CommissionUpdateTooSoon();
1401    error DefaultAdminCannotBeRenounced();
1402    error DefaultAdminCannotBeRevoked();
1403    error DelegateAmountTooSmall();
1404    error DeprecatedFunction();
1405    error ERC1967InvalidImplementation(address implementation);
1406    error ERC1967NonPayable();
1407    error EnforcedPause();
1408    error ExitEscrowPeriodInvalid();
1409    error ExpectedPause();
1410    error FailedInnerCall();
1411    error InitialActiveStakeExceedsBalance();
1412    error InsufficientAllowance(uint256, uint256);
1413    error InsufficientBalance(uint256);
1414    error InvalidCommission();
1415    error InvalidG1();
1416    error InvalidInitialization();
1417    error InvalidMetadataUriLength();
1418    error InvalidRateLimitParameters();
1419    error InvalidSchnorrSig();
1420    error InvalidSchnorrVK();
1421    error MinDelegateAmountTooSmall();
1422    error NoUndelegationFound();
1423    error NotInitializing();
1424    error NothingToWithdraw();
1425    error OwnableInvalidOwner(address owner);
1426    error OwnableUnauthorizedAccount(address account);
1427    error OwnershipCannotBeRenounced();
1428    error PowPrecompileFailed();
1429    error PrematureWithdrawal();
1430    error SchnorrKeyAlreadyUsed();
1431    error UUPSUnauthorizedCallContext();
1432    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1433    error UndelegationAlreadyExists();
1434    error ValidatorAlreadyExited();
1435    error ValidatorAlreadyRegistered();
1436    error ValidatorInactive();
1437    error ValidatorNotExited();
1438    error ZeroAddress();
1439    error ZeroAmount();
1440
1441    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1442    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1443    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1444    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1445    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1446    event Initialized(uint64 version);
1447    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1448    event MetadataUriUpdated(address indexed validator, string metadataUri);
1449    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1450    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1451    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1452    event Paused(address account);
1453    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1454    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1455    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1456    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1457    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1458    event Unpaused(address account);
1459    event Upgraded(address indexed implementation);
1460    event ValidatorExit(address indexed validator);
1461    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1462    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1463    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1464    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1465    event Withdrawal(address indexed account, uint256 amount);
1466    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1467
1468    constructor();
1469
1470    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1471    function MAX_COMMISSION_BPS() external view returns (uint16);
1472    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1473    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1474    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1475    function PAUSER_ROLE() external view returns (bytes32);
1476    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1477    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1478    function activeStake() external view returns (uint256);
1479    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1480    function claimValidatorExit(address validator) external;
1481    function claimWithdrawal(address validator) external;
1482    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1483    function delegate(address validator, uint256 amount) external;
1484    function delegations(address validator, address delegator) external view returns (uint256 amount);
1485    function deregisterValidator() external;
1486    function exitEscrowPeriod() external view returns (uint256);
1487    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1488    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1489    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1490    function grantRole(bytes32 role, address account) external;
1491    function hasRole(bytes32 role, address account) external view returns (bool);
1492    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1493    function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
1494    function initializedAtBlock() external view returns (uint256);
1495    function lightClient() external view returns (address);
1496    function maxCommissionIncrease() external view returns (uint16);
1497    function minCommissionIncreaseInterval() external view returns (uint256);
1498    function minDelegateAmount() external view returns (uint256);
1499    function owner() external view returns (address);
1500    function pause() external;
1501    function paused() external view returns (bool);
1502    function proxiableUUID() external view returns (bytes32);
1503    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1504    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
1505    function renounceOwnership() external;
1506    function renounceRole(bytes32 role, address callerConfirmation) external;
1507    function revokeRole(bytes32 role, address account) external;
1508    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1509    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1510    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1511    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1512    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1513    function token() external view returns (address);
1514    function transferOwnership(address newOwner) external;
1515    function undelegate(address validator, uint256 amount) external;
1516    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1517    function unpause() external;
1518    function updateCommission(uint16 newCommission) external;
1519    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1520    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1521    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1522    function updateMetadataUri(string memory metadataUri) external;
1523    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1524    function validateMetadataUri(string memory metadataUri) external pure;
1525    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1526    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1527}
1528```
1529
1530...which was generated by the following JSON ABI:
1531```json
1532[
1533  {
1534    "type": "constructor",
1535    "inputs": [],
1536    "stateMutability": "nonpayable"
1537  },
1538  {
1539    "type": "function",
1540    "name": "DEFAULT_ADMIN_ROLE",
1541    "inputs": [],
1542    "outputs": [
1543      {
1544        "name": "",
1545        "type": "bytes32",
1546        "internalType": "bytes32"
1547      }
1548    ],
1549    "stateMutability": "view"
1550  },
1551  {
1552    "type": "function",
1553    "name": "MAX_COMMISSION_BPS",
1554    "inputs": [],
1555    "outputs": [
1556      {
1557        "name": "",
1558        "type": "uint16",
1559        "internalType": "uint16"
1560      }
1561    ],
1562    "stateMutability": "view"
1563  },
1564  {
1565    "type": "function",
1566    "name": "MAX_EXIT_ESCROW_PERIOD",
1567    "inputs": [],
1568    "outputs": [
1569      {
1570        "name": "",
1571        "type": "uint64",
1572        "internalType": "uint64"
1573      }
1574    ],
1575    "stateMutability": "view"
1576  },
1577  {
1578    "type": "function",
1579    "name": "MAX_METADATA_URI_LENGTH",
1580    "inputs": [],
1581    "outputs": [
1582      {
1583        "name": "",
1584        "type": "uint256",
1585        "internalType": "uint256"
1586      }
1587    ],
1588    "stateMutability": "view"
1589  },
1590  {
1591    "type": "function",
1592    "name": "MIN_EXIT_ESCROW_PERIOD",
1593    "inputs": [],
1594    "outputs": [
1595      {
1596        "name": "",
1597        "type": "uint64",
1598        "internalType": "uint64"
1599      }
1600    ],
1601    "stateMutability": "view"
1602  },
1603  {
1604    "type": "function",
1605    "name": "PAUSER_ROLE",
1606    "inputs": [],
1607    "outputs": [
1608      {
1609        "name": "",
1610        "type": "bytes32",
1611        "internalType": "bytes32"
1612      }
1613    ],
1614    "stateMutability": "view"
1615  },
1616  {
1617    "type": "function",
1618    "name": "UPGRADE_INTERFACE_VERSION",
1619    "inputs": [],
1620    "outputs": [
1621      {
1622        "name": "",
1623        "type": "string",
1624        "internalType": "string"
1625      }
1626    ],
1627    "stateMutability": "view"
1628  },
1629  {
1630    "type": "function",
1631    "name": "_hashBlsKey",
1632    "inputs": [
1633      {
1634        "name": "blsVK",
1635        "type": "tuple",
1636        "internalType": "struct BN254.G2Point",
1637        "components": [
1638          {
1639            "name": "x0",
1640            "type": "uint256",
1641            "internalType": "BN254.BaseField"
1642          },
1643          {
1644            "name": "x1",
1645            "type": "uint256",
1646            "internalType": "BN254.BaseField"
1647          },
1648          {
1649            "name": "y0",
1650            "type": "uint256",
1651            "internalType": "BN254.BaseField"
1652          },
1653          {
1654            "name": "y1",
1655            "type": "uint256",
1656            "internalType": "BN254.BaseField"
1657          }
1658        ]
1659      }
1660    ],
1661    "outputs": [
1662      {
1663        "name": "",
1664        "type": "bytes32",
1665        "internalType": "bytes32"
1666      }
1667    ],
1668    "stateMutability": "pure"
1669  },
1670  {
1671    "type": "function",
1672    "name": "activeStake",
1673    "inputs": [],
1674    "outputs": [
1675      {
1676        "name": "",
1677        "type": "uint256",
1678        "internalType": "uint256"
1679      }
1680    ],
1681    "stateMutability": "view"
1682  },
1683  {
1684    "type": "function",
1685    "name": "blsKeys",
1686    "inputs": [
1687      {
1688        "name": "blsKeyHash",
1689        "type": "bytes32",
1690        "internalType": "bytes32"
1691      }
1692    ],
1693    "outputs": [
1694      {
1695        "name": "used",
1696        "type": "bool",
1697        "internalType": "bool"
1698      }
1699    ],
1700    "stateMutability": "view"
1701  },
1702  {
1703    "type": "function",
1704    "name": "claimValidatorExit",
1705    "inputs": [
1706      {
1707        "name": "validator",
1708        "type": "address",
1709        "internalType": "address"
1710      }
1711    ],
1712    "outputs": [],
1713    "stateMutability": "nonpayable"
1714  },
1715  {
1716    "type": "function",
1717    "name": "claimWithdrawal",
1718    "inputs": [
1719      {
1720        "name": "validator",
1721        "type": "address",
1722        "internalType": "address"
1723      }
1724    ],
1725    "outputs": [],
1726    "stateMutability": "nonpayable"
1727  },
1728  {
1729    "type": "function",
1730    "name": "commissionTracking",
1731    "inputs": [
1732      {
1733        "name": "validator",
1734        "type": "address",
1735        "internalType": "address"
1736      }
1737    ],
1738    "outputs": [
1739      {
1740        "name": "commission",
1741        "type": "uint16",
1742        "internalType": "uint16"
1743      },
1744      {
1745        "name": "lastIncreaseTime",
1746        "type": "uint256",
1747        "internalType": "uint256"
1748      }
1749    ],
1750    "stateMutability": "view"
1751  },
1752  {
1753    "type": "function",
1754    "name": "delegate",
1755    "inputs": [
1756      {
1757        "name": "validator",
1758        "type": "address",
1759        "internalType": "address"
1760      },
1761      {
1762        "name": "amount",
1763        "type": "uint256",
1764        "internalType": "uint256"
1765      }
1766    ],
1767    "outputs": [],
1768    "stateMutability": "nonpayable"
1769  },
1770  {
1771    "type": "function",
1772    "name": "delegations",
1773    "inputs": [
1774      {
1775        "name": "validator",
1776        "type": "address",
1777        "internalType": "address"
1778      },
1779      {
1780        "name": "delegator",
1781        "type": "address",
1782        "internalType": "address"
1783      }
1784    ],
1785    "outputs": [
1786      {
1787        "name": "amount",
1788        "type": "uint256",
1789        "internalType": "uint256"
1790      }
1791    ],
1792    "stateMutability": "view"
1793  },
1794  {
1795    "type": "function",
1796    "name": "deregisterValidator",
1797    "inputs": [],
1798    "outputs": [],
1799    "stateMutability": "nonpayable"
1800  },
1801  {
1802    "type": "function",
1803    "name": "exitEscrowPeriod",
1804    "inputs": [],
1805    "outputs": [
1806      {
1807        "name": "",
1808        "type": "uint256",
1809        "internalType": "uint256"
1810      }
1811    ],
1812    "stateMutability": "view"
1813  },
1814  {
1815    "type": "function",
1816    "name": "getRoleAdmin",
1817    "inputs": [
1818      {
1819        "name": "role",
1820        "type": "bytes32",
1821        "internalType": "bytes32"
1822      }
1823    ],
1824    "outputs": [
1825      {
1826        "name": "",
1827        "type": "bytes32",
1828        "internalType": "bytes32"
1829      }
1830    ],
1831    "stateMutability": "view"
1832  },
1833  {
1834    "type": "function",
1835    "name": "getUndelegation",
1836    "inputs": [
1837      {
1838        "name": "validator",
1839        "type": "address",
1840        "internalType": "address"
1841      },
1842      {
1843        "name": "delegator",
1844        "type": "address",
1845        "internalType": "address"
1846      }
1847    ],
1848    "outputs": [
1849      {
1850        "name": "id",
1851        "type": "uint64",
1852        "internalType": "uint64"
1853      },
1854      {
1855        "name": "amount",
1856        "type": "uint256",
1857        "internalType": "uint256"
1858      },
1859      {
1860        "name": "unlocksAt",
1861        "type": "uint256",
1862        "internalType": "uint256"
1863      }
1864    ],
1865    "stateMutability": "view"
1866  },
1867  {
1868    "type": "function",
1869    "name": "getVersion",
1870    "inputs": [],
1871    "outputs": [
1872      {
1873        "name": "majorVersion",
1874        "type": "uint8",
1875        "internalType": "uint8"
1876      },
1877      {
1878        "name": "minorVersion",
1879        "type": "uint8",
1880        "internalType": "uint8"
1881      },
1882      {
1883        "name": "patchVersion",
1884        "type": "uint8",
1885        "internalType": "uint8"
1886      }
1887    ],
1888    "stateMutability": "pure"
1889  },
1890  {
1891    "type": "function",
1892    "name": "grantRole",
1893    "inputs": [
1894      {
1895        "name": "role",
1896        "type": "bytes32",
1897        "internalType": "bytes32"
1898      },
1899      {
1900        "name": "account",
1901        "type": "address",
1902        "internalType": "address"
1903      }
1904    ],
1905    "outputs": [],
1906    "stateMutability": "nonpayable"
1907  },
1908  {
1909    "type": "function",
1910    "name": "hasRole",
1911    "inputs": [
1912      {
1913        "name": "role",
1914        "type": "bytes32",
1915        "internalType": "bytes32"
1916      },
1917      {
1918        "name": "account",
1919        "type": "address",
1920        "internalType": "address"
1921      }
1922    ],
1923    "outputs": [
1924      {
1925        "name": "",
1926        "type": "bool",
1927        "internalType": "bool"
1928      }
1929    ],
1930    "stateMutability": "view"
1931  },
1932  {
1933    "type": "function",
1934    "name": "initialize",
1935    "inputs": [
1936      {
1937        "name": "_tokenAddress",
1938        "type": "address",
1939        "internalType": "address"
1940      },
1941      {
1942        "name": "_lightClientAddress",
1943        "type": "address",
1944        "internalType": "address"
1945      },
1946      {
1947        "name": "_exitEscrowPeriod",
1948        "type": "uint256",
1949        "internalType": "uint256"
1950      },
1951      {
1952        "name": "_timelock",
1953        "type": "address",
1954        "internalType": "address"
1955      }
1956    ],
1957    "outputs": [],
1958    "stateMutability": "nonpayable"
1959  },
1960  {
1961    "type": "function",
1962    "name": "initializeV2",
1963    "inputs": [
1964      {
1965        "name": "pauser",
1966        "type": "address",
1967        "internalType": "address"
1968      },
1969      {
1970        "name": "admin",
1971        "type": "address",
1972        "internalType": "address"
1973      },
1974      {
1975        "name": "initialActiveStake",
1976        "type": "uint256",
1977        "internalType": "uint256"
1978      },
1979      {
1980        "name": "initialCommissions",
1981        "type": "tuple[]",
1982        "internalType": "struct StakeTableV2.InitialCommission[]",
1983        "components": [
1984          {
1985            "name": "validator",
1986            "type": "address",
1987            "internalType": "address"
1988          },
1989          {
1990            "name": "commission",
1991            "type": "uint16",
1992            "internalType": "uint16"
1993          }
1994        ]
1995      }
1996    ],
1997    "outputs": [],
1998    "stateMutability": "nonpayable"
1999  },
2000  {
2001    "type": "function",
2002    "name": "initializedAtBlock",
2003    "inputs": [],
2004    "outputs": [
2005      {
2006        "name": "",
2007        "type": "uint256",
2008        "internalType": "uint256"
2009      }
2010    ],
2011    "stateMutability": "view"
2012  },
2013  {
2014    "type": "function",
2015    "name": "lightClient",
2016    "inputs": [],
2017    "outputs": [
2018      {
2019        "name": "",
2020        "type": "address",
2021        "internalType": "contract ILightClient"
2022      }
2023    ],
2024    "stateMutability": "view"
2025  },
2026  {
2027    "type": "function",
2028    "name": "maxCommissionIncrease",
2029    "inputs": [],
2030    "outputs": [
2031      {
2032        "name": "",
2033        "type": "uint16",
2034        "internalType": "uint16"
2035      }
2036    ],
2037    "stateMutability": "view"
2038  },
2039  {
2040    "type": "function",
2041    "name": "minCommissionIncreaseInterval",
2042    "inputs": [],
2043    "outputs": [
2044      {
2045        "name": "",
2046        "type": "uint256",
2047        "internalType": "uint256"
2048      }
2049    ],
2050    "stateMutability": "view"
2051  },
2052  {
2053    "type": "function",
2054    "name": "minDelegateAmount",
2055    "inputs": [],
2056    "outputs": [
2057      {
2058        "name": "",
2059        "type": "uint256",
2060        "internalType": "uint256"
2061      }
2062    ],
2063    "stateMutability": "view"
2064  },
2065  {
2066    "type": "function",
2067    "name": "owner",
2068    "inputs": [],
2069    "outputs": [
2070      {
2071        "name": "",
2072        "type": "address",
2073        "internalType": "address"
2074      }
2075    ],
2076    "stateMutability": "view"
2077  },
2078  {
2079    "type": "function",
2080    "name": "pause",
2081    "inputs": [],
2082    "outputs": [],
2083    "stateMutability": "nonpayable"
2084  },
2085  {
2086    "type": "function",
2087    "name": "paused",
2088    "inputs": [],
2089    "outputs": [
2090      {
2091        "name": "",
2092        "type": "bool",
2093        "internalType": "bool"
2094      }
2095    ],
2096    "stateMutability": "view"
2097  },
2098  {
2099    "type": "function",
2100    "name": "proxiableUUID",
2101    "inputs": [],
2102    "outputs": [
2103      {
2104        "name": "",
2105        "type": "bytes32",
2106        "internalType": "bytes32"
2107      }
2108    ],
2109    "stateMutability": "view"
2110  },
2111  {
2112    "type": "function",
2113    "name": "registerValidator",
2114    "inputs": [
2115      {
2116        "name": "",
2117        "type": "tuple",
2118        "internalType": "struct BN254.G2Point",
2119        "components": [
2120          {
2121            "name": "x0",
2122            "type": "uint256",
2123            "internalType": "BN254.BaseField"
2124          },
2125          {
2126            "name": "x1",
2127            "type": "uint256",
2128            "internalType": "BN254.BaseField"
2129          },
2130          {
2131            "name": "y0",
2132            "type": "uint256",
2133            "internalType": "BN254.BaseField"
2134          },
2135          {
2136            "name": "y1",
2137            "type": "uint256",
2138            "internalType": "BN254.BaseField"
2139          }
2140        ]
2141      },
2142      {
2143        "name": "",
2144        "type": "tuple",
2145        "internalType": "struct EdOnBN254.EdOnBN254Point",
2146        "components": [
2147          {
2148            "name": "x",
2149            "type": "uint256",
2150            "internalType": "uint256"
2151          },
2152          {
2153            "name": "y",
2154            "type": "uint256",
2155            "internalType": "uint256"
2156          }
2157        ]
2158      },
2159      {
2160        "name": "",
2161        "type": "tuple",
2162        "internalType": "struct BN254.G1Point",
2163        "components": [
2164          {
2165            "name": "x",
2166            "type": "uint256",
2167            "internalType": "BN254.BaseField"
2168          },
2169          {
2170            "name": "y",
2171            "type": "uint256",
2172            "internalType": "BN254.BaseField"
2173          }
2174        ]
2175      },
2176      {
2177        "name": "",
2178        "type": "uint16",
2179        "internalType": "uint16"
2180      }
2181    ],
2182    "outputs": [],
2183    "stateMutability": "pure"
2184  },
2185  {
2186    "type": "function",
2187    "name": "registerValidatorV2",
2188    "inputs": [
2189      {
2190        "name": "blsVK",
2191        "type": "tuple",
2192        "internalType": "struct BN254.G2Point",
2193        "components": [
2194          {
2195            "name": "x0",
2196            "type": "uint256",
2197            "internalType": "BN254.BaseField"
2198          },
2199          {
2200            "name": "x1",
2201            "type": "uint256",
2202            "internalType": "BN254.BaseField"
2203          },
2204          {
2205            "name": "y0",
2206            "type": "uint256",
2207            "internalType": "BN254.BaseField"
2208          },
2209          {
2210            "name": "y1",
2211            "type": "uint256",
2212            "internalType": "BN254.BaseField"
2213          }
2214        ]
2215      },
2216      {
2217        "name": "schnorrVK",
2218        "type": "tuple",
2219        "internalType": "struct EdOnBN254.EdOnBN254Point",
2220        "components": [
2221          {
2222            "name": "x",
2223            "type": "uint256",
2224            "internalType": "uint256"
2225          },
2226          {
2227            "name": "y",
2228            "type": "uint256",
2229            "internalType": "uint256"
2230          }
2231        ]
2232      },
2233      {
2234        "name": "blsSig",
2235        "type": "tuple",
2236        "internalType": "struct BN254.G1Point",
2237        "components": [
2238          {
2239            "name": "x",
2240            "type": "uint256",
2241            "internalType": "BN254.BaseField"
2242          },
2243          {
2244            "name": "y",
2245            "type": "uint256",
2246            "internalType": "BN254.BaseField"
2247          }
2248        ]
2249      },
2250      {
2251        "name": "schnorrSig",
2252        "type": "bytes",
2253        "internalType": "bytes"
2254      },
2255      {
2256        "name": "commission",
2257        "type": "uint16",
2258        "internalType": "uint16"
2259      },
2260      {
2261        "name": "metadataUri",
2262        "type": "string",
2263        "internalType": "string"
2264      }
2265    ],
2266    "outputs": [],
2267    "stateMutability": "nonpayable"
2268  },
2269  {
2270    "type": "function",
2271    "name": "renounceOwnership",
2272    "inputs": [],
2273    "outputs": [],
2274    "stateMutability": "nonpayable"
2275  },
2276  {
2277    "type": "function",
2278    "name": "renounceRole",
2279    "inputs": [
2280      {
2281        "name": "role",
2282        "type": "bytes32",
2283        "internalType": "bytes32"
2284      },
2285      {
2286        "name": "callerConfirmation",
2287        "type": "address",
2288        "internalType": "address"
2289      }
2290    ],
2291    "outputs": [],
2292    "stateMutability": "nonpayable"
2293  },
2294  {
2295    "type": "function",
2296    "name": "revokeRole",
2297    "inputs": [
2298      {
2299        "name": "role",
2300        "type": "bytes32",
2301        "internalType": "bytes32"
2302      },
2303      {
2304        "name": "account",
2305        "type": "address",
2306        "internalType": "address"
2307      }
2308    ],
2309    "outputs": [],
2310    "stateMutability": "nonpayable"
2311  },
2312  {
2313    "type": "function",
2314    "name": "schnorrKeys",
2315    "inputs": [
2316      {
2317        "name": "schnorrKey",
2318        "type": "bytes32",
2319        "internalType": "bytes32"
2320      }
2321    ],
2322    "outputs": [
2323      {
2324        "name": "used",
2325        "type": "bool",
2326        "internalType": "bool"
2327      }
2328    ],
2329    "stateMutability": "view"
2330  },
2331  {
2332    "type": "function",
2333    "name": "setMaxCommissionIncrease",
2334    "inputs": [
2335      {
2336        "name": "newMaxIncrease",
2337        "type": "uint16",
2338        "internalType": "uint16"
2339      }
2340    ],
2341    "outputs": [],
2342    "stateMutability": "nonpayable"
2343  },
2344  {
2345    "type": "function",
2346    "name": "setMinCommissionUpdateInterval",
2347    "inputs": [
2348      {
2349        "name": "newInterval",
2350        "type": "uint256",
2351        "internalType": "uint256"
2352      }
2353    ],
2354    "outputs": [],
2355    "stateMutability": "nonpayable"
2356  },
2357  {
2358    "type": "function",
2359    "name": "setMinDelegateAmount",
2360    "inputs": [
2361      {
2362        "name": "newMinDelegateAmount",
2363        "type": "uint256",
2364        "internalType": "uint256"
2365      }
2366    ],
2367    "outputs": [],
2368    "stateMutability": "nonpayable"
2369  },
2370  {
2371    "type": "function",
2372    "name": "supportsInterface",
2373    "inputs": [
2374      {
2375        "name": "interfaceId",
2376        "type": "bytes4",
2377        "internalType": "bytes4"
2378      }
2379    ],
2380    "outputs": [
2381      {
2382        "name": "",
2383        "type": "bool",
2384        "internalType": "bool"
2385      }
2386    ],
2387    "stateMutability": "view"
2388  },
2389  {
2390    "type": "function",
2391    "name": "token",
2392    "inputs": [],
2393    "outputs": [
2394      {
2395        "name": "",
2396        "type": "address",
2397        "internalType": "contract ERC20"
2398      }
2399    ],
2400    "stateMutability": "view"
2401  },
2402  {
2403    "type": "function",
2404    "name": "transferOwnership",
2405    "inputs": [
2406      {
2407        "name": "newOwner",
2408        "type": "address",
2409        "internalType": "address"
2410      }
2411    ],
2412    "outputs": [],
2413    "stateMutability": "nonpayable"
2414  },
2415  {
2416    "type": "function",
2417    "name": "undelegate",
2418    "inputs": [
2419      {
2420        "name": "validator",
2421        "type": "address",
2422        "internalType": "address"
2423      },
2424      {
2425        "name": "amount",
2426        "type": "uint256",
2427        "internalType": "uint256"
2428      }
2429    ],
2430    "outputs": [],
2431    "stateMutability": "nonpayable"
2432  },
2433  {
2434    "type": "function",
2435    "name": "undelegations",
2436    "inputs": [
2437      {
2438        "name": "validator",
2439        "type": "address",
2440        "internalType": "address"
2441      },
2442      {
2443        "name": "delegator",
2444        "type": "address",
2445        "internalType": "address"
2446      }
2447    ],
2448    "outputs": [
2449      {
2450        "name": "amount",
2451        "type": "uint256",
2452        "internalType": "uint256"
2453      },
2454      {
2455        "name": "unlocksAt",
2456        "type": "uint256",
2457        "internalType": "uint256"
2458      }
2459    ],
2460    "stateMutability": "view"
2461  },
2462  {
2463    "type": "function",
2464    "name": "unpause",
2465    "inputs": [],
2466    "outputs": [],
2467    "stateMutability": "nonpayable"
2468  },
2469  {
2470    "type": "function",
2471    "name": "updateCommission",
2472    "inputs": [
2473      {
2474        "name": "newCommission",
2475        "type": "uint16",
2476        "internalType": "uint16"
2477      }
2478    ],
2479    "outputs": [],
2480    "stateMutability": "nonpayable"
2481  },
2482  {
2483    "type": "function",
2484    "name": "updateConsensusKeys",
2485    "inputs": [
2486      {
2487        "name": "",
2488        "type": "tuple",
2489        "internalType": "struct BN254.G2Point",
2490        "components": [
2491          {
2492            "name": "x0",
2493            "type": "uint256",
2494            "internalType": "BN254.BaseField"
2495          },
2496          {
2497            "name": "x1",
2498            "type": "uint256",
2499            "internalType": "BN254.BaseField"
2500          },
2501          {
2502            "name": "y0",
2503            "type": "uint256",
2504            "internalType": "BN254.BaseField"
2505          },
2506          {
2507            "name": "y1",
2508            "type": "uint256",
2509            "internalType": "BN254.BaseField"
2510          }
2511        ]
2512      },
2513      {
2514        "name": "",
2515        "type": "tuple",
2516        "internalType": "struct EdOnBN254.EdOnBN254Point",
2517        "components": [
2518          {
2519            "name": "x",
2520            "type": "uint256",
2521            "internalType": "uint256"
2522          },
2523          {
2524            "name": "y",
2525            "type": "uint256",
2526            "internalType": "uint256"
2527          }
2528        ]
2529      },
2530      {
2531        "name": "",
2532        "type": "tuple",
2533        "internalType": "struct BN254.G1Point",
2534        "components": [
2535          {
2536            "name": "x",
2537            "type": "uint256",
2538            "internalType": "BN254.BaseField"
2539          },
2540          {
2541            "name": "y",
2542            "type": "uint256",
2543            "internalType": "BN254.BaseField"
2544          }
2545        ]
2546      }
2547    ],
2548    "outputs": [],
2549    "stateMutability": "pure"
2550  },
2551  {
2552    "type": "function",
2553    "name": "updateConsensusKeysV2",
2554    "inputs": [
2555      {
2556        "name": "blsVK",
2557        "type": "tuple",
2558        "internalType": "struct BN254.G2Point",
2559        "components": [
2560          {
2561            "name": "x0",
2562            "type": "uint256",
2563            "internalType": "BN254.BaseField"
2564          },
2565          {
2566            "name": "x1",
2567            "type": "uint256",
2568            "internalType": "BN254.BaseField"
2569          },
2570          {
2571            "name": "y0",
2572            "type": "uint256",
2573            "internalType": "BN254.BaseField"
2574          },
2575          {
2576            "name": "y1",
2577            "type": "uint256",
2578            "internalType": "BN254.BaseField"
2579          }
2580        ]
2581      },
2582      {
2583        "name": "schnorrVK",
2584        "type": "tuple",
2585        "internalType": "struct EdOnBN254.EdOnBN254Point",
2586        "components": [
2587          {
2588            "name": "x",
2589            "type": "uint256",
2590            "internalType": "uint256"
2591          },
2592          {
2593            "name": "y",
2594            "type": "uint256",
2595            "internalType": "uint256"
2596          }
2597        ]
2598      },
2599      {
2600        "name": "blsSig",
2601        "type": "tuple",
2602        "internalType": "struct BN254.G1Point",
2603        "components": [
2604          {
2605            "name": "x",
2606            "type": "uint256",
2607            "internalType": "BN254.BaseField"
2608          },
2609          {
2610            "name": "y",
2611            "type": "uint256",
2612            "internalType": "BN254.BaseField"
2613          }
2614        ]
2615      },
2616      {
2617        "name": "schnorrSig",
2618        "type": "bytes",
2619        "internalType": "bytes"
2620      }
2621    ],
2622    "outputs": [],
2623    "stateMutability": "nonpayable"
2624  },
2625  {
2626    "type": "function",
2627    "name": "updateExitEscrowPeriod",
2628    "inputs": [
2629      {
2630        "name": "newExitEscrowPeriod",
2631        "type": "uint64",
2632        "internalType": "uint64"
2633      }
2634    ],
2635    "outputs": [],
2636    "stateMutability": "nonpayable"
2637  },
2638  {
2639    "type": "function",
2640    "name": "updateMetadataUri",
2641    "inputs": [
2642      {
2643        "name": "metadataUri",
2644        "type": "string",
2645        "internalType": "string"
2646      }
2647    ],
2648    "outputs": [],
2649    "stateMutability": "nonpayable"
2650  },
2651  {
2652    "type": "function",
2653    "name": "upgradeToAndCall",
2654    "inputs": [
2655      {
2656        "name": "newImplementation",
2657        "type": "address",
2658        "internalType": "address"
2659      },
2660      {
2661        "name": "data",
2662        "type": "bytes",
2663        "internalType": "bytes"
2664      }
2665    ],
2666    "outputs": [],
2667    "stateMutability": "payable"
2668  },
2669  {
2670    "type": "function",
2671    "name": "validateMetadataUri",
2672    "inputs": [
2673      {
2674        "name": "metadataUri",
2675        "type": "string",
2676        "internalType": "string"
2677      }
2678    ],
2679    "outputs": [],
2680    "stateMutability": "pure"
2681  },
2682  {
2683    "type": "function",
2684    "name": "validatorExits",
2685    "inputs": [
2686      {
2687        "name": "validator",
2688        "type": "address",
2689        "internalType": "address"
2690      }
2691    ],
2692    "outputs": [
2693      {
2694        "name": "unlocksAt",
2695        "type": "uint256",
2696        "internalType": "uint256"
2697      }
2698    ],
2699    "stateMutability": "view"
2700  },
2701  {
2702    "type": "function",
2703    "name": "validators",
2704    "inputs": [
2705      {
2706        "name": "account",
2707        "type": "address",
2708        "internalType": "address"
2709      }
2710    ],
2711    "outputs": [
2712      {
2713        "name": "delegatedAmount",
2714        "type": "uint256",
2715        "internalType": "uint256"
2716      },
2717      {
2718        "name": "status",
2719        "type": "uint8",
2720        "internalType": "enum StakeTable.ValidatorStatus"
2721      }
2722    ],
2723    "stateMutability": "view"
2724  },
2725  {
2726    "type": "event",
2727    "name": "CommissionUpdated",
2728    "inputs": [
2729      {
2730        "name": "validator",
2731        "type": "address",
2732        "indexed": true,
2733        "internalType": "address"
2734      },
2735      {
2736        "name": "timestamp",
2737        "type": "uint256",
2738        "indexed": false,
2739        "internalType": "uint256"
2740      },
2741      {
2742        "name": "oldCommission",
2743        "type": "uint16",
2744        "indexed": false,
2745        "internalType": "uint16"
2746      },
2747      {
2748        "name": "newCommission",
2749        "type": "uint16",
2750        "indexed": false,
2751        "internalType": "uint16"
2752      }
2753    ],
2754    "anonymous": false
2755  },
2756  {
2757    "type": "event",
2758    "name": "ConsensusKeysUpdated",
2759    "inputs": [
2760      {
2761        "name": "account",
2762        "type": "address",
2763        "indexed": true,
2764        "internalType": "address"
2765      },
2766      {
2767        "name": "blsVK",
2768        "type": "tuple",
2769        "indexed": false,
2770        "internalType": "struct BN254.G2Point",
2771        "components": [
2772          {
2773            "name": "x0",
2774            "type": "uint256",
2775            "internalType": "BN254.BaseField"
2776          },
2777          {
2778            "name": "x1",
2779            "type": "uint256",
2780            "internalType": "BN254.BaseField"
2781          },
2782          {
2783            "name": "y0",
2784            "type": "uint256",
2785            "internalType": "BN254.BaseField"
2786          },
2787          {
2788            "name": "y1",
2789            "type": "uint256",
2790            "internalType": "BN254.BaseField"
2791          }
2792        ]
2793      },
2794      {
2795        "name": "schnorrVK",
2796        "type": "tuple",
2797        "indexed": false,
2798        "internalType": "struct EdOnBN254.EdOnBN254Point",
2799        "components": [
2800          {
2801            "name": "x",
2802            "type": "uint256",
2803            "internalType": "uint256"
2804          },
2805          {
2806            "name": "y",
2807            "type": "uint256",
2808            "internalType": "uint256"
2809          }
2810        ]
2811      }
2812    ],
2813    "anonymous": false
2814  },
2815  {
2816    "type": "event",
2817    "name": "ConsensusKeysUpdatedV2",
2818    "inputs": [
2819      {
2820        "name": "account",
2821        "type": "address",
2822        "indexed": true,
2823        "internalType": "address"
2824      },
2825      {
2826        "name": "blsVK",
2827        "type": "tuple",
2828        "indexed": false,
2829        "internalType": "struct BN254.G2Point",
2830        "components": [
2831          {
2832            "name": "x0",
2833            "type": "uint256",
2834            "internalType": "BN254.BaseField"
2835          },
2836          {
2837            "name": "x1",
2838            "type": "uint256",
2839            "internalType": "BN254.BaseField"
2840          },
2841          {
2842            "name": "y0",
2843            "type": "uint256",
2844            "internalType": "BN254.BaseField"
2845          },
2846          {
2847            "name": "y1",
2848            "type": "uint256",
2849            "internalType": "BN254.BaseField"
2850          }
2851        ]
2852      },
2853      {
2854        "name": "schnorrVK",
2855        "type": "tuple",
2856        "indexed": false,
2857        "internalType": "struct EdOnBN254.EdOnBN254Point",
2858        "components": [
2859          {
2860            "name": "x",
2861            "type": "uint256",
2862            "internalType": "uint256"
2863          },
2864          {
2865            "name": "y",
2866            "type": "uint256",
2867            "internalType": "uint256"
2868          }
2869        ]
2870      },
2871      {
2872        "name": "blsSig",
2873        "type": "tuple",
2874        "indexed": false,
2875        "internalType": "struct BN254.G1Point",
2876        "components": [
2877          {
2878            "name": "x",
2879            "type": "uint256",
2880            "internalType": "BN254.BaseField"
2881          },
2882          {
2883            "name": "y",
2884            "type": "uint256",
2885            "internalType": "BN254.BaseField"
2886          }
2887        ]
2888      },
2889      {
2890        "name": "schnorrSig",
2891        "type": "bytes",
2892        "indexed": false,
2893        "internalType": "bytes"
2894      }
2895    ],
2896    "anonymous": false
2897  },
2898  {
2899    "type": "event",
2900    "name": "Delegated",
2901    "inputs": [
2902      {
2903        "name": "delegator",
2904        "type": "address",
2905        "indexed": true,
2906        "internalType": "address"
2907      },
2908      {
2909        "name": "validator",
2910        "type": "address",
2911        "indexed": true,
2912        "internalType": "address"
2913      },
2914      {
2915        "name": "amount",
2916        "type": "uint256",
2917        "indexed": false,
2918        "internalType": "uint256"
2919      }
2920    ],
2921    "anonymous": false
2922  },
2923  {
2924    "type": "event",
2925    "name": "ExitEscrowPeriodUpdated",
2926    "inputs": [
2927      {
2928        "name": "newExitEscrowPeriod",
2929        "type": "uint64",
2930        "indexed": false,
2931        "internalType": "uint64"
2932      }
2933    ],
2934    "anonymous": false
2935  },
2936  {
2937    "type": "event",
2938    "name": "Initialized",
2939    "inputs": [
2940      {
2941        "name": "version",
2942        "type": "uint64",
2943        "indexed": false,
2944        "internalType": "uint64"
2945      }
2946    ],
2947    "anonymous": false
2948  },
2949  {
2950    "type": "event",
2951    "name": "MaxCommissionIncreaseUpdated",
2952    "inputs": [
2953      {
2954        "name": "newMaxIncrease",
2955        "type": "uint16",
2956        "indexed": false,
2957        "internalType": "uint16"
2958      }
2959    ],
2960    "anonymous": false
2961  },
2962  {
2963    "type": "event",
2964    "name": "MetadataUriUpdated",
2965    "inputs": [
2966      {
2967        "name": "validator",
2968        "type": "address",
2969        "indexed": true,
2970        "internalType": "address"
2971      },
2972      {
2973        "name": "metadataUri",
2974        "type": "string",
2975        "indexed": false,
2976        "internalType": "string"
2977      }
2978    ],
2979    "anonymous": false
2980  },
2981  {
2982    "type": "event",
2983    "name": "MinCommissionUpdateIntervalUpdated",
2984    "inputs": [
2985      {
2986        "name": "newInterval",
2987        "type": "uint256",
2988        "indexed": false,
2989        "internalType": "uint256"
2990      }
2991    ],
2992    "anonymous": false
2993  },
2994  {
2995    "type": "event",
2996    "name": "MinDelegateAmountUpdated",
2997    "inputs": [
2998      {
2999        "name": "newMinDelegateAmount",
3000        "type": "uint256",
3001        "indexed": false,
3002        "internalType": "uint256"
3003      }
3004    ],
3005    "anonymous": false
3006  },
3007  {
3008    "type": "event",
3009    "name": "OwnershipTransferred",
3010    "inputs": [
3011      {
3012        "name": "previousOwner",
3013        "type": "address",
3014        "indexed": true,
3015        "internalType": "address"
3016      },
3017      {
3018        "name": "newOwner",
3019        "type": "address",
3020        "indexed": true,
3021        "internalType": "address"
3022      }
3023    ],
3024    "anonymous": false
3025  },
3026  {
3027    "type": "event",
3028    "name": "Paused",
3029    "inputs": [
3030      {
3031        "name": "account",
3032        "type": "address",
3033        "indexed": false,
3034        "internalType": "address"
3035      }
3036    ],
3037    "anonymous": false
3038  },
3039  {
3040    "type": "event",
3041    "name": "RoleAdminChanged",
3042    "inputs": [
3043      {
3044        "name": "role",
3045        "type": "bytes32",
3046        "indexed": true,
3047        "internalType": "bytes32"
3048      },
3049      {
3050        "name": "previousAdminRole",
3051        "type": "bytes32",
3052        "indexed": true,
3053        "internalType": "bytes32"
3054      },
3055      {
3056        "name": "newAdminRole",
3057        "type": "bytes32",
3058        "indexed": true,
3059        "internalType": "bytes32"
3060      }
3061    ],
3062    "anonymous": false
3063  },
3064  {
3065    "type": "event",
3066    "name": "RoleGranted",
3067    "inputs": [
3068      {
3069        "name": "role",
3070        "type": "bytes32",
3071        "indexed": true,
3072        "internalType": "bytes32"
3073      },
3074      {
3075        "name": "account",
3076        "type": "address",
3077        "indexed": true,
3078        "internalType": "address"
3079      },
3080      {
3081        "name": "sender",
3082        "type": "address",
3083        "indexed": true,
3084        "internalType": "address"
3085      }
3086    ],
3087    "anonymous": false
3088  },
3089  {
3090    "type": "event",
3091    "name": "RoleRevoked",
3092    "inputs": [
3093      {
3094        "name": "role",
3095        "type": "bytes32",
3096        "indexed": true,
3097        "internalType": "bytes32"
3098      },
3099      {
3100        "name": "account",
3101        "type": "address",
3102        "indexed": true,
3103        "internalType": "address"
3104      },
3105      {
3106        "name": "sender",
3107        "type": "address",
3108        "indexed": true,
3109        "internalType": "address"
3110      }
3111    ],
3112    "anonymous": false
3113  },
3114  {
3115    "type": "event",
3116    "name": "Undelegated",
3117    "inputs": [
3118      {
3119        "name": "delegator",
3120        "type": "address",
3121        "indexed": true,
3122        "internalType": "address"
3123      },
3124      {
3125        "name": "validator",
3126        "type": "address",
3127        "indexed": true,
3128        "internalType": "address"
3129      },
3130      {
3131        "name": "amount",
3132        "type": "uint256",
3133        "indexed": false,
3134        "internalType": "uint256"
3135      }
3136    ],
3137    "anonymous": false
3138  },
3139  {
3140    "type": "event",
3141    "name": "UndelegatedV2",
3142    "inputs": [
3143      {
3144        "name": "delegator",
3145        "type": "address",
3146        "indexed": true,
3147        "internalType": "address"
3148      },
3149      {
3150        "name": "validator",
3151        "type": "address",
3152        "indexed": true,
3153        "internalType": "address"
3154      },
3155      {
3156        "name": "undelegationId",
3157        "type": "uint64",
3158        "indexed": true,
3159        "internalType": "uint64"
3160      },
3161      {
3162        "name": "amount",
3163        "type": "uint256",
3164        "indexed": false,
3165        "internalType": "uint256"
3166      },
3167      {
3168        "name": "unlocksAt",
3169        "type": "uint256",
3170        "indexed": false,
3171        "internalType": "uint256"
3172      }
3173    ],
3174    "anonymous": false
3175  },
3176  {
3177    "type": "event",
3178    "name": "Unpaused",
3179    "inputs": [
3180      {
3181        "name": "account",
3182        "type": "address",
3183        "indexed": false,
3184        "internalType": "address"
3185      }
3186    ],
3187    "anonymous": false
3188  },
3189  {
3190    "type": "event",
3191    "name": "Upgraded",
3192    "inputs": [
3193      {
3194        "name": "implementation",
3195        "type": "address",
3196        "indexed": true,
3197        "internalType": "address"
3198      }
3199    ],
3200    "anonymous": false
3201  },
3202  {
3203    "type": "event",
3204    "name": "ValidatorExit",
3205    "inputs": [
3206      {
3207        "name": "validator",
3208        "type": "address",
3209        "indexed": true,
3210        "internalType": "address"
3211      }
3212    ],
3213    "anonymous": false
3214  },
3215  {
3216    "type": "event",
3217    "name": "ValidatorExitClaimed",
3218    "inputs": [
3219      {
3220        "name": "delegator",
3221        "type": "address",
3222        "indexed": true,
3223        "internalType": "address"
3224      },
3225      {
3226        "name": "validator",
3227        "type": "address",
3228        "indexed": true,
3229        "internalType": "address"
3230      },
3231      {
3232        "name": "amount",
3233        "type": "uint256",
3234        "indexed": false,
3235        "internalType": "uint256"
3236      }
3237    ],
3238    "anonymous": false
3239  },
3240  {
3241    "type": "event",
3242    "name": "ValidatorExitV2",
3243    "inputs": [
3244      {
3245        "name": "validator",
3246        "type": "address",
3247        "indexed": true,
3248        "internalType": "address"
3249      },
3250      {
3251        "name": "unlocksAt",
3252        "type": "uint256",
3253        "indexed": false,
3254        "internalType": "uint256"
3255      }
3256    ],
3257    "anonymous": false
3258  },
3259  {
3260    "type": "event",
3261    "name": "ValidatorRegistered",
3262    "inputs": [
3263      {
3264        "name": "account",
3265        "type": "address",
3266        "indexed": true,
3267        "internalType": "address"
3268      },
3269      {
3270        "name": "blsVk",
3271        "type": "tuple",
3272        "indexed": false,
3273        "internalType": "struct BN254.G2Point",
3274        "components": [
3275          {
3276            "name": "x0",
3277            "type": "uint256",
3278            "internalType": "BN254.BaseField"
3279          },
3280          {
3281            "name": "x1",
3282            "type": "uint256",
3283            "internalType": "BN254.BaseField"
3284          },
3285          {
3286            "name": "y0",
3287            "type": "uint256",
3288            "internalType": "BN254.BaseField"
3289          },
3290          {
3291            "name": "y1",
3292            "type": "uint256",
3293            "internalType": "BN254.BaseField"
3294          }
3295        ]
3296      },
3297      {
3298        "name": "schnorrVk",
3299        "type": "tuple",
3300        "indexed": false,
3301        "internalType": "struct EdOnBN254.EdOnBN254Point",
3302        "components": [
3303          {
3304            "name": "x",
3305            "type": "uint256",
3306            "internalType": "uint256"
3307          },
3308          {
3309            "name": "y",
3310            "type": "uint256",
3311            "internalType": "uint256"
3312          }
3313        ]
3314      },
3315      {
3316        "name": "commission",
3317        "type": "uint16",
3318        "indexed": false,
3319        "internalType": "uint16"
3320      }
3321    ],
3322    "anonymous": false
3323  },
3324  {
3325    "type": "event",
3326    "name": "ValidatorRegisteredV2",
3327    "inputs": [
3328      {
3329        "name": "account",
3330        "type": "address",
3331        "indexed": true,
3332        "internalType": "address"
3333      },
3334      {
3335        "name": "blsVK",
3336        "type": "tuple",
3337        "indexed": false,
3338        "internalType": "struct BN254.G2Point",
3339        "components": [
3340          {
3341            "name": "x0",
3342            "type": "uint256",
3343            "internalType": "BN254.BaseField"
3344          },
3345          {
3346            "name": "x1",
3347            "type": "uint256",
3348            "internalType": "BN254.BaseField"
3349          },
3350          {
3351            "name": "y0",
3352            "type": "uint256",
3353            "internalType": "BN254.BaseField"
3354          },
3355          {
3356            "name": "y1",
3357            "type": "uint256",
3358            "internalType": "BN254.BaseField"
3359          }
3360        ]
3361      },
3362      {
3363        "name": "schnorrVK",
3364        "type": "tuple",
3365        "indexed": false,
3366        "internalType": "struct EdOnBN254.EdOnBN254Point",
3367        "components": [
3368          {
3369            "name": "x",
3370            "type": "uint256",
3371            "internalType": "uint256"
3372          },
3373          {
3374            "name": "y",
3375            "type": "uint256",
3376            "internalType": "uint256"
3377          }
3378        ]
3379      },
3380      {
3381        "name": "commission",
3382        "type": "uint16",
3383        "indexed": false,
3384        "internalType": "uint16"
3385      },
3386      {
3387        "name": "blsSig",
3388        "type": "tuple",
3389        "indexed": false,
3390        "internalType": "struct BN254.G1Point",
3391        "components": [
3392          {
3393            "name": "x",
3394            "type": "uint256",
3395            "internalType": "BN254.BaseField"
3396          },
3397          {
3398            "name": "y",
3399            "type": "uint256",
3400            "internalType": "BN254.BaseField"
3401          }
3402        ]
3403      },
3404      {
3405        "name": "schnorrSig",
3406        "type": "bytes",
3407        "indexed": false,
3408        "internalType": "bytes"
3409      },
3410      {
3411        "name": "metadataUri",
3412        "type": "string",
3413        "indexed": false,
3414        "internalType": "string"
3415      }
3416    ],
3417    "anonymous": false
3418  },
3419  {
3420    "type": "event",
3421    "name": "Withdrawal",
3422    "inputs": [
3423      {
3424        "name": "account",
3425        "type": "address",
3426        "indexed": true,
3427        "internalType": "address"
3428      },
3429      {
3430        "name": "amount",
3431        "type": "uint256",
3432        "indexed": false,
3433        "internalType": "uint256"
3434      }
3435    ],
3436    "anonymous": false
3437  },
3438  {
3439    "type": "event",
3440    "name": "WithdrawalClaimed",
3441    "inputs": [
3442      {
3443        "name": "delegator",
3444        "type": "address",
3445        "indexed": true,
3446        "internalType": "address"
3447      },
3448      {
3449        "name": "validator",
3450        "type": "address",
3451        "indexed": true,
3452        "internalType": "address"
3453      },
3454      {
3455        "name": "undelegationId",
3456        "type": "uint64",
3457        "indexed": true,
3458        "internalType": "uint64"
3459      },
3460      {
3461        "name": "amount",
3462        "type": "uint256",
3463        "indexed": false,
3464        "internalType": "uint256"
3465      }
3466    ],
3467    "anonymous": false
3468  },
3469  {
3470    "type": "error",
3471    "name": "AccessControlBadConfirmation",
3472    "inputs": []
3473  },
3474  {
3475    "type": "error",
3476    "name": "AccessControlUnauthorizedAccount",
3477    "inputs": [
3478      {
3479        "name": "account",
3480        "type": "address",
3481        "internalType": "address"
3482      },
3483      {
3484        "name": "neededRole",
3485        "type": "bytes32",
3486        "internalType": "bytes32"
3487      }
3488    ]
3489  },
3490  {
3491    "type": "error",
3492    "name": "AddressEmptyCode",
3493    "inputs": [
3494      {
3495        "name": "target",
3496        "type": "address",
3497        "internalType": "address"
3498      }
3499    ]
3500  },
3501  {
3502    "type": "error",
3503    "name": "BLSSigIsInfinity",
3504    "inputs": []
3505  },
3506  {
3507    "type": "error",
3508    "name": "BLSSigVerificationFailed",
3509    "inputs": []
3510  },
3511  {
3512    "type": "error",
3513    "name": "BLSVKIsInfinity",
3514    "inputs": []
3515  },
3516  {
3517    "type": "error",
3518    "name": "BN254PairingProdFailed",
3519    "inputs": []
3520  },
3521  {
3522    "type": "error",
3523    "name": "BlsKeyAlreadyUsed",
3524    "inputs": []
3525  },
3526  {
3527    "type": "error",
3528    "name": "CommissionAlreadyInitialized",
3529    "inputs": [
3530      {
3531        "name": "validator",
3532        "type": "address",
3533        "internalType": "address"
3534      }
3535    ]
3536  },
3537  {
3538    "type": "error",
3539    "name": "CommissionIncreaseExceedsMax",
3540    "inputs": []
3541  },
3542  {
3543    "type": "error",
3544    "name": "CommissionUnchanged",
3545    "inputs": []
3546  },
3547  {
3548    "type": "error",
3549    "name": "CommissionUpdateTooSoon",
3550    "inputs": []
3551  },
3552  {
3553    "type": "error",
3554    "name": "DefaultAdminCannotBeRenounced",
3555    "inputs": []
3556  },
3557  {
3558    "type": "error",
3559    "name": "DefaultAdminCannotBeRevoked",
3560    "inputs": []
3561  },
3562  {
3563    "type": "error",
3564    "name": "DelegateAmountTooSmall",
3565    "inputs": []
3566  },
3567  {
3568    "type": "error",
3569    "name": "DeprecatedFunction",
3570    "inputs": []
3571  },
3572  {
3573    "type": "error",
3574    "name": "ERC1967InvalidImplementation",
3575    "inputs": [
3576      {
3577        "name": "implementation",
3578        "type": "address",
3579        "internalType": "address"
3580      }
3581    ]
3582  },
3583  {
3584    "type": "error",
3585    "name": "ERC1967NonPayable",
3586    "inputs": []
3587  },
3588  {
3589    "type": "error",
3590    "name": "EnforcedPause",
3591    "inputs": []
3592  },
3593  {
3594    "type": "error",
3595    "name": "ExitEscrowPeriodInvalid",
3596    "inputs": []
3597  },
3598  {
3599    "type": "error",
3600    "name": "ExpectedPause",
3601    "inputs": []
3602  },
3603  {
3604    "type": "error",
3605    "name": "FailedInnerCall",
3606    "inputs": []
3607  },
3608  {
3609    "type": "error",
3610    "name": "InitialActiveStakeExceedsBalance",
3611    "inputs": []
3612  },
3613  {
3614    "type": "error",
3615    "name": "InsufficientAllowance",
3616    "inputs": [
3617      {
3618        "name": "",
3619        "type": "uint256",
3620        "internalType": "uint256"
3621      },
3622      {
3623        "name": "",
3624        "type": "uint256",
3625        "internalType": "uint256"
3626      }
3627    ]
3628  },
3629  {
3630    "type": "error",
3631    "name": "InsufficientBalance",
3632    "inputs": [
3633      {
3634        "name": "",
3635        "type": "uint256",
3636        "internalType": "uint256"
3637      }
3638    ]
3639  },
3640  {
3641    "type": "error",
3642    "name": "InvalidCommission",
3643    "inputs": []
3644  },
3645  {
3646    "type": "error",
3647    "name": "InvalidG1",
3648    "inputs": []
3649  },
3650  {
3651    "type": "error",
3652    "name": "InvalidInitialization",
3653    "inputs": []
3654  },
3655  {
3656    "type": "error",
3657    "name": "InvalidMetadataUriLength",
3658    "inputs": []
3659  },
3660  {
3661    "type": "error",
3662    "name": "InvalidRateLimitParameters",
3663    "inputs": []
3664  },
3665  {
3666    "type": "error",
3667    "name": "InvalidSchnorrSig",
3668    "inputs": []
3669  },
3670  {
3671    "type": "error",
3672    "name": "InvalidSchnorrVK",
3673    "inputs": []
3674  },
3675  {
3676    "type": "error",
3677    "name": "MinDelegateAmountTooSmall",
3678    "inputs": []
3679  },
3680  {
3681    "type": "error",
3682    "name": "NoUndelegationFound",
3683    "inputs": []
3684  },
3685  {
3686    "type": "error",
3687    "name": "NotInitializing",
3688    "inputs": []
3689  },
3690  {
3691    "type": "error",
3692    "name": "NothingToWithdraw",
3693    "inputs": []
3694  },
3695  {
3696    "type": "error",
3697    "name": "OwnableInvalidOwner",
3698    "inputs": [
3699      {
3700        "name": "owner",
3701        "type": "address",
3702        "internalType": "address"
3703      }
3704    ]
3705  },
3706  {
3707    "type": "error",
3708    "name": "OwnableUnauthorizedAccount",
3709    "inputs": [
3710      {
3711        "name": "account",
3712        "type": "address",
3713        "internalType": "address"
3714      }
3715    ]
3716  },
3717  {
3718    "type": "error",
3719    "name": "OwnershipCannotBeRenounced",
3720    "inputs": []
3721  },
3722  {
3723    "type": "error",
3724    "name": "PowPrecompileFailed",
3725    "inputs": []
3726  },
3727  {
3728    "type": "error",
3729    "name": "PrematureWithdrawal",
3730    "inputs": []
3731  },
3732  {
3733    "type": "error",
3734    "name": "SchnorrKeyAlreadyUsed",
3735    "inputs": []
3736  },
3737  {
3738    "type": "error",
3739    "name": "UUPSUnauthorizedCallContext",
3740    "inputs": []
3741  },
3742  {
3743    "type": "error",
3744    "name": "UUPSUnsupportedProxiableUUID",
3745    "inputs": [
3746      {
3747        "name": "slot",
3748        "type": "bytes32",
3749        "internalType": "bytes32"
3750      }
3751    ]
3752  },
3753  {
3754    "type": "error",
3755    "name": "UndelegationAlreadyExists",
3756    "inputs": []
3757  },
3758  {
3759    "type": "error",
3760    "name": "ValidatorAlreadyExited",
3761    "inputs": []
3762  },
3763  {
3764    "type": "error",
3765    "name": "ValidatorAlreadyRegistered",
3766    "inputs": []
3767  },
3768  {
3769    "type": "error",
3770    "name": "ValidatorInactive",
3771    "inputs": []
3772  },
3773  {
3774    "type": "error",
3775    "name": "ValidatorNotExited",
3776    "inputs": []
3777  },
3778  {
3779    "type": "error",
3780    "name": "ZeroAddress",
3781    "inputs": []
3782  },
3783  {
3784    "type": "error",
3785    "name": "ZeroAmount",
3786    "inputs": []
3787  }
3788]
3789```*/
3790#[allow(
3791    non_camel_case_types,
3792    non_snake_case,
3793    clippy::pub_underscore_fields,
3794    clippy::style,
3795    clippy::empty_structs_with_brackets
3796)]
3797pub mod StakeTableV2 {
3798    use super::*;
3799    use alloy::sol_types as alloy_sol_types;
3800    /// The creation / init bytecode of the contract.
3801    ///
3802    /// ```text
3803    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516144996101095f395f818161254a015281816125730152612a3301526144995ff3fe608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b50610389610384366004613995565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b83660046139d7565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613adb565b610d38565b348015610414575f5ffd5b506103bd610423366004613b31565b610d51565b348015610433575f5ffd5b506103bd610442366004613b57565b610de5565b348015610452575f5ffd5b50610466610461366004613b70565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613c16565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613cbf565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613cd8565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613cd8565b611209565b348015610510575f5ffd5b506103bd61051f366004613b70565b611231565b34801561052f575f5ffd5b506103bd61053e366004613cbf565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613b70565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d13660046139d7565b61148f565b6103bd6105e4366004613d02565b611700565b3480156105f4575f5ffd5b506103bd610603366004613d4c565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613de2565b348015610641575f5ffd5b505f51602061444d5f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613b70565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613e26565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613cd8565b611a85565b34801561077b575f5ffd5b5061046661078a366004613e5f565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613b57565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613e79565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613b57565b611b15565b348015610886575f5ffd5b506103bd610895366004613ea1565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613f3e565b3480156108e2575f5ffd5b506103896108f1366004613b70565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613b57565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613e79565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613f50565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613e79565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613cd8565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613e26565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f51602061440d5f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613b57565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613b57565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613fa3565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613fd3565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613ffe565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613ffe565b9250508190555082600b5f828254610cde9190613ffe565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490614011565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f51602061442d5f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a87876122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a612364565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a61246d565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613f8f565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613f8f565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90614024565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb8282612491565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826124ad565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613ffe565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff16836140ab565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f51602061440d5f395f51905f5261148481612178565b61148c6124e0565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a836140c5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190614011565b90915550506008545f906115f79042613ffe565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490614011565b9250508190555084600b5f82825461169f9190614011565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b61170861253f565b611711826125e3565b6111fb82826125ed565b6117236126a9565b5f51602061446d5f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee6126db565b6117f66126e3565b61180d5f51602061440d5f395f51905f52886126f3565b506118185f876126f3565b505f611822611a57565b9050806001600160a01b0316876001600160a01b0316146118465761184687612794565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612804565b61188f86612999565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e9612a28565b505f5160206143ed5f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613ffe565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490614011565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6126a9565b6040516317d5c96560e11b815260040160405180910390fd5b5f51602061440d5f395f51905f526119fb81612178565b61148c612a71565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613f3e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f51602061442d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f85856122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd1818588612364565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d328861246d565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d9494939291906140ef565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee086612ab9565b611ee86126db565b611ef0612aca565b611efb898989612bbb565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612c66565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612c82565b505050565b6120085f84612491565b61201183612c82565b61201b5f82612cbc565b50505050565b5f51602061444d5f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613f8f565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613f8f565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612d35565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613f8f565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011115806122ac57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156122ca576040516306cf438f60e01b815260040160405180910390fd5b80515f0361148c576040516306cf438f60e01b815260040160405180910390fd5b60045f6122f784611abb565b815260208101919091526040015f205460ff16156123275760405162da8a5760e11b815260040160405180910390fd5b600e5f6123338361246d565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561238d57604051633a13919960e11b815260040160405180910390fd5b805115801561239e57506020810151155b80156123ac57506040810151155b80156123ba57506060810151155b156123d857604051635e4362cd60e11b815260040160405180910390fd5b6123e182612d6e565b5f6040518060600160405280602481526020016143a96024913990505f848260405160200161241192919061416c565b60405160208183030381529060405290505f61242c82612dd5565b9050612449818561243c88612ec2565b612444612f39565b613006565b6124655760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b61249a82610f35565b6124a381612178565b61201b83836126f3565b6001600160a01b03811633146124d65760405163334bd91960e11b815260040160405180910390fd5b611ff98282612cbc565b6124e86130b5565b5f51602061444d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125b95f5160206143ed5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612647575060408051601f3d908101601f1916820190925261264491810190613fd3565b60015b61266f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143ed5f395f51905f52811461269f57604051632a87526960e21b815260048101829052602401610c43565b611ff983836130e4565b336126b2611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b612051613139565b6126eb613139565b61205161316f565b5f5f51602061442d5f395f51905f5261270c8484611a85565b61278b575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556127413390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f83838381811061282157612821614180565b6128379260206040909202019081019150613b57565b90505f84848481811061284c5761284c614180565b90506040020160200160208101906128649190613cbf565b905061271061ffff8216111561288d5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156128be576128be613f8f565b036128dc5760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561291d57506001600160a01b0383165f908152600d602052604090205461ffff16155b83906129485760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612806565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156129df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190613fd3565b811115612a2357604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b612a79612021565b5f51602061444d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612521565b612ac1613139565b61148c8161318f565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612afb5750825b90505f826001600160401b03166001148015612b165750303b155b905081158015612b24575080155b15612b425760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b6c57845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612be25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612c095760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612c5e5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612c6f82610f35565b612c7881612178565b61201b8383612cbc565b612c8a6126a9565b6001600160a01b038116612cb357604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c81612794565b5f5f51602061442d5f395f51905f52612cd58484611a85565b1561278b575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612d3f8282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805160208201515f915f5160206143cd5f395f51905f52911590151615612d9457505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612df283613197565b90505f5160206143cd5f395f51905f5260035f8284850990508280612e1957612e19614194565b84820990508280612e2c57612e2c614194565b82820890505f5f612e3c8361339f565b925090505b80612ea5578480612e5457612e54614194565b6001870895508480612e6857612e68614194565b86870992508480612e7b57612e7b614194565b86840992508480612e8e57612e8e614194565b8484089250612e9c8361339f565b92509050612e41565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612ee9575090565b6040518060400160405280835f015181526020015f5160206143cd5f395f51905f528460200151612f1a91906141a8565b612f31905f5160206143cd5f395f51905f52614011565b905292915050565b612f6060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806130a95760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f51602061444d5f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b6130ed82613467565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561313157611ff982826134ca565b6111fb61353c565b5f51602061446d5f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b613177613139565b5f51602061444d5f395f51905f52805460ff19169055565b612c8a613139565b5f5f6131a28361355b565b8051909150603081146131b7576131b76141c7565b5f816001600160401b038111156131d0576131d06139ff565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b5090505f5b82811015613269578360016132148386614011565b61321e9190614011565b8151811061322e5761322e614180565b602001015160f81c60f81b82828151811061324b5761324b614180565b60200101906001600160f81b03191690815f1a9053506001016131ff565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156132f95783816132a58588614011565b6132af9190613ffe565b815181106132bf576132bf614180565b602001015160f81c60f81b60f81c8282815181106132df576132df614180565b60ff90921660209283029190910190910152600101613291565b505f613304826138a6565b90506101005f5160206143cd5f395f51905f525f6133228689614011565b90505f5b8181101561338f575f88600161333c8486614011565b6133469190614011565b8151811061335657613356614180565b016020015160f81c9050838061336e5761336e614194565b8587099550838061338157613381614194565b818708955050600101613326565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143cd5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361342d57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613446576134438382614011565b92505b808061345457613454614194565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361349c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143ed5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516134e691906141db565b5f60405180830381855af49150503d805f811461351e576040519150601f19603f3d011682016040523d82523d5f602084013e613523565b606091505b509150915061353385838361390d565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161359b92919061416c565b6040516020818303038152906040529050808460f81b6040516020016135c29291906141e6565b6040516020818303038152906040529050806040516020016135e49190614210565b60408051601f1981840301815290829052915061010160f01b9061360e9083908390602001614228565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561367d5761367d6139ff565b6040519080825280601f01601f1916602001820160405280156136a7576020820181803683370190505b5090505f826040516020016136be91815260200190565b60408051601f1981840301815291905290505f5b8151811015613728578181815181106136ed576136ed614180565b602001015160f81c60f81b83828151811061370a5761370a614180565b60200101906001600160f81b03191690815f1a9053506001016136d2565b505f8460405160200161373d91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156137cf575f83828151811061377657613776614180565b602001015160f81c60f81b83838151811061379357613793614180565b602001015160f81c60f81b18905088816040516020016137b492919061424c565b60408051601f1981840301815291905298505060010161375b565b508688876040516020016137e593929190614270565b6040516020818303038152906040529650868051906020012093508360405160200161381391815260200190565b60408051601f1981840301815291905291505f5b6138348a60ff8d16614011565b8110156138955782818151811061384d5761384d614180565b01602001516001600160f81b03191684613867838d613ffe565b8151811061387757613877614180565b60200101906001600160f81b03191690815f1a905350600101613827565b50919b9a5050505050505050505050565b5f80805b8351811015613906578381815181106138c5576138c5614180565b602002602001015160ff168160086138dd91906142a3565b6138e890600261439d565b6138f291906142a3565b6138fc9083613ffe565b91506001016138aa565b5092915050565b6060826139225761391d8261396c565b613965565b815115801561393957506001600160a01b0384163b155b1561396257604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b50805b9392505050565b80511561397c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156139a5575f5ffd5b81356001600160e01b031981168114613965575f5ffd5b80356001600160a01b03811681146139d2575f5ffd5b919050565b5f5f604083850312156139e8575f5ffd5b6139f1836139bc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613a3557613a356139ff565b60405290565b5f60808284031215613a4b575f5ffd5b604051608081016001600160401b0381118282101715613a6d57613a6d6139ff565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215613aab575f5ffd5b613ab3613a13565b823581526020928301359281019290925250919050565b803561ffff811681146139d2575f5ffd5b5f5f5f5f6101208587031215613aef575f5ffd5b613af98686613a3b565b9350613b088660808701613a9b565b9250613b178660c08701613a9b565b9150613b266101008601613aca565b905092959194509250565b5f60208284031215613b41575f5ffd5b81356001600160401b0381168114613965575f5ffd5b5f60208284031215613b67575f5ffd5b613965826139bc565b5f60208284031215613b80575f5ffd5b5035919050565b5f82601f830112613b96575f5ffd5b8135602083015f5f6001600160401b03841115613bb557613bb56139ff565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613be357613be36139ff565b604052838152905080828401871015613bfa575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613c2c575f5ffd5b613c368888613a3b565b9550613c458860808901613a9b565b9450613c548860c08901613a9b565b93506101008701356001600160401b03811115613c6f575f5ffd5b613c7b89828a01613b87565b935050613c8b6101208801613aca565b91506101408701356001600160401b03811115613ca6575f5ffd5b613cb289828a01613b87565b9150509295509295509295565b5f60208284031215613ccf575f5ffd5b61396582613aca565b5f5f60408385031215613ce9575f5ffd5b82359150613cf9602084016139bc565b90509250929050565b5f5f60408385031215613d13575f5ffd5b613d1c836139bc565b915060208301356001600160401b03811115613d36575f5ffd5b613d4285828601613b87565b9150509250929050565b5f5f5f5f5f60808688031215613d60575f5ffd5b613d69866139bc565b9450613d77602087016139bc565b93506040860135925060608601356001600160401b03811115613d98575f5ffd5b8601601f81018813613da8575f5ffd5b80356001600160401b03811115613dbd575f5ffd5b8860208260061b8401011115613dd1575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613df5575f5ffd5b613dff8585613a3b565b9250613e0e8560808601613a9b565b9150613e1d8560c08601613a9b565b90509250925092565b5f60208284031215613e36575f5ffd5b81356001600160401b03811115613e4b575f5ffd5b613e5784828501613b87565b949350505050565b5f60808284031215613e6f575f5ffd5b6139658383613a3b565b5f5f60408385031215613e8a575f5ffd5b613e93836139bc565b9150613cf9602084016139bc565b5f5f5f5f6101208587031215613eb5575f5ffd5b613ebf8686613a3b565b9350613ece8660808701613a9b565b9250613edd8660c08701613a9b565b91506101008501356001600160401b03811115613ef8575f5ffd5b613f0487828801613b87565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6139656020830184613f10565b5f5f5f5f60808587031215613f63575f5ffd5b613f6c856139bc565b9350613f7a602086016139bc565b925060408501359150613b26606086016139bc565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613fc657634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613fe3575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613fea565b81810381811115610b4c57610b4c613fea565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f61408b610160830185613f10565b82810361014084015261409e8185613f10565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613fea565b5f6001600160401b0382166001600160401b0381036140e6576140e6613fea565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f61414b610120830184613f10565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613e5761417a8386614155565b84614155565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826141c257634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6139658284614155565b5f6141f18285614155565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61421b8284614155565b5f81526001019392505050565b5f6142338285614155565b6001600160f01b03199390931683525050600201919050565b5f6142578285614155565b6001600160f81b03199390931683525050600101919050565b5f61427b8286614155565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613fea565b6001815b60018411156142f5578085048111156142d9576142d9613fea565b60018416156142e757908102905b60019390931c9280026142be565b935093915050565b5f8261430b57506001610b4c565b8161431757505f610b4c565b816001811461432d576002811461433757614353565b6001915050610b4c565b60ff84111561434857614348613fea565b50506001821b610b4c565b5060208310610133831016604e8410600b8410161715614376575081810a610b4c565b6143825f1984846142ba565b805f190482111561439557614395613fea565b029392505050565b5f61396583836142fd56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
3804    /// ```
3805    #[rustfmt::skip]
3806    #[allow(clippy::all)]
3807    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3808        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\x001V[a\0$a\x001V[a\0,a\x001V[a\0\xE3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x81W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xE0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80QaD\x99a\x01\t_9_\x81\x81a%J\x01R\x81\x81a%s\x01Ra*3\x01RaD\x99_\xF3\xFE`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a9\x95V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\xD7V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:\xDBV[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a;1V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a;WV[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a;pV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a<\x16V[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\xBFV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<\xD8V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<\xD8V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a;pV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\xBFV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a;pV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\xD7V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a=\x02V[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a=LV[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=\xE2V[4\x80\x15a\x06AW__\xFD[P_Q` aDM_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a;pV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a>&V[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<\xD8V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a>_V[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a;WV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a>yV[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a;WV[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a>\xA1V[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a?>V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a;pV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a;WV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a>yV[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a?PV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a>yV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<\xD8V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a>&V[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aD\r_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a;WV[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a;WV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a?\xA3V[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\xD3V[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?\xFEV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0C\xC6\x90\x84\x90a?\xFEV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?\xFEV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x0E\x90W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0E\xD4\x90\x84\x90a@\x11V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aD-_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#dV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x10=\x8Aa$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x10\x84Wa\x10\x84a?\x8FV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x10\xCAWa\x10\xCAa?\x8FV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a@$V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a$\x91V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a$\xADV[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?\xFEV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a@\xABV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\r\xD9V[_Q` aD\r_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\xE0V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x15\x05W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\xC5V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x15\xE3\x91\x90a@\x11V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?\xFEV[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x16\x87\x90\x84\x90a@\x11V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a@\x11V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x17\x08a%?V[a\x17\x11\x82a%\xE3V[a\x11\xFB\x82\x82a%\xEDV[a\x17#a&\xA9V[_Q` aDm_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\xDBV[a\x17\xF6a&\xE3V[a\x18\r_Q` aD\r_9_Q\x90_R\x88a&\xF3V[Pa\x18\x18_\x87a&\xF3V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a'\x94V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x18\x86\x85\x85a(\x04V[a\x18\x8F\x86a)\x99V[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x18\xE9a*(V[P_Q` aC\xED_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?\xFEV[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x19{\x90\x84\x90a@\x11V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa&\xA9V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aD\r_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca*qV[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x19\xB7\x91\x90a?>V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aD-_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x1A\xF8\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x1B\x1Da !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1BbW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1B\xAAW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\x1C\x1D\x91\x16\x84\x84a!\x82V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#dV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D2\x88a$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x1D\x94\x94\x93\x92\x91\x90a@\xEFV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a\x1D\xEFW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a*\xB9V[a\x1E\xE8a&\xDBV[a\x1E\xF0a*\xCAV[a\x1E\xFB\x89\x89\x89a+\xBBV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a,fV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a,\x82V[PPPV[a \x08_\x84a$\x91V[a \x11\x83a,\x82V[a \x1B_\x82a,\xBCV[PPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16\x15a QW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a \x84Wa \x84a?\x8FV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a?\x8FV[\x03a\x11\xFBW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!-WP\x83;\x15=\x17\x15[\x80a!qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0CCV[PPPPPV[a\x14\x8C\x813a-5V[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a?\x8FV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\"\xACWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\"\xCAW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x14\x8CW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\xF7\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a#'W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a#3\x83a$mV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a#\x8DW`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a#\x9EWP` \x81\x01Q\x15[\x80\x15a#\xACWP`@\x81\x01Q\x15[\x80\x15a#\xBAWP``\x81\x01Q\x15[\x15a#\xD8W`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xE1\x82a-nV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aC\xA9`$\x919\x90P_\x84\x82`@Q` \x01a$\x11\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a$,\x82a-\xD5V[\x90Pa$I\x81\x85a$<\x88a.\xC2V[a$Da/9V[a0\x06V[a$eW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a$\x9A\x82a\x0F5V[a$\xA3\x81a!xV[a \x1B\x83\x83a&\xF3V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\xD6W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a,\xBCV[a$\xE8a0\xB5V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\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\x14\x80a%\xC5WP\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\x16a%\xB9_Q` aC\xED_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a&GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra&D\x91\x81\x01\x90a?\xD3V[`\x01[a&oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x81\x14a&\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a0\xE4V[3a&\xB2a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa19V[a&\xEBa19V[a Qa1oV[__Q` aD-_9_Q\x90_Ra'\x0C\x84\x84a\x1A\x85V[a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua'A3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0BLV[_\x91PPa\x0BLV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a\x1F\xF9W_\x83\x83\x83\x81\x81\x10a(!Wa(!aA\x80V[a(7\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa;WV[\x90P_\x84\x84\x84\x81\x81\x10a(LWa(LaA\x80V[\x90P`@\x02\x01` \x01` \x81\x01\x90a(d\x91\x90a<\xBFV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a(\x8DW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a(\xBEWa(\xBEa?\x8FV[\x03a(\xDCW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a)\x1DWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a)HW`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x0CCV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a(\x06V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a)\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a?\xD3V[\x81\x11\x15a*#W`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\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 QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a*ya !V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a%!V[a*\xC1a19V[a\x14\x8C\x81a1\x8FV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*\xFBWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a+\x16WP0;\x15[\x90P\x81\x15\x80\x15a+$WP\x80\x15[\x15a+BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a+lW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\xE2W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a,\tW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a,^W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a,o\x82a\x0F5V[a,x\x81a!xV[a \x1B\x83\x83a,\xBCV[a,\x8Aa&\xA9V[`\x01`\x01`\xA0\x1B\x03\x81\x16a,\xB3W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a'\x94V[__Q` aD-_9_Q\x90_Ra,\xD5\x84\x84a\x1A\x85V[\x15a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0BLV[a-?\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q` \x82\x01Q_\x91_Q` aC\xCD_9_Q\x90_R\x91\x15\x90\x15\x16\x15a-\x94WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-\xF2\x83a1\x97V[\x90P_Q` aC\xCD_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a.\x19Wa.\x19aA\x94V[\x84\x82\t\x90P\x82\x80a.,Wa.,aA\x94V[\x82\x82\x08\x90P__a.<\x83a3\x9FV[\x92P\x90P[\x80a.\xA5W\x84\x80a.TWa.TaA\x94V[`\x01\x87\x08\x95P\x84\x80a.hWa.haA\x94V[\x86\x87\t\x92P\x84\x80a.{Wa.{aA\x94V[\x86\x84\t\x92P\x84\x80a.\x8EWa.\x8EaA\x94V[\x84\x84\x08\x92Pa.\x9C\x83a3\x9FV[\x92P\x90Pa.AV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a.\xE9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\xCD_9_Q\x90_R\x84` \x01Qa/\x1A\x91\x90aA\xA8V[a/1\x90_Q` aC\xCD_9_Q\x90_Ra@\x11V[\x90R\x92\x91PPV[a/``@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a0\xA9W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xED\x82a4gV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a11Wa\x1F\xF9\x82\x82a4\xCAV[a\x11\xFBa5<V[_Q` aDm_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a1wa19V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a,\x8Aa19V[__a1\xA2\x83a5[V[\x80Q\x90\x91P`0\x81\x14a1\xB7Wa1\xB7aA\xC7V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD0Wa1\xD0a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1\xFAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a2iW\x83`\x01a2\x14\x83\x86a@\x11V[a2\x1E\x91\x90a@\x11V[\x81Q\x81\x10a2.Wa2.aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a2KWa2KaA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1\xFFV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a2\xF9W\x83\x81a2\xA5\x85\x88a@\x11V[a2\xAF\x91\x90a?\xFEV[\x81Q\x81\x10a2\xBFWa2\xBFaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a2\xDFWa2\xDFaA\x80V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a2\x91V[P_a3\x04\x82a8\xA6V[\x90Pa\x01\0_Q` aC\xCD_9_Q\x90_R_a3\"\x86\x89a@\x11V[\x90P_[\x81\x81\x10\x15a3\x8FW_\x88`\x01a3<\x84\x86a@\x11V[a3F\x91\x90a@\x11V[\x81Q\x81\x10a3VWa3VaA\x80V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a3nWa3naA\x94V[\x85\x87\t\x95P\x83\x80a3\x81Wa3\x81aA\x94V[\x81\x87\x08\x95PP`\x01\x01a3&V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aC\xCD_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a4-W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a4FWa4C\x83\x82a@\x11V[\x92P[\x80\x80a4TWa4TaA\x94V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a4\x9CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa4\xE6\x91\x90aA\xDBV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a5\x1EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a5#V[``\x91P[P\x91P\x91Pa53\x85\x83\x83a9\rV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a5\x9B\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\xC2\x92\x91\x90aA\xE6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a5\xE4\x91\x90aB\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a6\x0E\x90\x83\x90\x83\x90` \x01aB(V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a6}Wa6}a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a6\xA7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\xBE\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a7(W\x81\x81\x81Q\x81\x10a6\xEDWa6\xEDaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a7\nWa7\naA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6\xD2V[P_\x84`@Q` \x01a7=\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7\xCFW_\x83\x82\x81Q\x81\x10a7vWa7vaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a7\x93Wa7\x93aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\xB4\x92\x91\x90aBLV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a7[V[P\x86\x88\x87`@Q` \x01a7\xE5\x93\x92\x91\x90aBpV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a8\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a84\x8A`\xFF\x8D\x16a@\x11V[\x81\x10\x15a8\x95W\x82\x81\x81Q\x81\x10a8MWa8MaA\x80V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a8g\x83\x8Da?\xFEV[\x81Q\x81\x10a8wWa8waA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8'V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a9\x06W\x83\x81\x81Q\x81\x10a8\xC5Wa8\xC5aA\x80V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a8\xDD\x91\x90aB\xA3V[a8\xE8\x90`\x02aC\x9DV[a8\xF2\x91\x90aB\xA3V[a8\xFC\x90\x83a?\xFEV[\x91P`\x01\x01a8\xAAV[P\x92\x91PPV[``\x82a9\"Wa9\x1D\x82a9lV[a9eV[\x81Q\x15\x80\x15a99WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a9bW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[P\x80[\x93\x92PPPV[\x80Q\x15a9|W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a9\xA5W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9eW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\xD2W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a9\xE8W__\xFD[a9\xF1\x83a9\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:5Wa:5a9\xFFV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a:KW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:mWa:ma9\xFFV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a:\xABW__\xFD[a:\xB3a:\x13V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\xD2W__\xFD[____a\x01 \x85\x87\x03\x12\x15a:\xEFW__\xFD[a:\xF9\x86\x86a:;V[\x93Pa;\x08\x86`\x80\x87\x01a:\x9BV[\x92Pa;\x17\x86`\xC0\x87\x01a:\x9BV[\x91Pa;&a\x01\0\x86\x01a:\xCAV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a;AW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a9eW__\xFD[_` \x82\x84\x03\x12\x15a;gW__\xFD[a9e\x82a9\xBCV[_` \x82\x84\x03\x12\x15a;\x80W__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a;\x96W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\xB5Wa;\xB5a9\xFFV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;\xE3Wa;\xE3a9\xFFV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;\xFAW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a<,W__\xFD[a<6\x88\x88a:;V[\x95Pa<E\x88`\x80\x89\x01a:\x9BV[\x94Pa<T\x88`\xC0\x89\x01a:\x9BV[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<oW__\xFD[a<{\x89\x82\x8A\x01a;\x87V[\x93PPa<\x8Ba\x01 \x88\x01a:\xCAV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xA6W__\xFD[a<\xB2\x89\x82\x8A\x01a;\x87V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\xCFW__\xFD[a9e\x82a:\xCAV[__`@\x83\x85\x03\x12\x15a<\xE9W__\xFD[\x825\x91Pa<\xF9` \x84\x01a9\xBCV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a=\x13W__\xFD[a=\x1C\x83a9\xBCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=6W__\xFD[a=B\x85\x82\x86\x01a;\x87V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a=`W__\xFD[a=i\x86a9\xBCV[\x94Pa=w` \x87\x01a9\xBCV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x98W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a=\xA8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\xBDW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\xD1W__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=\xF5W__\xFD[a=\xFF\x85\x85a:;V[\x92Pa>\x0E\x85`\x80\x86\x01a:\x9BV[\x91Pa>\x1D\x85`\xC0\x86\x01a:\x9BV[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a>6W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a>KW__\xFD[a>W\x84\x82\x85\x01a;\x87V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a>oW__\xFD[a9e\x83\x83a:;V[__`@\x83\x85\x03\x12\x15a>\x8AW__\xFD[a>\x93\x83a9\xBCV[\x91Pa<\xF9` \x84\x01a9\xBCV[____a\x01 \x85\x87\x03\x12\x15a>\xB5W__\xFD[a>\xBF\x86\x86a:;V[\x93Pa>\xCE\x86`\x80\x87\x01a:\x9BV[\x92Pa>\xDD\x86`\xC0\x87\x01a:\x9BV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xF8W__\xFD[a?\x04\x87\x82\x88\x01a;\x87V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a9e` \x83\x01\x84a?\x10V[____`\x80\x85\x87\x03\x12\x15a?cW__\xFD[a?l\x85a9\xBCV[\x93Pa?z` \x86\x01a9\xBCV[\x92P`@\x85\x015\x91Pa;&``\x86\x01a9\xBCV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\xC6WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?\xE3W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?\xEAV[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a@\x8Ba\x01`\x83\x01\x85a?\x10V[\x82\x81\x03a\x01@\x84\x01Ra@\x9E\x81\x85a?\x10V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@\xE6Wa@\xE6a?\xEAV[`\x01\x01\x92\x91PPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aAKa\x01 \x83\x01\x84a?\x10V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a>WaAz\x83\x86aAUV[\x84aAUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\xC2WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a9e\x82\x84aAUV[_aA\xF1\x82\x85aAUV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aB\x1B\x82\x84aAUV[_\x81R`\x01\x01\x93\x92PPPV[_aB3\x82\x85aAUV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aBW\x82\x85aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aB{\x82\x86aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?\xEAV[`\x01\x81[`\x01\x84\x11\x15aB\xF5W\x80\x85\x04\x81\x11\x15aB\xD9WaB\xD9a?\xEAV[`\x01\x84\x16\x15aB\xE7W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\xBEV[\x93P\x93\x91PPV[_\x82aC\x0BWP`\x01a\x0BLV[\x81aC\x17WP_a\x0BLV[\x81`\x01\x81\x14aC-W`\x02\x81\x14aC7WaCSV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aCHWaCHa?\xEAV[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aCvWP\x81\x81\na\x0BLV[aC\x82_\x19\x84\x84aB\xBAV[\x80_\x19\x04\x82\x11\x15aC\x95WaC\x95a?\xEAV[\x02\x93\x92PPPV[_a9e\x83\x83aB\xFDV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
3809    );
3810    /// The runtime bytecode of the contract, as deployed on the network.
3811    ///
3812    /// ```text
3813    ///0x608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b50610389610384366004613995565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b83660046139d7565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613adb565b610d38565b348015610414575f5ffd5b506103bd610423366004613b31565b610d51565b348015610433575f5ffd5b506103bd610442366004613b57565b610de5565b348015610452575f5ffd5b50610466610461366004613b70565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613c16565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613cbf565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613cd8565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613cd8565b611209565b348015610510575f5ffd5b506103bd61051f366004613b70565b611231565b34801561052f575f5ffd5b506103bd61053e366004613cbf565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613b70565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d13660046139d7565b61148f565b6103bd6105e4366004613d02565b611700565b3480156105f4575f5ffd5b506103bd610603366004613d4c565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613de2565b348015610641575f5ffd5b505f51602061444d5f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613b70565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613e26565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613cd8565b611a85565b34801561077b575f5ffd5b5061046661078a366004613e5f565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613b57565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613e79565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613b57565b611b15565b348015610886575f5ffd5b506103bd610895366004613ea1565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613f3e565b3480156108e2575f5ffd5b506103896108f1366004613b70565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613b57565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613e79565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613f50565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613e79565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613cd8565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613e26565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f51602061440d5f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613b57565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613b57565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613fa3565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613fd3565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613ffe565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613ffe565b9250508190555082600b5f828254610cde9190613ffe565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490614011565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f51602061442d5f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a87876122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a612364565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a61246d565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613f8f565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613f8f565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90614024565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb8282612491565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826124ad565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613ffe565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff16836140ab565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f51602061440d5f395f51905f5261148481612178565b61148c6124e0565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a836140c5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190614011565b90915550506008545f906115f79042613ffe565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490614011565b9250508190555084600b5f82825461169f9190614011565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b61170861253f565b611711826125e3565b6111fb82826125ed565b6117236126a9565b5f51602061446d5f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee6126db565b6117f66126e3565b61180d5f51602061440d5f395f51905f52886126f3565b506118185f876126f3565b505f611822611a57565b9050806001600160a01b0316876001600160a01b0316146118465761184687612794565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612804565b61188f86612999565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e9612a28565b505f5160206143ed5f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613ffe565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490614011565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6126a9565b6040516317d5c96560e11b815260040160405180910390fd5b5f51602061440d5f395f51905f526119fb81612178565b61148c612a71565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613f3e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f51602061442d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f85856122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd1818588612364565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d328861246d565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d9494939291906140ef565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee086612ab9565b611ee86126db565b611ef0612aca565b611efb898989612bbb565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612c66565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612c82565b505050565b6120085f84612491565b61201183612c82565b61201b5f82612cbc565b50505050565b5f51602061444d5f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613f8f565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613f8f565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612d35565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613f8f565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011115806122ac57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156122ca576040516306cf438f60e01b815260040160405180910390fd5b80515f0361148c576040516306cf438f60e01b815260040160405180910390fd5b60045f6122f784611abb565b815260208101919091526040015f205460ff16156123275760405162da8a5760e11b815260040160405180910390fd5b600e5f6123338361246d565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561238d57604051633a13919960e11b815260040160405180910390fd5b805115801561239e57506020810151155b80156123ac57506040810151155b80156123ba57506060810151155b156123d857604051635e4362cd60e11b815260040160405180910390fd5b6123e182612d6e565b5f6040518060600160405280602481526020016143a96024913990505f848260405160200161241192919061416c565b60405160208183030381529060405290505f61242c82612dd5565b9050612449818561243c88612ec2565b612444612f39565b613006565b6124655760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b61249a82610f35565b6124a381612178565b61201b83836126f3565b6001600160a01b03811633146124d65760405163334bd91960e11b815260040160405180910390fd5b611ff98282612cbc565b6124e86130b5565b5f51602061444d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125b95f5160206143ed5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612647575060408051601f3d908101601f1916820190925261264491810190613fd3565b60015b61266f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143ed5f395f51905f52811461269f57604051632a87526960e21b815260048101829052602401610c43565b611ff983836130e4565b336126b2611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b612051613139565b6126eb613139565b61205161316f565b5f5f51602061442d5f395f51905f5261270c8484611a85565b61278b575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556127413390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f83838381811061282157612821614180565b6128379260206040909202019081019150613b57565b90505f84848481811061284c5761284c614180565b90506040020160200160208101906128649190613cbf565b905061271061ffff8216111561288d5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156128be576128be613f8f565b036128dc5760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561291d57506001600160a01b0383165f908152600d602052604090205461ffff16155b83906129485760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612806565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156129df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190613fd3565b811115612a2357604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b612a79612021565b5f51602061444d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612521565b612ac1613139565b61148c8161318f565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612afb5750825b90505f826001600160401b03166001148015612b165750303b155b905081158015612b24575080155b15612b425760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b6c57845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612be25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612c095760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612c5e5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612c6f82610f35565b612c7881612178565b61201b8383612cbc565b612c8a6126a9565b6001600160a01b038116612cb357604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c81612794565b5f5f51602061442d5f395f51905f52612cd58484611a85565b1561278b575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612d3f8282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805160208201515f915f5160206143cd5f395f51905f52911590151615612d9457505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612df283613197565b90505f5160206143cd5f395f51905f5260035f8284850990508280612e1957612e19614194565b84820990508280612e2c57612e2c614194565b82820890505f5f612e3c8361339f565b925090505b80612ea5578480612e5457612e54614194565b6001870895508480612e6857612e68614194565b86870992508480612e7b57612e7b614194565b86840992508480612e8e57612e8e614194565b8484089250612e9c8361339f565b92509050612e41565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612ee9575090565b6040518060400160405280835f015181526020015f5160206143cd5f395f51905f528460200151612f1a91906141a8565b612f31905f5160206143cd5f395f51905f52614011565b905292915050565b612f6060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806130a95760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f51602061444d5f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b6130ed82613467565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561313157611ff982826134ca565b6111fb61353c565b5f51602061446d5f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b613177613139565b5f51602061444d5f395f51905f52805460ff19169055565b612c8a613139565b5f5f6131a28361355b565b8051909150603081146131b7576131b76141c7565b5f816001600160401b038111156131d0576131d06139ff565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b5090505f5b82811015613269578360016132148386614011565b61321e9190614011565b8151811061322e5761322e614180565b602001015160f81c60f81b82828151811061324b5761324b614180565b60200101906001600160f81b03191690815f1a9053506001016131ff565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156132f95783816132a58588614011565b6132af9190613ffe565b815181106132bf576132bf614180565b602001015160f81c60f81b60f81c8282815181106132df576132df614180565b60ff90921660209283029190910190910152600101613291565b505f613304826138a6565b90506101005f5160206143cd5f395f51905f525f6133228689614011565b90505f5b8181101561338f575f88600161333c8486614011565b6133469190614011565b8151811061335657613356614180565b016020015160f81c9050838061336e5761336e614194565b8587099550838061338157613381614194565b818708955050600101613326565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143cd5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361342d57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613446576134438382614011565b92505b808061345457613454614194565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361349c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143ed5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516134e691906141db565b5f60405180830381855af49150503d805f811461351e576040519150601f19603f3d011682016040523d82523d5f602084013e613523565b606091505b509150915061353385838361390d565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161359b92919061416c565b6040516020818303038152906040529050808460f81b6040516020016135c29291906141e6565b6040516020818303038152906040529050806040516020016135e49190614210565b60408051601f1981840301815290829052915061010160f01b9061360e9083908390602001614228565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561367d5761367d6139ff565b6040519080825280601f01601f1916602001820160405280156136a7576020820181803683370190505b5090505f826040516020016136be91815260200190565b60408051601f1981840301815291905290505f5b8151811015613728578181815181106136ed576136ed614180565b602001015160f81c60f81b83828151811061370a5761370a614180565b60200101906001600160f81b03191690815f1a9053506001016136d2565b505f8460405160200161373d91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156137cf575f83828151811061377657613776614180565b602001015160f81c60f81b83838151811061379357613793614180565b602001015160f81c60f81b18905088816040516020016137b492919061424c565b60408051601f1981840301815291905298505060010161375b565b508688876040516020016137e593929190614270565b6040516020818303038152906040529650868051906020012093508360405160200161381391815260200190565b60408051601f1981840301815291905291505f5b6138348a60ff8d16614011565b8110156138955782818151811061384d5761384d614180565b01602001516001600160f81b03191684613867838d613ffe565b8151811061387757613877614180565b60200101906001600160f81b03191690815f1a905350600101613827565b50919b9a5050505050505050505050565b5f80805b8351811015613906578381815181106138c5576138c5614180565b602002602001015160ff168160086138dd91906142a3565b6138e890600261439d565b6138f291906142a3565b6138fc9083613ffe565b91506001016138aa565b5092915050565b6060826139225761391d8261396c565b613965565b815115801561393957506001600160a01b0384163b155b1561396257604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b50805b9392505050565b80511561397c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156139a5575f5ffd5b81356001600160e01b031981168114613965575f5ffd5b80356001600160a01b03811681146139d2575f5ffd5b919050565b5f5f604083850312156139e8575f5ffd5b6139f1836139bc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613a3557613a356139ff565b60405290565b5f60808284031215613a4b575f5ffd5b604051608081016001600160401b0381118282101715613a6d57613a6d6139ff565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215613aab575f5ffd5b613ab3613a13565b823581526020928301359281019290925250919050565b803561ffff811681146139d2575f5ffd5b5f5f5f5f6101208587031215613aef575f5ffd5b613af98686613a3b565b9350613b088660808701613a9b565b9250613b178660c08701613a9b565b9150613b266101008601613aca565b905092959194509250565b5f60208284031215613b41575f5ffd5b81356001600160401b0381168114613965575f5ffd5b5f60208284031215613b67575f5ffd5b613965826139bc565b5f60208284031215613b80575f5ffd5b5035919050565b5f82601f830112613b96575f5ffd5b8135602083015f5f6001600160401b03841115613bb557613bb56139ff565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613be357613be36139ff565b604052838152905080828401871015613bfa575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613c2c575f5ffd5b613c368888613a3b565b9550613c458860808901613a9b565b9450613c548860c08901613a9b565b93506101008701356001600160401b03811115613c6f575f5ffd5b613c7b89828a01613b87565b935050613c8b6101208801613aca565b91506101408701356001600160401b03811115613ca6575f5ffd5b613cb289828a01613b87565b9150509295509295509295565b5f60208284031215613ccf575f5ffd5b61396582613aca565b5f5f60408385031215613ce9575f5ffd5b82359150613cf9602084016139bc565b90509250929050565b5f5f60408385031215613d13575f5ffd5b613d1c836139bc565b915060208301356001600160401b03811115613d36575f5ffd5b613d4285828601613b87565b9150509250929050565b5f5f5f5f5f60808688031215613d60575f5ffd5b613d69866139bc565b9450613d77602087016139bc565b93506040860135925060608601356001600160401b03811115613d98575f5ffd5b8601601f81018813613da8575f5ffd5b80356001600160401b03811115613dbd575f5ffd5b8860208260061b8401011115613dd1575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613df5575f5ffd5b613dff8585613a3b565b9250613e0e8560808601613a9b565b9150613e1d8560c08601613a9b565b90509250925092565b5f60208284031215613e36575f5ffd5b81356001600160401b03811115613e4b575f5ffd5b613e5784828501613b87565b949350505050565b5f60808284031215613e6f575f5ffd5b6139658383613a3b565b5f5f60408385031215613e8a575f5ffd5b613e93836139bc565b9150613cf9602084016139bc565b5f5f5f5f6101208587031215613eb5575f5ffd5b613ebf8686613a3b565b9350613ece8660808701613a9b565b9250613edd8660c08701613a9b565b91506101008501356001600160401b03811115613ef8575f5ffd5b613f0487828801613b87565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6139656020830184613f10565b5f5f5f5f60808587031215613f63575f5ffd5b613f6c856139bc565b9350613f7a602086016139bc565b925060408501359150613b26606086016139bc565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613fc657634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613fe3575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613fea565b81810381811115610b4c57610b4c613fea565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f61408b610160830185613f10565b82810361014084015261409e8185613f10565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613fea565b5f6001600160401b0382166001600160401b0381036140e6576140e6613fea565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f61414b610120830184613f10565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613e5761417a8386614155565b84614155565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826141c257634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6139658284614155565b5f6141f18285614155565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61421b8284614155565b5f81526001019392505050565b5f6142338285614155565b6001600160f01b03199390931683525050600201919050565b5f6142578285614155565b6001600160f81b03199390931683525050600101919050565b5f61427b8286614155565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613fea565b6001815b60018411156142f5578085048111156142d9576142d9613fea565b60018416156142e757908102905b60019390931c9280026142be565b935093915050565b5f8261430b57506001610b4c565b8161431757505f610b4c565b816001811461432d576002811461433757614353565b6001915050610b4c565b60ff84111561434857614348613fea565b50506001821b610b4c565b5060208310610133831016604e8410600b8410161715614376575081810a610b4c565b6143825f1984846142ba565b805f190482111561439557614395613fea565b029392505050565b5f61396583836142fd56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
3814    /// ```
3815    #[rustfmt::skip]
3816    #[allow(clippy::all)]
3817    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3818        b"`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a9\x95V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\xD7V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:\xDBV[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a;1V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a;WV[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a;pV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a<\x16V[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\xBFV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<\xD8V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<\xD8V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a;pV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\xBFV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a;pV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\xD7V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a=\x02V[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a=LV[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=\xE2V[4\x80\x15a\x06AW__\xFD[P_Q` aDM_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a;pV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a>&V[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<\xD8V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a>_V[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a;WV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a>yV[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a;WV[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a>\xA1V[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a?>V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a;pV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a;WV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a>yV[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a?PV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a>yV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<\xD8V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a>&V[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aD\r_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a;WV[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a;WV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a?\xA3V[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\xD3V[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?\xFEV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0C\xC6\x90\x84\x90a?\xFEV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?\xFEV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x0E\x90W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0E\xD4\x90\x84\x90a@\x11V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aD-_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#dV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x10=\x8Aa$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x10\x84Wa\x10\x84a?\x8FV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x10\xCAWa\x10\xCAa?\x8FV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a@$V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a$\x91V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a$\xADV[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?\xFEV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a@\xABV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\r\xD9V[_Q` aD\r_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\xE0V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x15\x05W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\xC5V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x15\xE3\x91\x90a@\x11V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?\xFEV[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x16\x87\x90\x84\x90a@\x11V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a@\x11V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x17\x08a%?V[a\x17\x11\x82a%\xE3V[a\x11\xFB\x82\x82a%\xEDV[a\x17#a&\xA9V[_Q` aDm_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\xDBV[a\x17\xF6a&\xE3V[a\x18\r_Q` aD\r_9_Q\x90_R\x88a&\xF3V[Pa\x18\x18_\x87a&\xF3V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a'\x94V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x18\x86\x85\x85a(\x04V[a\x18\x8F\x86a)\x99V[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x18\xE9a*(V[P_Q` aC\xED_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?\xFEV[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x19{\x90\x84\x90a@\x11V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa&\xA9V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aD\r_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca*qV[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x19\xB7\x91\x90a?>V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aD-_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x1A\xF8\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x1B\x1Da !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1BbW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1B\xAAW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\x1C\x1D\x91\x16\x84\x84a!\x82V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#dV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D2\x88a$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x1D\x94\x94\x93\x92\x91\x90a@\xEFV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a\x1D\xEFW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a*\xB9V[a\x1E\xE8a&\xDBV[a\x1E\xF0a*\xCAV[a\x1E\xFB\x89\x89\x89a+\xBBV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a,fV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a,\x82V[PPPV[a \x08_\x84a$\x91V[a \x11\x83a,\x82V[a \x1B_\x82a,\xBCV[PPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16\x15a QW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a \x84Wa \x84a?\x8FV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a?\x8FV[\x03a\x11\xFBW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!-WP\x83;\x15=\x17\x15[\x80a!qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0CCV[PPPPPV[a\x14\x8C\x813a-5V[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a?\x8FV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\"\xACWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\"\xCAW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x14\x8CW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\xF7\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a#'W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a#3\x83a$mV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a#\x8DW`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a#\x9EWP` \x81\x01Q\x15[\x80\x15a#\xACWP`@\x81\x01Q\x15[\x80\x15a#\xBAWP``\x81\x01Q\x15[\x15a#\xD8W`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xE1\x82a-nV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aC\xA9`$\x919\x90P_\x84\x82`@Q` \x01a$\x11\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a$,\x82a-\xD5V[\x90Pa$I\x81\x85a$<\x88a.\xC2V[a$Da/9V[a0\x06V[a$eW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a$\x9A\x82a\x0F5V[a$\xA3\x81a!xV[a \x1B\x83\x83a&\xF3V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\xD6W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a,\xBCV[a$\xE8a0\xB5V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\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\x14\x80a%\xC5WP\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\x16a%\xB9_Q` aC\xED_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a&GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra&D\x91\x81\x01\x90a?\xD3V[`\x01[a&oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x81\x14a&\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a0\xE4V[3a&\xB2a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa19V[a&\xEBa19V[a Qa1oV[__Q` aD-_9_Q\x90_Ra'\x0C\x84\x84a\x1A\x85V[a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua'A3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0BLV[_\x91PPa\x0BLV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a\x1F\xF9W_\x83\x83\x83\x81\x81\x10a(!Wa(!aA\x80V[a(7\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa;WV[\x90P_\x84\x84\x84\x81\x81\x10a(LWa(LaA\x80V[\x90P`@\x02\x01` \x01` \x81\x01\x90a(d\x91\x90a<\xBFV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a(\x8DW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a(\xBEWa(\xBEa?\x8FV[\x03a(\xDCW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a)\x1DWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a)HW`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x0CCV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a(\x06V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a)\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a?\xD3V[\x81\x11\x15a*#W`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\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 QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a*ya !V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a%!V[a*\xC1a19V[a\x14\x8C\x81a1\x8FV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*\xFBWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a+\x16WP0;\x15[\x90P\x81\x15\x80\x15a+$WP\x80\x15[\x15a+BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a+lW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\xE2W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a,\tW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a,^W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a,o\x82a\x0F5V[a,x\x81a!xV[a \x1B\x83\x83a,\xBCV[a,\x8Aa&\xA9V[`\x01`\x01`\xA0\x1B\x03\x81\x16a,\xB3W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a'\x94V[__Q` aD-_9_Q\x90_Ra,\xD5\x84\x84a\x1A\x85V[\x15a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0BLV[a-?\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q` \x82\x01Q_\x91_Q` aC\xCD_9_Q\x90_R\x91\x15\x90\x15\x16\x15a-\x94WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-\xF2\x83a1\x97V[\x90P_Q` aC\xCD_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a.\x19Wa.\x19aA\x94V[\x84\x82\t\x90P\x82\x80a.,Wa.,aA\x94V[\x82\x82\x08\x90P__a.<\x83a3\x9FV[\x92P\x90P[\x80a.\xA5W\x84\x80a.TWa.TaA\x94V[`\x01\x87\x08\x95P\x84\x80a.hWa.haA\x94V[\x86\x87\t\x92P\x84\x80a.{Wa.{aA\x94V[\x86\x84\t\x92P\x84\x80a.\x8EWa.\x8EaA\x94V[\x84\x84\x08\x92Pa.\x9C\x83a3\x9FV[\x92P\x90Pa.AV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a.\xE9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\xCD_9_Q\x90_R\x84` \x01Qa/\x1A\x91\x90aA\xA8V[a/1\x90_Q` aC\xCD_9_Q\x90_Ra@\x11V[\x90R\x92\x91PPV[a/``@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a0\xA9W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xED\x82a4gV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a11Wa\x1F\xF9\x82\x82a4\xCAV[a\x11\xFBa5<V[_Q` aDm_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a1wa19V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a,\x8Aa19V[__a1\xA2\x83a5[V[\x80Q\x90\x91P`0\x81\x14a1\xB7Wa1\xB7aA\xC7V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD0Wa1\xD0a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1\xFAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a2iW\x83`\x01a2\x14\x83\x86a@\x11V[a2\x1E\x91\x90a@\x11V[\x81Q\x81\x10a2.Wa2.aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a2KWa2KaA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1\xFFV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a2\xF9W\x83\x81a2\xA5\x85\x88a@\x11V[a2\xAF\x91\x90a?\xFEV[\x81Q\x81\x10a2\xBFWa2\xBFaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a2\xDFWa2\xDFaA\x80V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a2\x91V[P_a3\x04\x82a8\xA6V[\x90Pa\x01\0_Q` aC\xCD_9_Q\x90_R_a3\"\x86\x89a@\x11V[\x90P_[\x81\x81\x10\x15a3\x8FW_\x88`\x01a3<\x84\x86a@\x11V[a3F\x91\x90a@\x11V[\x81Q\x81\x10a3VWa3VaA\x80V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a3nWa3naA\x94V[\x85\x87\t\x95P\x83\x80a3\x81Wa3\x81aA\x94V[\x81\x87\x08\x95PP`\x01\x01a3&V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aC\xCD_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a4-W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a4FWa4C\x83\x82a@\x11V[\x92P[\x80\x80a4TWa4TaA\x94V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a4\x9CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa4\xE6\x91\x90aA\xDBV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a5\x1EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a5#V[``\x91P[P\x91P\x91Pa53\x85\x83\x83a9\rV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a5\x9B\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\xC2\x92\x91\x90aA\xE6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a5\xE4\x91\x90aB\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a6\x0E\x90\x83\x90\x83\x90` \x01aB(V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a6}Wa6}a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a6\xA7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\xBE\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a7(W\x81\x81\x81Q\x81\x10a6\xEDWa6\xEDaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a7\nWa7\naA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6\xD2V[P_\x84`@Q` \x01a7=\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7\xCFW_\x83\x82\x81Q\x81\x10a7vWa7vaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a7\x93Wa7\x93aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\xB4\x92\x91\x90aBLV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a7[V[P\x86\x88\x87`@Q` \x01a7\xE5\x93\x92\x91\x90aBpV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a8\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a84\x8A`\xFF\x8D\x16a@\x11V[\x81\x10\x15a8\x95W\x82\x81\x81Q\x81\x10a8MWa8MaA\x80V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a8g\x83\x8Da?\xFEV[\x81Q\x81\x10a8wWa8waA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8'V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a9\x06W\x83\x81\x81Q\x81\x10a8\xC5Wa8\xC5aA\x80V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a8\xDD\x91\x90aB\xA3V[a8\xE8\x90`\x02aC\x9DV[a8\xF2\x91\x90aB\xA3V[a8\xFC\x90\x83a?\xFEV[\x91P`\x01\x01a8\xAAV[P\x92\x91PPV[``\x82a9\"Wa9\x1D\x82a9lV[a9eV[\x81Q\x15\x80\x15a99WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a9bW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[P\x80[\x93\x92PPPV[\x80Q\x15a9|W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a9\xA5W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9eW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\xD2W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a9\xE8W__\xFD[a9\xF1\x83a9\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:5Wa:5a9\xFFV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a:KW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:mWa:ma9\xFFV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a:\xABW__\xFD[a:\xB3a:\x13V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\xD2W__\xFD[____a\x01 \x85\x87\x03\x12\x15a:\xEFW__\xFD[a:\xF9\x86\x86a:;V[\x93Pa;\x08\x86`\x80\x87\x01a:\x9BV[\x92Pa;\x17\x86`\xC0\x87\x01a:\x9BV[\x91Pa;&a\x01\0\x86\x01a:\xCAV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a;AW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a9eW__\xFD[_` \x82\x84\x03\x12\x15a;gW__\xFD[a9e\x82a9\xBCV[_` \x82\x84\x03\x12\x15a;\x80W__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a;\x96W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\xB5Wa;\xB5a9\xFFV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;\xE3Wa;\xE3a9\xFFV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;\xFAW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a<,W__\xFD[a<6\x88\x88a:;V[\x95Pa<E\x88`\x80\x89\x01a:\x9BV[\x94Pa<T\x88`\xC0\x89\x01a:\x9BV[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<oW__\xFD[a<{\x89\x82\x8A\x01a;\x87V[\x93PPa<\x8Ba\x01 \x88\x01a:\xCAV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xA6W__\xFD[a<\xB2\x89\x82\x8A\x01a;\x87V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\xCFW__\xFD[a9e\x82a:\xCAV[__`@\x83\x85\x03\x12\x15a<\xE9W__\xFD[\x825\x91Pa<\xF9` \x84\x01a9\xBCV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a=\x13W__\xFD[a=\x1C\x83a9\xBCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=6W__\xFD[a=B\x85\x82\x86\x01a;\x87V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a=`W__\xFD[a=i\x86a9\xBCV[\x94Pa=w` \x87\x01a9\xBCV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x98W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a=\xA8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\xBDW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\xD1W__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=\xF5W__\xFD[a=\xFF\x85\x85a:;V[\x92Pa>\x0E\x85`\x80\x86\x01a:\x9BV[\x91Pa>\x1D\x85`\xC0\x86\x01a:\x9BV[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a>6W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a>KW__\xFD[a>W\x84\x82\x85\x01a;\x87V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a>oW__\xFD[a9e\x83\x83a:;V[__`@\x83\x85\x03\x12\x15a>\x8AW__\xFD[a>\x93\x83a9\xBCV[\x91Pa<\xF9` \x84\x01a9\xBCV[____a\x01 \x85\x87\x03\x12\x15a>\xB5W__\xFD[a>\xBF\x86\x86a:;V[\x93Pa>\xCE\x86`\x80\x87\x01a:\x9BV[\x92Pa>\xDD\x86`\xC0\x87\x01a:\x9BV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xF8W__\xFD[a?\x04\x87\x82\x88\x01a;\x87V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a9e` \x83\x01\x84a?\x10V[____`\x80\x85\x87\x03\x12\x15a?cW__\xFD[a?l\x85a9\xBCV[\x93Pa?z` \x86\x01a9\xBCV[\x92P`@\x85\x015\x91Pa;&``\x86\x01a9\xBCV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\xC6WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?\xE3W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?\xEAV[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a@\x8Ba\x01`\x83\x01\x85a?\x10V[\x82\x81\x03a\x01@\x84\x01Ra@\x9E\x81\x85a?\x10V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@\xE6Wa@\xE6a?\xEAV[`\x01\x01\x92\x91PPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aAKa\x01 \x83\x01\x84a?\x10V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a>WaAz\x83\x86aAUV[\x84aAUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\xC2WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a9e\x82\x84aAUV[_aA\xF1\x82\x85aAUV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aB\x1B\x82\x84aAUV[_\x81R`\x01\x01\x93\x92PPPV[_aB3\x82\x85aAUV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aBW\x82\x85aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aB{\x82\x86aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?\xEAV[`\x01\x81[`\x01\x84\x11\x15aB\xF5W\x80\x85\x04\x81\x11\x15aB\xD9WaB\xD9a?\xEAV[`\x01\x84\x16\x15aB\xE7W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\xBEV[\x93P\x93\x91PPV[_\x82aC\x0BWP`\x01a\x0BLV[\x81aC\x17WP_a\x0BLV[\x81`\x01\x81\x14aC-W`\x02\x81\x14aC7WaCSV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aCHWaCHa?\xEAV[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aCvWP\x81\x81\na\x0BLV[aC\x82_\x19\x84\x84aB\xBAV[\x80_\x19\x04\x82\x11\x15aC\x95WaC\x95a?\xEAV[\x02\x93\x92PPPV[_a9e\x83\x83aB\xFDV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
3819    );
3820    #[derive(serde::Serialize, serde::Deserialize)]
3821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3822    /**```solidity
3823struct InitialCommission { address validator; uint16 commission; }
3824```*/
3825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3826    #[derive(Clone)]
3827    pub struct InitialCommission {
3828        #[allow(missing_docs)]
3829        pub validator: alloy::sol_types::private::Address,
3830        #[allow(missing_docs)]
3831        pub commission: u16,
3832    }
3833    #[allow(
3834        non_camel_case_types,
3835        non_snake_case,
3836        clippy::pub_underscore_fields,
3837        clippy::style
3838    )]
3839    const _: () = {
3840        use alloy::sol_types as alloy_sol_types;
3841        #[doc(hidden)]
3842        #[allow(dead_code)]
3843        type UnderlyingSolTuple<'a> = (
3844            alloy::sol_types::sol_data::Address,
3845            alloy::sol_types::sol_data::Uint<16>,
3846        );
3847        #[doc(hidden)]
3848        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
3849        #[cfg(test)]
3850        #[allow(dead_code, unreachable_patterns)]
3851        fn _type_assertion(
3852            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3853        ) {
3854            match _t {
3855                alloy_sol_types::private::AssertTypeEq::<
3856                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3857                >(_) => {}
3858            }
3859        }
3860        #[automatically_derived]
3861        #[doc(hidden)]
3862        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
3863            fn from(value: InitialCommission) -> Self {
3864                (value.validator, value.commission)
3865            }
3866        }
3867        #[automatically_derived]
3868        #[doc(hidden)]
3869        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
3870            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3871                Self {
3872                    validator: tuple.0,
3873                    commission: tuple.1,
3874                }
3875            }
3876        }
3877        #[automatically_derived]
3878        impl alloy_sol_types::SolValue for InitialCommission {
3879            type SolType = Self;
3880        }
3881        #[automatically_derived]
3882        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
3883            #[inline]
3884            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3885                (
3886                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3887                        &self.validator,
3888                    ),
3889                    <alloy::sol_types::sol_data::Uint<
3890                        16,
3891                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
3892                )
3893            }
3894            #[inline]
3895            fn stv_abi_encoded_size(&self) -> usize {
3896                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3897                    return size;
3898                }
3899                let tuple = <UnderlyingRustTuple<
3900                    '_,
3901                > as ::core::convert::From<Self>>::from(self.clone());
3902                <UnderlyingSolTuple<
3903                    '_,
3904                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3905            }
3906            #[inline]
3907            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3908                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3909            }
3910            #[inline]
3911            fn stv_abi_encode_packed_to(
3912                &self,
3913                out: &mut alloy_sol_types::private::Vec<u8>,
3914            ) {
3915                let tuple = <UnderlyingRustTuple<
3916                    '_,
3917                > as ::core::convert::From<Self>>::from(self.clone());
3918                <UnderlyingSolTuple<
3919                    '_,
3920                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3921            }
3922            #[inline]
3923            fn stv_abi_packed_encoded_size(&self) -> usize {
3924                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3925                    return size;
3926                }
3927                let tuple = <UnderlyingRustTuple<
3928                    '_,
3929                > as ::core::convert::From<Self>>::from(self.clone());
3930                <UnderlyingSolTuple<
3931                    '_,
3932                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3933            }
3934        }
3935        #[automatically_derived]
3936        impl alloy_sol_types::SolType for InitialCommission {
3937            type RustType = Self;
3938            type Token<'a> = <UnderlyingSolTuple<
3939                'a,
3940            > as alloy_sol_types::SolType>::Token<'a>;
3941            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3942            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3943                '_,
3944            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3945            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3946                '_,
3947            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3948            #[inline]
3949            fn valid_token(token: &Self::Token<'_>) -> bool {
3950                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3951            }
3952            #[inline]
3953            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3954                let tuple = <UnderlyingSolTuple<
3955                    '_,
3956                > as alloy_sol_types::SolType>::detokenize(token);
3957                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3958            }
3959        }
3960        #[automatically_derived]
3961        impl alloy_sol_types::SolStruct for InitialCommission {
3962            const NAME: &'static str = "InitialCommission";
3963            #[inline]
3964            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3965                alloy_sol_types::private::Cow::Borrowed(
3966                    "InitialCommission(address validator,uint16 commission)",
3967                )
3968            }
3969            #[inline]
3970            fn eip712_components() -> alloy_sol_types::private::Vec<
3971                alloy_sol_types::private::Cow<'static, str>,
3972            > {
3973                alloy_sol_types::private::Vec::new()
3974            }
3975            #[inline]
3976            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3977                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3978            }
3979            #[inline]
3980            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3981                [
3982                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
3983                            &self.validator,
3984                        )
3985                        .0,
3986                    <alloy::sol_types::sol_data::Uint<
3987                        16,
3988                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
3989                        .0,
3990                ]
3991                    .concat()
3992            }
3993        }
3994        #[automatically_derived]
3995        impl alloy_sol_types::EventTopic for InitialCommission {
3996            #[inline]
3997            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3998                0usize
3999                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
4000                        &rust.validator,
4001                    )
4002                    + <alloy::sol_types::sol_data::Uint<
4003                        16,
4004                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4005                        &rust.commission,
4006                    )
4007            }
4008            #[inline]
4009            fn encode_topic_preimage(
4010                rust: &Self::RustType,
4011                out: &mut alloy_sol_types::private::Vec<u8>,
4012            ) {
4013                out.reserve(
4014                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4015                );
4016                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
4017                    &rust.validator,
4018                    out,
4019                );
4020                <alloy::sol_types::sol_data::Uint<
4021                    16,
4022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4023                    &rust.commission,
4024                    out,
4025                );
4026            }
4027            #[inline]
4028            fn encode_topic(
4029                rust: &Self::RustType,
4030            ) -> alloy_sol_types::abi::token::WordToken {
4031                let mut out = alloy_sol_types::private::Vec::new();
4032                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4033                    rust,
4034                    &mut out,
4035                );
4036                alloy_sol_types::abi::token::WordToken(
4037                    alloy_sol_types::private::keccak256(out),
4038                )
4039            }
4040        }
4041    };
4042    #[derive(serde::Serialize, serde::Deserialize)]
4043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4044    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4045```solidity
4046error AccessControlBadConfirmation();
4047```*/
4048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4049    #[derive(Clone)]
4050    pub struct AccessControlBadConfirmation;
4051    #[allow(
4052        non_camel_case_types,
4053        non_snake_case,
4054        clippy::pub_underscore_fields,
4055        clippy::style
4056    )]
4057    const _: () = {
4058        use alloy::sol_types as alloy_sol_types;
4059        #[doc(hidden)]
4060        #[allow(dead_code)]
4061        type UnderlyingSolTuple<'a> = ();
4062        #[doc(hidden)]
4063        type UnderlyingRustTuple<'a> = ();
4064        #[cfg(test)]
4065        #[allow(dead_code, unreachable_patterns)]
4066        fn _type_assertion(
4067            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4068        ) {
4069            match _t {
4070                alloy_sol_types::private::AssertTypeEq::<
4071                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4072                >(_) => {}
4073            }
4074        }
4075        #[automatically_derived]
4076        #[doc(hidden)]
4077        impl ::core::convert::From<AccessControlBadConfirmation>
4078        for UnderlyingRustTuple<'_> {
4079            fn from(value: AccessControlBadConfirmation) -> Self {
4080                ()
4081            }
4082        }
4083        #[automatically_derived]
4084        #[doc(hidden)]
4085        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4086        for AccessControlBadConfirmation {
4087            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4088                Self
4089            }
4090        }
4091        #[automatically_derived]
4092        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4093            type Parameters<'a> = UnderlyingSolTuple<'a>;
4094            type Token<'a> = <Self::Parameters<
4095                'a,
4096            > as alloy_sol_types::SolType>::Token<'a>;
4097            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4098            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4099            #[inline]
4100            fn new<'a>(
4101                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4102            ) -> Self {
4103                tuple.into()
4104            }
4105            #[inline]
4106            fn tokenize(&self) -> Self::Token<'_> {
4107                ()
4108            }
4109            #[inline]
4110            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4111                <Self::Parameters<
4112                    '_,
4113                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4114                    .map(Self::new)
4115            }
4116        }
4117    };
4118    #[derive(serde::Serialize, serde::Deserialize)]
4119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4120    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4121```solidity
4122error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4123```*/
4124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4125    #[derive(Clone)]
4126    pub struct AccessControlUnauthorizedAccount {
4127        #[allow(missing_docs)]
4128        pub account: alloy::sol_types::private::Address,
4129        #[allow(missing_docs)]
4130        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4131    }
4132    #[allow(
4133        non_camel_case_types,
4134        non_snake_case,
4135        clippy::pub_underscore_fields,
4136        clippy::style
4137    )]
4138    const _: () = {
4139        use alloy::sol_types as alloy_sol_types;
4140        #[doc(hidden)]
4141        #[allow(dead_code)]
4142        type UnderlyingSolTuple<'a> = (
4143            alloy::sol_types::sol_data::Address,
4144            alloy::sol_types::sol_data::FixedBytes<32>,
4145        );
4146        #[doc(hidden)]
4147        type UnderlyingRustTuple<'a> = (
4148            alloy::sol_types::private::Address,
4149            alloy::sol_types::private::FixedBytes<32>,
4150        );
4151        #[cfg(test)]
4152        #[allow(dead_code, unreachable_patterns)]
4153        fn _type_assertion(
4154            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4155        ) {
4156            match _t {
4157                alloy_sol_types::private::AssertTypeEq::<
4158                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4159                >(_) => {}
4160            }
4161        }
4162        #[automatically_derived]
4163        #[doc(hidden)]
4164        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4165        for UnderlyingRustTuple<'_> {
4166            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4167                (value.account, value.neededRole)
4168            }
4169        }
4170        #[automatically_derived]
4171        #[doc(hidden)]
4172        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4173        for AccessControlUnauthorizedAccount {
4174            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4175                Self {
4176                    account: tuple.0,
4177                    neededRole: tuple.1,
4178                }
4179            }
4180        }
4181        #[automatically_derived]
4182        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4183            type Parameters<'a> = UnderlyingSolTuple<'a>;
4184            type Token<'a> = <Self::Parameters<
4185                'a,
4186            > as alloy_sol_types::SolType>::Token<'a>;
4187            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4188            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4189            #[inline]
4190            fn new<'a>(
4191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4192            ) -> Self {
4193                tuple.into()
4194            }
4195            #[inline]
4196            fn tokenize(&self) -> Self::Token<'_> {
4197                (
4198                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4199                        &self.account,
4200                    ),
4201                    <alloy::sol_types::sol_data::FixedBytes<
4202                        32,
4203                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4204                )
4205            }
4206            #[inline]
4207            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4208                <Self::Parameters<
4209                    '_,
4210                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4211                    .map(Self::new)
4212            }
4213        }
4214    };
4215    #[derive(serde::Serialize, serde::Deserialize)]
4216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4217    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4218```solidity
4219error AddressEmptyCode(address target);
4220```*/
4221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4222    #[derive(Clone)]
4223    pub struct AddressEmptyCode {
4224        #[allow(missing_docs)]
4225        pub target: alloy::sol_types::private::Address,
4226    }
4227    #[allow(
4228        non_camel_case_types,
4229        non_snake_case,
4230        clippy::pub_underscore_fields,
4231        clippy::style
4232    )]
4233    const _: () = {
4234        use alloy::sol_types as alloy_sol_types;
4235        #[doc(hidden)]
4236        #[allow(dead_code)]
4237        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4238        #[doc(hidden)]
4239        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4240        #[cfg(test)]
4241        #[allow(dead_code, unreachable_patterns)]
4242        fn _type_assertion(
4243            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4244        ) {
4245            match _t {
4246                alloy_sol_types::private::AssertTypeEq::<
4247                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4248                >(_) => {}
4249            }
4250        }
4251        #[automatically_derived]
4252        #[doc(hidden)]
4253        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4254            fn from(value: AddressEmptyCode) -> Self {
4255                (value.target,)
4256            }
4257        }
4258        #[automatically_derived]
4259        #[doc(hidden)]
4260        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4261            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4262                Self { target: tuple.0 }
4263            }
4264        }
4265        #[automatically_derived]
4266        impl alloy_sol_types::SolError for AddressEmptyCode {
4267            type Parameters<'a> = UnderlyingSolTuple<'a>;
4268            type Token<'a> = <Self::Parameters<
4269                'a,
4270            > as alloy_sol_types::SolType>::Token<'a>;
4271            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4272            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4273            #[inline]
4274            fn new<'a>(
4275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4276            ) -> Self {
4277                tuple.into()
4278            }
4279            #[inline]
4280            fn tokenize(&self) -> Self::Token<'_> {
4281                (
4282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4283                        &self.target,
4284                    ),
4285                )
4286            }
4287            #[inline]
4288            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4289                <Self::Parameters<
4290                    '_,
4291                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4292                    .map(Self::new)
4293            }
4294        }
4295    };
4296    #[derive(serde::Serialize, serde::Deserialize)]
4297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4298    /**Custom error with signature `BLSSigIsInfinity()` and selector `0x74272332`.
4299```solidity
4300error BLSSigIsInfinity();
4301```*/
4302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4303    #[derive(Clone)]
4304    pub struct BLSSigIsInfinity;
4305    #[allow(
4306        non_camel_case_types,
4307        non_snake_case,
4308        clippy::pub_underscore_fields,
4309        clippy::style
4310    )]
4311    const _: () = {
4312        use alloy::sol_types as alloy_sol_types;
4313        #[doc(hidden)]
4314        #[allow(dead_code)]
4315        type UnderlyingSolTuple<'a> = ();
4316        #[doc(hidden)]
4317        type UnderlyingRustTuple<'a> = ();
4318        #[cfg(test)]
4319        #[allow(dead_code, unreachable_patterns)]
4320        fn _type_assertion(
4321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4322        ) {
4323            match _t {
4324                alloy_sol_types::private::AssertTypeEq::<
4325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4326                >(_) => {}
4327            }
4328        }
4329        #[automatically_derived]
4330        #[doc(hidden)]
4331        impl ::core::convert::From<BLSSigIsInfinity> for UnderlyingRustTuple<'_> {
4332            fn from(value: BLSSigIsInfinity) -> Self {
4333                ()
4334            }
4335        }
4336        #[automatically_derived]
4337        #[doc(hidden)]
4338        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigIsInfinity {
4339            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4340                Self
4341            }
4342        }
4343        #[automatically_derived]
4344        impl alloy_sol_types::SolError for BLSSigIsInfinity {
4345            type Parameters<'a> = UnderlyingSolTuple<'a>;
4346            type Token<'a> = <Self::Parameters<
4347                'a,
4348            > as alloy_sol_types::SolType>::Token<'a>;
4349            const SIGNATURE: &'static str = "BLSSigIsInfinity()";
4350            const SELECTOR: [u8; 4] = [116u8, 39u8, 35u8, 50u8];
4351            #[inline]
4352            fn new<'a>(
4353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4354            ) -> Self {
4355                tuple.into()
4356            }
4357            #[inline]
4358            fn tokenize(&self) -> Self::Token<'_> {
4359                ()
4360            }
4361            #[inline]
4362            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4363                <Self::Parameters<
4364                    '_,
4365                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4366                    .map(Self::new)
4367            }
4368        }
4369    };
4370    #[derive(serde::Serialize, serde::Deserialize)]
4371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4372    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4373```solidity
4374error BLSSigVerificationFailed();
4375```*/
4376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4377    #[derive(Clone)]
4378    pub struct BLSSigVerificationFailed;
4379    #[allow(
4380        non_camel_case_types,
4381        non_snake_case,
4382        clippy::pub_underscore_fields,
4383        clippy::style
4384    )]
4385    const _: () = {
4386        use alloy::sol_types as alloy_sol_types;
4387        #[doc(hidden)]
4388        #[allow(dead_code)]
4389        type UnderlyingSolTuple<'a> = ();
4390        #[doc(hidden)]
4391        type UnderlyingRustTuple<'a> = ();
4392        #[cfg(test)]
4393        #[allow(dead_code, unreachable_patterns)]
4394        fn _type_assertion(
4395            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4396        ) {
4397            match _t {
4398                alloy_sol_types::private::AssertTypeEq::<
4399                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4400                >(_) => {}
4401            }
4402        }
4403        #[automatically_derived]
4404        #[doc(hidden)]
4405        impl ::core::convert::From<BLSSigVerificationFailed>
4406        for UnderlyingRustTuple<'_> {
4407            fn from(value: BLSSigVerificationFailed) -> Self {
4408                ()
4409            }
4410        }
4411        #[automatically_derived]
4412        #[doc(hidden)]
4413        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4414        for BLSSigVerificationFailed {
4415            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4416                Self
4417            }
4418        }
4419        #[automatically_derived]
4420        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4421            type Parameters<'a> = UnderlyingSolTuple<'a>;
4422            type Token<'a> = <Self::Parameters<
4423                'a,
4424            > as alloy_sol_types::SolType>::Token<'a>;
4425            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4426            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4427            #[inline]
4428            fn new<'a>(
4429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4430            ) -> Self {
4431                tuple.into()
4432            }
4433            #[inline]
4434            fn tokenize(&self) -> Self::Token<'_> {
4435                ()
4436            }
4437            #[inline]
4438            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4439                <Self::Parameters<
4440                    '_,
4441                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4442                    .map(Self::new)
4443            }
4444        }
4445    };
4446    #[derive(serde::Serialize, serde::Deserialize)]
4447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4448    /**Custom error with signature `BLSVKIsInfinity()` and selector `0xbc86c59a`.
4449```solidity
4450error BLSVKIsInfinity();
4451```*/
4452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4453    #[derive(Clone)]
4454    pub struct BLSVKIsInfinity;
4455    #[allow(
4456        non_camel_case_types,
4457        non_snake_case,
4458        clippy::pub_underscore_fields,
4459        clippy::style
4460    )]
4461    const _: () = {
4462        use alloy::sol_types as alloy_sol_types;
4463        #[doc(hidden)]
4464        #[allow(dead_code)]
4465        type UnderlyingSolTuple<'a> = ();
4466        #[doc(hidden)]
4467        type UnderlyingRustTuple<'a> = ();
4468        #[cfg(test)]
4469        #[allow(dead_code, unreachable_patterns)]
4470        fn _type_assertion(
4471            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4472        ) {
4473            match _t {
4474                alloy_sol_types::private::AssertTypeEq::<
4475                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4476                >(_) => {}
4477            }
4478        }
4479        #[automatically_derived]
4480        #[doc(hidden)]
4481        impl ::core::convert::From<BLSVKIsInfinity> for UnderlyingRustTuple<'_> {
4482            fn from(value: BLSVKIsInfinity) -> Self {
4483                ()
4484            }
4485        }
4486        #[automatically_derived]
4487        #[doc(hidden)]
4488        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSVKIsInfinity {
4489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4490                Self
4491            }
4492        }
4493        #[automatically_derived]
4494        impl alloy_sol_types::SolError for BLSVKIsInfinity {
4495            type Parameters<'a> = UnderlyingSolTuple<'a>;
4496            type Token<'a> = <Self::Parameters<
4497                'a,
4498            > as alloy_sol_types::SolType>::Token<'a>;
4499            const SIGNATURE: &'static str = "BLSVKIsInfinity()";
4500            const SELECTOR: [u8; 4] = [188u8, 134u8, 197u8, 154u8];
4501            #[inline]
4502            fn new<'a>(
4503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4504            ) -> Self {
4505                tuple.into()
4506            }
4507            #[inline]
4508            fn tokenize(&self) -> Self::Token<'_> {
4509                ()
4510            }
4511            #[inline]
4512            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4513                <Self::Parameters<
4514                    '_,
4515                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4516                    .map(Self::new)
4517            }
4518        }
4519    };
4520    #[derive(serde::Serialize, serde::Deserialize)]
4521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4522    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
4523```solidity
4524error BN254PairingProdFailed();
4525```*/
4526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4527    #[derive(Clone)]
4528    pub struct BN254PairingProdFailed;
4529    #[allow(
4530        non_camel_case_types,
4531        non_snake_case,
4532        clippy::pub_underscore_fields,
4533        clippy::style
4534    )]
4535    const _: () = {
4536        use alloy::sol_types as alloy_sol_types;
4537        #[doc(hidden)]
4538        #[allow(dead_code)]
4539        type UnderlyingSolTuple<'a> = ();
4540        #[doc(hidden)]
4541        type UnderlyingRustTuple<'a> = ();
4542        #[cfg(test)]
4543        #[allow(dead_code, unreachable_patterns)]
4544        fn _type_assertion(
4545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4546        ) {
4547            match _t {
4548                alloy_sol_types::private::AssertTypeEq::<
4549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4550                >(_) => {}
4551            }
4552        }
4553        #[automatically_derived]
4554        #[doc(hidden)]
4555        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4556            fn from(value: BN254PairingProdFailed) -> Self {
4557                ()
4558            }
4559        }
4560        #[automatically_derived]
4561        #[doc(hidden)]
4562        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4563            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4564                Self
4565            }
4566        }
4567        #[automatically_derived]
4568        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4569            type Parameters<'a> = UnderlyingSolTuple<'a>;
4570            type Token<'a> = <Self::Parameters<
4571                'a,
4572            > as alloy_sol_types::SolType>::Token<'a>;
4573            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4574            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4575            #[inline]
4576            fn new<'a>(
4577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4578            ) -> Self {
4579                tuple.into()
4580            }
4581            #[inline]
4582            fn tokenize(&self) -> Self::Token<'_> {
4583                ()
4584            }
4585            #[inline]
4586            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4587                <Self::Parameters<
4588                    '_,
4589                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4590                    .map(Self::new)
4591            }
4592        }
4593    };
4594    #[derive(serde::Serialize, serde::Deserialize)]
4595    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4596    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4597```solidity
4598error BlsKeyAlreadyUsed();
4599```*/
4600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4601    #[derive(Clone)]
4602    pub struct BlsKeyAlreadyUsed;
4603    #[allow(
4604        non_camel_case_types,
4605        non_snake_case,
4606        clippy::pub_underscore_fields,
4607        clippy::style
4608    )]
4609    const _: () = {
4610        use alloy::sol_types as alloy_sol_types;
4611        #[doc(hidden)]
4612        #[allow(dead_code)]
4613        type UnderlyingSolTuple<'a> = ();
4614        #[doc(hidden)]
4615        type UnderlyingRustTuple<'a> = ();
4616        #[cfg(test)]
4617        #[allow(dead_code, unreachable_patterns)]
4618        fn _type_assertion(
4619            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4620        ) {
4621            match _t {
4622                alloy_sol_types::private::AssertTypeEq::<
4623                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4624                >(_) => {}
4625            }
4626        }
4627        #[automatically_derived]
4628        #[doc(hidden)]
4629        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4630            fn from(value: BlsKeyAlreadyUsed) -> Self {
4631                ()
4632            }
4633        }
4634        #[automatically_derived]
4635        #[doc(hidden)]
4636        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4637            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4638                Self
4639            }
4640        }
4641        #[automatically_derived]
4642        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4643            type Parameters<'a> = UnderlyingSolTuple<'a>;
4644            type Token<'a> = <Self::Parameters<
4645                'a,
4646            > as alloy_sol_types::SolType>::Token<'a>;
4647            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4648            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4649            #[inline]
4650            fn new<'a>(
4651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4652            ) -> Self {
4653                tuple.into()
4654            }
4655            #[inline]
4656            fn tokenize(&self) -> Self::Token<'_> {
4657                ()
4658            }
4659            #[inline]
4660            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4661                <Self::Parameters<
4662                    '_,
4663                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4664                    .map(Self::new)
4665            }
4666        }
4667    };
4668    #[derive(serde::Serialize, serde::Deserialize)]
4669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4670    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
4671```solidity
4672error CommissionAlreadyInitialized(address validator);
4673```*/
4674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4675    #[derive(Clone)]
4676    pub struct CommissionAlreadyInitialized {
4677        #[allow(missing_docs)]
4678        pub validator: alloy::sol_types::private::Address,
4679    }
4680    #[allow(
4681        non_camel_case_types,
4682        non_snake_case,
4683        clippy::pub_underscore_fields,
4684        clippy::style
4685    )]
4686    const _: () = {
4687        use alloy::sol_types as alloy_sol_types;
4688        #[doc(hidden)]
4689        #[allow(dead_code)]
4690        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4691        #[doc(hidden)]
4692        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4693        #[cfg(test)]
4694        #[allow(dead_code, unreachable_patterns)]
4695        fn _type_assertion(
4696            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4697        ) {
4698            match _t {
4699                alloy_sol_types::private::AssertTypeEq::<
4700                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4701                >(_) => {}
4702            }
4703        }
4704        #[automatically_derived]
4705        #[doc(hidden)]
4706        impl ::core::convert::From<CommissionAlreadyInitialized>
4707        for UnderlyingRustTuple<'_> {
4708            fn from(value: CommissionAlreadyInitialized) -> Self {
4709                (value.validator,)
4710            }
4711        }
4712        #[automatically_derived]
4713        #[doc(hidden)]
4714        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4715        for CommissionAlreadyInitialized {
4716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4717                Self { validator: tuple.0 }
4718            }
4719        }
4720        #[automatically_derived]
4721        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
4722            type Parameters<'a> = UnderlyingSolTuple<'a>;
4723            type Token<'a> = <Self::Parameters<
4724                'a,
4725            > as alloy_sol_types::SolType>::Token<'a>;
4726            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
4727            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
4728            #[inline]
4729            fn new<'a>(
4730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4731            ) -> Self {
4732                tuple.into()
4733            }
4734            #[inline]
4735            fn tokenize(&self) -> Self::Token<'_> {
4736                (
4737                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4738                        &self.validator,
4739                    ),
4740                )
4741            }
4742            #[inline]
4743            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4744                <Self::Parameters<
4745                    '_,
4746                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4747                    .map(Self::new)
4748            }
4749        }
4750    };
4751    #[derive(serde::Serialize, serde::Deserialize)]
4752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4753    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
4754```solidity
4755error CommissionIncreaseExceedsMax();
4756```*/
4757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4758    #[derive(Clone)]
4759    pub struct CommissionIncreaseExceedsMax;
4760    #[allow(
4761        non_camel_case_types,
4762        non_snake_case,
4763        clippy::pub_underscore_fields,
4764        clippy::style
4765    )]
4766    const _: () = {
4767        use alloy::sol_types as alloy_sol_types;
4768        #[doc(hidden)]
4769        #[allow(dead_code)]
4770        type UnderlyingSolTuple<'a> = ();
4771        #[doc(hidden)]
4772        type UnderlyingRustTuple<'a> = ();
4773        #[cfg(test)]
4774        #[allow(dead_code, unreachable_patterns)]
4775        fn _type_assertion(
4776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4777        ) {
4778            match _t {
4779                alloy_sol_types::private::AssertTypeEq::<
4780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4781                >(_) => {}
4782            }
4783        }
4784        #[automatically_derived]
4785        #[doc(hidden)]
4786        impl ::core::convert::From<CommissionIncreaseExceedsMax>
4787        for UnderlyingRustTuple<'_> {
4788            fn from(value: CommissionIncreaseExceedsMax) -> Self {
4789                ()
4790            }
4791        }
4792        #[automatically_derived]
4793        #[doc(hidden)]
4794        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4795        for CommissionIncreaseExceedsMax {
4796            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4797                Self
4798            }
4799        }
4800        #[automatically_derived]
4801        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
4802            type Parameters<'a> = UnderlyingSolTuple<'a>;
4803            type Token<'a> = <Self::Parameters<
4804                'a,
4805            > as alloy_sol_types::SolType>::Token<'a>;
4806            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
4807            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
4808            #[inline]
4809            fn new<'a>(
4810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4811            ) -> Self {
4812                tuple.into()
4813            }
4814            #[inline]
4815            fn tokenize(&self) -> Self::Token<'_> {
4816                ()
4817            }
4818            #[inline]
4819            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4820                <Self::Parameters<
4821                    '_,
4822                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4823                    .map(Self::new)
4824            }
4825        }
4826    };
4827    #[derive(serde::Serialize, serde::Deserialize)]
4828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4829    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
4830```solidity
4831error CommissionUnchanged();
4832```*/
4833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4834    #[derive(Clone)]
4835    pub struct CommissionUnchanged;
4836    #[allow(
4837        non_camel_case_types,
4838        non_snake_case,
4839        clippy::pub_underscore_fields,
4840        clippy::style
4841    )]
4842    const _: () = {
4843        use alloy::sol_types as alloy_sol_types;
4844        #[doc(hidden)]
4845        #[allow(dead_code)]
4846        type UnderlyingSolTuple<'a> = ();
4847        #[doc(hidden)]
4848        type UnderlyingRustTuple<'a> = ();
4849        #[cfg(test)]
4850        #[allow(dead_code, unreachable_patterns)]
4851        fn _type_assertion(
4852            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4853        ) {
4854            match _t {
4855                alloy_sol_types::private::AssertTypeEq::<
4856                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4857                >(_) => {}
4858            }
4859        }
4860        #[automatically_derived]
4861        #[doc(hidden)]
4862        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
4863            fn from(value: CommissionUnchanged) -> Self {
4864                ()
4865            }
4866        }
4867        #[automatically_derived]
4868        #[doc(hidden)]
4869        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
4870            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4871                Self
4872            }
4873        }
4874        #[automatically_derived]
4875        impl alloy_sol_types::SolError for CommissionUnchanged {
4876            type Parameters<'a> = UnderlyingSolTuple<'a>;
4877            type Token<'a> = <Self::Parameters<
4878                'a,
4879            > as alloy_sol_types::SolType>::Token<'a>;
4880            const SIGNATURE: &'static str = "CommissionUnchanged()";
4881            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
4882            #[inline]
4883            fn new<'a>(
4884                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4885            ) -> Self {
4886                tuple.into()
4887            }
4888            #[inline]
4889            fn tokenize(&self) -> Self::Token<'_> {
4890                ()
4891            }
4892            #[inline]
4893            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4894                <Self::Parameters<
4895                    '_,
4896                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4897                    .map(Self::new)
4898            }
4899        }
4900    };
4901    #[derive(serde::Serialize, serde::Deserialize)]
4902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4903    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
4904```solidity
4905error CommissionUpdateTooSoon();
4906```*/
4907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4908    #[derive(Clone)]
4909    pub struct CommissionUpdateTooSoon;
4910    #[allow(
4911        non_camel_case_types,
4912        non_snake_case,
4913        clippy::pub_underscore_fields,
4914        clippy::style
4915    )]
4916    const _: () = {
4917        use alloy::sol_types as alloy_sol_types;
4918        #[doc(hidden)]
4919        #[allow(dead_code)]
4920        type UnderlyingSolTuple<'a> = ();
4921        #[doc(hidden)]
4922        type UnderlyingRustTuple<'a> = ();
4923        #[cfg(test)]
4924        #[allow(dead_code, unreachable_patterns)]
4925        fn _type_assertion(
4926            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4927        ) {
4928            match _t {
4929                alloy_sol_types::private::AssertTypeEq::<
4930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4931                >(_) => {}
4932            }
4933        }
4934        #[automatically_derived]
4935        #[doc(hidden)]
4936        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
4937            fn from(value: CommissionUpdateTooSoon) -> Self {
4938                ()
4939            }
4940        }
4941        #[automatically_derived]
4942        #[doc(hidden)]
4943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
4944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4945                Self
4946            }
4947        }
4948        #[automatically_derived]
4949        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
4950            type Parameters<'a> = UnderlyingSolTuple<'a>;
4951            type Token<'a> = <Self::Parameters<
4952                'a,
4953            > as alloy_sol_types::SolType>::Token<'a>;
4954            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
4955            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
4956            #[inline]
4957            fn new<'a>(
4958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4959            ) -> Self {
4960                tuple.into()
4961            }
4962            #[inline]
4963            fn tokenize(&self) -> Self::Token<'_> {
4964                ()
4965            }
4966            #[inline]
4967            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4968                <Self::Parameters<
4969                    '_,
4970                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4971                    .map(Self::new)
4972            }
4973        }
4974    };
4975    #[derive(serde::Serialize, serde::Deserialize)]
4976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4977    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
4978```solidity
4979error DefaultAdminCannotBeRenounced();
4980```*/
4981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4982    #[derive(Clone)]
4983    pub struct DefaultAdminCannotBeRenounced;
4984    #[allow(
4985        non_camel_case_types,
4986        non_snake_case,
4987        clippy::pub_underscore_fields,
4988        clippy::style
4989    )]
4990    const _: () = {
4991        use alloy::sol_types as alloy_sol_types;
4992        #[doc(hidden)]
4993        #[allow(dead_code)]
4994        type UnderlyingSolTuple<'a> = ();
4995        #[doc(hidden)]
4996        type UnderlyingRustTuple<'a> = ();
4997        #[cfg(test)]
4998        #[allow(dead_code, unreachable_patterns)]
4999        fn _type_assertion(
5000            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5001        ) {
5002            match _t {
5003                alloy_sol_types::private::AssertTypeEq::<
5004                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5005                >(_) => {}
5006            }
5007        }
5008        #[automatically_derived]
5009        #[doc(hidden)]
5010        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
5011        for UnderlyingRustTuple<'_> {
5012            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
5013                ()
5014            }
5015        }
5016        #[automatically_derived]
5017        #[doc(hidden)]
5018        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5019        for DefaultAdminCannotBeRenounced {
5020            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5021                Self
5022            }
5023        }
5024        #[automatically_derived]
5025        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
5026            type Parameters<'a> = UnderlyingSolTuple<'a>;
5027            type Token<'a> = <Self::Parameters<
5028                'a,
5029            > as alloy_sol_types::SolType>::Token<'a>;
5030            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
5031            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
5032            #[inline]
5033            fn new<'a>(
5034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5035            ) -> Self {
5036                tuple.into()
5037            }
5038            #[inline]
5039            fn tokenize(&self) -> Self::Token<'_> {
5040                ()
5041            }
5042            #[inline]
5043            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5044                <Self::Parameters<
5045                    '_,
5046                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5047                    .map(Self::new)
5048            }
5049        }
5050    };
5051    #[derive(serde::Serialize, serde::Deserialize)]
5052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5053    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
5054```solidity
5055error DefaultAdminCannotBeRevoked();
5056```*/
5057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5058    #[derive(Clone)]
5059    pub struct DefaultAdminCannotBeRevoked;
5060    #[allow(
5061        non_camel_case_types,
5062        non_snake_case,
5063        clippy::pub_underscore_fields,
5064        clippy::style
5065    )]
5066    const _: () = {
5067        use alloy::sol_types as alloy_sol_types;
5068        #[doc(hidden)]
5069        #[allow(dead_code)]
5070        type UnderlyingSolTuple<'a> = ();
5071        #[doc(hidden)]
5072        type UnderlyingRustTuple<'a> = ();
5073        #[cfg(test)]
5074        #[allow(dead_code, unreachable_patterns)]
5075        fn _type_assertion(
5076            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5077        ) {
5078            match _t {
5079                alloy_sol_types::private::AssertTypeEq::<
5080                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5081                >(_) => {}
5082            }
5083        }
5084        #[automatically_derived]
5085        #[doc(hidden)]
5086        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
5087        for UnderlyingRustTuple<'_> {
5088            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
5089                ()
5090            }
5091        }
5092        #[automatically_derived]
5093        #[doc(hidden)]
5094        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5095        for DefaultAdminCannotBeRevoked {
5096            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5097                Self
5098            }
5099        }
5100        #[automatically_derived]
5101        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
5102            type Parameters<'a> = UnderlyingSolTuple<'a>;
5103            type Token<'a> = <Self::Parameters<
5104                'a,
5105            > as alloy_sol_types::SolType>::Token<'a>;
5106            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
5107            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
5108            #[inline]
5109            fn new<'a>(
5110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5111            ) -> Self {
5112                tuple.into()
5113            }
5114            #[inline]
5115            fn tokenize(&self) -> Self::Token<'_> {
5116                ()
5117            }
5118            #[inline]
5119            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5120                <Self::Parameters<
5121                    '_,
5122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5123                    .map(Self::new)
5124            }
5125        }
5126    };
5127    #[derive(serde::Serialize, serde::Deserialize)]
5128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5129    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
5130```solidity
5131error DelegateAmountTooSmall();
5132```*/
5133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5134    #[derive(Clone)]
5135    pub struct DelegateAmountTooSmall;
5136    #[allow(
5137        non_camel_case_types,
5138        non_snake_case,
5139        clippy::pub_underscore_fields,
5140        clippy::style
5141    )]
5142    const _: () = {
5143        use alloy::sol_types as alloy_sol_types;
5144        #[doc(hidden)]
5145        #[allow(dead_code)]
5146        type UnderlyingSolTuple<'a> = ();
5147        #[doc(hidden)]
5148        type UnderlyingRustTuple<'a> = ();
5149        #[cfg(test)]
5150        #[allow(dead_code, unreachable_patterns)]
5151        fn _type_assertion(
5152            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5153        ) {
5154            match _t {
5155                alloy_sol_types::private::AssertTypeEq::<
5156                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5157                >(_) => {}
5158            }
5159        }
5160        #[automatically_derived]
5161        #[doc(hidden)]
5162        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5163            fn from(value: DelegateAmountTooSmall) -> Self {
5164                ()
5165            }
5166        }
5167        #[automatically_derived]
5168        #[doc(hidden)]
5169        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5170            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5171                Self
5172            }
5173        }
5174        #[automatically_derived]
5175        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5176            type Parameters<'a> = UnderlyingSolTuple<'a>;
5177            type Token<'a> = <Self::Parameters<
5178                'a,
5179            > as alloy_sol_types::SolType>::Token<'a>;
5180            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5181            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5182            #[inline]
5183            fn new<'a>(
5184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5185            ) -> Self {
5186                tuple.into()
5187            }
5188            #[inline]
5189            fn tokenize(&self) -> Self::Token<'_> {
5190                ()
5191            }
5192            #[inline]
5193            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5194                <Self::Parameters<
5195                    '_,
5196                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5197                    .map(Self::new)
5198            }
5199        }
5200    };
5201    #[derive(serde::Serialize, serde::Deserialize)]
5202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5203    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5204```solidity
5205error DeprecatedFunction();
5206```*/
5207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5208    #[derive(Clone)]
5209    pub struct DeprecatedFunction;
5210    #[allow(
5211        non_camel_case_types,
5212        non_snake_case,
5213        clippy::pub_underscore_fields,
5214        clippy::style
5215    )]
5216    const _: () = {
5217        use alloy::sol_types as alloy_sol_types;
5218        #[doc(hidden)]
5219        #[allow(dead_code)]
5220        type UnderlyingSolTuple<'a> = ();
5221        #[doc(hidden)]
5222        type UnderlyingRustTuple<'a> = ();
5223        #[cfg(test)]
5224        #[allow(dead_code, unreachable_patterns)]
5225        fn _type_assertion(
5226            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5227        ) {
5228            match _t {
5229                alloy_sol_types::private::AssertTypeEq::<
5230                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5231                >(_) => {}
5232            }
5233        }
5234        #[automatically_derived]
5235        #[doc(hidden)]
5236        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5237            fn from(value: DeprecatedFunction) -> Self {
5238                ()
5239            }
5240        }
5241        #[automatically_derived]
5242        #[doc(hidden)]
5243        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5244            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5245                Self
5246            }
5247        }
5248        #[automatically_derived]
5249        impl alloy_sol_types::SolError for DeprecatedFunction {
5250            type Parameters<'a> = UnderlyingSolTuple<'a>;
5251            type Token<'a> = <Self::Parameters<
5252                'a,
5253            > as alloy_sol_types::SolType>::Token<'a>;
5254            const SIGNATURE: &'static str = "DeprecatedFunction()";
5255            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5256            #[inline]
5257            fn new<'a>(
5258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5259            ) -> Self {
5260                tuple.into()
5261            }
5262            #[inline]
5263            fn tokenize(&self) -> Self::Token<'_> {
5264                ()
5265            }
5266            #[inline]
5267            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5268                <Self::Parameters<
5269                    '_,
5270                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5271                    .map(Self::new)
5272            }
5273        }
5274    };
5275    #[derive(serde::Serialize, serde::Deserialize)]
5276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5277    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5278```solidity
5279error ERC1967InvalidImplementation(address implementation);
5280```*/
5281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5282    #[derive(Clone)]
5283    pub struct ERC1967InvalidImplementation {
5284        #[allow(missing_docs)]
5285        pub implementation: alloy::sol_types::private::Address,
5286    }
5287    #[allow(
5288        non_camel_case_types,
5289        non_snake_case,
5290        clippy::pub_underscore_fields,
5291        clippy::style
5292    )]
5293    const _: () = {
5294        use alloy::sol_types as alloy_sol_types;
5295        #[doc(hidden)]
5296        #[allow(dead_code)]
5297        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5298        #[doc(hidden)]
5299        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5300        #[cfg(test)]
5301        #[allow(dead_code, unreachable_patterns)]
5302        fn _type_assertion(
5303            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5304        ) {
5305            match _t {
5306                alloy_sol_types::private::AssertTypeEq::<
5307                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5308                >(_) => {}
5309            }
5310        }
5311        #[automatically_derived]
5312        #[doc(hidden)]
5313        impl ::core::convert::From<ERC1967InvalidImplementation>
5314        for UnderlyingRustTuple<'_> {
5315            fn from(value: ERC1967InvalidImplementation) -> Self {
5316                (value.implementation,)
5317            }
5318        }
5319        #[automatically_derived]
5320        #[doc(hidden)]
5321        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5322        for ERC1967InvalidImplementation {
5323            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5324                Self { implementation: tuple.0 }
5325            }
5326        }
5327        #[automatically_derived]
5328        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5329            type Parameters<'a> = UnderlyingSolTuple<'a>;
5330            type Token<'a> = <Self::Parameters<
5331                'a,
5332            > as alloy_sol_types::SolType>::Token<'a>;
5333            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5334            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5335            #[inline]
5336            fn new<'a>(
5337                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5338            ) -> Self {
5339                tuple.into()
5340            }
5341            #[inline]
5342            fn tokenize(&self) -> Self::Token<'_> {
5343                (
5344                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5345                        &self.implementation,
5346                    ),
5347                )
5348            }
5349            #[inline]
5350            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5351                <Self::Parameters<
5352                    '_,
5353                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5354                    .map(Self::new)
5355            }
5356        }
5357    };
5358    #[derive(serde::Serialize, serde::Deserialize)]
5359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5360    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5361```solidity
5362error ERC1967NonPayable();
5363```*/
5364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5365    #[derive(Clone)]
5366    pub struct ERC1967NonPayable;
5367    #[allow(
5368        non_camel_case_types,
5369        non_snake_case,
5370        clippy::pub_underscore_fields,
5371        clippy::style
5372    )]
5373    const _: () = {
5374        use alloy::sol_types as alloy_sol_types;
5375        #[doc(hidden)]
5376        #[allow(dead_code)]
5377        type UnderlyingSolTuple<'a> = ();
5378        #[doc(hidden)]
5379        type UnderlyingRustTuple<'a> = ();
5380        #[cfg(test)]
5381        #[allow(dead_code, unreachable_patterns)]
5382        fn _type_assertion(
5383            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5384        ) {
5385            match _t {
5386                alloy_sol_types::private::AssertTypeEq::<
5387                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5388                >(_) => {}
5389            }
5390        }
5391        #[automatically_derived]
5392        #[doc(hidden)]
5393        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5394            fn from(value: ERC1967NonPayable) -> Self {
5395                ()
5396            }
5397        }
5398        #[automatically_derived]
5399        #[doc(hidden)]
5400        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5401            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5402                Self
5403            }
5404        }
5405        #[automatically_derived]
5406        impl alloy_sol_types::SolError for ERC1967NonPayable {
5407            type Parameters<'a> = UnderlyingSolTuple<'a>;
5408            type Token<'a> = <Self::Parameters<
5409                'a,
5410            > as alloy_sol_types::SolType>::Token<'a>;
5411            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5412            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5413            #[inline]
5414            fn new<'a>(
5415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5416            ) -> Self {
5417                tuple.into()
5418            }
5419            #[inline]
5420            fn tokenize(&self) -> Self::Token<'_> {
5421                ()
5422            }
5423            #[inline]
5424            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5425                <Self::Parameters<
5426                    '_,
5427                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5428                    .map(Self::new)
5429            }
5430        }
5431    };
5432    #[derive(serde::Serialize, serde::Deserialize)]
5433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5434    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5435```solidity
5436error EnforcedPause();
5437```*/
5438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5439    #[derive(Clone)]
5440    pub struct EnforcedPause;
5441    #[allow(
5442        non_camel_case_types,
5443        non_snake_case,
5444        clippy::pub_underscore_fields,
5445        clippy::style
5446    )]
5447    const _: () = {
5448        use alloy::sol_types as alloy_sol_types;
5449        #[doc(hidden)]
5450        #[allow(dead_code)]
5451        type UnderlyingSolTuple<'a> = ();
5452        #[doc(hidden)]
5453        type UnderlyingRustTuple<'a> = ();
5454        #[cfg(test)]
5455        #[allow(dead_code, unreachable_patterns)]
5456        fn _type_assertion(
5457            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5458        ) {
5459            match _t {
5460                alloy_sol_types::private::AssertTypeEq::<
5461                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5462                >(_) => {}
5463            }
5464        }
5465        #[automatically_derived]
5466        #[doc(hidden)]
5467        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5468            fn from(value: EnforcedPause) -> Self {
5469                ()
5470            }
5471        }
5472        #[automatically_derived]
5473        #[doc(hidden)]
5474        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5476                Self
5477            }
5478        }
5479        #[automatically_derived]
5480        impl alloy_sol_types::SolError for EnforcedPause {
5481            type Parameters<'a> = UnderlyingSolTuple<'a>;
5482            type Token<'a> = <Self::Parameters<
5483                'a,
5484            > as alloy_sol_types::SolType>::Token<'a>;
5485            const SIGNATURE: &'static str = "EnforcedPause()";
5486            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
5487            #[inline]
5488            fn new<'a>(
5489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5490            ) -> Self {
5491                tuple.into()
5492            }
5493            #[inline]
5494            fn tokenize(&self) -> Self::Token<'_> {
5495                ()
5496            }
5497            #[inline]
5498            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5499                <Self::Parameters<
5500                    '_,
5501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5502                    .map(Self::new)
5503            }
5504        }
5505    };
5506    #[derive(serde::Serialize, serde::Deserialize)]
5507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5508    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
5509```solidity
5510error ExitEscrowPeriodInvalid();
5511```*/
5512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5513    #[derive(Clone)]
5514    pub struct ExitEscrowPeriodInvalid;
5515    #[allow(
5516        non_camel_case_types,
5517        non_snake_case,
5518        clippy::pub_underscore_fields,
5519        clippy::style
5520    )]
5521    const _: () = {
5522        use alloy::sol_types as alloy_sol_types;
5523        #[doc(hidden)]
5524        #[allow(dead_code)]
5525        type UnderlyingSolTuple<'a> = ();
5526        #[doc(hidden)]
5527        type UnderlyingRustTuple<'a> = ();
5528        #[cfg(test)]
5529        #[allow(dead_code, unreachable_patterns)]
5530        fn _type_assertion(
5531            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5532        ) {
5533            match _t {
5534                alloy_sol_types::private::AssertTypeEq::<
5535                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5536                >(_) => {}
5537            }
5538        }
5539        #[automatically_derived]
5540        #[doc(hidden)]
5541        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
5542            fn from(value: ExitEscrowPeriodInvalid) -> Self {
5543                ()
5544            }
5545        }
5546        #[automatically_derived]
5547        #[doc(hidden)]
5548        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
5549            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5550                Self
5551            }
5552        }
5553        #[automatically_derived]
5554        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
5555            type Parameters<'a> = UnderlyingSolTuple<'a>;
5556            type Token<'a> = <Self::Parameters<
5557                'a,
5558            > as alloy_sol_types::SolType>::Token<'a>;
5559            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
5560            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
5561            #[inline]
5562            fn new<'a>(
5563                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5564            ) -> Self {
5565                tuple.into()
5566            }
5567            #[inline]
5568            fn tokenize(&self) -> Self::Token<'_> {
5569                ()
5570            }
5571            #[inline]
5572            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5573                <Self::Parameters<
5574                    '_,
5575                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5576                    .map(Self::new)
5577            }
5578        }
5579    };
5580    #[derive(serde::Serialize, serde::Deserialize)]
5581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5582    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
5583```solidity
5584error ExpectedPause();
5585```*/
5586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5587    #[derive(Clone)]
5588    pub struct ExpectedPause;
5589    #[allow(
5590        non_camel_case_types,
5591        non_snake_case,
5592        clippy::pub_underscore_fields,
5593        clippy::style
5594    )]
5595    const _: () = {
5596        use alloy::sol_types as alloy_sol_types;
5597        #[doc(hidden)]
5598        #[allow(dead_code)]
5599        type UnderlyingSolTuple<'a> = ();
5600        #[doc(hidden)]
5601        type UnderlyingRustTuple<'a> = ();
5602        #[cfg(test)]
5603        #[allow(dead_code, unreachable_patterns)]
5604        fn _type_assertion(
5605            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5606        ) {
5607            match _t {
5608                alloy_sol_types::private::AssertTypeEq::<
5609                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5610                >(_) => {}
5611            }
5612        }
5613        #[automatically_derived]
5614        #[doc(hidden)]
5615        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
5616            fn from(value: ExpectedPause) -> Self {
5617                ()
5618            }
5619        }
5620        #[automatically_derived]
5621        #[doc(hidden)]
5622        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
5623            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5624                Self
5625            }
5626        }
5627        #[automatically_derived]
5628        impl alloy_sol_types::SolError for ExpectedPause {
5629            type Parameters<'a> = UnderlyingSolTuple<'a>;
5630            type Token<'a> = <Self::Parameters<
5631                'a,
5632            > as alloy_sol_types::SolType>::Token<'a>;
5633            const SIGNATURE: &'static str = "ExpectedPause()";
5634            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
5635            #[inline]
5636            fn new<'a>(
5637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5638            ) -> Self {
5639                tuple.into()
5640            }
5641            #[inline]
5642            fn tokenize(&self) -> Self::Token<'_> {
5643                ()
5644            }
5645            #[inline]
5646            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5647                <Self::Parameters<
5648                    '_,
5649                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5650                    .map(Self::new)
5651            }
5652        }
5653    };
5654    #[derive(serde::Serialize, serde::Deserialize)]
5655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5656    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5657```solidity
5658error FailedInnerCall();
5659```*/
5660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5661    #[derive(Clone)]
5662    pub struct FailedInnerCall;
5663    #[allow(
5664        non_camel_case_types,
5665        non_snake_case,
5666        clippy::pub_underscore_fields,
5667        clippy::style
5668    )]
5669    const _: () = {
5670        use alloy::sol_types as alloy_sol_types;
5671        #[doc(hidden)]
5672        #[allow(dead_code)]
5673        type UnderlyingSolTuple<'a> = ();
5674        #[doc(hidden)]
5675        type UnderlyingRustTuple<'a> = ();
5676        #[cfg(test)]
5677        #[allow(dead_code, unreachable_patterns)]
5678        fn _type_assertion(
5679            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5680        ) {
5681            match _t {
5682                alloy_sol_types::private::AssertTypeEq::<
5683                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5684                >(_) => {}
5685            }
5686        }
5687        #[automatically_derived]
5688        #[doc(hidden)]
5689        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5690            fn from(value: FailedInnerCall) -> Self {
5691                ()
5692            }
5693        }
5694        #[automatically_derived]
5695        #[doc(hidden)]
5696        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5697            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5698                Self
5699            }
5700        }
5701        #[automatically_derived]
5702        impl alloy_sol_types::SolError for FailedInnerCall {
5703            type Parameters<'a> = UnderlyingSolTuple<'a>;
5704            type Token<'a> = <Self::Parameters<
5705                'a,
5706            > as alloy_sol_types::SolType>::Token<'a>;
5707            const SIGNATURE: &'static str = "FailedInnerCall()";
5708            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5709            #[inline]
5710            fn new<'a>(
5711                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5712            ) -> Self {
5713                tuple.into()
5714            }
5715            #[inline]
5716            fn tokenize(&self) -> Self::Token<'_> {
5717                ()
5718            }
5719            #[inline]
5720            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5721                <Self::Parameters<
5722                    '_,
5723                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5724                    .map(Self::new)
5725            }
5726        }
5727    };
5728    #[derive(serde::Serialize, serde::Deserialize)]
5729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5730    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
5731```solidity
5732error InitialActiveStakeExceedsBalance();
5733```*/
5734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5735    #[derive(Clone)]
5736    pub struct InitialActiveStakeExceedsBalance;
5737    #[allow(
5738        non_camel_case_types,
5739        non_snake_case,
5740        clippy::pub_underscore_fields,
5741        clippy::style
5742    )]
5743    const _: () = {
5744        use alloy::sol_types as alloy_sol_types;
5745        #[doc(hidden)]
5746        #[allow(dead_code)]
5747        type UnderlyingSolTuple<'a> = ();
5748        #[doc(hidden)]
5749        type UnderlyingRustTuple<'a> = ();
5750        #[cfg(test)]
5751        #[allow(dead_code, unreachable_patterns)]
5752        fn _type_assertion(
5753            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5754        ) {
5755            match _t {
5756                alloy_sol_types::private::AssertTypeEq::<
5757                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5758                >(_) => {}
5759            }
5760        }
5761        #[automatically_derived]
5762        #[doc(hidden)]
5763        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
5764        for UnderlyingRustTuple<'_> {
5765            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
5766                ()
5767            }
5768        }
5769        #[automatically_derived]
5770        #[doc(hidden)]
5771        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5772        for InitialActiveStakeExceedsBalance {
5773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5774                Self
5775            }
5776        }
5777        #[automatically_derived]
5778        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
5779            type Parameters<'a> = UnderlyingSolTuple<'a>;
5780            type Token<'a> = <Self::Parameters<
5781                'a,
5782            > as alloy_sol_types::SolType>::Token<'a>;
5783            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
5784            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
5785            #[inline]
5786            fn new<'a>(
5787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5788            ) -> Self {
5789                tuple.into()
5790            }
5791            #[inline]
5792            fn tokenize(&self) -> Self::Token<'_> {
5793                ()
5794            }
5795            #[inline]
5796            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5797                <Self::Parameters<
5798                    '_,
5799                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5800                    .map(Self::new)
5801            }
5802        }
5803    };
5804    #[derive(serde::Serialize, serde::Deserialize)]
5805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5806    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
5807```solidity
5808error InsufficientAllowance(uint256, uint256);
5809```*/
5810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5811    #[derive(Clone)]
5812    pub struct InsufficientAllowance {
5813        #[allow(missing_docs)]
5814        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5815        #[allow(missing_docs)]
5816        pub _1: alloy::sol_types::private::primitives::aliases::U256,
5817    }
5818    #[allow(
5819        non_camel_case_types,
5820        non_snake_case,
5821        clippy::pub_underscore_fields,
5822        clippy::style
5823    )]
5824    const _: () = {
5825        use alloy::sol_types as alloy_sol_types;
5826        #[doc(hidden)]
5827        #[allow(dead_code)]
5828        type UnderlyingSolTuple<'a> = (
5829            alloy::sol_types::sol_data::Uint<256>,
5830            alloy::sol_types::sol_data::Uint<256>,
5831        );
5832        #[doc(hidden)]
5833        type UnderlyingRustTuple<'a> = (
5834            alloy::sol_types::private::primitives::aliases::U256,
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<InsufficientAllowance> for UnderlyingRustTuple<'_> {
5851            fn from(value: InsufficientAllowance) -> Self {
5852                (value._0, value._1)
5853            }
5854        }
5855        #[automatically_derived]
5856        #[doc(hidden)]
5857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
5858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5859                Self { _0: tuple.0, _1: tuple.1 }
5860            }
5861        }
5862        #[automatically_derived]
5863        impl alloy_sol_types::SolError for InsufficientAllowance {
5864            type Parameters<'a> = UnderlyingSolTuple<'a>;
5865            type Token<'a> = <Self::Parameters<
5866                'a,
5867            > as alloy_sol_types::SolType>::Token<'a>;
5868            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
5869            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
5870            #[inline]
5871            fn new<'a>(
5872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5873            ) -> Self {
5874                tuple.into()
5875            }
5876            #[inline]
5877            fn tokenize(&self) -> Self::Token<'_> {
5878                (
5879                    <alloy::sol_types::sol_data::Uint<
5880                        256,
5881                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5882                    <alloy::sol_types::sol_data::Uint<
5883                        256,
5884                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5885                )
5886            }
5887            #[inline]
5888            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5889                <Self::Parameters<
5890                    '_,
5891                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5892                    .map(Self::new)
5893            }
5894        }
5895    };
5896    #[derive(serde::Serialize, serde::Deserialize)]
5897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5898    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
5899```solidity
5900error InsufficientBalance(uint256);
5901```*/
5902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5903    #[derive(Clone)]
5904    pub struct InsufficientBalance(
5905        pub alloy::sol_types::private::primitives::aliases::U256,
5906    );
5907    #[allow(
5908        non_camel_case_types,
5909        non_snake_case,
5910        clippy::pub_underscore_fields,
5911        clippy::style
5912    )]
5913    const _: () = {
5914        use alloy::sol_types as alloy_sol_types;
5915        #[doc(hidden)]
5916        #[allow(dead_code)]
5917        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5918        #[doc(hidden)]
5919        type UnderlyingRustTuple<'a> = (
5920            alloy::sol_types::private::primitives::aliases::U256,
5921        );
5922        #[cfg(test)]
5923        #[allow(dead_code, unreachable_patterns)]
5924        fn _type_assertion(
5925            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5926        ) {
5927            match _t {
5928                alloy_sol_types::private::AssertTypeEq::<
5929                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5930                >(_) => {}
5931            }
5932        }
5933        #[automatically_derived]
5934        #[doc(hidden)]
5935        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
5936            fn from(value: InsufficientBalance) -> Self {
5937                (value.0,)
5938            }
5939        }
5940        #[automatically_derived]
5941        #[doc(hidden)]
5942        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
5943            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5944                Self(tuple.0)
5945            }
5946        }
5947        #[automatically_derived]
5948        impl alloy_sol_types::SolError for InsufficientBalance {
5949            type Parameters<'a> = UnderlyingSolTuple<'a>;
5950            type Token<'a> = <Self::Parameters<
5951                'a,
5952            > as alloy_sol_types::SolType>::Token<'a>;
5953            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
5954            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
5955            #[inline]
5956            fn new<'a>(
5957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5958            ) -> Self {
5959                tuple.into()
5960            }
5961            #[inline]
5962            fn tokenize(&self) -> Self::Token<'_> {
5963                (
5964                    <alloy::sol_types::sol_data::Uint<
5965                        256,
5966                    > as alloy_sol_types::SolType>::tokenize(&self.0),
5967                )
5968            }
5969            #[inline]
5970            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5971                <Self::Parameters<
5972                    '_,
5973                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5974                    .map(Self::new)
5975            }
5976        }
5977    };
5978    #[derive(serde::Serialize, serde::Deserialize)]
5979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5980    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
5981```solidity
5982error InvalidCommission();
5983```*/
5984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5985    #[derive(Clone)]
5986    pub struct InvalidCommission;
5987    #[allow(
5988        non_camel_case_types,
5989        non_snake_case,
5990        clippy::pub_underscore_fields,
5991        clippy::style
5992    )]
5993    const _: () = {
5994        use alloy::sol_types as alloy_sol_types;
5995        #[doc(hidden)]
5996        #[allow(dead_code)]
5997        type UnderlyingSolTuple<'a> = ();
5998        #[doc(hidden)]
5999        type UnderlyingRustTuple<'a> = ();
6000        #[cfg(test)]
6001        #[allow(dead_code, unreachable_patterns)]
6002        fn _type_assertion(
6003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6004        ) {
6005            match _t {
6006                alloy_sol_types::private::AssertTypeEq::<
6007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6008                >(_) => {}
6009            }
6010        }
6011        #[automatically_derived]
6012        #[doc(hidden)]
6013        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
6014            fn from(value: InvalidCommission) -> Self {
6015                ()
6016            }
6017        }
6018        #[automatically_derived]
6019        #[doc(hidden)]
6020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
6021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6022                Self
6023            }
6024        }
6025        #[automatically_derived]
6026        impl alloy_sol_types::SolError for InvalidCommission {
6027            type Parameters<'a> = UnderlyingSolTuple<'a>;
6028            type Token<'a> = <Self::Parameters<
6029                'a,
6030            > as alloy_sol_types::SolType>::Token<'a>;
6031            const SIGNATURE: &'static str = "InvalidCommission()";
6032            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
6033            #[inline]
6034            fn new<'a>(
6035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6036            ) -> Self {
6037                tuple.into()
6038            }
6039            #[inline]
6040            fn tokenize(&self) -> Self::Token<'_> {
6041                ()
6042            }
6043            #[inline]
6044            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6045                <Self::Parameters<
6046                    '_,
6047                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6048                    .map(Self::new)
6049            }
6050        }
6051    };
6052    #[derive(serde::Serialize, serde::Deserialize)]
6053    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6054    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
6055```solidity
6056error InvalidG1();
6057```*/
6058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6059    #[derive(Clone)]
6060    pub struct InvalidG1;
6061    #[allow(
6062        non_camel_case_types,
6063        non_snake_case,
6064        clippy::pub_underscore_fields,
6065        clippy::style
6066    )]
6067    const _: () = {
6068        use alloy::sol_types as alloy_sol_types;
6069        #[doc(hidden)]
6070        #[allow(dead_code)]
6071        type UnderlyingSolTuple<'a> = ();
6072        #[doc(hidden)]
6073        type UnderlyingRustTuple<'a> = ();
6074        #[cfg(test)]
6075        #[allow(dead_code, unreachable_patterns)]
6076        fn _type_assertion(
6077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6078        ) {
6079            match _t {
6080                alloy_sol_types::private::AssertTypeEq::<
6081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6082                >(_) => {}
6083            }
6084        }
6085        #[automatically_derived]
6086        #[doc(hidden)]
6087        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
6088            fn from(value: InvalidG1) -> Self {
6089                ()
6090            }
6091        }
6092        #[automatically_derived]
6093        #[doc(hidden)]
6094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
6095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6096                Self
6097            }
6098        }
6099        #[automatically_derived]
6100        impl alloy_sol_types::SolError for InvalidG1 {
6101            type Parameters<'a> = UnderlyingSolTuple<'a>;
6102            type Token<'a> = <Self::Parameters<
6103                'a,
6104            > as alloy_sol_types::SolType>::Token<'a>;
6105            const SIGNATURE: &'static str = "InvalidG1()";
6106            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
6107            #[inline]
6108            fn new<'a>(
6109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6110            ) -> Self {
6111                tuple.into()
6112            }
6113            #[inline]
6114            fn tokenize(&self) -> Self::Token<'_> {
6115                ()
6116            }
6117            #[inline]
6118            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6119                <Self::Parameters<
6120                    '_,
6121                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6122                    .map(Self::new)
6123            }
6124        }
6125    };
6126    #[derive(serde::Serialize, serde::Deserialize)]
6127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6128    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6129```solidity
6130error InvalidInitialization();
6131```*/
6132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6133    #[derive(Clone)]
6134    pub struct InvalidInitialization;
6135    #[allow(
6136        non_camel_case_types,
6137        non_snake_case,
6138        clippy::pub_underscore_fields,
6139        clippy::style
6140    )]
6141    const _: () = {
6142        use alloy::sol_types as alloy_sol_types;
6143        #[doc(hidden)]
6144        #[allow(dead_code)]
6145        type UnderlyingSolTuple<'a> = ();
6146        #[doc(hidden)]
6147        type UnderlyingRustTuple<'a> = ();
6148        #[cfg(test)]
6149        #[allow(dead_code, unreachable_patterns)]
6150        fn _type_assertion(
6151            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6152        ) {
6153            match _t {
6154                alloy_sol_types::private::AssertTypeEq::<
6155                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6156                >(_) => {}
6157            }
6158        }
6159        #[automatically_derived]
6160        #[doc(hidden)]
6161        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6162            fn from(value: InvalidInitialization) -> Self {
6163                ()
6164            }
6165        }
6166        #[automatically_derived]
6167        #[doc(hidden)]
6168        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6169            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6170                Self
6171            }
6172        }
6173        #[automatically_derived]
6174        impl alloy_sol_types::SolError for InvalidInitialization {
6175            type Parameters<'a> = UnderlyingSolTuple<'a>;
6176            type Token<'a> = <Self::Parameters<
6177                'a,
6178            > as alloy_sol_types::SolType>::Token<'a>;
6179            const SIGNATURE: &'static str = "InvalidInitialization()";
6180            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6181            #[inline]
6182            fn new<'a>(
6183                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6184            ) -> Self {
6185                tuple.into()
6186            }
6187            #[inline]
6188            fn tokenize(&self) -> Self::Token<'_> {
6189                ()
6190            }
6191            #[inline]
6192            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6193                <Self::Parameters<
6194                    '_,
6195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6196                    .map(Self::new)
6197            }
6198        }
6199    };
6200    #[derive(serde::Serialize, serde::Deserialize)]
6201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6202    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6203```solidity
6204error InvalidMetadataUriLength();
6205```*/
6206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6207    #[derive(Clone)]
6208    pub struct InvalidMetadataUriLength;
6209    #[allow(
6210        non_camel_case_types,
6211        non_snake_case,
6212        clippy::pub_underscore_fields,
6213        clippy::style
6214    )]
6215    const _: () = {
6216        use alloy::sol_types as alloy_sol_types;
6217        #[doc(hidden)]
6218        #[allow(dead_code)]
6219        type UnderlyingSolTuple<'a> = ();
6220        #[doc(hidden)]
6221        type UnderlyingRustTuple<'a> = ();
6222        #[cfg(test)]
6223        #[allow(dead_code, unreachable_patterns)]
6224        fn _type_assertion(
6225            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6226        ) {
6227            match _t {
6228                alloy_sol_types::private::AssertTypeEq::<
6229                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6230                >(_) => {}
6231            }
6232        }
6233        #[automatically_derived]
6234        #[doc(hidden)]
6235        impl ::core::convert::From<InvalidMetadataUriLength>
6236        for UnderlyingRustTuple<'_> {
6237            fn from(value: InvalidMetadataUriLength) -> Self {
6238                ()
6239            }
6240        }
6241        #[automatically_derived]
6242        #[doc(hidden)]
6243        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6244        for InvalidMetadataUriLength {
6245            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6246                Self
6247            }
6248        }
6249        #[automatically_derived]
6250        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6251            type Parameters<'a> = UnderlyingSolTuple<'a>;
6252            type Token<'a> = <Self::Parameters<
6253                'a,
6254            > as alloy_sol_types::SolType>::Token<'a>;
6255            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6256            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6257            #[inline]
6258            fn new<'a>(
6259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6260            ) -> Self {
6261                tuple.into()
6262            }
6263            #[inline]
6264            fn tokenize(&self) -> Self::Token<'_> {
6265                ()
6266            }
6267            #[inline]
6268            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6269                <Self::Parameters<
6270                    '_,
6271                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6272                    .map(Self::new)
6273            }
6274        }
6275    };
6276    #[derive(serde::Serialize, serde::Deserialize)]
6277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6278    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6279```solidity
6280error InvalidRateLimitParameters();
6281```*/
6282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6283    #[derive(Clone)]
6284    pub struct InvalidRateLimitParameters;
6285    #[allow(
6286        non_camel_case_types,
6287        non_snake_case,
6288        clippy::pub_underscore_fields,
6289        clippy::style
6290    )]
6291    const _: () = {
6292        use alloy::sol_types as alloy_sol_types;
6293        #[doc(hidden)]
6294        #[allow(dead_code)]
6295        type UnderlyingSolTuple<'a> = ();
6296        #[doc(hidden)]
6297        type UnderlyingRustTuple<'a> = ();
6298        #[cfg(test)]
6299        #[allow(dead_code, unreachable_patterns)]
6300        fn _type_assertion(
6301            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6302        ) {
6303            match _t {
6304                alloy_sol_types::private::AssertTypeEq::<
6305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6306                >(_) => {}
6307            }
6308        }
6309        #[automatically_derived]
6310        #[doc(hidden)]
6311        impl ::core::convert::From<InvalidRateLimitParameters>
6312        for UnderlyingRustTuple<'_> {
6313            fn from(value: InvalidRateLimitParameters) -> Self {
6314                ()
6315            }
6316        }
6317        #[automatically_derived]
6318        #[doc(hidden)]
6319        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6320        for InvalidRateLimitParameters {
6321            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6322                Self
6323            }
6324        }
6325        #[automatically_derived]
6326        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6327            type Parameters<'a> = UnderlyingSolTuple<'a>;
6328            type Token<'a> = <Self::Parameters<
6329                'a,
6330            > as alloy_sol_types::SolType>::Token<'a>;
6331            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6332            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6333            #[inline]
6334            fn new<'a>(
6335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6336            ) -> Self {
6337                tuple.into()
6338            }
6339            #[inline]
6340            fn tokenize(&self) -> Self::Token<'_> {
6341                ()
6342            }
6343            #[inline]
6344            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6345                <Self::Parameters<
6346                    '_,
6347                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6348                    .map(Self::new)
6349            }
6350        }
6351    };
6352    #[derive(serde::Serialize, serde::Deserialize)]
6353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6354    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6355```solidity
6356error InvalidSchnorrSig();
6357```*/
6358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6359    #[derive(Clone)]
6360    pub struct InvalidSchnorrSig;
6361    #[allow(
6362        non_camel_case_types,
6363        non_snake_case,
6364        clippy::pub_underscore_fields,
6365        clippy::style
6366    )]
6367    const _: () = {
6368        use alloy::sol_types as alloy_sol_types;
6369        #[doc(hidden)]
6370        #[allow(dead_code)]
6371        type UnderlyingSolTuple<'a> = ();
6372        #[doc(hidden)]
6373        type UnderlyingRustTuple<'a> = ();
6374        #[cfg(test)]
6375        #[allow(dead_code, unreachable_patterns)]
6376        fn _type_assertion(
6377            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6378        ) {
6379            match _t {
6380                alloy_sol_types::private::AssertTypeEq::<
6381                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6382                >(_) => {}
6383            }
6384        }
6385        #[automatically_derived]
6386        #[doc(hidden)]
6387        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6388            fn from(value: InvalidSchnorrSig) -> Self {
6389                ()
6390            }
6391        }
6392        #[automatically_derived]
6393        #[doc(hidden)]
6394        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6395            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6396                Self
6397            }
6398        }
6399        #[automatically_derived]
6400        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6401            type Parameters<'a> = UnderlyingSolTuple<'a>;
6402            type Token<'a> = <Self::Parameters<
6403                'a,
6404            > as alloy_sol_types::SolType>::Token<'a>;
6405            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6406            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
6407            #[inline]
6408            fn new<'a>(
6409                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6410            ) -> Self {
6411                tuple.into()
6412            }
6413            #[inline]
6414            fn tokenize(&self) -> Self::Token<'_> {
6415                ()
6416            }
6417            #[inline]
6418            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6419                <Self::Parameters<
6420                    '_,
6421                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6422                    .map(Self::new)
6423            }
6424        }
6425    };
6426    #[derive(serde::Serialize, serde::Deserialize)]
6427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6428    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
6429```solidity
6430error InvalidSchnorrVK();
6431```*/
6432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6433    #[derive(Clone)]
6434    pub struct InvalidSchnorrVK;
6435    #[allow(
6436        non_camel_case_types,
6437        non_snake_case,
6438        clippy::pub_underscore_fields,
6439        clippy::style
6440    )]
6441    const _: () = {
6442        use alloy::sol_types as alloy_sol_types;
6443        #[doc(hidden)]
6444        #[allow(dead_code)]
6445        type UnderlyingSolTuple<'a> = ();
6446        #[doc(hidden)]
6447        type UnderlyingRustTuple<'a> = ();
6448        #[cfg(test)]
6449        #[allow(dead_code, unreachable_patterns)]
6450        fn _type_assertion(
6451            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6452        ) {
6453            match _t {
6454                alloy_sol_types::private::AssertTypeEq::<
6455                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6456                >(_) => {}
6457            }
6458        }
6459        #[automatically_derived]
6460        #[doc(hidden)]
6461        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
6462            fn from(value: InvalidSchnorrVK) -> Self {
6463                ()
6464            }
6465        }
6466        #[automatically_derived]
6467        #[doc(hidden)]
6468        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
6469            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6470                Self
6471            }
6472        }
6473        #[automatically_derived]
6474        impl alloy_sol_types::SolError for InvalidSchnorrVK {
6475            type Parameters<'a> = UnderlyingSolTuple<'a>;
6476            type Token<'a> = <Self::Parameters<
6477                'a,
6478            > as alloy_sol_types::SolType>::Token<'a>;
6479            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
6480            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
6481            #[inline]
6482            fn new<'a>(
6483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6484            ) -> Self {
6485                tuple.into()
6486            }
6487            #[inline]
6488            fn tokenize(&self) -> Self::Token<'_> {
6489                ()
6490            }
6491            #[inline]
6492            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6493                <Self::Parameters<
6494                    '_,
6495                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6496                    .map(Self::new)
6497            }
6498        }
6499    };
6500    #[derive(serde::Serialize, serde::Deserialize)]
6501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6502    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
6503```solidity
6504error MinDelegateAmountTooSmall();
6505```*/
6506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6507    #[derive(Clone)]
6508    pub struct MinDelegateAmountTooSmall;
6509    #[allow(
6510        non_camel_case_types,
6511        non_snake_case,
6512        clippy::pub_underscore_fields,
6513        clippy::style
6514    )]
6515    const _: () = {
6516        use alloy::sol_types as alloy_sol_types;
6517        #[doc(hidden)]
6518        #[allow(dead_code)]
6519        type UnderlyingSolTuple<'a> = ();
6520        #[doc(hidden)]
6521        type UnderlyingRustTuple<'a> = ();
6522        #[cfg(test)]
6523        #[allow(dead_code, unreachable_patterns)]
6524        fn _type_assertion(
6525            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6526        ) {
6527            match _t {
6528                alloy_sol_types::private::AssertTypeEq::<
6529                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6530                >(_) => {}
6531            }
6532        }
6533        #[automatically_derived]
6534        #[doc(hidden)]
6535        impl ::core::convert::From<MinDelegateAmountTooSmall>
6536        for UnderlyingRustTuple<'_> {
6537            fn from(value: MinDelegateAmountTooSmall) -> Self {
6538                ()
6539            }
6540        }
6541        #[automatically_derived]
6542        #[doc(hidden)]
6543        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6544        for MinDelegateAmountTooSmall {
6545            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6546                Self
6547            }
6548        }
6549        #[automatically_derived]
6550        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
6551            type Parameters<'a> = UnderlyingSolTuple<'a>;
6552            type Token<'a> = <Self::Parameters<
6553                'a,
6554            > as alloy_sol_types::SolType>::Token<'a>;
6555            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
6556            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
6557            #[inline]
6558            fn new<'a>(
6559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6560            ) -> Self {
6561                tuple.into()
6562            }
6563            #[inline]
6564            fn tokenize(&self) -> Self::Token<'_> {
6565                ()
6566            }
6567            #[inline]
6568            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6569                <Self::Parameters<
6570                    '_,
6571                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6572                    .map(Self::new)
6573            }
6574        }
6575    };
6576    #[derive(serde::Serialize, serde::Deserialize)]
6577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6578    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
6579```solidity
6580error NoUndelegationFound();
6581```*/
6582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6583    #[derive(Clone)]
6584    pub struct NoUndelegationFound;
6585    #[allow(
6586        non_camel_case_types,
6587        non_snake_case,
6588        clippy::pub_underscore_fields,
6589        clippy::style
6590    )]
6591    const _: () = {
6592        use alloy::sol_types as alloy_sol_types;
6593        #[doc(hidden)]
6594        #[allow(dead_code)]
6595        type UnderlyingSolTuple<'a> = ();
6596        #[doc(hidden)]
6597        type UnderlyingRustTuple<'a> = ();
6598        #[cfg(test)]
6599        #[allow(dead_code, unreachable_patterns)]
6600        fn _type_assertion(
6601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6602        ) {
6603            match _t {
6604                alloy_sol_types::private::AssertTypeEq::<
6605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6606                >(_) => {}
6607            }
6608        }
6609        #[automatically_derived]
6610        #[doc(hidden)]
6611        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
6612            fn from(value: NoUndelegationFound) -> Self {
6613                ()
6614            }
6615        }
6616        #[automatically_derived]
6617        #[doc(hidden)]
6618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
6619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6620                Self
6621            }
6622        }
6623        #[automatically_derived]
6624        impl alloy_sol_types::SolError for NoUndelegationFound {
6625            type Parameters<'a> = UnderlyingSolTuple<'a>;
6626            type Token<'a> = <Self::Parameters<
6627                'a,
6628            > as alloy_sol_types::SolType>::Token<'a>;
6629            const SIGNATURE: &'static str = "NoUndelegationFound()";
6630            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
6631            #[inline]
6632            fn new<'a>(
6633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6634            ) -> Self {
6635                tuple.into()
6636            }
6637            #[inline]
6638            fn tokenize(&self) -> Self::Token<'_> {
6639                ()
6640            }
6641            #[inline]
6642            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6643                <Self::Parameters<
6644                    '_,
6645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6646                    .map(Self::new)
6647            }
6648        }
6649    };
6650    #[derive(serde::Serialize, serde::Deserialize)]
6651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6652    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6653```solidity
6654error NotInitializing();
6655```*/
6656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6657    #[derive(Clone)]
6658    pub struct NotInitializing;
6659    #[allow(
6660        non_camel_case_types,
6661        non_snake_case,
6662        clippy::pub_underscore_fields,
6663        clippy::style
6664    )]
6665    const _: () = {
6666        use alloy::sol_types as alloy_sol_types;
6667        #[doc(hidden)]
6668        #[allow(dead_code)]
6669        type UnderlyingSolTuple<'a> = ();
6670        #[doc(hidden)]
6671        type UnderlyingRustTuple<'a> = ();
6672        #[cfg(test)]
6673        #[allow(dead_code, unreachable_patterns)]
6674        fn _type_assertion(
6675            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6676        ) {
6677            match _t {
6678                alloy_sol_types::private::AssertTypeEq::<
6679                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6680                >(_) => {}
6681            }
6682        }
6683        #[automatically_derived]
6684        #[doc(hidden)]
6685        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6686            fn from(value: NotInitializing) -> Self {
6687                ()
6688            }
6689        }
6690        #[automatically_derived]
6691        #[doc(hidden)]
6692        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6693            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6694                Self
6695            }
6696        }
6697        #[automatically_derived]
6698        impl alloy_sol_types::SolError for NotInitializing {
6699            type Parameters<'a> = UnderlyingSolTuple<'a>;
6700            type Token<'a> = <Self::Parameters<
6701                'a,
6702            > as alloy_sol_types::SolType>::Token<'a>;
6703            const SIGNATURE: &'static str = "NotInitializing()";
6704            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6705            #[inline]
6706            fn new<'a>(
6707                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6708            ) -> Self {
6709                tuple.into()
6710            }
6711            #[inline]
6712            fn tokenize(&self) -> Self::Token<'_> {
6713                ()
6714            }
6715            #[inline]
6716            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6717                <Self::Parameters<
6718                    '_,
6719                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6720                    .map(Self::new)
6721            }
6722        }
6723    };
6724    #[derive(serde::Serialize, serde::Deserialize)]
6725    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6726    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
6727```solidity
6728error NothingToWithdraw();
6729```*/
6730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6731    #[derive(Clone)]
6732    pub struct NothingToWithdraw;
6733    #[allow(
6734        non_camel_case_types,
6735        non_snake_case,
6736        clippy::pub_underscore_fields,
6737        clippy::style
6738    )]
6739    const _: () = {
6740        use alloy::sol_types as alloy_sol_types;
6741        #[doc(hidden)]
6742        #[allow(dead_code)]
6743        type UnderlyingSolTuple<'a> = ();
6744        #[doc(hidden)]
6745        type UnderlyingRustTuple<'a> = ();
6746        #[cfg(test)]
6747        #[allow(dead_code, unreachable_patterns)]
6748        fn _type_assertion(
6749            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6750        ) {
6751            match _t {
6752                alloy_sol_types::private::AssertTypeEq::<
6753                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6754                >(_) => {}
6755            }
6756        }
6757        #[automatically_derived]
6758        #[doc(hidden)]
6759        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
6760            fn from(value: NothingToWithdraw) -> Self {
6761                ()
6762            }
6763        }
6764        #[automatically_derived]
6765        #[doc(hidden)]
6766        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
6767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6768                Self
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::SolError for NothingToWithdraw {
6773            type Parameters<'a> = UnderlyingSolTuple<'a>;
6774            type Token<'a> = <Self::Parameters<
6775                'a,
6776            > as alloy_sol_types::SolType>::Token<'a>;
6777            const SIGNATURE: &'static str = "NothingToWithdraw()";
6778            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
6779            #[inline]
6780            fn new<'a>(
6781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6782            ) -> Self {
6783                tuple.into()
6784            }
6785            #[inline]
6786            fn tokenize(&self) -> Self::Token<'_> {
6787                ()
6788            }
6789            #[inline]
6790            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6791                <Self::Parameters<
6792                    '_,
6793                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6794                    .map(Self::new)
6795            }
6796        }
6797    };
6798    #[derive(serde::Serialize, serde::Deserialize)]
6799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6800    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6801```solidity
6802error OwnableInvalidOwner(address owner);
6803```*/
6804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6805    #[derive(Clone)]
6806    pub struct OwnableInvalidOwner {
6807        #[allow(missing_docs)]
6808        pub owner: alloy::sol_types::private::Address,
6809    }
6810    #[allow(
6811        non_camel_case_types,
6812        non_snake_case,
6813        clippy::pub_underscore_fields,
6814        clippy::style
6815    )]
6816    const _: () = {
6817        use alloy::sol_types as alloy_sol_types;
6818        #[doc(hidden)]
6819        #[allow(dead_code)]
6820        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6821        #[doc(hidden)]
6822        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6823        #[cfg(test)]
6824        #[allow(dead_code, unreachable_patterns)]
6825        fn _type_assertion(
6826            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6827        ) {
6828            match _t {
6829                alloy_sol_types::private::AssertTypeEq::<
6830                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6831                >(_) => {}
6832            }
6833        }
6834        #[automatically_derived]
6835        #[doc(hidden)]
6836        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6837            fn from(value: OwnableInvalidOwner) -> Self {
6838                (value.owner,)
6839            }
6840        }
6841        #[automatically_derived]
6842        #[doc(hidden)]
6843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6845                Self { owner: tuple.0 }
6846            }
6847        }
6848        #[automatically_derived]
6849        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6850            type Parameters<'a> = UnderlyingSolTuple<'a>;
6851            type Token<'a> = <Self::Parameters<
6852                'a,
6853            > as alloy_sol_types::SolType>::Token<'a>;
6854            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6855            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6856            #[inline]
6857            fn new<'a>(
6858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6859            ) -> Self {
6860                tuple.into()
6861            }
6862            #[inline]
6863            fn tokenize(&self) -> Self::Token<'_> {
6864                (
6865                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6866                        &self.owner,
6867                    ),
6868                )
6869            }
6870            #[inline]
6871            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6872                <Self::Parameters<
6873                    '_,
6874                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6875                    .map(Self::new)
6876            }
6877        }
6878    };
6879    #[derive(serde::Serialize, serde::Deserialize)]
6880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6881    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6882```solidity
6883error OwnableUnauthorizedAccount(address account);
6884```*/
6885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6886    #[derive(Clone)]
6887    pub struct OwnableUnauthorizedAccount {
6888        #[allow(missing_docs)]
6889        pub account: alloy::sol_types::private::Address,
6890    }
6891    #[allow(
6892        non_camel_case_types,
6893        non_snake_case,
6894        clippy::pub_underscore_fields,
6895        clippy::style
6896    )]
6897    const _: () = {
6898        use alloy::sol_types as alloy_sol_types;
6899        #[doc(hidden)]
6900        #[allow(dead_code)]
6901        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6902        #[doc(hidden)]
6903        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6904        #[cfg(test)]
6905        #[allow(dead_code, unreachable_patterns)]
6906        fn _type_assertion(
6907            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6908        ) {
6909            match _t {
6910                alloy_sol_types::private::AssertTypeEq::<
6911                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6912                >(_) => {}
6913            }
6914        }
6915        #[automatically_derived]
6916        #[doc(hidden)]
6917        impl ::core::convert::From<OwnableUnauthorizedAccount>
6918        for UnderlyingRustTuple<'_> {
6919            fn from(value: OwnableUnauthorizedAccount) -> Self {
6920                (value.account,)
6921            }
6922        }
6923        #[automatically_derived]
6924        #[doc(hidden)]
6925        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6926        for OwnableUnauthorizedAccount {
6927            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6928                Self { account: tuple.0 }
6929            }
6930        }
6931        #[automatically_derived]
6932        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6933            type Parameters<'a> = UnderlyingSolTuple<'a>;
6934            type Token<'a> = <Self::Parameters<
6935                'a,
6936            > as alloy_sol_types::SolType>::Token<'a>;
6937            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6938            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6939            #[inline]
6940            fn new<'a>(
6941                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6942            ) -> Self {
6943                tuple.into()
6944            }
6945            #[inline]
6946            fn tokenize(&self) -> Self::Token<'_> {
6947                (
6948                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6949                        &self.account,
6950                    ),
6951                )
6952            }
6953            #[inline]
6954            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6955                <Self::Parameters<
6956                    '_,
6957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6958                    .map(Self::new)
6959            }
6960        }
6961    };
6962    #[derive(serde::Serialize, serde::Deserialize)]
6963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6964    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6965```solidity
6966error OwnershipCannotBeRenounced();
6967```*/
6968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6969    #[derive(Clone)]
6970    pub struct OwnershipCannotBeRenounced;
6971    #[allow(
6972        non_camel_case_types,
6973        non_snake_case,
6974        clippy::pub_underscore_fields,
6975        clippy::style
6976    )]
6977    const _: () = {
6978        use alloy::sol_types as alloy_sol_types;
6979        #[doc(hidden)]
6980        #[allow(dead_code)]
6981        type UnderlyingSolTuple<'a> = ();
6982        #[doc(hidden)]
6983        type UnderlyingRustTuple<'a> = ();
6984        #[cfg(test)]
6985        #[allow(dead_code, unreachable_patterns)]
6986        fn _type_assertion(
6987            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6988        ) {
6989            match _t {
6990                alloy_sol_types::private::AssertTypeEq::<
6991                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6992                >(_) => {}
6993            }
6994        }
6995        #[automatically_derived]
6996        #[doc(hidden)]
6997        impl ::core::convert::From<OwnershipCannotBeRenounced>
6998        for UnderlyingRustTuple<'_> {
6999            fn from(value: OwnershipCannotBeRenounced) -> Self {
7000                ()
7001            }
7002        }
7003        #[automatically_derived]
7004        #[doc(hidden)]
7005        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7006        for OwnershipCannotBeRenounced {
7007            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7008                Self
7009            }
7010        }
7011        #[automatically_derived]
7012        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7013            type Parameters<'a> = UnderlyingSolTuple<'a>;
7014            type Token<'a> = <Self::Parameters<
7015                'a,
7016            > as alloy_sol_types::SolType>::Token<'a>;
7017            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7018            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7019            #[inline]
7020            fn new<'a>(
7021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7022            ) -> Self {
7023                tuple.into()
7024            }
7025            #[inline]
7026            fn tokenize(&self) -> Self::Token<'_> {
7027                ()
7028            }
7029            #[inline]
7030            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7031                <Self::Parameters<
7032                    '_,
7033                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7034                    .map(Self::new)
7035            }
7036        }
7037    };
7038    #[derive(serde::Serialize, serde::Deserialize)]
7039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7040    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
7041```solidity
7042error PowPrecompileFailed();
7043```*/
7044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7045    #[derive(Clone)]
7046    pub struct PowPrecompileFailed;
7047    #[allow(
7048        non_camel_case_types,
7049        non_snake_case,
7050        clippy::pub_underscore_fields,
7051        clippy::style
7052    )]
7053    const _: () = {
7054        use alloy::sol_types as alloy_sol_types;
7055        #[doc(hidden)]
7056        #[allow(dead_code)]
7057        type UnderlyingSolTuple<'a> = ();
7058        #[doc(hidden)]
7059        type UnderlyingRustTuple<'a> = ();
7060        #[cfg(test)]
7061        #[allow(dead_code, unreachable_patterns)]
7062        fn _type_assertion(
7063            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7064        ) {
7065            match _t {
7066                alloy_sol_types::private::AssertTypeEq::<
7067                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7068                >(_) => {}
7069            }
7070        }
7071        #[automatically_derived]
7072        #[doc(hidden)]
7073        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
7074            fn from(value: PowPrecompileFailed) -> Self {
7075                ()
7076            }
7077        }
7078        #[automatically_derived]
7079        #[doc(hidden)]
7080        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
7081            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7082                Self
7083            }
7084        }
7085        #[automatically_derived]
7086        impl alloy_sol_types::SolError for PowPrecompileFailed {
7087            type Parameters<'a> = UnderlyingSolTuple<'a>;
7088            type Token<'a> = <Self::Parameters<
7089                'a,
7090            > as alloy_sol_types::SolType>::Token<'a>;
7091            const SIGNATURE: &'static str = "PowPrecompileFailed()";
7092            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
7093            #[inline]
7094            fn new<'a>(
7095                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7096            ) -> Self {
7097                tuple.into()
7098            }
7099            #[inline]
7100            fn tokenize(&self) -> Self::Token<'_> {
7101                ()
7102            }
7103            #[inline]
7104            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7105                <Self::Parameters<
7106                    '_,
7107                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7108                    .map(Self::new)
7109            }
7110        }
7111    };
7112    #[derive(serde::Serialize, serde::Deserialize)]
7113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7114    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
7115```solidity
7116error PrematureWithdrawal();
7117```*/
7118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7119    #[derive(Clone)]
7120    pub struct PrematureWithdrawal;
7121    #[allow(
7122        non_camel_case_types,
7123        non_snake_case,
7124        clippy::pub_underscore_fields,
7125        clippy::style
7126    )]
7127    const _: () = {
7128        use alloy::sol_types as alloy_sol_types;
7129        #[doc(hidden)]
7130        #[allow(dead_code)]
7131        type UnderlyingSolTuple<'a> = ();
7132        #[doc(hidden)]
7133        type UnderlyingRustTuple<'a> = ();
7134        #[cfg(test)]
7135        #[allow(dead_code, unreachable_patterns)]
7136        fn _type_assertion(
7137            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7138        ) {
7139            match _t {
7140                alloy_sol_types::private::AssertTypeEq::<
7141                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7142                >(_) => {}
7143            }
7144        }
7145        #[automatically_derived]
7146        #[doc(hidden)]
7147        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
7148            fn from(value: PrematureWithdrawal) -> Self {
7149                ()
7150            }
7151        }
7152        #[automatically_derived]
7153        #[doc(hidden)]
7154        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
7155            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7156                Self
7157            }
7158        }
7159        #[automatically_derived]
7160        impl alloy_sol_types::SolError for PrematureWithdrawal {
7161            type Parameters<'a> = UnderlyingSolTuple<'a>;
7162            type Token<'a> = <Self::Parameters<
7163                'a,
7164            > as alloy_sol_types::SolType>::Token<'a>;
7165            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7166            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7167            #[inline]
7168            fn new<'a>(
7169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7170            ) -> Self {
7171                tuple.into()
7172            }
7173            #[inline]
7174            fn tokenize(&self) -> Self::Token<'_> {
7175                ()
7176            }
7177            #[inline]
7178            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7179                <Self::Parameters<
7180                    '_,
7181                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7182                    .map(Self::new)
7183            }
7184        }
7185    };
7186    #[derive(serde::Serialize, serde::Deserialize)]
7187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7188    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7189```solidity
7190error SchnorrKeyAlreadyUsed();
7191```*/
7192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7193    #[derive(Clone)]
7194    pub struct SchnorrKeyAlreadyUsed;
7195    #[allow(
7196        non_camel_case_types,
7197        non_snake_case,
7198        clippy::pub_underscore_fields,
7199        clippy::style
7200    )]
7201    const _: () = {
7202        use alloy::sol_types as alloy_sol_types;
7203        #[doc(hidden)]
7204        #[allow(dead_code)]
7205        type UnderlyingSolTuple<'a> = ();
7206        #[doc(hidden)]
7207        type UnderlyingRustTuple<'a> = ();
7208        #[cfg(test)]
7209        #[allow(dead_code, unreachable_patterns)]
7210        fn _type_assertion(
7211            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7212        ) {
7213            match _t {
7214                alloy_sol_types::private::AssertTypeEq::<
7215                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7216                >(_) => {}
7217            }
7218        }
7219        #[automatically_derived]
7220        #[doc(hidden)]
7221        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7222            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7223                ()
7224            }
7225        }
7226        #[automatically_derived]
7227        #[doc(hidden)]
7228        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7229            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7230                Self
7231            }
7232        }
7233        #[automatically_derived]
7234        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7235            type Parameters<'a> = UnderlyingSolTuple<'a>;
7236            type Token<'a> = <Self::Parameters<
7237                'a,
7238            > as alloy_sol_types::SolType>::Token<'a>;
7239            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7240            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7241            #[inline]
7242            fn new<'a>(
7243                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7244            ) -> Self {
7245                tuple.into()
7246            }
7247            #[inline]
7248            fn tokenize(&self) -> Self::Token<'_> {
7249                ()
7250            }
7251            #[inline]
7252            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7253                <Self::Parameters<
7254                    '_,
7255                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7256                    .map(Self::new)
7257            }
7258        }
7259    };
7260    #[derive(serde::Serialize, serde::Deserialize)]
7261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7262    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7263```solidity
7264error UUPSUnauthorizedCallContext();
7265```*/
7266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7267    #[derive(Clone)]
7268    pub struct UUPSUnauthorizedCallContext;
7269    #[allow(
7270        non_camel_case_types,
7271        non_snake_case,
7272        clippy::pub_underscore_fields,
7273        clippy::style
7274    )]
7275    const _: () = {
7276        use alloy::sol_types as alloy_sol_types;
7277        #[doc(hidden)]
7278        #[allow(dead_code)]
7279        type UnderlyingSolTuple<'a> = ();
7280        #[doc(hidden)]
7281        type UnderlyingRustTuple<'a> = ();
7282        #[cfg(test)]
7283        #[allow(dead_code, unreachable_patterns)]
7284        fn _type_assertion(
7285            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7286        ) {
7287            match _t {
7288                alloy_sol_types::private::AssertTypeEq::<
7289                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7290                >(_) => {}
7291            }
7292        }
7293        #[automatically_derived]
7294        #[doc(hidden)]
7295        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7296        for UnderlyingRustTuple<'_> {
7297            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7298                ()
7299            }
7300        }
7301        #[automatically_derived]
7302        #[doc(hidden)]
7303        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7304        for UUPSUnauthorizedCallContext {
7305            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7306                Self
7307            }
7308        }
7309        #[automatically_derived]
7310        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7311            type Parameters<'a> = UnderlyingSolTuple<'a>;
7312            type Token<'a> = <Self::Parameters<
7313                'a,
7314            > as alloy_sol_types::SolType>::Token<'a>;
7315            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7316            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7317            #[inline]
7318            fn new<'a>(
7319                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7320            ) -> Self {
7321                tuple.into()
7322            }
7323            #[inline]
7324            fn tokenize(&self) -> Self::Token<'_> {
7325                ()
7326            }
7327            #[inline]
7328            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7329                <Self::Parameters<
7330                    '_,
7331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7332                    .map(Self::new)
7333            }
7334        }
7335    };
7336    #[derive(serde::Serialize, serde::Deserialize)]
7337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7338    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7339```solidity
7340error UUPSUnsupportedProxiableUUID(bytes32 slot);
7341```*/
7342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7343    #[derive(Clone)]
7344    pub struct UUPSUnsupportedProxiableUUID {
7345        #[allow(missing_docs)]
7346        pub slot: alloy::sol_types::private::FixedBytes<32>,
7347    }
7348    #[allow(
7349        non_camel_case_types,
7350        non_snake_case,
7351        clippy::pub_underscore_fields,
7352        clippy::style
7353    )]
7354    const _: () = {
7355        use alloy::sol_types as alloy_sol_types;
7356        #[doc(hidden)]
7357        #[allow(dead_code)]
7358        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7359        #[doc(hidden)]
7360        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7361        #[cfg(test)]
7362        #[allow(dead_code, unreachable_patterns)]
7363        fn _type_assertion(
7364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7365        ) {
7366            match _t {
7367                alloy_sol_types::private::AssertTypeEq::<
7368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7369                >(_) => {}
7370            }
7371        }
7372        #[automatically_derived]
7373        #[doc(hidden)]
7374        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7375        for UnderlyingRustTuple<'_> {
7376            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7377                (value.slot,)
7378            }
7379        }
7380        #[automatically_derived]
7381        #[doc(hidden)]
7382        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7383        for UUPSUnsupportedProxiableUUID {
7384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7385                Self { slot: tuple.0 }
7386            }
7387        }
7388        #[automatically_derived]
7389        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7390            type Parameters<'a> = UnderlyingSolTuple<'a>;
7391            type Token<'a> = <Self::Parameters<
7392                'a,
7393            > as alloy_sol_types::SolType>::Token<'a>;
7394            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7395            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7396            #[inline]
7397            fn new<'a>(
7398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7399            ) -> Self {
7400                tuple.into()
7401            }
7402            #[inline]
7403            fn tokenize(&self) -> Self::Token<'_> {
7404                (
7405                    <alloy::sol_types::sol_data::FixedBytes<
7406                        32,
7407                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7408                )
7409            }
7410            #[inline]
7411            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7412                <Self::Parameters<
7413                    '_,
7414                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7415                    .map(Self::new)
7416            }
7417        }
7418    };
7419    #[derive(serde::Serialize, serde::Deserialize)]
7420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7421    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
7422```solidity
7423error UndelegationAlreadyExists();
7424```*/
7425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7426    #[derive(Clone)]
7427    pub struct UndelegationAlreadyExists;
7428    #[allow(
7429        non_camel_case_types,
7430        non_snake_case,
7431        clippy::pub_underscore_fields,
7432        clippy::style
7433    )]
7434    const _: () = {
7435        use alloy::sol_types as alloy_sol_types;
7436        #[doc(hidden)]
7437        #[allow(dead_code)]
7438        type UnderlyingSolTuple<'a> = ();
7439        #[doc(hidden)]
7440        type UnderlyingRustTuple<'a> = ();
7441        #[cfg(test)]
7442        #[allow(dead_code, unreachable_patterns)]
7443        fn _type_assertion(
7444            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7445        ) {
7446            match _t {
7447                alloy_sol_types::private::AssertTypeEq::<
7448                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7449                >(_) => {}
7450            }
7451        }
7452        #[automatically_derived]
7453        #[doc(hidden)]
7454        impl ::core::convert::From<UndelegationAlreadyExists>
7455        for UnderlyingRustTuple<'_> {
7456            fn from(value: UndelegationAlreadyExists) -> Self {
7457                ()
7458            }
7459        }
7460        #[automatically_derived]
7461        #[doc(hidden)]
7462        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7463        for UndelegationAlreadyExists {
7464            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7465                Self
7466            }
7467        }
7468        #[automatically_derived]
7469        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
7470            type Parameters<'a> = UnderlyingSolTuple<'a>;
7471            type Token<'a> = <Self::Parameters<
7472                'a,
7473            > as alloy_sol_types::SolType>::Token<'a>;
7474            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
7475            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
7476            #[inline]
7477            fn new<'a>(
7478                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7479            ) -> Self {
7480                tuple.into()
7481            }
7482            #[inline]
7483            fn tokenize(&self) -> Self::Token<'_> {
7484                ()
7485            }
7486            #[inline]
7487            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7488                <Self::Parameters<
7489                    '_,
7490                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7491                    .map(Self::new)
7492            }
7493        }
7494    };
7495    #[derive(serde::Serialize, serde::Deserialize)]
7496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7497    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
7498```solidity
7499error ValidatorAlreadyExited();
7500```*/
7501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7502    #[derive(Clone)]
7503    pub struct ValidatorAlreadyExited;
7504    #[allow(
7505        non_camel_case_types,
7506        non_snake_case,
7507        clippy::pub_underscore_fields,
7508        clippy::style
7509    )]
7510    const _: () = {
7511        use alloy::sol_types as alloy_sol_types;
7512        #[doc(hidden)]
7513        #[allow(dead_code)]
7514        type UnderlyingSolTuple<'a> = ();
7515        #[doc(hidden)]
7516        type UnderlyingRustTuple<'a> = ();
7517        #[cfg(test)]
7518        #[allow(dead_code, unreachable_patterns)]
7519        fn _type_assertion(
7520            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7521        ) {
7522            match _t {
7523                alloy_sol_types::private::AssertTypeEq::<
7524                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7525                >(_) => {}
7526            }
7527        }
7528        #[automatically_derived]
7529        #[doc(hidden)]
7530        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
7531            fn from(value: ValidatorAlreadyExited) -> Self {
7532                ()
7533            }
7534        }
7535        #[automatically_derived]
7536        #[doc(hidden)]
7537        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
7538            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7539                Self
7540            }
7541        }
7542        #[automatically_derived]
7543        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
7544            type Parameters<'a> = UnderlyingSolTuple<'a>;
7545            type Token<'a> = <Self::Parameters<
7546                'a,
7547            > as alloy_sol_types::SolType>::Token<'a>;
7548            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
7549            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
7550            #[inline]
7551            fn new<'a>(
7552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7553            ) -> Self {
7554                tuple.into()
7555            }
7556            #[inline]
7557            fn tokenize(&self) -> Self::Token<'_> {
7558                ()
7559            }
7560            #[inline]
7561            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7562                <Self::Parameters<
7563                    '_,
7564                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7565                    .map(Self::new)
7566            }
7567        }
7568    };
7569    #[derive(serde::Serialize, serde::Deserialize)]
7570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7571    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
7572```solidity
7573error ValidatorAlreadyRegistered();
7574```*/
7575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7576    #[derive(Clone)]
7577    pub struct ValidatorAlreadyRegistered;
7578    #[allow(
7579        non_camel_case_types,
7580        non_snake_case,
7581        clippy::pub_underscore_fields,
7582        clippy::style
7583    )]
7584    const _: () = {
7585        use alloy::sol_types as alloy_sol_types;
7586        #[doc(hidden)]
7587        #[allow(dead_code)]
7588        type UnderlyingSolTuple<'a> = ();
7589        #[doc(hidden)]
7590        type UnderlyingRustTuple<'a> = ();
7591        #[cfg(test)]
7592        #[allow(dead_code, unreachable_patterns)]
7593        fn _type_assertion(
7594            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7595        ) {
7596            match _t {
7597                alloy_sol_types::private::AssertTypeEq::<
7598                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7599                >(_) => {}
7600            }
7601        }
7602        #[automatically_derived]
7603        #[doc(hidden)]
7604        impl ::core::convert::From<ValidatorAlreadyRegistered>
7605        for UnderlyingRustTuple<'_> {
7606            fn from(value: ValidatorAlreadyRegistered) -> Self {
7607                ()
7608            }
7609        }
7610        #[automatically_derived]
7611        #[doc(hidden)]
7612        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7613        for ValidatorAlreadyRegistered {
7614            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7615                Self
7616            }
7617        }
7618        #[automatically_derived]
7619        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
7620            type Parameters<'a> = UnderlyingSolTuple<'a>;
7621            type Token<'a> = <Self::Parameters<
7622                'a,
7623            > as alloy_sol_types::SolType>::Token<'a>;
7624            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
7625            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
7626            #[inline]
7627            fn new<'a>(
7628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7629            ) -> Self {
7630                tuple.into()
7631            }
7632            #[inline]
7633            fn tokenize(&self) -> Self::Token<'_> {
7634                ()
7635            }
7636            #[inline]
7637            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7638                <Self::Parameters<
7639                    '_,
7640                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7641                    .map(Self::new)
7642            }
7643        }
7644    };
7645    #[derive(serde::Serialize, serde::Deserialize)]
7646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7647    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
7648```solidity
7649error ValidatorInactive();
7650```*/
7651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7652    #[derive(Clone)]
7653    pub struct ValidatorInactive;
7654    #[allow(
7655        non_camel_case_types,
7656        non_snake_case,
7657        clippy::pub_underscore_fields,
7658        clippy::style
7659    )]
7660    const _: () = {
7661        use alloy::sol_types as alloy_sol_types;
7662        #[doc(hidden)]
7663        #[allow(dead_code)]
7664        type UnderlyingSolTuple<'a> = ();
7665        #[doc(hidden)]
7666        type UnderlyingRustTuple<'a> = ();
7667        #[cfg(test)]
7668        #[allow(dead_code, unreachable_patterns)]
7669        fn _type_assertion(
7670            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7671        ) {
7672            match _t {
7673                alloy_sol_types::private::AssertTypeEq::<
7674                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7675                >(_) => {}
7676            }
7677        }
7678        #[automatically_derived]
7679        #[doc(hidden)]
7680        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
7681            fn from(value: ValidatorInactive) -> Self {
7682                ()
7683            }
7684        }
7685        #[automatically_derived]
7686        #[doc(hidden)]
7687        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
7688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7689                Self
7690            }
7691        }
7692        #[automatically_derived]
7693        impl alloy_sol_types::SolError for ValidatorInactive {
7694            type Parameters<'a> = UnderlyingSolTuple<'a>;
7695            type Token<'a> = <Self::Parameters<
7696                'a,
7697            > as alloy_sol_types::SolType>::Token<'a>;
7698            const SIGNATURE: &'static str = "ValidatorInactive()";
7699            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
7700            #[inline]
7701            fn new<'a>(
7702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7703            ) -> Self {
7704                tuple.into()
7705            }
7706            #[inline]
7707            fn tokenize(&self) -> Self::Token<'_> {
7708                ()
7709            }
7710            #[inline]
7711            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7712                <Self::Parameters<
7713                    '_,
7714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7715                    .map(Self::new)
7716            }
7717        }
7718    };
7719    #[derive(serde::Serialize, serde::Deserialize)]
7720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7721    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
7722```solidity
7723error ValidatorNotExited();
7724```*/
7725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7726    #[derive(Clone)]
7727    pub struct ValidatorNotExited;
7728    #[allow(
7729        non_camel_case_types,
7730        non_snake_case,
7731        clippy::pub_underscore_fields,
7732        clippy::style
7733    )]
7734    const _: () = {
7735        use alloy::sol_types as alloy_sol_types;
7736        #[doc(hidden)]
7737        #[allow(dead_code)]
7738        type UnderlyingSolTuple<'a> = ();
7739        #[doc(hidden)]
7740        type UnderlyingRustTuple<'a> = ();
7741        #[cfg(test)]
7742        #[allow(dead_code, unreachable_patterns)]
7743        fn _type_assertion(
7744            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7745        ) {
7746            match _t {
7747                alloy_sol_types::private::AssertTypeEq::<
7748                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7749                >(_) => {}
7750            }
7751        }
7752        #[automatically_derived]
7753        #[doc(hidden)]
7754        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
7755            fn from(value: ValidatorNotExited) -> Self {
7756                ()
7757            }
7758        }
7759        #[automatically_derived]
7760        #[doc(hidden)]
7761        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
7762            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7763                Self
7764            }
7765        }
7766        #[automatically_derived]
7767        impl alloy_sol_types::SolError for ValidatorNotExited {
7768            type Parameters<'a> = UnderlyingSolTuple<'a>;
7769            type Token<'a> = <Self::Parameters<
7770                'a,
7771            > as alloy_sol_types::SolType>::Token<'a>;
7772            const SIGNATURE: &'static str = "ValidatorNotExited()";
7773            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
7774            #[inline]
7775            fn new<'a>(
7776                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7777            ) -> Self {
7778                tuple.into()
7779            }
7780            #[inline]
7781            fn tokenize(&self) -> Self::Token<'_> {
7782                ()
7783            }
7784            #[inline]
7785            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7786                <Self::Parameters<
7787                    '_,
7788                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7789                    .map(Self::new)
7790            }
7791        }
7792    };
7793    #[derive(serde::Serialize, serde::Deserialize)]
7794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7795    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
7796```solidity
7797error ZeroAddress();
7798```*/
7799    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7800    #[derive(Clone)]
7801    pub struct ZeroAddress;
7802    #[allow(
7803        non_camel_case_types,
7804        non_snake_case,
7805        clippy::pub_underscore_fields,
7806        clippy::style
7807    )]
7808    const _: () = {
7809        use alloy::sol_types as alloy_sol_types;
7810        #[doc(hidden)]
7811        #[allow(dead_code)]
7812        type UnderlyingSolTuple<'a> = ();
7813        #[doc(hidden)]
7814        type UnderlyingRustTuple<'a> = ();
7815        #[cfg(test)]
7816        #[allow(dead_code, unreachable_patterns)]
7817        fn _type_assertion(
7818            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7819        ) {
7820            match _t {
7821                alloy_sol_types::private::AssertTypeEq::<
7822                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7823                >(_) => {}
7824            }
7825        }
7826        #[automatically_derived]
7827        #[doc(hidden)]
7828        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
7829            fn from(value: ZeroAddress) -> Self {
7830                ()
7831            }
7832        }
7833        #[automatically_derived]
7834        #[doc(hidden)]
7835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
7836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7837                Self
7838            }
7839        }
7840        #[automatically_derived]
7841        impl alloy_sol_types::SolError for ZeroAddress {
7842            type Parameters<'a> = UnderlyingSolTuple<'a>;
7843            type Token<'a> = <Self::Parameters<
7844                'a,
7845            > as alloy_sol_types::SolType>::Token<'a>;
7846            const SIGNATURE: &'static str = "ZeroAddress()";
7847            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
7848            #[inline]
7849            fn new<'a>(
7850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7851            ) -> Self {
7852                tuple.into()
7853            }
7854            #[inline]
7855            fn tokenize(&self) -> Self::Token<'_> {
7856                ()
7857            }
7858            #[inline]
7859            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7860                <Self::Parameters<
7861                    '_,
7862                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7863                    .map(Self::new)
7864            }
7865        }
7866    };
7867    #[derive(serde::Serialize, serde::Deserialize)]
7868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7869    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
7870```solidity
7871error ZeroAmount();
7872```*/
7873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7874    #[derive(Clone)]
7875    pub struct ZeroAmount;
7876    #[allow(
7877        non_camel_case_types,
7878        non_snake_case,
7879        clippy::pub_underscore_fields,
7880        clippy::style
7881    )]
7882    const _: () = {
7883        use alloy::sol_types as alloy_sol_types;
7884        #[doc(hidden)]
7885        #[allow(dead_code)]
7886        type UnderlyingSolTuple<'a> = ();
7887        #[doc(hidden)]
7888        type UnderlyingRustTuple<'a> = ();
7889        #[cfg(test)]
7890        #[allow(dead_code, unreachable_patterns)]
7891        fn _type_assertion(
7892            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7893        ) {
7894            match _t {
7895                alloy_sol_types::private::AssertTypeEq::<
7896                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7897                >(_) => {}
7898            }
7899        }
7900        #[automatically_derived]
7901        #[doc(hidden)]
7902        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
7903            fn from(value: ZeroAmount) -> Self {
7904                ()
7905            }
7906        }
7907        #[automatically_derived]
7908        #[doc(hidden)]
7909        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
7910            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7911                Self
7912            }
7913        }
7914        #[automatically_derived]
7915        impl alloy_sol_types::SolError for ZeroAmount {
7916            type Parameters<'a> = UnderlyingSolTuple<'a>;
7917            type Token<'a> = <Self::Parameters<
7918                'a,
7919            > as alloy_sol_types::SolType>::Token<'a>;
7920            const SIGNATURE: &'static str = "ZeroAmount()";
7921            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
7922            #[inline]
7923            fn new<'a>(
7924                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7925            ) -> Self {
7926                tuple.into()
7927            }
7928            #[inline]
7929            fn tokenize(&self) -> Self::Token<'_> {
7930                ()
7931            }
7932            #[inline]
7933            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7934                <Self::Parameters<
7935                    '_,
7936                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7937                    .map(Self::new)
7938            }
7939        }
7940    };
7941    #[derive(serde::Serialize, serde::Deserialize)]
7942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7943    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
7944```solidity
7945event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
7946```*/
7947    #[allow(
7948        non_camel_case_types,
7949        non_snake_case,
7950        clippy::pub_underscore_fields,
7951        clippy::style
7952    )]
7953    #[derive(Clone)]
7954    pub struct CommissionUpdated {
7955        #[allow(missing_docs)]
7956        pub validator: alloy::sol_types::private::Address,
7957        #[allow(missing_docs)]
7958        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
7959        #[allow(missing_docs)]
7960        pub oldCommission: u16,
7961        #[allow(missing_docs)]
7962        pub newCommission: u16,
7963    }
7964    #[allow(
7965        non_camel_case_types,
7966        non_snake_case,
7967        clippy::pub_underscore_fields,
7968        clippy::style
7969    )]
7970    const _: () = {
7971        use alloy::sol_types as alloy_sol_types;
7972        #[automatically_derived]
7973        impl alloy_sol_types::SolEvent for CommissionUpdated {
7974            type DataTuple<'a> = (
7975                alloy::sol_types::sol_data::Uint<256>,
7976                alloy::sol_types::sol_data::Uint<16>,
7977                alloy::sol_types::sol_data::Uint<16>,
7978            );
7979            type DataToken<'a> = <Self::DataTuple<
7980                'a,
7981            > as alloy_sol_types::SolType>::Token<'a>;
7982            type TopicList = (
7983                alloy_sol_types::sol_data::FixedBytes<32>,
7984                alloy::sol_types::sol_data::Address,
7985            );
7986            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
7987            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7988                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
7989                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
7990                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
7991            ]);
7992            const ANONYMOUS: bool = false;
7993            #[allow(unused_variables)]
7994            #[inline]
7995            fn new(
7996                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7997                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7998            ) -> Self {
7999                Self {
8000                    validator: topics.1,
8001                    timestamp: data.0,
8002                    oldCommission: data.1,
8003                    newCommission: data.2,
8004                }
8005            }
8006            #[inline]
8007            fn check_signature(
8008                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8009            ) -> alloy_sol_types::Result<()> {
8010                if topics.0 != Self::SIGNATURE_HASH {
8011                    return Err(
8012                        alloy_sol_types::Error::invalid_event_signature_hash(
8013                            Self::SIGNATURE,
8014                            topics.0,
8015                            Self::SIGNATURE_HASH,
8016                        ),
8017                    );
8018                }
8019                Ok(())
8020            }
8021            #[inline]
8022            fn tokenize_body(&self) -> Self::DataToken<'_> {
8023                (
8024                    <alloy::sol_types::sol_data::Uint<
8025                        256,
8026                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
8027                    <alloy::sol_types::sol_data::Uint<
8028                        16,
8029                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
8030                    <alloy::sol_types::sol_data::Uint<
8031                        16,
8032                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
8033                )
8034            }
8035            #[inline]
8036            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8037                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8038            }
8039            #[inline]
8040            fn encode_topics_raw(
8041                &self,
8042                out: &mut [alloy_sol_types::abi::token::WordToken],
8043            ) -> alloy_sol_types::Result<()> {
8044                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8045                    return Err(alloy_sol_types::Error::Overrun);
8046                }
8047                out[0usize] = alloy_sol_types::abi::token::WordToken(
8048                    Self::SIGNATURE_HASH,
8049                );
8050                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8051                    &self.validator,
8052                );
8053                Ok(())
8054            }
8055        }
8056        #[automatically_derived]
8057        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
8058            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8059                From::from(self)
8060            }
8061            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8062                From::from(&self)
8063            }
8064        }
8065        #[automatically_derived]
8066        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
8067            #[inline]
8068            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
8069                alloy_sol_types::SolEvent::encode_log_data(this)
8070            }
8071        }
8072    };
8073    #[derive(serde::Serialize, serde::Deserialize)]
8074    #[derive()]
8075    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
8076```solidity
8077event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
8078```*/
8079    #[allow(
8080        non_camel_case_types,
8081        non_snake_case,
8082        clippy::pub_underscore_fields,
8083        clippy::style
8084    )]
8085    #[derive(Clone)]
8086    pub struct ConsensusKeysUpdated {
8087        #[allow(missing_docs)]
8088        pub account: alloy::sol_types::private::Address,
8089        #[allow(missing_docs)]
8090        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8091        #[allow(missing_docs)]
8092        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8093    }
8094    #[allow(
8095        non_camel_case_types,
8096        non_snake_case,
8097        clippy::pub_underscore_fields,
8098        clippy::style
8099    )]
8100    const _: () = {
8101        use alloy::sol_types as alloy_sol_types;
8102        #[automatically_derived]
8103        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
8104            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
8105            type DataToken<'a> = <Self::DataTuple<
8106                'a,
8107            > as alloy_sol_types::SolType>::Token<'a>;
8108            type TopicList = (
8109                alloy_sol_types::sol_data::FixedBytes<32>,
8110                alloy::sol_types::sol_data::Address,
8111            );
8112            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
8113            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8114                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
8115                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
8116                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
8117            ]);
8118            const ANONYMOUS: bool = false;
8119            #[allow(unused_variables)]
8120            #[inline]
8121            fn new(
8122                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8123                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8124            ) -> Self {
8125                Self {
8126                    account: topics.1,
8127                    blsVK: data.0,
8128                    schnorrVK: data.1,
8129                }
8130            }
8131            #[inline]
8132            fn check_signature(
8133                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8134            ) -> alloy_sol_types::Result<()> {
8135                if topics.0 != Self::SIGNATURE_HASH {
8136                    return Err(
8137                        alloy_sol_types::Error::invalid_event_signature_hash(
8138                            Self::SIGNATURE,
8139                            topics.0,
8140                            Self::SIGNATURE_HASH,
8141                        ),
8142                    );
8143                }
8144                Ok(())
8145            }
8146            #[inline]
8147            fn tokenize_body(&self) -> Self::DataToken<'_> {
8148                (
8149                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8150                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8151                        &self.schnorrVK,
8152                    ),
8153                )
8154            }
8155            #[inline]
8156            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8157                (Self::SIGNATURE_HASH.into(), self.account.clone())
8158            }
8159            #[inline]
8160            fn encode_topics_raw(
8161                &self,
8162                out: &mut [alloy_sol_types::abi::token::WordToken],
8163            ) -> alloy_sol_types::Result<()> {
8164                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8165                    return Err(alloy_sol_types::Error::Overrun);
8166                }
8167                out[0usize] = alloy_sol_types::abi::token::WordToken(
8168                    Self::SIGNATURE_HASH,
8169                );
8170                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8171                    &self.account,
8172                );
8173                Ok(())
8174            }
8175        }
8176        #[automatically_derived]
8177        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8178            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8179                From::from(self)
8180            }
8181            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8182                From::from(&self)
8183            }
8184        }
8185        #[automatically_derived]
8186        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8187            #[inline]
8188            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8189                alloy_sol_types::SolEvent::encode_log_data(this)
8190            }
8191        }
8192    };
8193    #[derive(serde::Serialize, serde::Deserialize)]
8194    #[derive()]
8195    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8196```solidity
8197event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8198```*/
8199    #[allow(
8200        non_camel_case_types,
8201        non_snake_case,
8202        clippy::pub_underscore_fields,
8203        clippy::style
8204    )]
8205    #[derive(Clone)]
8206    pub struct ConsensusKeysUpdatedV2 {
8207        #[allow(missing_docs)]
8208        pub account: alloy::sol_types::private::Address,
8209        #[allow(missing_docs)]
8210        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8211        #[allow(missing_docs)]
8212        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8213        #[allow(missing_docs)]
8214        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8215        #[allow(missing_docs)]
8216        pub schnorrSig: alloy::sol_types::private::Bytes,
8217    }
8218    #[allow(
8219        non_camel_case_types,
8220        non_snake_case,
8221        clippy::pub_underscore_fields,
8222        clippy::style
8223    )]
8224    const _: () = {
8225        use alloy::sol_types as alloy_sol_types;
8226        #[automatically_derived]
8227        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8228            type DataTuple<'a> = (
8229                BN254::G2Point,
8230                EdOnBN254::EdOnBN254Point,
8231                BN254::G1Point,
8232                alloy::sol_types::sol_data::Bytes,
8233            );
8234            type DataToken<'a> = <Self::DataTuple<
8235                'a,
8236            > as alloy_sol_types::SolType>::Token<'a>;
8237            type TopicList = (
8238                alloy_sol_types::sol_data::FixedBytes<32>,
8239                alloy::sol_types::sol_data::Address,
8240            );
8241            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8242            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8243                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8244                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8245                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8246            ]);
8247            const ANONYMOUS: bool = false;
8248            #[allow(unused_variables)]
8249            #[inline]
8250            fn new(
8251                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8252                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8253            ) -> Self {
8254                Self {
8255                    account: topics.1,
8256                    blsVK: data.0,
8257                    schnorrVK: data.1,
8258                    blsSig: data.2,
8259                    schnorrSig: data.3,
8260                }
8261            }
8262            #[inline]
8263            fn check_signature(
8264                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8265            ) -> alloy_sol_types::Result<()> {
8266                if topics.0 != Self::SIGNATURE_HASH {
8267                    return Err(
8268                        alloy_sol_types::Error::invalid_event_signature_hash(
8269                            Self::SIGNATURE,
8270                            topics.0,
8271                            Self::SIGNATURE_HASH,
8272                        ),
8273                    );
8274                }
8275                Ok(())
8276            }
8277            #[inline]
8278            fn tokenize_body(&self) -> Self::DataToken<'_> {
8279                (
8280                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8281                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8282                        &self.schnorrVK,
8283                    ),
8284                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8285                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8286                        &self.schnorrSig,
8287                    ),
8288                )
8289            }
8290            #[inline]
8291            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8292                (Self::SIGNATURE_HASH.into(), self.account.clone())
8293            }
8294            #[inline]
8295            fn encode_topics_raw(
8296                &self,
8297                out: &mut [alloy_sol_types::abi::token::WordToken],
8298            ) -> alloy_sol_types::Result<()> {
8299                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8300                    return Err(alloy_sol_types::Error::Overrun);
8301                }
8302                out[0usize] = alloy_sol_types::abi::token::WordToken(
8303                    Self::SIGNATURE_HASH,
8304                );
8305                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8306                    &self.account,
8307                );
8308                Ok(())
8309            }
8310        }
8311        #[automatically_derived]
8312        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
8313            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8314                From::from(self)
8315            }
8316            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8317                From::from(&self)
8318            }
8319        }
8320        #[automatically_derived]
8321        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
8322            #[inline]
8323            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
8324                alloy_sol_types::SolEvent::encode_log_data(this)
8325            }
8326        }
8327    };
8328    #[derive(serde::Serialize, serde::Deserialize)]
8329    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8330    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
8331```solidity
8332event Delegated(address indexed delegator, address indexed validator, uint256 amount);
8333```*/
8334    #[allow(
8335        non_camel_case_types,
8336        non_snake_case,
8337        clippy::pub_underscore_fields,
8338        clippy::style
8339    )]
8340    #[derive(Clone)]
8341    pub struct Delegated {
8342        #[allow(missing_docs)]
8343        pub delegator: alloy::sol_types::private::Address,
8344        #[allow(missing_docs)]
8345        pub validator: alloy::sol_types::private::Address,
8346        #[allow(missing_docs)]
8347        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8348    }
8349    #[allow(
8350        non_camel_case_types,
8351        non_snake_case,
8352        clippy::pub_underscore_fields,
8353        clippy::style
8354    )]
8355    const _: () = {
8356        use alloy::sol_types as alloy_sol_types;
8357        #[automatically_derived]
8358        impl alloy_sol_types::SolEvent for Delegated {
8359            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8360            type DataToken<'a> = <Self::DataTuple<
8361                'a,
8362            > as alloy_sol_types::SolType>::Token<'a>;
8363            type TopicList = (
8364                alloy_sol_types::sol_data::FixedBytes<32>,
8365                alloy::sol_types::sol_data::Address,
8366                alloy::sol_types::sol_data::Address,
8367            );
8368            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
8369            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8370                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
8371                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
8372                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
8373            ]);
8374            const ANONYMOUS: bool = false;
8375            #[allow(unused_variables)]
8376            #[inline]
8377            fn new(
8378                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8379                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8380            ) -> Self {
8381                Self {
8382                    delegator: topics.1,
8383                    validator: topics.2,
8384                    amount: data.0,
8385                }
8386            }
8387            #[inline]
8388            fn check_signature(
8389                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8390            ) -> alloy_sol_types::Result<()> {
8391                if topics.0 != Self::SIGNATURE_HASH {
8392                    return Err(
8393                        alloy_sol_types::Error::invalid_event_signature_hash(
8394                            Self::SIGNATURE,
8395                            topics.0,
8396                            Self::SIGNATURE_HASH,
8397                        ),
8398                    );
8399                }
8400                Ok(())
8401            }
8402            #[inline]
8403            fn tokenize_body(&self) -> Self::DataToken<'_> {
8404                (
8405                    <alloy::sol_types::sol_data::Uint<
8406                        256,
8407                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8408                )
8409            }
8410            #[inline]
8411            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8412                (
8413                    Self::SIGNATURE_HASH.into(),
8414                    self.delegator.clone(),
8415                    self.validator.clone(),
8416                )
8417            }
8418            #[inline]
8419            fn encode_topics_raw(
8420                &self,
8421                out: &mut [alloy_sol_types::abi::token::WordToken],
8422            ) -> alloy_sol_types::Result<()> {
8423                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8424                    return Err(alloy_sol_types::Error::Overrun);
8425                }
8426                out[0usize] = alloy_sol_types::abi::token::WordToken(
8427                    Self::SIGNATURE_HASH,
8428                );
8429                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8430                    &self.delegator,
8431                );
8432                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8433                    &self.validator,
8434                );
8435                Ok(())
8436            }
8437        }
8438        #[automatically_derived]
8439        impl alloy_sol_types::private::IntoLogData for Delegated {
8440            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8441                From::from(self)
8442            }
8443            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8444                From::from(&self)
8445            }
8446        }
8447        #[automatically_derived]
8448        impl From<&Delegated> for alloy_sol_types::private::LogData {
8449            #[inline]
8450            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
8451                alloy_sol_types::SolEvent::encode_log_data(this)
8452            }
8453        }
8454    };
8455    #[derive(serde::Serialize, serde::Deserialize)]
8456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8457    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
8458```solidity
8459event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
8460```*/
8461    #[allow(
8462        non_camel_case_types,
8463        non_snake_case,
8464        clippy::pub_underscore_fields,
8465        clippy::style
8466    )]
8467    #[derive(Clone)]
8468    pub struct ExitEscrowPeriodUpdated {
8469        #[allow(missing_docs)]
8470        pub newExitEscrowPeriod: u64,
8471    }
8472    #[allow(
8473        non_camel_case_types,
8474        non_snake_case,
8475        clippy::pub_underscore_fields,
8476        clippy::style
8477    )]
8478    const _: () = {
8479        use alloy::sol_types as alloy_sol_types;
8480        #[automatically_derived]
8481        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
8482            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8483            type DataToken<'a> = <Self::DataTuple<
8484                'a,
8485            > as alloy_sol_types::SolType>::Token<'a>;
8486            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8487            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
8488            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8489                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
8490                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
8491                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
8492            ]);
8493            const ANONYMOUS: bool = false;
8494            #[allow(unused_variables)]
8495            #[inline]
8496            fn new(
8497                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8498                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8499            ) -> Self {
8500                Self {
8501                    newExitEscrowPeriod: data.0,
8502                }
8503            }
8504            #[inline]
8505            fn check_signature(
8506                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8507            ) -> alloy_sol_types::Result<()> {
8508                if topics.0 != Self::SIGNATURE_HASH {
8509                    return Err(
8510                        alloy_sol_types::Error::invalid_event_signature_hash(
8511                            Self::SIGNATURE,
8512                            topics.0,
8513                            Self::SIGNATURE_HASH,
8514                        ),
8515                    );
8516                }
8517                Ok(())
8518            }
8519            #[inline]
8520            fn tokenize_body(&self) -> Self::DataToken<'_> {
8521                (
8522                    <alloy::sol_types::sol_data::Uint<
8523                        64,
8524                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
8525                )
8526            }
8527            #[inline]
8528            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8529                (Self::SIGNATURE_HASH.into(),)
8530            }
8531            #[inline]
8532            fn encode_topics_raw(
8533                &self,
8534                out: &mut [alloy_sol_types::abi::token::WordToken],
8535            ) -> alloy_sol_types::Result<()> {
8536                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8537                    return Err(alloy_sol_types::Error::Overrun);
8538                }
8539                out[0usize] = alloy_sol_types::abi::token::WordToken(
8540                    Self::SIGNATURE_HASH,
8541                );
8542                Ok(())
8543            }
8544        }
8545        #[automatically_derived]
8546        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
8547            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8548                From::from(self)
8549            }
8550            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8551                From::from(&self)
8552            }
8553        }
8554        #[automatically_derived]
8555        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
8556            #[inline]
8557            fn from(
8558                this: &ExitEscrowPeriodUpdated,
8559            ) -> alloy_sol_types::private::LogData {
8560                alloy_sol_types::SolEvent::encode_log_data(this)
8561            }
8562        }
8563    };
8564    #[derive(serde::Serialize, serde::Deserialize)]
8565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8566    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
8567```solidity
8568event Initialized(uint64 version);
8569```*/
8570    #[allow(
8571        non_camel_case_types,
8572        non_snake_case,
8573        clippy::pub_underscore_fields,
8574        clippy::style
8575    )]
8576    #[derive(Clone)]
8577    pub struct Initialized {
8578        #[allow(missing_docs)]
8579        pub version: u64,
8580    }
8581    #[allow(
8582        non_camel_case_types,
8583        non_snake_case,
8584        clippy::pub_underscore_fields,
8585        clippy::style
8586    )]
8587    const _: () = {
8588        use alloy::sol_types as alloy_sol_types;
8589        #[automatically_derived]
8590        impl alloy_sol_types::SolEvent for Initialized {
8591            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8592            type DataToken<'a> = <Self::DataTuple<
8593                'a,
8594            > as alloy_sol_types::SolType>::Token<'a>;
8595            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8596            const SIGNATURE: &'static str = "Initialized(uint64)";
8597            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8598                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
8599                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
8600                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
8601            ]);
8602            const ANONYMOUS: bool = false;
8603            #[allow(unused_variables)]
8604            #[inline]
8605            fn new(
8606                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8607                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8608            ) -> Self {
8609                Self { version: data.0 }
8610            }
8611            #[inline]
8612            fn check_signature(
8613                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8614            ) -> alloy_sol_types::Result<()> {
8615                if topics.0 != Self::SIGNATURE_HASH {
8616                    return Err(
8617                        alloy_sol_types::Error::invalid_event_signature_hash(
8618                            Self::SIGNATURE,
8619                            topics.0,
8620                            Self::SIGNATURE_HASH,
8621                        ),
8622                    );
8623                }
8624                Ok(())
8625            }
8626            #[inline]
8627            fn tokenize_body(&self) -> Self::DataToken<'_> {
8628                (
8629                    <alloy::sol_types::sol_data::Uint<
8630                        64,
8631                    > as alloy_sol_types::SolType>::tokenize(&self.version),
8632                )
8633            }
8634            #[inline]
8635            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8636                (Self::SIGNATURE_HASH.into(),)
8637            }
8638            #[inline]
8639            fn encode_topics_raw(
8640                &self,
8641                out: &mut [alloy_sol_types::abi::token::WordToken],
8642            ) -> alloy_sol_types::Result<()> {
8643                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8644                    return Err(alloy_sol_types::Error::Overrun);
8645                }
8646                out[0usize] = alloy_sol_types::abi::token::WordToken(
8647                    Self::SIGNATURE_HASH,
8648                );
8649                Ok(())
8650            }
8651        }
8652        #[automatically_derived]
8653        impl alloy_sol_types::private::IntoLogData for Initialized {
8654            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8655                From::from(self)
8656            }
8657            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8658                From::from(&self)
8659            }
8660        }
8661        #[automatically_derived]
8662        impl From<&Initialized> for alloy_sol_types::private::LogData {
8663            #[inline]
8664            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
8665                alloy_sol_types::SolEvent::encode_log_data(this)
8666            }
8667        }
8668    };
8669    #[derive(serde::Serialize, serde::Deserialize)]
8670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8671    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
8672```solidity
8673event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
8674```*/
8675    #[allow(
8676        non_camel_case_types,
8677        non_snake_case,
8678        clippy::pub_underscore_fields,
8679        clippy::style
8680    )]
8681    #[derive(Clone)]
8682    pub struct MaxCommissionIncreaseUpdated {
8683        #[allow(missing_docs)]
8684        pub newMaxIncrease: u16,
8685    }
8686    #[allow(
8687        non_camel_case_types,
8688        non_snake_case,
8689        clippy::pub_underscore_fields,
8690        clippy::style
8691    )]
8692    const _: () = {
8693        use alloy::sol_types as alloy_sol_types;
8694        #[automatically_derived]
8695        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
8696            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
8697            type DataToken<'a> = <Self::DataTuple<
8698                'a,
8699            > as alloy_sol_types::SolType>::Token<'a>;
8700            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8701            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
8702            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8703                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
8704                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
8705                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
8706            ]);
8707            const ANONYMOUS: bool = false;
8708            #[allow(unused_variables)]
8709            #[inline]
8710            fn new(
8711                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8712                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8713            ) -> Self {
8714                Self { newMaxIncrease: data.0 }
8715            }
8716            #[inline]
8717            fn check_signature(
8718                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8719            ) -> alloy_sol_types::Result<()> {
8720                if topics.0 != Self::SIGNATURE_HASH {
8721                    return Err(
8722                        alloy_sol_types::Error::invalid_event_signature_hash(
8723                            Self::SIGNATURE,
8724                            topics.0,
8725                            Self::SIGNATURE_HASH,
8726                        ),
8727                    );
8728                }
8729                Ok(())
8730            }
8731            #[inline]
8732            fn tokenize_body(&self) -> Self::DataToken<'_> {
8733                (
8734                    <alloy::sol_types::sol_data::Uint<
8735                        16,
8736                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
8737                )
8738            }
8739            #[inline]
8740            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8741                (Self::SIGNATURE_HASH.into(),)
8742            }
8743            #[inline]
8744            fn encode_topics_raw(
8745                &self,
8746                out: &mut [alloy_sol_types::abi::token::WordToken],
8747            ) -> alloy_sol_types::Result<()> {
8748                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8749                    return Err(alloy_sol_types::Error::Overrun);
8750                }
8751                out[0usize] = alloy_sol_types::abi::token::WordToken(
8752                    Self::SIGNATURE_HASH,
8753                );
8754                Ok(())
8755            }
8756        }
8757        #[automatically_derived]
8758        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
8759            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8760                From::from(self)
8761            }
8762            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8763                From::from(&self)
8764            }
8765        }
8766        #[automatically_derived]
8767        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
8768            #[inline]
8769            fn from(
8770                this: &MaxCommissionIncreaseUpdated,
8771            ) -> alloy_sol_types::private::LogData {
8772                alloy_sol_types::SolEvent::encode_log_data(this)
8773            }
8774        }
8775    };
8776    #[derive(serde::Serialize, serde::Deserialize)]
8777    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8778    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
8779```solidity
8780event MetadataUriUpdated(address indexed validator, string metadataUri);
8781```*/
8782    #[allow(
8783        non_camel_case_types,
8784        non_snake_case,
8785        clippy::pub_underscore_fields,
8786        clippy::style
8787    )]
8788    #[derive(Clone)]
8789    pub struct MetadataUriUpdated {
8790        #[allow(missing_docs)]
8791        pub validator: alloy::sol_types::private::Address,
8792        #[allow(missing_docs)]
8793        pub metadataUri: alloy::sol_types::private::String,
8794    }
8795    #[allow(
8796        non_camel_case_types,
8797        non_snake_case,
8798        clippy::pub_underscore_fields,
8799        clippy::style
8800    )]
8801    const _: () = {
8802        use alloy::sol_types as alloy_sol_types;
8803        #[automatically_derived]
8804        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
8805            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
8806            type DataToken<'a> = <Self::DataTuple<
8807                'a,
8808            > as alloy_sol_types::SolType>::Token<'a>;
8809            type TopicList = (
8810                alloy_sol_types::sol_data::FixedBytes<32>,
8811                alloy::sol_types::sol_data::Address,
8812            );
8813            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
8814            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8815                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
8816                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
8817                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
8818            ]);
8819            const ANONYMOUS: bool = false;
8820            #[allow(unused_variables)]
8821            #[inline]
8822            fn new(
8823                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8824                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8825            ) -> Self {
8826                Self {
8827                    validator: topics.1,
8828                    metadataUri: data.0,
8829                }
8830            }
8831            #[inline]
8832            fn check_signature(
8833                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8834            ) -> alloy_sol_types::Result<()> {
8835                if topics.0 != Self::SIGNATURE_HASH {
8836                    return Err(
8837                        alloy_sol_types::Error::invalid_event_signature_hash(
8838                            Self::SIGNATURE,
8839                            topics.0,
8840                            Self::SIGNATURE_HASH,
8841                        ),
8842                    );
8843                }
8844                Ok(())
8845            }
8846            #[inline]
8847            fn tokenize_body(&self) -> Self::DataToken<'_> {
8848                (
8849                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8850                        &self.metadataUri,
8851                    ),
8852                )
8853            }
8854            #[inline]
8855            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8856                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8857            }
8858            #[inline]
8859            fn encode_topics_raw(
8860                &self,
8861                out: &mut [alloy_sol_types::abi::token::WordToken],
8862            ) -> alloy_sol_types::Result<()> {
8863                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8864                    return Err(alloy_sol_types::Error::Overrun);
8865                }
8866                out[0usize] = alloy_sol_types::abi::token::WordToken(
8867                    Self::SIGNATURE_HASH,
8868                );
8869                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8870                    &self.validator,
8871                );
8872                Ok(())
8873            }
8874        }
8875        #[automatically_derived]
8876        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
8877            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8878                From::from(self)
8879            }
8880            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8881                From::from(&self)
8882            }
8883        }
8884        #[automatically_derived]
8885        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
8886            #[inline]
8887            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
8888                alloy_sol_types::SolEvent::encode_log_data(this)
8889            }
8890        }
8891    };
8892    #[derive(serde::Serialize, serde::Deserialize)]
8893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8894    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
8895```solidity
8896event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
8897```*/
8898    #[allow(
8899        non_camel_case_types,
8900        non_snake_case,
8901        clippy::pub_underscore_fields,
8902        clippy::style
8903    )]
8904    #[derive(Clone)]
8905    pub struct MinCommissionUpdateIntervalUpdated {
8906        #[allow(missing_docs)]
8907        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
8908    }
8909    #[allow(
8910        non_camel_case_types,
8911        non_snake_case,
8912        clippy::pub_underscore_fields,
8913        clippy::style
8914    )]
8915    const _: () = {
8916        use alloy::sol_types as alloy_sol_types;
8917        #[automatically_derived]
8918        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
8919            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8920            type DataToken<'a> = <Self::DataTuple<
8921                'a,
8922            > as alloy_sol_types::SolType>::Token<'a>;
8923            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8924            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
8925            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8926                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
8927                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
8928                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
8929            ]);
8930            const ANONYMOUS: bool = false;
8931            #[allow(unused_variables)]
8932            #[inline]
8933            fn new(
8934                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8935                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8936            ) -> Self {
8937                Self { newInterval: data.0 }
8938            }
8939            #[inline]
8940            fn check_signature(
8941                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8942            ) -> alloy_sol_types::Result<()> {
8943                if topics.0 != Self::SIGNATURE_HASH {
8944                    return Err(
8945                        alloy_sol_types::Error::invalid_event_signature_hash(
8946                            Self::SIGNATURE,
8947                            topics.0,
8948                            Self::SIGNATURE_HASH,
8949                        ),
8950                    );
8951                }
8952                Ok(())
8953            }
8954            #[inline]
8955            fn tokenize_body(&self) -> Self::DataToken<'_> {
8956                (
8957                    <alloy::sol_types::sol_data::Uint<
8958                        256,
8959                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
8960                )
8961            }
8962            #[inline]
8963            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8964                (Self::SIGNATURE_HASH.into(),)
8965            }
8966            #[inline]
8967            fn encode_topics_raw(
8968                &self,
8969                out: &mut [alloy_sol_types::abi::token::WordToken],
8970            ) -> alloy_sol_types::Result<()> {
8971                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8972                    return Err(alloy_sol_types::Error::Overrun);
8973                }
8974                out[0usize] = alloy_sol_types::abi::token::WordToken(
8975                    Self::SIGNATURE_HASH,
8976                );
8977                Ok(())
8978            }
8979        }
8980        #[automatically_derived]
8981        impl alloy_sol_types::private::IntoLogData
8982        for MinCommissionUpdateIntervalUpdated {
8983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8984                From::from(self)
8985            }
8986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8987                From::from(&self)
8988            }
8989        }
8990        #[automatically_derived]
8991        impl From<&MinCommissionUpdateIntervalUpdated>
8992        for alloy_sol_types::private::LogData {
8993            #[inline]
8994            fn from(
8995                this: &MinCommissionUpdateIntervalUpdated,
8996            ) -> alloy_sol_types::private::LogData {
8997                alloy_sol_types::SolEvent::encode_log_data(this)
8998            }
8999        }
9000    };
9001    #[derive(serde::Serialize, serde::Deserialize)]
9002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9003    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
9004```solidity
9005event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
9006```*/
9007    #[allow(
9008        non_camel_case_types,
9009        non_snake_case,
9010        clippy::pub_underscore_fields,
9011        clippy::style
9012    )]
9013    #[derive(Clone)]
9014    pub struct MinDelegateAmountUpdated {
9015        #[allow(missing_docs)]
9016        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
9017    }
9018    #[allow(
9019        non_camel_case_types,
9020        non_snake_case,
9021        clippy::pub_underscore_fields,
9022        clippy::style
9023    )]
9024    const _: () = {
9025        use alloy::sol_types as alloy_sol_types;
9026        #[automatically_derived]
9027        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
9028            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9029            type DataToken<'a> = <Self::DataTuple<
9030                'a,
9031            > as alloy_sol_types::SolType>::Token<'a>;
9032            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9033            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
9034            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9035                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
9036                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
9037                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
9038            ]);
9039            const ANONYMOUS: bool = false;
9040            #[allow(unused_variables)]
9041            #[inline]
9042            fn new(
9043                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9044                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9045            ) -> Self {
9046                Self {
9047                    newMinDelegateAmount: data.0,
9048                }
9049            }
9050            #[inline]
9051            fn check_signature(
9052                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9053            ) -> alloy_sol_types::Result<()> {
9054                if topics.0 != Self::SIGNATURE_HASH {
9055                    return Err(
9056                        alloy_sol_types::Error::invalid_event_signature_hash(
9057                            Self::SIGNATURE,
9058                            topics.0,
9059                            Self::SIGNATURE_HASH,
9060                        ),
9061                    );
9062                }
9063                Ok(())
9064            }
9065            #[inline]
9066            fn tokenize_body(&self) -> Self::DataToken<'_> {
9067                (
9068                    <alloy::sol_types::sol_data::Uint<
9069                        256,
9070                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
9071                )
9072            }
9073            #[inline]
9074            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9075                (Self::SIGNATURE_HASH.into(),)
9076            }
9077            #[inline]
9078            fn encode_topics_raw(
9079                &self,
9080                out: &mut [alloy_sol_types::abi::token::WordToken],
9081            ) -> alloy_sol_types::Result<()> {
9082                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9083                    return Err(alloy_sol_types::Error::Overrun);
9084                }
9085                out[0usize] = alloy_sol_types::abi::token::WordToken(
9086                    Self::SIGNATURE_HASH,
9087                );
9088                Ok(())
9089            }
9090        }
9091        #[automatically_derived]
9092        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
9093            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9094                From::from(self)
9095            }
9096            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9097                From::from(&self)
9098            }
9099        }
9100        #[automatically_derived]
9101        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
9102            #[inline]
9103            fn from(
9104                this: &MinDelegateAmountUpdated,
9105            ) -> alloy_sol_types::private::LogData {
9106                alloy_sol_types::SolEvent::encode_log_data(this)
9107            }
9108        }
9109    };
9110    #[derive(serde::Serialize, serde::Deserialize)]
9111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9112    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
9113```solidity
9114event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
9115```*/
9116    #[allow(
9117        non_camel_case_types,
9118        non_snake_case,
9119        clippy::pub_underscore_fields,
9120        clippy::style
9121    )]
9122    #[derive(Clone)]
9123    pub struct OwnershipTransferred {
9124        #[allow(missing_docs)]
9125        pub previousOwner: alloy::sol_types::private::Address,
9126        #[allow(missing_docs)]
9127        pub newOwner: alloy::sol_types::private::Address,
9128    }
9129    #[allow(
9130        non_camel_case_types,
9131        non_snake_case,
9132        clippy::pub_underscore_fields,
9133        clippy::style
9134    )]
9135    const _: () = {
9136        use alloy::sol_types as alloy_sol_types;
9137        #[automatically_derived]
9138        impl alloy_sol_types::SolEvent for OwnershipTransferred {
9139            type DataTuple<'a> = ();
9140            type DataToken<'a> = <Self::DataTuple<
9141                'a,
9142            > as alloy_sol_types::SolType>::Token<'a>;
9143            type TopicList = (
9144                alloy_sol_types::sol_data::FixedBytes<32>,
9145                alloy::sol_types::sol_data::Address,
9146                alloy::sol_types::sol_data::Address,
9147            );
9148            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
9149            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9150                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9151                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9152                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9153            ]);
9154            const ANONYMOUS: bool = false;
9155            #[allow(unused_variables)]
9156            #[inline]
9157            fn new(
9158                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9159                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9160            ) -> Self {
9161                Self {
9162                    previousOwner: topics.1,
9163                    newOwner: topics.2,
9164                }
9165            }
9166            #[inline]
9167            fn check_signature(
9168                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9169            ) -> alloy_sol_types::Result<()> {
9170                if topics.0 != Self::SIGNATURE_HASH {
9171                    return Err(
9172                        alloy_sol_types::Error::invalid_event_signature_hash(
9173                            Self::SIGNATURE,
9174                            topics.0,
9175                            Self::SIGNATURE_HASH,
9176                        ),
9177                    );
9178                }
9179                Ok(())
9180            }
9181            #[inline]
9182            fn tokenize_body(&self) -> Self::DataToken<'_> {
9183                ()
9184            }
9185            #[inline]
9186            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9187                (
9188                    Self::SIGNATURE_HASH.into(),
9189                    self.previousOwner.clone(),
9190                    self.newOwner.clone(),
9191                )
9192            }
9193            #[inline]
9194            fn encode_topics_raw(
9195                &self,
9196                out: &mut [alloy_sol_types::abi::token::WordToken],
9197            ) -> alloy_sol_types::Result<()> {
9198                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9199                    return Err(alloy_sol_types::Error::Overrun);
9200                }
9201                out[0usize] = alloy_sol_types::abi::token::WordToken(
9202                    Self::SIGNATURE_HASH,
9203                );
9204                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9205                    &self.previousOwner,
9206                );
9207                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9208                    &self.newOwner,
9209                );
9210                Ok(())
9211            }
9212        }
9213        #[automatically_derived]
9214        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9215            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9216                From::from(self)
9217            }
9218            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9219                From::from(&self)
9220            }
9221        }
9222        #[automatically_derived]
9223        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9224            #[inline]
9225            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9226                alloy_sol_types::SolEvent::encode_log_data(this)
9227            }
9228        }
9229    };
9230    #[derive(serde::Serialize, serde::Deserialize)]
9231    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9232    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
9233```solidity
9234event Paused(address account);
9235```*/
9236    #[allow(
9237        non_camel_case_types,
9238        non_snake_case,
9239        clippy::pub_underscore_fields,
9240        clippy::style
9241    )]
9242    #[derive(Clone)]
9243    pub struct Paused {
9244        #[allow(missing_docs)]
9245        pub account: alloy::sol_types::private::Address,
9246    }
9247    #[allow(
9248        non_camel_case_types,
9249        non_snake_case,
9250        clippy::pub_underscore_fields,
9251        clippy::style
9252    )]
9253    const _: () = {
9254        use alloy::sol_types as alloy_sol_types;
9255        #[automatically_derived]
9256        impl alloy_sol_types::SolEvent for Paused {
9257            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9258            type DataToken<'a> = <Self::DataTuple<
9259                'a,
9260            > as alloy_sol_types::SolType>::Token<'a>;
9261            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9262            const SIGNATURE: &'static str = "Paused(address)";
9263            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9264                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9265                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9266                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9267            ]);
9268            const ANONYMOUS: bool = false;
9269            #[allow(unused_variables)]
9270            #[inline]
9271            fn new(
9272                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9273                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9274            ) -> Self {
9275                Self { account: data.0 }
9276            }
9277            #[inline]
9278            fn check_signature(
9279                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9280            ) -> alloy_sol_types::Result<()> {
9281                if topics.0 != Self::SIGNATURE_HASH {
9282                    return Err(
9283                        alloy_sol_types::Error::invalid_event_signature_hash(
9284                            Self::SIGNATURE,
9285                            topics.0,
9286                            Self::SIGNATURE_HASH,
9287                        ),
9288                    );
9289                }
9290                Ok(())
9291            }
9292            #[inline]
9293            fn tokenize_body(&self) -> Self::DataToken<'_> {
9294                (
9295                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9296                        &self.account,
9297                    ),
9298                )
9299            }
9300            #[inline]
9301            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9302                (Self::SIGNATURE_HASH.into(),)
9303            }
9304            #[inline]
9305            fn encode_topics_raw(
9306                &self,
9307                out: &mut [alloy_sol_types::abi::token::WordToken],
9308            ) -> alloy_sol_types::Result<()> {
9309                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9310                    return Err(alloy_sol_types::Error::Overrun);
9311                }
9312                out[0usize] = alloy_sol_types::abi::token::WordToken(
9313                    Self::SIGNATURE_HASH,
9314                );
9315                Ok(())
9316            }
9317        }
9318        #[automatically_derived]
9319        impl alloy_sol_types::private::IntoLogData for Paused {
9320            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9321                From::from(self)
9322            }
9323            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9324                From::from(&self)
9325            }
9326        }
9327        #[automatically_derived]
9328        impl From<&Paused> for alloy_sol_types::private::LogData {
9329            #[inline]
9330            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
9331                alloy_sol_types::SolEvent::encode_log_data(this)
9332            }
9333        }
9334    };
9335    #[derive(serde::Serialize, serde::Deserialize)]
9336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9337    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
9338```solidity
9339event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
9340```*/
9341    #[allow(
9342        non_camel_case_types,
9343        non_snake_case,
9344        clippy::pub_underscore_fields,
9345        clippy::style
9346    )]
9347    #[derive(Clone)]
9348    pub struct RoleAdminChanged {
9349        #[allow(missing_docs)]
9350        pub role: alloy::sol_types::private::FixedBytes<32>,
9351        #[allow(missing_docs)]
9352        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
9353        #[allow(missing_docs)]
9354        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
9355    }
9356    #[allow(
9357        non_camel_case_types,
9358        non_snake_case,
9359        clippy::pub_underscore_fields,
9360        clippy::style
9361    )]
9362    const _: () = {
9363        use alloy::sol_types as alloy_sol_types;
9364        #[automatically_derived]
9365        impl alloy_sol_types::SolEvent for RoleAdminChanged {
9366            type DataTuple<'a> = ();
9367            type DataToken<'a> = <Self::DataTuple<
9368                'a,
9369            > as alloy_sol_types::SolType>::Token<'a>;
9370            type TopicList = (
9371                alloy_sol_types::sol_data::FixedBytes<32>,
9372                alloy::sol_types::sol_data::FixedBytes<32>,
9373                alloy::sol_types::sol_data::FixedBytes<32>,
9374                alloy::sol_types::sol_data::FixedBytes<32>,
9375            );
9376            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
9377            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9378                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9379                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9380                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9381            ]);
9382            const ANONYMOUS: bool = false;
9383            #[allow(unused_variables)]
9384            #[inline]
9385            fn new(
9386                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9387                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9388            ) -> Self {
9389                Self {
9390                    role: topics.1,
9391                    previousAdminRole: topics.2,
9392                    newAdminRole: topics.3,
9393                }
9394            }
9395            #[inline]
9396            fn check_signature(
9397                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9398            ) -> alloy_sol_types::Result<()> {
9399                if topics.0 != Self::SIGNATURE_HASH {
9400                    return Err(
9401                        alloy_sol_types::Error::invalid_event_signature_hash(
9402                            Self::SIGNATURE,
9403                            topics.0,
9404                            Self::SIGNATURE_HASH,
9405                        ),
9406                    );
9407                }
9408                Ok(())
9409            }
9410            #[inline]
9411            fn tokenize_body(&self) -> Self::DataToken<'_> {
9412                ()
9413            }
9414            #[inline]
9415            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9416                (
9417                    Self::SIGNATURE_HASH.into(),
9418                    self.role.clone(),
9419                    self.previousAdminRole.clone(),
9420                    self.newAdminRole.clone(),
9421                )
9422            }
9423            #[inline]
9424            fn encode_topics_raw(
9425                &self,
9426                out: &mut [alloy_sol_types::abi::token::WordToken],
9427            ) -> alloy_sol_types::Result<()> {
9428                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9429                    return Err(alloy_sol_types::Error::Overrun);
9430                }
9431                out[0usize] = alloy_sol_types::abi::token::WordToken(
9432                    Self::SIGNATURE_HASH,
9433                );
9434                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9435                    32,
9436                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9437                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
9438                    32,
9439                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
9440                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
9441                    32,
9442                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
9443                Ok(())
9444            }
9445        }
9446        #[automatically_derived]
9447        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
9448            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9449                From::from(self)
9450            }
9451            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9452                From::from(&self)
9453            }
9454        }
9455        #[automatically_derived]
9456        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
9457            #[inline]
9458            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
9459                alloy_sol_types::SolEvent::encode_log_data(this)
9460            }
9461        }
9462    };
9463    #[derive(serde::Serialize, serde::Deserialize)]
9464    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9465    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
9466```solidity
9467event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
9468```*/
9469    #[allow(
9470        non_camel_case_types,
9471        non_snake_case,
9472        clippy::pub_underscore_fields,
9473        clippy::style
9474    )]
9475    #[derive(Clone)]
9476    pub struct RoleGranted {
9477        #[allow(missing_docs)]
9478        pub role: alloy::sol_types::private::FixedBytes<32>,
9479        #[allow(missing_docs)]
9480        pub account: alloy::sol_types::private::Address,
9481        #[allow(missing_docs)]
9482        pub sender: alloy::sol_types::private::Address,
9483    }
9484    #[allow(
9485        non_camel_case_types,
9486        non_snake_case,
9487        clippy::pub_underscore_fields,
9488        clippy::style
9489    )]
9490    const _: () = {
9491        use alloy::sol_types as alloy_sol_types;
9492        #[automatically_derived]
9493        impl alloy_sol_types::SolEvent for RoleGranted {
9494            type DataTuple<'a> = ();
9495            type DataToken<'a> = <Self::DataTuple<
9496                'a,
9497            > as alloy_sol_types::SolType>::Token<'a>;
9498            type TopicList = (
9499                alloy_sol_types::sol_data::FixedBytes<32>,
9500                alloy::sol_types::sol_data::FixedBytes<32>,
9501                alloy::sol_types::sol_data::Address,
9502                alloy::sol_types::sol_data::Address,
9503            );
9504            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
9505            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9506                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9507                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9508                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9509            ]);
9510            const ANONYMOUS: bool = false;
9511            #[allow(unused_variables)]
9512            #[inline]
9513            fn new(
9514                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9515                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9516            ) -> Self {
9517                Self {
9518                    role: topics.1,
9519                    account: topics.2,
9520                    sender: topics.3,
9521                }
9522            }
9523            #[inline]
9524            fn check_signature(
9525                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9526            ) -> alloy_sol_types::Result<()> {
9527                if topics.0 != Self::SIGNATURE_HASH {
9528                    return Err(
9529                        alloy_sol_types::Error::invalid_event_signature_hash(
9530                            Self::SIGNATURE,
9531                            topics.0,
9532                            Self::SIGNATURE_HASH,
9533                        ),
9534                    );
9535                }
9536                Ok(())
9537            }
9538            #[inline]
9539            fn tokenize_body(&self) -> Self::DataToken<'_> {
9540                ()
9541            }
9542            #[inline]
9543            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9544                (
9545                    Self::SIGNATURE_HASH.into(),
9546                    self.role.clone(),
9547                    self.account.clone(),
9548                    self.sender.clone(),
9549                )
9550            }
9551            #[inline]
9552            fn encode_topics_raw(
9553                &self,
9554                out: &mut [alloy_sol_types::abi::token::WordToken],
9555            ) -> alloy_sol_types::Result<()> {
9556                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9557                    return Err(alloy_sol_types::Error::Overrun);
9558                }
9559                out[0usize] = alloy_sol_types::abi::token::WordToken(
9560                    Self::SIGNATURE_HASH,
9561                );
9562                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9563                    32,
9564                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9565                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9566                    &self.account,
9567                );
9568                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9569                    &self.sender,
9570                );
9571                Ok(())
9572            }
9573        }
9574        #[automatically_derived]
9575        impl alloy_sol_types::private::IntoLogData for RoleGranted {
9576            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9577                From::from(self)
9578            }
9579            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9580                From::from(&self)
9581            }
9582        }
9583        #[automatically_derived]
9584        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
9585            #[inline]
9586            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
9587                alloy_sol_types::SolEvent::encode_log_data(this)
9588            }
9589        }
9590    };
9591    #[derive(serde::Serialize, serde::Deserialize)]
9592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9593    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
9594```solidity
9595event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
9596```*/
9597    #[allow(
9598        non_camel_case_types,
9599        non_snake_case,
9600        clippy::pub_underscore_fields,
9601        clippy::style
9602    )]
9603    #[derive(Clone)]
9604    pub struct RoleRevoked {
9605        #[allow(missing_docs)]
9606        pub role: alloy::sol_types::private::FixedBytes<32>,
9607        #[allow(missing_docs)]
9608        pub account: alloy::sol_types::private::Address,
9609        #[allow(missing_docs)]
9610        pub sender: alloy::sol_types::private::Address,
9611    }
9612    #[allow(
9613        non_camel_case_types,
9614        non_snake_case,
9615        clippy::pub_underscore_fields,
9616        clippy::style
9617    )]
9618    const _: () = {
9619        use alloy::sol_types as alloy_sol_types;
9620        #[automatically_derived]
9621        impl alloy_sol_types::SolEvent for RoleRevoked {
9622            type DataTuple<'a> = ();
9623            type DataToken<'a> = <Self::DataTuple<
9624                'a,
9625            > as alloy_sol_types::SolType>::Token<'a>;
9626            type TopicList = (
9627                alloy_sol_types::sol_data::FixedBytes<32>,
9628                alloy::sol_types::sol_data::FixedBytes<32>,
9629                alloy::sol_types::sol_data::Address,
9630                alloy::sol_types::sol_data::Address,
9631            );
9632            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
9633            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9634                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9635                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9636                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9637            ]);
9638            const ANONYMOUS: bool = false;
9639            #[allow(unused_variables)]
9640            #[inline]
9641            fn new(
9642                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9643                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9644            ) -> Self {
9645                Self {
9646                    role: topics.1,
9647                    account: topics.2,
9648                    sender: topics.3,
9649                }
9650            }
9651            #[inline]
9652            fn check_signature(
9653                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9654            ) -> alloy_sol_types::Result<()> {
9655                if topics.0 != Self::SIGNATURE_HASH {
9656                    return Err(
9657                        alloy_sol_types::Error::invalid_event_signature_hash(
9658                            Self::SIGNATURE,
9659                            topics.0,
9660                            Self::SIGNATURE_HASH,
9661                        ),
9662                    );
9663                }
9664                Ok(())
9665            }
9666            #[inline]
9667            fn tokenize_body(&self) -> Self::DataToken<'_> {
9668                ()
9669            }
9670            #[inline]
9671            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9672                (
9673                    Self::SIGNATURE_HASH.into(),
9674                    self.role.clone(),
9675                    self.account.clone(),
9676                    self.sender.clone(),
9677                )
9678            }
9679            #[inline]
9680            fn encode_topics_raw(
9681                &self,
9682                out: &mut [alloy_sol_types::abi::token::WordToken],
9683            ) -> alloy_sol_types::Result<()> {
9684                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9685                    return Err(alloy_sol_types::Error::Overrun);
9686                }
9687                out[0usize] = alloy_sol_types::abi::token::WordToken(
9688                    Self::SIGNATURE_HASH,
9689                );
9690                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9691                    32,
9692                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9693                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9694                    &self.account,
9695                );
9696                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9697                    &self.sender,
9698                );
9699                Ok(())
9700            }
9701        }
9702        #[automatically_derived]
9703        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
9704            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9705                From::from(self)
9706            }
9707            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9708                From::from(&self)
9709            }
9710        }
9711        #[automatically_derived]
9712        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
9713            #[inline]
9714            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
9715                alloy_sol_types::SolEvent::encode_log_data(this)
9716            }
9717        }
9718    };
9719    #[derive(serde::Serialize, serde::Deserialize)]
9720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9721    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
9722```solidity
9723event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
9724```*/
9725    #[allow(
9726        non_camel_case_types,
9727        non_snake_case,
9728        clippy::pub_underscore_fields,
9729        clippy::style
9730    )]
9731    #[derive(Clone)]
9732    pub struct Undelegated {
9733        #[allow(missing_docs)]
9734        pub delegator: alloy::sol_types::private::Address,
9735        #[allow(missing_docs)]
9736        pub validator: alloy::sol_types::private::Address,
9737        #[allow(missing_docs)]
9738        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9739    }
9740    #[allow(
9741        non_camel_case_types,
9742        non_snake_case,
9743        clippy::pub_underscore_fields,
9744        clippy::style
9745    )]
9746    const _: () = {
9747        use alloy::sol_types as alloy_sol_types;
9748        #[automatically_derived]
9749        impl alloy_sol_types::SolEvent for Undelegated {
9750            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9751            type DataToken<'a> = <Self::DataTuple<
9752                'a,
9753            > as alloy_sol_types::SolType>::Token<'a>;
9754            type TopicList = (
9755                alloy_sol_types::sol_data::FixedBytes<32>,
9756                alloy::sol_types::sol_data::Address,
9757                alloy::sol_types::sol_data::Address,
9758            );
9759            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
9760            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9761                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
9762                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
9763                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
9764            ]);
9765            const ANONYMOUS: bool = false;
9766            #[allow(unused_variables)]
9767            #[inline]
9768            fn new(
9769                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9770                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9771            ) -> Self {
9772                Self {
9773                    delegator: topics.1,
9774                    validator: topics.2,
9775                    amount: data.0,
9776                }
9777            }
9778            #[inline]
9779            fn check_signature(
9780                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9781            ) -> alloy_sol_types::Result<()> {
9782                if topics.0 != Self::SIGNATURE_HASH {
9783                    return Err(
9784                        alloy_sol_types::Error::invalid_event_signature_hash(
9785                            Self::SIGNATURE,
9786                            topics.0,
9787                            Self::SIGNATURE_HASH,
9788                        ),
9789                    );
9790                }
9791                Ok(())
9792            }
9793            #[inline]
9794            fn tokenize_body(&self) -> Self::DataToken<'_> {
9795                (
9796                    <alloy::sol_types::sol_data::Uint<
9797                        256,
9798                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9799                )
9800            }
9801            #[inline]
9802            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9803                (
9804                    Self::SIGNATURE_HASH.into(),
9805                    self.delegator.clone(),
9806                    self.validator.clone(),
9807                )
9808            }
9809            #[inline]
9810            fn encode_topics_raw(
9811                &self,
9812                out: &mut [alloy_sol_types::abi::token::WordToken],
9813            ) -> alloy_sol_types::Result<()> {
9814                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9815                    return Err(alloy_sol_types::Error::Overrun);
9816                }
9817                out[0usize] = alloy_sol_types::abi::token::WordToken(
9818                    Self::SIGNATURE_HASH,
9819                );
9820                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9821                    &self.delegator,
9822                );
9823                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9824                    &self.validator,
9825                );
9826                Ok(())
9827            }
9828        }
9829        #[automatically_derived]
9830        impl alloy_sol_types::private::IntoLogData for Undelegated {
9831            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9832                From::from(self)
9833            }
9834            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9835                From::from(&self)
9836            }
9837        }
9838        #[automatically_derived]
9839        impl From<&Undelegated> for alloy_sol_types::private::LogData {
9840            #[inline]
9841            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
9842                alloy_sol_types::SolEvent::encode_log_data(this)
9843            }
9844        }
9845    };
9846    #[derive(serde::Serialize, serde::Deserialize)]
9847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9848    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
9849```solidity
9850event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
9851```*/
9852    #[allow(
9853        non_camel_case_types,
9854        non_snake_case,
9855        clippy::pub_underscore_fields,
9856        clippy::style
9857    )]
9858    #[derive(Clone)]
9859    pub struct UndelegatedV2 {
9860        #[allow(missing_docs)]
9861        pub delegator: alloy::sol_types::private::Address,
9862        #[allow(missing_docs)]
9863        pub validator: alloy::sol_types::private::Address,
9864        #[allow(missing_docs)]
9865        pub undelegationId: u64,
9866        #[allow(missing_docs)]
9867        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9868        #[allow(missing_docs)]
9869        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9870    }
9871    #[allow(
9872        non_camel_case_types,
9873        non_snake_case,
9874        clippy::pub_underscore_fields,
9875        clippy::style
9876    )]
9877    const _: () = {
9878        use alloy::sol_types as alloy_sol_types;
9879        #[automatically_derived]
9880        impl alloy_sol_types::SolEvent for UndelegatedV2 {
9881            type DataTuple<'a> = (
9882                alloy::sol_types::sol_data::Uint<256>,
9883                alloy::sol_types::sol_data::Uint<256>,
9884            );
9885            type DataToken<'a> = <Self::DataTuple<
9886                'a,
9887            > as alloy_sol_types::SolType>::Token<'a>;
9888            type TopicList = (
9889                alloy_sol_types::sol_data::FixedBytes<32>,
9890                alloy::sol_types::sol_data::Address,
9891                alloy::sol_types::sol_data::Address,
9892                alloy::sol_types::sol_data::Uint<64>,
9893            );
9894            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
9895            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9896                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
9897                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
9898                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
9899            ]);
9900            const ANONYMOUS: bool = false;
9901            #[allow(unused_variables)]
9902            #[inline]
9903            fn new(
9904                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9905                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9906            ) -> Self {
9907                Self {
9908                    delegator: topics.1,
9909                    validator: topics.2,
9910                    undelegationId: topics.3,
9911                    amount: data.0,
9912                    unlocksAt: data.1,
9913                }
9914            }
9915            #[inline]
9916            fn check_signature(
9917                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9918            ) -> alloy_sol_types::Result<()> {
9919                if topics.0 != Self::SIGNATURE_HASH {
9920                    return Err(
9921                        alloy_sol_types::Error::invalid_event_signature_hash(
9922                            Self::SIGNATURE,
9923                            topics.0,
9924                            Self::SIGNATURE_HASH,
9925                        ),
9926                    );
9927                }
9928                Ok(())
9929            }
9930            #[inline]
9931            fn tokenize_body(&self) -> Self::DataToken<'_> {
9932                (
9933                    <alloy::sol_types::sol_data::Uint<
9934                        256,
9935                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9936                    <alloy::sol_types::sol_data::Uint<
9937                        256,
9938                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
9939                )
9940            }
9941            #[inline]
9942            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9943                (
9944                    Self::SIGNATURE_HASH.into(),
9945                    self.delegator.clone(),
9946                    self.validator.clone(),
9947                    self.undelegationId.clone(),
9948                )
9949            }
9950            #[inline]
9951            fn encode_topics_raw(
9952                &self,
9953                out: &mut [alloy_sol_types::abi::token::WordToken],
9954            ) -> alloy_sol_types::Result<()> {
9955                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9956                    return Err(alloy_sol_types::Error::Overrun);
9957                }
9958                out[0usize] = alloy_sol_types::abi::token::WordToken(
9959                    Self::SIGNATURE_HASH,
9960                );
9961                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9962                    &self.delegator,
9963                );
9964                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9965                    &self.validator,
9966                );
9967                out[3usize] = <alloy::sol_types::sol_data::Uint<
9968                    64,
9969                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
9970                Ok(())
9971            }
9972        }
9973        #[automatically_derived]
9974        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
9975            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9976                From::from(self)
9977            }
9978            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9979                From::from(&self)
9980            }
9981        }
9982        #[automatically_derived]
9983        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
9984            #[inline]
9985            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
9986                alloy_sol_types::SolEvent::encode_log_data(this)
9987            }
9988        }
9989    };
9990    #[derive(serde::Serialize, serde::Deserialize)]
9991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9992    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
9993```solidity
9994event Unpaused(address account);
9995```*/
9996    #[allow(
9997        non_camel_case_types,
9998        non_snake_case,
9999        clippy::pub_underscore_fields,
10000        clippy::style
10001    )]
10002    #[derive(Clone)]
10003    pub struct Unpaused {
10004        #[allow(missing_docs)]
10005        pub account: alloy::sol_types::private::Address,
10006    }
10007    #[allow(
10008        non_camel_case_types,
10009        non_snake_case,
10010        clippy::pub_underscore_fields,
10011        clippy::style
10012    )]
10013    const _: () = {
10014        use alloy::sol_types as alloy_sol_types;
10015        #[automatically_derived]
10016        impl alloy_sol_types::SolEvent for Unpaused {
10017            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10018            type DataToken<'a> = <Self::DataTuple<
10019                'a,
10020            > as alloy_sol_types::SolType>::Token<'a>;
10021            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10022            const SIGNATURE: &'static str = "Unpaused(address)";
10023            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10024                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10025                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10026                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10027            ]);
10028            const ANONYMOUS: bool = false;
10029            #[allow(unused_variables)]
10030            #[inline]
10031            fn new(
10032                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10033                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10034            ) -> Self {
10035                Self { account: data.0 }
10036            }
10037            #[inline]
10038            fn check_signature(
10039                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10040            ) -> alloy_sol_types::Result<()> {
10041                if topics.0 != Self::SIGNATURE_HASH {
10042                    return Err(
10043                        alloy_sol_types::Error::invalid_event_signature_hash(
10044                            Self::SIGNATURE,
10045                            topics.0,
10046                            Self::SIGNATURE_HASH,
10047                        ),
10048                    );
10049                }
10050                Ok(())
10051            }
10052            #[inline]
10053            fn tokenize_body(&self) -> Self::DataToken<'_> {
10054                (
10055                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10056                        &self.account,
10057                    ),
10058                )
10059            }
10060            #[inline]
10061            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10062                (Self::SIGNATURE_HASH.into(),)
10063            }
10064            #[inline]
10065            fn encode_topics_raw(
10066                &self,
10067                out: &mut [alloy_sol_types::abi::token::WordToken],
10068            ) -> alloy_sol_types::Result<()> {
10069                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10070                    return Err(alloy_sol_types::Error::Overrun);
10071                }
10072                out[0usize] = alloy_sol_types::abi::token::WordToken(
10073                    Self::SIGNATURE_HASH,
10074                );
10075                Ok(())
10076            }
10077        }
10078        #[automatically_derived]
10079        impl alloy_sol_types::private::IntoLogData for Unpaused {
10080            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10081                From::from(self)
10082            }
10083            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10084                From::from(&self)
10085            }
10086        }
10087        #[automatically_derived]
10088        impl From<&Unpaused> for alloy_sol_types::private::LogData {
10089            #[inline]
10090            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
10091                alloy_sol_types::SolEvent::encode_log_data(this)
10092            }
10093        }
10094    };
10095    #[derive(serde::Serialize, serde::Deserialize)]
10096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10097    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
10098```solidity
10099event Upgraded(address indexed implementation);
10100```*/
10101    #[allow(
10102        non_camel_case_types,
10103        non_snake_case,
10104        clippy::pub_underscore_fields,
10105        clippy::style
10106    )]
10107    #[derive(Clone)]
10108    pub struct Upgraded {
10109        #[allow(missing_docs)]
10110        pub implementation: alloy::sol_types::private::Address,
10111    }
10112    #[allow(
10113        non_camel_case_types,
10114        non_snake_case,
10115        clippy::pub_underscore_fields,
10116        clippy::style
10117    )]
10118    const _: () = {
10119        use alloy::sol_types as alloy_sol_types;
10120        #[automatically_derived]
10121        impl alloy_sol_types::SolEvent for Upgraded {
10122            type DataTuple<'a> = ();
10123            type DataToken<'a> = <Self::DataTuple<
10124                'a,
10125            > as alloy_sol_types::SolType>::Token<'a>;
10126            type TopicList = (
10127                alloy_sol_types::sol_data::FixedBytes<32>,
10128                alloy::sol_types::sol_data::Address,
10129            );
10130            const SIGNATURE: &'static str = "Upgraded(address)";
10131            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10132                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10133                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10134                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10135            ]);
10136            const ANONYMOUS: bool = false;
10137            #[allow(unused_variables)]
10138            #[inline]
10139            fn new(
10140                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10141                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10142            ) -> Self {
10143                Self { implementation: topics.1 }
10144            }
10145            #[inline]
10146            fn check_signature(
10147                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10148            ) -> alloy_sol_types::Result<()> {
10149                if topics.0 != Self::SIGNATURE_HASH {
10150                    return Err(
10151                        alloy_sol_types::Error::invalid_event_signature_hash(
10152                            Self::SIGNATURE,
10153                            topics.0,
10154                            Self::SIGNATURE_HASH,
10155                        ),
10156                    );
10157                }
10158                Ok(())
10159            }
10160            #[inline]
10161            fn tokenize_body(&self) -> Self::DataToken<'_> {
10162                ()
10163            }
10164            #[inline]
10165            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10166                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
10167            }
10168            #[inline]
10169            fn encode_topics_raw(
10170                &self,
10171                out: &mut [alloy_sol_types::abi::token::WordToken],
10172            ) -> alloy_sol_types::Result<()> {
10173                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10174                    return Err(alloy_sol_types::Error::Overrun);
10175                }
10176                out[0usize] = alloy_sol_types::abi::token::WordToken(
10177                    Self::SIGNATURE_HASH,
10178                );
10179                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10180                    &self.implementation,
10181                );
10182                Ok(())
10183            }
10184        }
10185        #[automatically_derived]
10186        impl alloy_sol_types::private::IntoLogData for Upgraded {
10187            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10188                From::from(self)
10189            }
10190            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10191                From::from(&self)
10192            }
10193        }
10194        #[automatically_derived]
10195        impl From<&Upgraded> for alloy_sol_types::private::LogData {
10196            #[inline]
10197            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
10198                alloy_sol_types::SolEvent::encode_log_data(this)
10199            }
10200        }
10201    };
10202    #[derive(serde::Serialize, serde::Deserialize)]
10203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10204    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
10205```solidity
10206event ValidatorExit(address indexed validator);
10207```*/
10208    #[allow(
10209        non_camel_case_types,
10210        non_snake_case,
10211        clippy::pub_underscore_fields,
10212        clippy::style
10213    )]
10214    #[derive(Clone)]
10215    pub struct ValidatorExit {
10216        #[allow(missing_docs)]
10217        pub validator: alloy::sol_types::private::Address,
10218    }
10219    #[allow(
10220        non_camel_case_types,
10221        non_snake_case,
10222        clippy::pub_underscore_fields,
10223        clippy::style
10224    )]
10225    const _: () = {
10226        use alloy::sol_types as alloy_sol_types;
10227        #[automatically_derived]
10228        impl alloy_sol_types::SolEvent for ValidatorExit {
10229            type DataTuple<'a> = ();
10230            type DataToken<'a> = <Self::DataTuple<
10231                'a,
10232            > as alloy_sol_types::SolType>::Token<'a>;
10233            type TopicList = (
10234                alloy_sol_types::sol_data::FixedBytes<32>,
10235                alloy::sol_types::sol_data::Address,
10236            );
10237            const SIGNATURE: &'static str = "ValidatorExit(address)";
10238            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10239                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10240                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10241                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10242            ]);
10243            const ANONYMOUS: bool = false;
10244            #[allow(unused_variables)]
10245            #[inline]
10246            fn new(
10247                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10248                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10249            ) -> Self {
10250                Self { validator: topics.1 }
10251            }
10252            #[inline]
10253            fn check_signature(
10254                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10255            ) -> alloy_sol_types::Result<()> {
10256                if topics.0 != Self::SIGNATURE_HASH {
10257                    return Err(
10258                        alloy_sol_types::Error::invalid_event_signature_hash(
10259                            Self::SIGNATURE,
10260                            topics.0,
10261                            Self::SIGNATURE_HASH,
10262                        ),
10263                    );
10264                }
10265                Ok(())
10266            }
10267            #[inline]
10268            fn tokenize_body(&self) -> Self::DataToken<'_> {
10269                ()
10270            }
10271            #[inline]
10272            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10273                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10274            }
10275            #[inline]
10276            fn encode_topics_raw(
10277                &self,
10278                out: &mut [alloy_sol_types::abi::token::WordToken],
10279            ) -> alloy_sol_types::Result<()> {
10280                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10281                    return Err(alloy_sol_types::Error::Overrun);
10282                }
10283                out[0usize] = alloy_sol_types::abi::token::WordToken(
10284                    Self::SIGNATURE_HASH,
10285                );
10286                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10287                    &self.validator,
10288                );
10289                Ok(())
10290            }
10291        }
10292        #[automatically_derived]
10293        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
10294            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10295                From::from(self)
10296            }
10297            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10298                From::from(&self)
10299            }
10300        }
10301        #[automatically_derived]
10302        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
10303            #[inline]
10304            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
10305                alloy_sol_types::SolEvent::encode_log_data(this)
10306            }
10307        }
10308    };
10309    #[derive(serde::Serialize, serde::Deserialize)]
10310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10311    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
10312```solidity
10313event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
10314```*/
10315    #[allow(
10316        non_camel_case_types,
10317        non_snake_case,
10318        clippy::pub_underscore_fields,
10319        clippy::style
10320    )]
10321    #[derive(Clone)]
10322    pub struct ValidatorExitClaimed {
10323        #[allow(missing_docs)]
10324        pub delegator: alloy::sol_types::private::Address,
10325        #[allow(missing_docs)]
10326        pub validator: alloy::sol_types::private::Address,
10327        #[allow(missing_docs)]
10328        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10329    }
10330    #[allow(
10331        non_camel_case_types,
10332        non_snake_case,
10333        clippy::pub_underscore_fields,
10334        clippy::style
10335    )]
10336    const _: () = {
10337        use alloy::sol_types as alloy_sol_types;
10338        #[automatically_derived]
10339        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
10340            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10341            type DataToken<'a> = <Self::DataTuple<
10342                'a,
10343            > as alloy_sol_types::SolType>::Token<'a>;
10344            type TopicList = (
10345                alloy_sol_types::sol_data::FixedBytes<32>,
10346                alloy::sol_types::sol_data::Address,
10347                alloy::sol_types::sol_data::Address,
10348            );
10349            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
10350            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10351                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
10352                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
10353                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
10354            ]);
10355            const ANONYMOUS: bool = false;
10356            #[allow(unused_variables)]
10357            #[inline]
10358            fn new(
10359                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10360                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10361            ) -> Self {
10362                Self {
10363                    delegator: topics.1,
10364                    validator: topics.2,
10365                    amount: data.0,
10366                }
10367            }
10368            #[inline]
10369            fn check_signature(
10370                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10371            ) -> alloy_sol_types::Result<()> {
10372                if topics.0 != Self::SIGNATURE_HASH {
10373                    return Err(
10374                        alloy_sol_types::Error::invalid_event_signature_hash(
10375                            Self::SIGNATURE,
10376                            topics.0,
10377                            Self::SIGNATURE_HASH,
10378                        ),
10379                    );
10380                }
10381                Ok(())
10382            }
10383            #[inline]
10384            fn tokenize_body(&self) -> Self::DataToken<'_> {
10385                (
10386                    <alloy::sol_types::sol_data::Uint<
10387                        256,
10388                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10389                )
10390            }
10391            #[inline]
10392            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10393                (
10394                    Self::SIGNATURE_HASH.into(),
10395                    self.delegator.clone(),
10396                    self.validator.clone(),
10397                )
10398            }
10399            #[inline]
10400            fn encode_topics_raw(
10401                &self,
10402                out: &mut [alloy_sol_types::abi::token::WordToken],
10403            ) -> alloy_sol_types::Result<()> {
10404                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10405                    return Err(alloy_sol_types::Error::Overrun);
10406                }
10407                out[0usize] = alloy_sol_types::abi::token::WordToken(
10408                    Self::SIGNATURE_HASH,
10409                );
10410                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10411                    &self.delegator,
10412                );
10413                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10414                    &self.validator,
10415                );
10416                Ok(())
10417            }
10418        }
10419        #[automatically_derived]
10420        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
10421            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10422                From::from(self)
10423            }
10424            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10425                From::from(&self)
10426            }
10427        }
10428        #[automatically_derived]
10429        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
10430            #[inline]
10431            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
10432                alloy_sol_types::SolEvent::encode_log_data(this)
10433            }
10434        }
10435    };
10436    #[derive(serde::Serialize, serde::Deserialize)]
10437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10438    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
10439```solidity
10440event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
10441```*/
10442    #[allow(
10443        non_camel_case_types,
10444        non_snake_case,
10445        clippy::pub_underscore_fields,
10446        clippy::style
10447    )]
10448    #[derive(Clone)]
10449    pub struct ValidatorExitV2 {
10450        #[allow(missing_docs)]
10451        pub validator: alloy::sol_types::private::Address,
10452        #[allow(missing_docs)]
10453        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10454    }
10455    #[allow(
10456        non_camel_case_types,
10457        non_snake_case,
10458        clippy::pub_underscore_fields,
10459        clippy::style
10460    )]
10461    const _: () = {
10462        use alloy::sol_types as alloy_sol_types;
10463        #[automatically_derived]
10464        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
10465            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10466            type DataToken<'a> = <Self::DataTuple<
10467                'a,
10468            > as alloy_sol_types::SolType>::Token<'a>;
10469            type TopicList = (
10470                alloy_sol_types::sol_data::FixedBytes<32>,
10471                alloy::sol_types::sol_data::Address,
10472            );
10473            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
10474            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10475                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
10476                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
10477                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
10478            ]);
10479            const ANONYMOUS: bool = false;
10480            #[allow(unused_variables)]
10481            #[inline]
10482            fn new(
10483                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10484                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10485            ) -> Self {
10486                Self {
10487                    validator: topics.1,
10488                    unlocksAt: data.0,
10489                }
10490            }
10491            #[inline]
10492            fn check_signature(
10493                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10494            ) -> alloy_sol_types::Result<()> {
10495                if topics.0 != Self::SIGNATURE_HASH {
10496                    return Err(
10497                        alloy_sol_types::Error::invalid_event_signature_hash(
10498                            Self::SIGNATURE,
10499                            topics.0,
10500                            Self::SIGNATURE_HASH,
10501                        ),
10502                    );
10503                }
10504                Ok(())
10505            }
10506            #[inline]
10507            fn tokenize_body(&self) -> Self::DataToken<'_> {
10508                (
10509                    <alloy::sol_types::sol_data::Uint<
10510                        256,
10511                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10512                )
10513            }
10514            #[inline]
10515            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10516                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10517            }
10518            #[inline]
10519            fn encode_topics_raw(
10520                &self,
10521                out: &mut [alloy_sol_types::abi::token::WordToken],
10522            ) -> alloy_sol_types::Result<()> {
10523                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10524                    return Err(alloy_sol_types::Error::Overrun);
10525                }
10526                out[0usize] = alloy_sol_types::abi::token::WordToken(
10527                    Self::SIGNATURE_HASH,
10528                );
10529                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10530                    &self.validator,
10531                );
10532                Ok(())
10533            }
10534        }
10535        #[automatically_derived]
10536        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
10537            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10538                From::from(self)
10539            }
10540            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10541                From::from(&self)
10542            }
10543        }
10544        #[automatically_derived]
10545        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
10546            #[inline]
10547            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
10548                alloy_sol_types::SolEvent::encode_log_data(this)
10549            }
10550        }
10551    };
10552    #[derive(serde::Serialize, serde::Deserialize)]
10553    #[derive()]
10554    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
10555```solidity
10556event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
10557```*/
10558    #[allow(
10559        non_camel_case_types,
10560        non_snake_case,
10561        clippy::pub_underscore_fields,
10562        clippy::style
10563    )]
10564    #[derive(Clone)]
10565    pub struct ValidatorRegistered {
10566        #[allow(missing_docs)]
10567        pub account: alloy::sol_types::private::Address,
10568        #[allow(missing_docs)]
10569        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10570        #[allow(missing_docs)]
10571        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10572        #[allow(missing_docs)]
10573        pub commission: u16,
10574    }
10575    #[allow(
10576        non_camel_case_types,
10577        non_snake_case,
10578        clippy::pub_underscore_fields,
10579        clippy::style
10580    )]
10581    const _: () = {
10582        use alloy::sol_types as alloy_sol_types;
10583        #[automatically_derived]
10584        impl alloy_sol_types::SolEvent for ValidatorRegistered {
10585            type DataTuple<'a> = (
10586                BN254::G2Point,
10587                EdOnBN254::EdOnBN254Point,
10588                alloy::sol_types::sol_data::Uint<16>,
10589            );
10590            type DataToken<'a> = <Self::DataTuple<
10591                'a,
10592            > as alloy_sol_types::SolType>::Token<'a>;
10593            type TopicList = (
10594                alloy_sol_types::sol_data::FixedBytes<32>,
10595                alloy::sol_types::sol_data::Address,
10596            );
10597            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
10598            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10599                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
10600                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
10601                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
10602            ]);
10603            const ANONYMOUS: bool = false;
10604            #[allow(unused_variables)]
10605            #[inline]
10606            fn new(
10607                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10608                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10609            ) -> Self {
10610                Self {
10611                    account: topics.1,
10612                    blsVk: data.0,
10613                    schnorrVk: data.1,
10614                    commission: data.2,
10615                }
10616            }
10617            #[inline]
10618            fn check_signature(
10619                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10620            ) -> alloy_sol_types::Result<()> {
10621                if topics.0 != Self::SIGNATURE_HASH {
10622                    return Err(
10623                        alloy_sol_types::Error::invalid_event_signature_hash(
10624                            Self::SIGNATURE,
10625                            topics.0,
10626                            Self::SIGNATURE_HASH,
10627                        ),
10628                    );
10629                }
10630                Ok(())
10631            }
10632            #[inline]
10633            fn tokenize_body(&self) -> Self::DataToken<'_> {
10634                (
10635                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
10636                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10637                        &self.schnorrVk,
10638                    ),
10639                    <alloy::sol_types::sol_data::Uint<
10640                        16,
10641                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10642                )
10643            }
10644            #[inline]
10645            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10646                (Self::SIGNATURE_HASH.into(), self.account.clone())
10647            }
10648            #[inline]
10649            fn encode_topics_raw(
10650                &self,
10651                out: &mut [alloy_sol_types::abi::token::WordToken],
10652            ) -> alloy_sol_types::Result<()> {
10653                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10654                    return Err(alloy_sol_types::Error::Overrun);
10655                }
10656                out[0usize] = alloy_sol_types::abi::token::WordToken(
10657                    Self::SIGNATURE_HASH,
10658                );
10659                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10660                    &self.account,
10661                );
10662                Ok(())
10663            }
10664        }
10665        #[automatically_derived]
10666        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
10667            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10668                From::from(self)
10669            }
10670            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10671                From::from(&self)
10672            }
10673        }
10674        #[automatically_derived]
10675        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
10676            #[inline]
10677            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
10678                alloy_sol_types::SolEvent::encode_log_data(this)
10679            }
10680        }
10681    };
10682    #[derive(serde::Serialize, serde::Deserialize)]
10683    #[derive()]
10684    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
10685```solidity
10686event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
10687```*/
10688    #[allow(
10689        non_camel_case_types,
10690        non_snake_case,
10691        clippy::pub_underscore_fields,
10692        clippy::style
10693    )]
10694    #[derive(Clone)]
10695    pub struct ValidatorRegisteredV2 {
10696        #[allow(missing_docs)]
10697        pub account: alloy::sol_types::private::Address,
10698        #[allow(missing_docs)]
10699        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10700        #[allow(missing_docs)]
10701        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10702        #[allow(missing_docs)]
10703        pub commission: u16,
10704        #[allow(missing_docs)]
10705        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10706        #[allow(missing_docs)]
10707        pub schnorrSig: alloy::sol_types::private::Bytes,
10708        #[allow(missing_docs)]
10709        pub metadataUri: alloy::sol_types::private::String,
10710    }
10711    #[allow(
10712        non_camel_case_types,
10713        non_snake_case,
10714        clippy::pub_underscore_fields,
10715        clippy::style
10716    )]
10717    const _: () = {
10718        use alloy::sol_types as alloy_sol_types;
10719        #[automatically_derived]
10720        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
10721            type DataTuple<'a> = (
10722                BN254::G2Point,
10723                EdOnBN254::EdOnBN254Point,
10724                alloy::sol_types::sol_data::Uint<16>,
10725                BN254::G1Point,
10726                alloy::sol_types::sol_data::Bytes,
10727                alloy::sol_types::sol_data::String,
10728            );
10729            type DataToken<'a> = <Self::DataTuple<
10730                'a,
10731            > as alloy_sol_types::SolType>::Token<'a>;
10732            type TopicList = (
10733                alloy_sol_types::sol_data::FixedBytes<32>,
10734                alloy::sol_types::sol_data::Address,
10735            );
10736            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
10737            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10738                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
10739                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
10740                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
10741            ]);
10742            const ANONYMOUS: bool = false;
10743            #[allow(unused_variables)]
10744            #[inline]
10745            fn new(
10746                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10747                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10748            ) -> Self {
10749                Self {
10750                    account: topics.1,
10751                    blsVK: data.0,
10752                    schnorrVK: data.1,
10753                    commission: data.2,
10754                    blsSig: data.3,
10755                    schnorrSig: data.4,
10756                    metadataUri: data.5,
10757                }
10758            }
10759            #[inline]
10760            fn check_signature(
10761                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10762            ) -> alloy_sol_types::Result<()> {
10763                if topics.0 != Self::SIGNATURE_HASH {
10764                    return Err(
10765                        alloy_sol_types::Error::invalid_event_signature_hash(
10766                            Self::SIGNATURE,
10767                            topics.0,
10768                            Self::SIGNATURE_HASH,
10769                        ),
10770                    );
10771                }
10772                Ok(())
10773            }
10774            #[inline]
10775            fn tokenize_body(&self) -> Self::DataToken<'_> {
10776                (
10777                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10778                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10779                        &self.schnorrVK,
10780                    ),
10781                    <alloy::sol_types::sol_data::Uint<
10782                        16,
10783                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10784                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10785                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10786                        &self.schnorrSig,
10787                    ),
10788                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10789                        &self.metadataUri,
10790                    ),
10791                )
10792            }
10793            #[inline]
10794            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10795                (Self::SIGNATURE_HASH.into(), self.account.clone())
10796            }
10797            #[inline]
10798            fn encode_topics_raw(
10799                &self,
10800                out: &mut [alloy_sol_types::abi::token::WordToken],
10801            ) -> alloy_sol_types::Result<()> {
10802                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10803                    return Err(alloy_sol_types::Error::Overrun);
10804                }
10805                out[0usize] = alloy_sol_types::abi::token::WordToken(
10806                    Self::SIGNATURE_HASH,
10807                );
10808                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10809                    &self.account,
10810                );
10811                Ok(())
10812            }
10813        }
10814        #[automatically_derived]
10815        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
10816            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10817                From::from(self)
10818            }
10819            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10820                From::from(&self)
10821            }
10822        }
10823        #[automatically_derived]
10824        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
10825            #[inline]
10826            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
10827                alloy_sol_types::SolEvent::encode_log_data(this)
10828            }
10829        }
10830    };
10831    #[derive(serde::Serialize, serde::Deserialize)]
10832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10833    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
10834```solidity
10835event Withdrawal(address indexed account, uint256 amount);
10836```*/
10837    #[allow(
10838        non_camel_case_types,
10839        non_snake_case,
10840        clippy::pub_underscore_fields,
10841        clippy::style
10842    )]
10843    #[derive(Clone)]
10844    pub struct Withdrawal {
10845        #[allow(missing_docs)]
10846        pub account: alloy::sol_types::private::Address,
10847        #[allow(missing_docs)]
10848        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10849    }
10850    #[allow(
10851        non_camel_case_types,
10852        non_snake_case,
10853        clippy::pub_underscore_fields,
10854        clippy::style
10855    )]
10856    const _: () = {
10857        use alloy::sol_types as alloy_sol_types;
10858        #[automatically_derived]
10859        impl alloy_sol_types::SolEvent for Withdrawal {
10860            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10861            type DataToken<'a> = <Self::DataTuple<
10862                'a,
10863            > as alloy_sol_types::SolType>::Token<'a>;
10864            type TopicList = (
10865                alloy_sol_types::sol_data::FixedBytes<32>,
10866                alloy::sol_types::sol_data::Address,
10867            );
10868            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
10869            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10870                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
10871                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
10872                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
10873            ]);
10874            const ANONYMOUS: bool = false;
10875            #[allow(unused_variables)]
10876            #[inline]
10877            fn new(
10878                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10879                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10880            ) -> Self {
10881                Self {
10882                    account: topics.1,
10883                    amount: data.0,
10884                }
10885            }
10886            #[inline]
10887            fn check_signature(
10888                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10889            ) -> alloy_sol_types::Result<()> {
10890                if topics.0 != Self::SIGNATURE_HASH {
10891                    return Err(
10892                        alloy_sol_types::Error::invalid_event_signature_hash(
10893                            Self::SIGNATURE,
10894                            topics.0,
10895                            Self::SIGNATURE_HASH,
10896                        ),
10897                    );
10898                }
10899                Ok(())
10900            }
10901            #[inline]
10902            fn tokenize_body(&self) -> Self::DataToken<'_> {
10903                (
10904                    <alloy::sol_types::sol_data::Uint<
10905                        256,
10906                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10907                )
10908            }
10909            #[inline]
10910            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10911                (Self::SIGNATURE_HASH.into(), self.account.clone())
10912            }
10913            #[inline]
10914            fn encode_topics_raw(
10915                &self,
10916                out: &mut [alloy_sol_types::abi::token::WordToken],
10917            ) -> alloy_sol_types::Result<()> {
10918                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10919                    return Err(alloy_sol_types::Error::Overrun);
10920                }
10921                out[0usize] = alloy_sol_types::abi::token::WordToken(
10922                    Self::SIGNATURE_HASH,
10923                );
10924                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10925                    &self.account,
10926                );
10927                Ok(())
10928            }
10929        }
10930        #[automatically_derived]
10931        impl alloy_sol_types::private::IntoLogData for Withdrawal {
10932            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10933                From::from(self)
10934            }
10935            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10936                From::from(&self)
10937            }
10938        }
10939        #[automatically_derived]
10940        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
10941            #[inline]
10942            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
10943                alloy_sol_types::SolEvent::encode_log_data(this)
10944            }
10945        }
10946    };
10947    #[derive(serde::Serialize, serde::Deserialize)]
10948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10949    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
10950```solidity
10951event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
10952```*/
10953    #[allow(
10954        non_camel_case_types,
10955        non_snake_case,
10956        clippy::pub_underscore_fields,
10957        clippy::style
10958    )]
10959    #[derive(Clone)]
10960    pub struct WithdrawalClaimed {
10961        #[allow(missing_docs)]
10962        pub delegator: alloy::sol_types::private::Address,
10963        #[allow(missing_docs)]
10964        pub validator: alloy::sol_types::private::Address,
10965        #[allow(missing_docs)]
10966        pub undelegationId: u64,
10967        #[allow(missing_docs)]
10968        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10969    }
10970    #[allow(
10971        non_camel_case_types,
10972        non_snake_case,
10973        clippy::pub_underscore_fields,
10974        clippy::style
10975    )]
10976    const _: () = {
10977        use alloy::sol_types as alloy_sol_types;
10978        #[automatically_derived]
10979        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
10980            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10981            type DataToken<'a> = <Self::DataTuple<
10982                'a,
10983            > as alloy_sol_types::SolType>::Token<'a>;
10984            type TopicList = (
10985                alloy_sol_types::sol_data::FixedBytes<32>,
10986                alloy::sol_types::sol_data::Address,
10987                alloy::sol_types::sol_data::Address,
10988                alloy::sol_types::sol_data::Uint<64>,
10989            );
10990            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
10991            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10992                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
10993                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
10994                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
10995            ]);
10996            const ANONYMOUS: bool = false;
10997            #[allow(unused_variables)]
10998            #[inline]
10999            fn new(
11000                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11001                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11002            ) -> Self {
11003                Self {
11004                    delegator: topics.1,
11005                    validator: topics.2,
11006                    undelegationId: topics.3,
11007                    amount: data.0,
11008                }
11009            }
11010            #[inline]
11011            fn check_signature(
11012                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11013            ) -> alloy_sol_types::Result<()> {
11014                if topics.0 != Self::SIGNATURE_HASH {
11015                    return Err(
11016                        alloy_sol_types::Error::invalid_event_signature_hash(
11017                            Self::SIGNATURE,
11018                            topics.0,
11019                            Self::SIGNATURE_HASH,
11020                        ),
11021                    );
11022                }
11023                Ok(())
11024            }
11025            #[inline]
11026            fn tokenize_body(&self) -> Self::DataToken<'_> {
11027                (
11028                    <alloy::sol_types::sol_data::Uint<
11029                        256,
11030                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11031                )
11032            }
11033            #[inline]
11034            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11035                (
11036                    Self::SIGNATURE_HASH.into(),
11037                    self.delegator.clone(),
11038                    self.validator.clone(),
11039                    self.undelegationId.clone(),
11040                )
11041            }
11042            #[inline]
11043            fn encode_topics_raw(
11044                &self,
11045                out: &mut [alloy_sol_types::abi::token::WordToken],
11046            ) -> alloy_sol_types::Result<()> {
11047                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11048                    return Err(alloy_sol_types::Error::Overrun);
11049                }
11050                out[0usize] = alloy_sol_types::abi::token::WordToken(
11051                    Self::SIGNATURE_HASH,
11052                );
11053                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11054                    &self.delegator,
11055                );
11056                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11057                    &self.validator,
11058                );
11059                out[3usize] = <alloy::sol_types::sol_data::Uint<
11060                    64,
11061                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
11062                Ok(())
11063            }
11064        }
11065        #[automatically_derived]
11066        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
11067            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11068                From::from(self)
11069            }
11070            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11071                From::from(&self)
11072            }
11073        }
11074        #[automatically_derived]
11075        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
11076            #[inline]
11077            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
11078                alloy_sol_types::SolEvent::encode_log_data(this)
11079            }
11080        }
11081    };
11082    /**Constructor`.
11083```solidity
11084constructor();
11085```*/
11086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11087    #[derive(Clone)]
11088    pub struct constructorCall {}
11089    const _: () = {
11090        use alloy::sol_types as alloy_sol_types;
11091        {
11092            #[doc(hidden)]
11093            #[allow(dead_code)]
11094            type UnderlyingSolTuple<'a> = ();
11095            #[doc(hidden)]
11096            type UnderlyingRustTuple<'a> = ();
11097            #[cfg(test)]
11098            #[allow(dead_code, unreachable_patterns)]
11099            fn _type_assertion(
11100                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11101            ) {
11102                match _t {
11103                    alloy_sol_types::private::AssertTypeEq::<
11104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11105                    >(_) => {}
11106                }
11107            }
11108            #[automatically_derived]
11109            #[doc(hidden)]
11110            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
11111                fn from(value: constructorCall) -> Self {
11112                    ()
11113                }
11114            }
11115            #[automatically_derived]
11116            #[doc(hidden)]
11117            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
11118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11119                    Self {}
11120                }
11121            }
11122        }
11123        #[automatically_derived]
11124        impl alloy_sol_types::SolConstructor for constructorCall {
11125            type Parameters<'a> = ();
11126            type Token<'a> = <Self::Parameters<
11127                'a,
11128            > as alloy_sol_types::SolType>::Token<'a>;
11129            #[inline]
11130            fn new<'a>(
11131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11132            ) -> Self {
11133                tuple.into()
11134            }
11135            #[inline]
11136            fn tokenize(&self) -> Self::Token<'_> {
11137                ()
11138            }
11139        }
11140    };
11141    #[derive(serde::Serialize, serde::Deserialize)]
11142    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11143    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
11144```solidity
11145function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
11146```*/
11147    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11148    #[derive(Clone)]
11149    pub struct DEFAULT_ADMIN_ROLECall;
11150    #[derive(serde::Serialize, serde::Deserialize)]
11151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11152    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
11153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11154    #[derive(Clone)]
11155    pub struct DEFAULT_ADMIN_ROLEReturn {
11156        #[allow(missing_docs)]
11157        pub _0: alloy::sol_types::private::FixedBytes<32>,
11158    }
11159    #[allow(
11160        non_camel_case_types,
11161        non_snake_case,
11162        clippy::pub_underscore_fields,
11163        clippy::style
11164    )]
11165    const _: () = {
11166        use alloy::sol_types as alloy_sol_types;
11167        {
11168            #[doc(hidden)]
11169            #[allow(dead_code)]
11170            type UnderlyingSolTuple<'a> = ();
11171            #[doc(hidden)]
11172            type UnderlyingRustTuple<'a> = ();
11173            #[cfg(test)]
11174            #[allow(dead_code, unreachable_patterns)]
11175            fn _type_assertion(
11176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11177            ) {
11178                match _t {
11179                    alloy_sol_types::private::AssertTypeEq::<
11180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11181                    >(_) => {}
11182                }
11183            }
11184            #[automatically_derived]
11185            #[doc(hidden)]
11186            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
11187            for UnderlyingRustTuple<'_> {
11188                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
11189                    ()
11190                }
11191            }
11192            #[automatically_derived]
11193            #[doc(hidden)]
11194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11195            for DEFAULT_ADMIN_ROLECall {
11196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11197                    Self
11198                }
11199            }
11200        }
11201        {
11202            #[doc(hidden)]
11203            #[allow(dead_code)]
11204            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11205            #[doc(hidden)]
11206            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11207            #[cfg(test)]
11208            #[allow(dead_code, unreachable_patterns)]
11209            fn _type_assertion(
11210                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11211            ) {
11212                match _t {
11213                    alloy_sol_types::private::AssertTypeEq::<
11214                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11215                    >(_) => {}
11216                }
11217            }
11218            #[automatically_derived]
11219            #[doc(hidden)]
11220            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
11221            for UnderlyingRustTuple<'_> {
11222                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
11223                    (value._0,)
11224                }
11225            }
11226            #[automatically_derived]
11227            #[doc(hidden)]
11228            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11229            for DEFAULT_ADMIN_ROLEReturn {
11230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11231                    Self { _0: tuple.0 }
11232                }
11233            }
11234        }
11235        #[automatically_derived]
11236        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
11237            type Parameters<'a> = ();
11238            type Token<'a> = <Self::Parameters<
11239                'a,
11240            > as alloy_sol_types::SolType>::Token<'a>;
11241            type Return = alloy::sol_types::private::FixedBytes<32>;
11242            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11243            type ReturnToken<'a> = <Self::ReturnTuple<
11244                'a,
11245            > as alloy_sol_types::SolType>::Token<'a>;
11246            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
11247            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
11248            #[inline]
11249            fn new<'a>(
11250                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11251            ) -> Self {
11252                tuple.into()
11253            }
11254            #[inline]
11255            fn tokenize(&self) -> Self::Token<'_> {
11256                ()
11257            }
11258            #[inline]
11259            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11260                (
11261                    <alloy::sol_types::sol_data::FixedBytes<
11262                        32,
11263                    > as alloy_sol_types::SolType>::tokenize(ret),
11264                )
11265            }
11266            #[inline]
11267            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11268                <Self::ReturnTuple<
11269                    '_,
11270                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11271                    .map(|r| {
11272                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11273                        r._0
11274                    })
11275            }
11276            #[inline]
11277            fn abi_decode_returns_validate(
11278                data: &[u8],
11279            ) -> alloy_sol_types::Result<Self::Return> {
11280                <Self::ReturnTuple<
11281                    '_,
11282                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11283                    .map(|r| {
11284                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11285                        r._0
11286                    })
11287            }
11288        }
11289    };
11290    #[derive(serde::Serialize, serde::Deserialize)]
11291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11292    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
11293```solidity
11294function MAX_COMMISSION_BPS() external view returns (uint16);
11295```*/
11296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11297    #[derive(Clone)]
11298    pub struct MAX_COMMISSION_BPSCall;
11299    #[derive(serde::Serialize, serde::Deserialize)]
11300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11301    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
11302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11303    #[derive(Clone)]
11304    pub struct MAX_COMMISSION_BPSReturn {
11305        #[allow(missing_docs)]
11306        pub _0: u16,
11307    }
11308    #[allow(
11309        non_camel_case_types,
11310        non_snake_case,
11311        clippy::pub_underscore_fields,
11312        clippy::style
11313    )]
11314    const _: () = {
11315        use alloy::sol_types as alloy_sol_types;
11316        {
11317            #[doc(hidden)]
11318            #[allow(dead_code)]
11319            type UnderlyingSolTuple<'a> = ();
11320            #[doc(hidden)]
11321            type UnderlyingRustTuple<'a> = ();
11322            #[cfg(test)]
11323            #[allow(dead_code, unreachable_patterns)]
11324            fn _type_assertion(
11325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11326            ) {
11327                match _t {
11328                    alloy_sol_types::private::AssertTypeEq::<
11329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11330                    >(_) => {}
11331                }
11332            }
11333            #[automatically_derived]
11334            #[doc(hidden)]
11335            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
11336            for UnderlyingRustTuple<'_> {
11337                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
11338                    ()
11339                }
11340            }
11341            #[automatically_derived]
11342            #[doc(hidden)]
11343            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11344            for MAX_COMMISSION_BPSCall {
11345                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11346                    Self
11347                }
11348            }
11349        }
11350        {
11351            #[doc(hidden)]
11352            #[allow(dead_code)]
11353            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11354            #[doc(hidden)]
11355            type UnderlyingRustTuple<'a> = (u16,);
11356            #[cfg(test)]
11357            #[allow(dead_code, unreachable_patterns)]
11358            fn _type_assertion(
11359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11360            ) {
11361                match _t {
11362                    alloy_sol_types::private::AssertTypeEq::<
11363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11364                    >(_) => {}
11365                }
11366            }
11367            #[automatically_derived]
11368            #[doc(hidden)]
11369            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
11370            for UnderlyingRustTuple<'_> {
11371                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
11372                    (value._0,)
11373                }
11374            }
11375            #[automatically_derived]
11376            #[doc(hidden)]
11377            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11378            for MAX_COMMISSION_BPSReturn {
11379                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11380                    Self { _0: tuple.0 }
11381                }
11382            }
11383        }
11384        #[automatically_derived]
11385        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
11386            type Parameters<'a> = ();
11387            type Token<'a> = <Self::Parameters<
11388                'a,
11389            > as alloy_sol_types::SolType>::Token<'a>;
11390            type Return = u16;
11391            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11392            type ReturnToken<'a> = <Self::ReturnTuple<
11393                'a,
11394            > as alloy_sol_types::SolType>::Token<'a>;
11395            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
11396            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
11397            #[inline]
11398            fn new<'a>(
11399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11400            ) -> Self {
11401                tuple.into()
11402            }
11403            #[inline]
11404            fn tokenize(&self) -> Self::Token<'_> {
11405                ()
11406            }
11407            #[inline]
11408            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11409                (
11410                    <alloy::sol_types::sol_data::Uint<
11411                        16,
11412                    > as alloy_sol_types::SolType>::tokenize(ret),
11413                )
11414            }
11415            #[inline]
11416            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11417                <Self::ReturnTuple<
11418                    '_,
11419                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11420                    .map(|r| {
11421                        let r: MAX_COMMISSION_BPSReturn = r.into();
11422                        r._0
11423                    })
11424            }
11425            #[inline]
11426            fn abi_decode_returns_validate(
11427                data: &[u8],
11428            ) -> alloy_sol_types::Result<Self::Return> {
11429                <Self::ReturnTuple<
11430                    '_,
11431                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11432                    .map(|r| {
11433                        let r: MAX_COMMISSION_BPSReturn = r.into();
11434                        r._0
11435                    })
11436            }
11437        }
11438    };
11439    #[derive(serde::Serialize, serde::Deserialize)]
11440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11441    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
11442```solidity
11443function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
11444```*/
11445    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11446    #[derive(Clone)]
11447    pub struct MAX_EXIT_ESCROW_PERIODCall;
11448    #[derive(serde::Serialize, serde::Deserialize)]
11449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11450    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
11451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11452    #[derive(Clone)]
11453    pub struct MAX_EXIT_ESCROW_PERIODReturn {
11454        #[allow(missing_docs)]
11455        pub _0: u64,
11456    }
11457    #[allow(
11458        non_camel_case_types,
11459        non_snake_case,
11460        clippy::pub_underscore_fields,
11461        clippy::style
11462    )]
11463    const _: () = {
11464        use alloy::sol_types as alloy_sol_types;
11465        {
11466            #[doc(hidden)]
11467            #[allow(dead_code)]
11468            type UnderlyingSolTuple<'a> = ();
11469            #[doc(hidden)]
11470            type UnderlyingRustTuple<'a> = ();
11471            #[cfg(test)]
11472            #[allow(dead_code, unreachable_patterns)]
11473            fn _type_assertion(
11474                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11475            ) {
11476                match _t {
11477                    alloy_sol_types::private::AssertTypeEq::<
11478                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11479                    >(_) => {}
11480                }
11481            }
11482            #[automatically_derived]
11483            #[doc(hidden)]
11484            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
11485            for UnderlyingRustTuple<'_> {
11486                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
11487                    ()
11488                }
11489            }
11490            #[automatically_derived]
11491            #[doc(hidden)]
11492            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11493            for MAX_EXIT_ESCROW_PERIODCall {
11494                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11495                    Self
11496                }
11497            }
11498        }
11499        {
11500            #[doc(hidden)]
11501            #[allow(dead_code)]
11502            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11503            #[doc(hidden)]
11504            type UnderlyingRustTuple<'a> = (u64,);
11505            #[cfg(test)]
11506            #[allow(dead_code, unreachable_patterns)]
11507            fn _type_assertion(
11508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11509            ) {
11510                match _t {
11511                    alloy_sol_types::private::AssertTypeEq::<
11512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11513                    >(_) => {}
11514                }
11515            }
11516            #[automatically_derived]
11517            #[doc(hidden)]
11518            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
11519            for UnderlyingRustTuple<'_> {
11520                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
11521                    (value._0,)
11522                }
11523            }
11524            #[automatically_derived]
11525            #[doc(hidden)]
11526            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11527            for MAX_EXIT_ESCROW_PERIODReturn {
11528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11529                    Self { _0: tuple.0 }
11530                }
11531            }
11532        }
11533        #[automatically_derived]
11534        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
11535            type Parameters<'a> = ();
11536            type Token<'a> = <Self::Parameters<
11537                'a,
11538            > as alloy_sol_types::SolType>::Token<'a>;
11539            type Return = u64;
11540            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11541            type ReturnToken<'a> = <Self::ReturnTuple<
11542                'a,
11543            > as alloy_sol_types::SolType>::Token<'a>;
11544            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
11545            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
11546            #[inline]
11547            fn new<'a>(
11548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11549            ) -> Self {
11550                tuple.into()
11551            }
11552            #[inline]
11553            fn tokenize(&self) -> Self::Token<'_> {
11554                ()
11555            }
11556            #[inline]
11557            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11558                (
11559                    <alloy::sol_types::sol_data::Uint<
11560                        64,
11561                    > as alloy_sol_types::SolType>::tokenize(ret),
11562                )
11563            }
11564            #[inline]
11565            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11566                <Self::ReturnTuple<
11567                    '_,
11568                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11569                    .map(|r| {
11570                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11571                        r._0
11572                    })
11573            }
11574            #[inline]
11575            fn abi_decode_returns_validate(
11576                data: &[u8],
11577            ) -> alloy_sol_types::Result<Self::Return> {
11578                <Self::ReturnTuple<
11579                    '_,
11580                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11581                    .map(|r| {
11582                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11583                        r._0
11584                    })
11585            }
11586        }
11587    };
11588    #[derive(serde::Serialize, serde::Deserialize)]
11589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11590    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
11591```solidity
11592function MAX_METADATA_URI_LENGTH() external view returns (uint256);
11593```*/
11594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11595    #[derive(Clone)]
11596    pub struct MAX_METADATA_URI_LENGTHCall;
11597    #[derive(serde::Serialize, serde::Deserialize)]
11598    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11599    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
11600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11601    #[derive(Clone)]
11602    pub struct MAX_METADATA_URI_LENGTHReturn {
11603        #[allow(missing_docs)]
11604        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11605    }
11606    #[allow(
11607        non_camel_case_types,
11608        non_snake_case,
11609        clippy::pub_underscore_fields,
11610        clippy::style
11611    )]
11612    const _: () = {
11613        use alloy::sol_types as alloy_sol_types;
11614        {
11615            #[doc(hidden)]
11616            #[allow(dead_code)]
11617            type UnderlyingSolTuple<'a> = ();
11618            #[doc(hidden)]
11619            type UnderlyingRustTuple<'a> = ();
11620            #[cfg(test)]
11621            #[allow(dead_code, unreachable_patterns)]
11622            fn _type_assertion(
11623                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11624            ) {
11625                match _t {
11626                    alloy_sol_types::private::AssertTypeEq::<
11627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11628                    >(_) => {}
11629                }
11630            }
11631            #[automatically_derived]
11632            #[doc(hidden)]
11633            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
11634            for UnderlyingRustTuple<'_> {
11635                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
11636                    ()
11637                }
11638            }
11639            #[automatically_derived]
11640            #[doc(hidden)]
11641            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11642            for MAX_METADATA_URI_LENGTHCall {
11643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11644                    Self
11645                }
11646            }
11647        }
11648        {
11649            #[doc(hidden)]
11650            #[allow(dead_code)]
11651            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11652            #[doc(hidden)]
11653            type UnderlyingRustTuple<'a> = (
11654                alloy::sol_types::private::primitives::aliases::U256,
11655            );
11656            #[cfg(test)]
11657            #[allow(dead_code, unreachable_patterns)]
11658            fn _type_assertion(
11659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11660            ) {
11661                match _t {
11662                    alloy_sol_types::private::AssertTypeEq::<
11663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11664                    >(_) => {}
11665                }
11666            }
11667            #[automatically_derived]
11668            #[doc(hidden)]
11669            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
11670            for UnderlyingRustTuple<'_> {
11671                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
11672                    (value._0,)
11673                }
11674            }
11675            #[automatically_derived]
11676            #[doc(hidden)]
11677            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11678            for MAX_METADATA_URI_LENGTHReturn {
11679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11680                    Self { _0: tuple.0 }
11681                }
11682            }
11683        }
11684        #[automatically_derived]
11685        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
11686            type Parameters<'a> = ();
11687            type Token<'a> = <Self::Parameters<
11688                'a,
11689            > as alloy_sol_types::SolType>::Token<'a>;
11690            type Return = alloy::sol_types::private::primitives::aliases::U256;
11691            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11692            type ReturnToken<'a> = <Self::ReturnTuple<
11693                'a,
11694            > as alloy_sol_types::SolType>::Token<'a>;
11695            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
11696            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
11697            #[inline]
11698            fn new<'a>(
11699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11700            ) -> Self {
11701                tuple.into()
11702            }
11703            #[inline]
11704            fn tokenize(&self) -> Self::Token<'_> {
11705                ()
11706            }
11707            #[inline]
11708            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11709                (
11710                    <alloy::sol_types::sol_data::Uint<
11711                        256,
11712                    > as alloy_sol_types::SolType>::tokenize(ret),
11713                )
11714            }
11715            #[inline]
11716            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11717                <Self::ReturnTuple<
11718                    '_,
11719                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11720                    .map(|r| {
11721                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11722                        r._0
11723                    })
11724            }
11725            #[inline]
11726            fn abi_decode_returns_validate(
11727                data: &[u8],
11728            ) -> alloy_sol_types::Result<Self::Return> {
11729                <Self::ReturnTuple<
11730                    '_,
11731                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11732                    .map(|r| {
11733                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11734                        r._0
11735                    })
11736            }
11737        }
11738    };
11739    #[derive(serde::Serialize, serde::Deserialize)]
11740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11741    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
11742```solidity
11743function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
11744```*/
11745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11746    #[derive(Clone)]
11747    pub struct MIN_EXIT_ESCROW_PERIODCall;
11748    #[derive(serde::Serialize, serde::Deserialize)]
11749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11750    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
11751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11752    #[derive(Clone)]
11753    pub struct MIN_EXIT_ESCROW_PERIODReturn {
11754        #[allow(missing_docs)]
11755        pub _0: u64,
11756    }
11757    #[allow(
11758        non_camel_case_types,
11759        non_snake_case,
11760        clippy::pub_underscore_fields,
11761        clippy::style
11762    )]
11763    const _: () = {
11764        use alloy::sol_types as alloy_sol_types;
11765        {
11766            #[doc(hidden)]
11767            #[allow(dead_code)]
11768            type UnderlyingSolTuple<'a> = ();
11769            #[doc(hidden)]
11770            type UnderlyingRustTuple<'a> = ();
11771            #[cfg(test)]
11772            #[allow(dead_code, unreachable_patterns)]
11773            fn _type_assertion(
11774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11775            ) {
11776                match _t {
11777                    alloy_sol_types::private::AssertTypeEq::<
11778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11779                    >(_) => {}
11780                }
11781            }
11782            #[automatically_derived]
11783            #[doc(hidden)]
11784            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
11785            for UnderlyingRustTuple<'_> {
11786                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
11787                    ()
11788                }
11789            }
11790            #[automatically_derived]
11791            #[doc(hidden)]
11792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11793            for MIN_EXIT_ESCROW_PERIODCall {
11794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11795                    Self
11796                }
11797            }
11798        }
11799        {
11800            #[doc(hidden)]
11801            #[allow(dead_code)]
11802            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11803            #[doc(hidden)]
11804            type UnderlyingRustTuple<'a> = (u64,);
11805            #[cfg(test)]
11806            #[allow(dead_code, unreachable_patterns)]
11807            fn _type_assertion(
11808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11809            ) {
11810                match _t {
11811                    alloy_sol_types::private::AssertTypeEq::<
11812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11813                    >(_) => {}
11814                }
11815            }
11816            #[automatically_derived]
11817            #[doc(hidden)]
11818            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
11819            for UnderlyingRustTuple<'_> {
11820                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
11821                    (value._0,)
11822                }
11823            }
11824            #[automatically_derived]
11825            #[doc(hidden)]
11826            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11827            for MIN_EXIT_ESCROW_PERIODReturn {
11828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11829                    Self { _0: tuple.0 }
11830                }
11831            }
11832        }
11833        #[automatically_derived]
11834        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
11835            type Parameters<'a> = ();
11836            type Token<'a> = <Self::Parameters<
11837                'a,
11838            > as alloy_sol_types::SolType>::Token<'a>;
11839            type Return = u64;
11840            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11841            type ReturnToken<'a> = <Self::ReturnTuple<
11842                'a,
11843            > as alloy_sol_types::SolType>::Token<'a>;
11844            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
11845            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
11846            #[inline]
11847            fn new<'a>(
11848                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11849            ) -> Self {
11850                tuple.into()
11851            }
11852            #[inline]
11853            fn tokenize(&self) -> Self::Token<'_> {
11854                ()
11855            }
11856            #[inline]
11857            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11858                (
11859                    <alloy::sol_types::sol_data::Uint<
11860                        64,
11861                    > as alloy_sol_types::SolType>::tokenize(ret),
11862                )
11863            }
11864            #[inline]
11865            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11866                <Self::ReturnTuple<
11867                    '_,
11868                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11869                    .map(|r| {
11870                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11871                        r._0
11872                    })
11873            }
11874            #[inline]
11875            fn abi_decode_returns_validate(
11876                data: &[u8],
11877            ) -> alloy_sol_types::Result<Self::Return> {
11878                <Self::ReturnTuple<
11879                    '_,
11880                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11881                    .map(|r| {
11882                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11883                        r._0
11884                    })
11885            }
11886        }
11887    };
11888    #[derive(serde::Serialize, serde::Deserialize)]
11889    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11890    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
11891```solidity
11892function PAUSER_ROLE() external view returns (bytes32);
11893```*/
11894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11895    #[derive(Clone)]
11896    pub struct PAUSER_ROLECall;
11897    #[derive(serde::Serialize, serde::Deserialize)]
11898    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11899    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
11900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11901    #[derive(Clone)]
11902    pub struct PAUSER_ROLEReturn {
11903        #[allow(missing_docs)]
11904        pub _0: alloy::sol_types::private::FixedBytes<32>,
11905    }
11906    #[allow(
11907        non_camel_case_types,
11908        non_snake_case,
11909        clippy::pub_underscore_fields,
11910        clippy::style
11911    )]
11912    const _: () = {
11913        use alloy::sol_types as alloy_sol_types;
11914        {
11915            #[doc(hidden)]
11916            #[allow(dead_code)]
11917            type UnderlyingSolTuple<'a> = ();
11918            #[doc(hidden)]
11919            type UnderlyingRustTuple<'a> = ();
11920            #[cfg(test)]
11921            #[allow(dead_code, unreachable_patterns)]
11922            fn _type_assertion(
11923                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11924            ) {
11925                match _t {
11926                    alloy_sol_types::private::AssertTypeEq::<
11927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11928                    >(_) => {}
11929                }
11930            }
11931            #[automatically_derived]
11932            #[doc(hidden)]
11933            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
11934                fn from(value: PAUSER_ROLECall) -> Self {
11935                    ()
11936                }
11937            }
11938            #[automatically_derived]
11939            #[doc(hidden)]
11940            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
11941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11942                    Self
11943                }
11944            }
11945        }
11946        {
11947            #[doc(hidden)]
11948            #[allow(dead_code)]
11949            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11950            #[doc(hidden)]
11951            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11952            #[cfg(test)]
11953            #[allow(dead_code, unreachable_patterns)]
11954            fn _type_assertion(
11955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11956            ) {
11957                match _t {
11958                    alloy_sol_types::private::AssertTypeEq::<
11959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11960                    >(_) => {}
11961                }
11962            }
11963            #[automatically_derived]
11964            #[doc(hidden)]
11965            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
11966                fn from(value: PAUSER_ROLEReturn) -> Self {
11967                    (value._0,)
11968                }
11969            }
11970            #[automatically_derived]
11971            #[doc(hidden)]
11972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
11973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11974                    Self { _0: tuple.0 }
11975                }
11976            }
11977        }
11978        #[automatically_derived]
11979        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
11980            type Parameters<'a> = ();
11981            type Token<'a> = <Self::Parameters<
11982                'a,
11983            > as alloy_sol_types::SolType>::Token<'a>;
11984            type Return = alloy::sol_types::private::FixedBytes<32>;
11985            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11986            type ReturnToken<'a> = <Self::ReturnTuple<
11987                'a,
11988            > as alloy_sol_types::SolType>::Token<'a>;
11989            const SIGNATURE: &'static str = "PAUSER_ROLE()";
11990            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
11991            #[inline]
11992            fn new<'a>(
11993                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11994            ) -> Self {
11995                tuple.into()
11996            }
11997            #[inline]
11998            fn tokenize(&self) -> Self::Token<'_> {
11999                ()
12000            }
12001            #[inline]
12002            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12003                (
12004                    <alloy::sol_types::sol_data::FixedBytes<
12005                        32,
12006                    > as alloy_sol_types::SolType>::tokenize(ret),
12007                )
12008            }
12009            #[inline]
12010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12011                <Self::ReturnTuple<
12012                    '_,
12013                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12014                    .map(|r| {
12015                        let r: PAUSER_ROLEReturn = r.into();
12016                        r._0
12017                    })
12018            }
12019            #[inline]
12020            fn abi_decode_returns_validate(
12021                data: &[u8],
12022            ) -> alloy_sol_types::Result<Self::Return> {
12023                <Self::ReturnTuple<
12024                    '_,
12025                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12026                    .map(|r| {
12027                        let r: PAUSER_ROLEReturn = r.into();
12028                        r._0
12029                    })
12030            }
12031        }
12032    };
12033    #[derive(serde::Serialize, serde::Deserialize)]
12034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12035    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
12036```solidity
12037function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
12038```*/
12039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12040    #[derive(Clone)]
12041    pub struct UPGRADE_INTERFACE_VERSIONCall;
12042    #[derive(serde::Serialize, serde::Deserialize)]
12043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12044    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
12045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12046    #[derive(Clone)]
12047    pub struct UPGRADE_INTERFACE_VERSIONReturn {
12048        #[allow(missing_docs)]
12049        pub _0: alloy::sol_types::private::String,
12050    }
12051    #[allow(
12052        non_camel_case_types,
12053        non_snake_case,
12054        clippy::pub_underscore_fields,
12055        clippy::style
12056    )]
12057    const _: () = {
12058        use alloy::sol_types as alloy_sol_types;
12059        {
12060            #[doc(hidden)]
12061            #[allow(dead_code)]
12062            type UnderlyingSolTuple<'a> = ();
12063            #[doc(hidden)]
12064            type UnderlyingRustTuple<'a> = ();
12065            #[cfg(test)]
12066            #[allow(dead_code, unreachable_patterns)]
12067            fn _type_assertion(
12068                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12069            ) {
12070                match _t {
12071                    alloy_sol_types::private::AssertTypeEq::<
12072                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12073                    >(_) => {}
12074                }
12075            }
12076            #[automatically_derived]
12077            #[doc(hidden)]
12078            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
12079            for UnderlyingRustTuple<'_> {
12080                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
12081                    ()
12082                }
12083            }
12084            #[automatically_derived]
12085            #[doc(hidden)]
12086            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12087            for UPGRADE_INTERFACE_VERSIONCall {
12088                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12089                    Self
12090                }
12091            }
12092        }
12093        {
12094            #[doc(hidden)]
12095            #[allow(dead_code)]
12096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
12097            #[doc(hidden)]
12098            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
12099            #[cfg(test)]
12100            #[allow(dead_code, unreachable_patterns)]
12101            fn _type_assertion(
12102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12103            ) {
12104                match _t {
12105                    alloy_sol_types::private::AssertTypeEq::<
12106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12107                    >(_) => {}
12108                }
12109            }
12110            #[automatically_derived]
12111            #[doc(hidden)]
12112            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
12113            for UnderlyingRustTuple<'_> {
12114                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
12115                    (value._0,)
12116                }
12117            }
12118            #[automatically_derived]
12119            #[doc(hidden)]
12120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12121            for UPGRADE_INTERFACE_VERSIONReturn {
12122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12123                    Self { _0: tuple.0 }
12124                }
12125            }
12126        }
12127        #[automatically_derived]
12128        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
12129            type Parameters<'a> = ();
12130            type Token<'a> = <Self::Parameters<
12131                'a,
12132            > as alloy_sol_types::SolType>::Token<'a>;
12133            type Return = alloy::sol_types::private::String;
12134            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
12135            type ReturnToken<'a> = <Self::ReturnTuple<
12136                'a,
12137            > as alloy_sol_types::SolType>::Token<'a>;
12138            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
12139            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
12140            #[inline]
12141            fn new<'a>(
12142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12143            ) -> Self {
12144                tuple.into()
12145            }
12146            #[inline]
12147            fn tokenize(&self) -> Self::Token<'_> {
12148                ()
12149            }
12150            #[inline]
12151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12152                (
12153                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
12154                        ret,
12155                    ),
12156                )
12157            }
12158            #[inline]
12159            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12160                <Self::ReturnTuple<
12161                    '_,
12162                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12163                    .map(|r| {
12164                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12165                        r._0
12166                    })
12167            }
12168            #[inline]
12169            fn abi_decode_returns_validate(
12170                data: &[u8],
12171            ) -> alloy_sol_types::Result<Self::Return> {
12172                <Self::ReturnTuple<
12173                    '_,
12174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12175                    .map(|r| {
12176                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12177                        r._0
12178                    })
12179            }
12180        }
12181    };
12182    #[derive(serde::Serialize, serde::Deserialize)]
12183    #[derive()]
12184    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
12185```solidity
12186function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
12187```*/
12188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12189    #[derive(Clone)]
12190    pub struct _hashBlsKeyCall {
12191        #[allow(missing_docs)]
12192        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12193    }
12194    #[derive(serde::Serialize, serde::Deserialize)]
12195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12196    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
12197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12198    #[derive(Clone)]
12199    pub struct _hashBlsKeyReturn {
12200        #[allow(missing_docs)]
12201        pub _0: alloy::sol_types::private::FixedBytes<32>,
12202    }
12203    #[allow(
12204        non_camel_case_types,
12205        non_snake_case,
12206        clippy::pub_underscore_fields,
12207        clippy::style
12208    )]
12209    const _: () = {
12210        use alloy::sol_types as alloy_sol_types;
12211        {
12212            #[doc(hidden)]
12213            #[allow(dead_code)]
12214            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
12215            #[doc(hidden)]
12216            type UnderlyingRustTuple<'a> = (
12217                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12218            );
12219            #[cfg(test)]
12220            #[allow(dead_code, unreachable_patterns)]
12221            fn _type_assertion(
12222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12223            ) {
12224                match _t {
12225                    alloy_sol_types::private::AssertTypeEq::<
12226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12227                    >(_) => {}
12228                }
12229            }
12230            #[automatically_derived]
12231            #[doc(hidden)]
12232            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
12233                fn from(value: _hashBlsKeyCall) -> Self {
12234                    (value.blsVK,)
12235                }
12236            }
12237            #[automatically_derived]
12238            #[doc(hidden)]
12239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
12240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12241                    Self { blsVK: tuple.0 }
12242                }
12243            }
12244        }
12245        {
12246            #[doc(hidden)]
12247            #[allow(dead_code)]
12248            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12249            #[doc(hidden)]
12250            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12251            #[cfg(test)]
12252            #[allow(dead_code, unreachable_patterns)]
12253            fn _type_assertion(
12254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12255            ) {
12256                match _t {
12257                    alloy_sol_types::private::AssertTypeEq::<
12258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12259                    >(_) => {}
12260                }
12261            }
12262            #[automatically_derived]
12263            #[doc(hidden)]
12264            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
12265                fn from(value: _hashBlsKeyReturn) -> Self {
12266                    (value._0,)
12267                }
12268            }
12269            #[automatically_derived]
12270            #[doc(hidden)]
12271            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
12272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12273                    Self { _0: tuple.0 }
12274                }
12275            }
12276        }
12277        #[automatically_derived]
12278        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
12279            type Parameters<'a> = (BN254::G2Point,);
12280            type Token<'a> = <Self::Parameters<
12281                'a,
12282            > as alloy_sol_types::SolType>::Token<'a>;
12283            type Return = alloy::sol_types::private::FixedBytes<32>;
12284            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12285            type ReturnToken<'a> = <Self::ReturnTuple<
12286                'a,
12287            > as alloy_sol_types::SolType>::Token<'a>;
12288            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
12289            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
12290            #[inline]
12291            fn new<'a>(
12292                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12293            ) -> Self {
12294                tuple.into()
12295            }
12296            #[inline]
12297            fn tokenize(&self) -> Self::Token<'_> {
12298                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
12299            }
12300            #[inline]
12301            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12302                (
12303                    <alloy::sol_types::sol_data::FixedBytes<
12304                        32,
12305                    > as alloy_sol_types::SolType>::tokenize(ret),
12306                )
12307            }
12308            #[inline]
12309            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12310                <Self::ReturnTuple<
12311                    '_,
12312                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12313                    .map(|r| {
12314                        let r: _hashBlsKeyReturn = r.into();
12315                        r._0
12316                    })
12317            }
12318            #[inline]
12319            fn abi_decode_returns_validate(
12320                data: &[u8],
12321            ) -> alloy_sol_types::Result<Self::Return> {
12322                <Self::ReturnTuple<
12323                    '_,
12324                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12325                    .map(|r| {
12326                        let r: _hashBlsKeyReturn = r.into();
12327                        r._0
12328                    })
12329            }
12330        }
12331    };
12332    #[derive(serde::Serialize, serde::Deserialize)]
12333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12334    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
12335```solidity
12336function activeStake() external view returns (uint256);
12337```*/
12338    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12339    #[derive(Clone)]
12340    pub struct activeStakeCall;
12341    #[derive(serde::Serialize, serde::Deserialize)]
12342    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12343    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
12344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12345    #[derive(Clone)]
12346    pub struct activeStakeReturn {
12347        #[allow(missing_docs)]
12348        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12349    }
12350    #[allow(
12351        non_camel_case_types,
12352        non_snake_case,
12353        clippy::pub_underscore_fields,
12354        clippy::style
12355    )]
12356    const _: () = {
12357        use alloy::sol_types as alloy_sol_types;
12358        {
12359            #[doc(hidden)]
12360            #[allow(dead_code)]
12361            type UnderlyingSolTuple<'a> = ();
12362            #[doc(hidden)]
12363            type UnderlyingRustTuple<'a> = ();
12364            #[cfg(test)]
12365            #[allow(dead_code, unreachable_patterns)]
12366            fn _type_assertion(
12367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12368            ) {
12369                match _t {
12370                    alloy_sol_types::private::AssertTypeEq::<
12371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12372                    >(_) => {}
12373                }
12374            }
12375            #[automatically_derived]
12376            #[doc(hidden)]
12377            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
12378                fn from(value: activeStakeCall) -> Self {
12379                    ()
12380                }
12381            }
12382            #[automatically_derived]
12383            #[doc(hidden)]
12384            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
12385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12386                    Self
12387                }
12388            }
12389        }
12390        {
12391            #[doc(hidden)]
12392            #[allow(dead_code)]
12393            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12394            #[doc(hidden)]
12395            type UnderlyingRustTuple<'a> = (
12396                alloy::sol_types::private::primitives::aliases::U256,
12397            );
12398            #[cfg(test)]
12399            #[allow(dead_code, unreachable_patterns)]
12400            fn _type_assertion(
12401                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12402            ) {
12403                match _t {
12404                    alloy_sol_types::private::AssertTypeEq::<
12405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12406                    >(_) => {}
12407                }
12408            }
12409            #[automatically_derived]
12410            #[doc(hidden)]
12411            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
12412                fn from(value: activeStakeReturn) -> Self {
12413                    (value._0,)
12414                }
12415            }
12416            #[automatically_derived]
12417            #[doc(hidden)]
12418            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
12419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12420                    Self { _0: tuple.0 }
12421                }
12422            }
12423        }
12424        #[automatically_derived]
12425        impl alloy_sol_types::SolCall for activeStakeCall {
12426            type Parameters<'a> = ();
12427            type Token<'a> = <Self::Parameters<
12428                'a,
12429            > as alloy_sol_types::SolType>::Token<'a>;
12430            type Return = alloy::sol_types::private::primitives::aliases::U256;
12431            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12432            type ReturnToken<'a> = <Self::ReturnTuple<
12433                'a,
12434            > as alloy_sol_types::SolType>::Token<'a>;
12435            const SIGNATURE: &'static str = "activeStake()";
12436            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
12437            #[inline]
12438            fn new<'a>(
12439                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12440            ) -> Self {
12441                tuple.into()
12442            }
12443            #[inline]
12444            fn tokenize(&self) -> Self::Token<'_> {
12445                ()
12446            }
12447            #[inline]
12448            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12449                (
12450                    <alloy::sol_types::sol_data::Uint<
12451                        256,
12452                    > as alloy_sol_types::SolType>::tokenize(ret),
12453                )
12454            }
12455            #[inline]
12456            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12457                <Self::ReturnTuple<
12458                    '_,
12459                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12460                    .map(|r| {
12461                        let r: activeStakeReturn = r.into();
12462                        r._0
12463                    })
12464            }
12465            #[inline]
12466            fn abi_decode_returns_validate(
12467                data: &[u8],
12468            ) -> alloy_sol_types::Result<Self::Return> {
12469                <Self::ReturnTuple<
12470                    '_,
12471                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12472                    .map(|r| {
12473                        let r: activeStakeReturn = r.into();
12474                        r._0
12475                    })
12476            }
12477        }
12478    };
12479    #[derive(serde::Serialize, serde::Deserialize)]
12480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12481    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
12482```solidity
12483function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
12484```*/
12485    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12486    #[derive(Clone)]
12487    pub struct blsKeysCall {
12488        #[allow(missing_docs)]
12489        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12490    }
12491    #[derive(serde::Serialize, serde::Deserialize)]
12492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12493    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
12494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12495    #[derive(Clone)]
12496    pub struct blsKeysReturn {
12497        #[allow(missing_docs)]
12498        pub used: bool,
12499    }
12500    #[allow(
12501        non_camel_case_types,
12502        non_snake_case,
12503        clippy::pub_underscore_fields,
12504        clippy::style
12505    )]
12506    const _: () = {
12507        use alloy::sol_types as alloy_sol_types;
12508        {
12509            #[doc(hidden)]
12510            #[allow(dead_code)]
12511            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12512            #[doc(hidden)]
12513            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12514            #[cfg(test)]
12515            #[allow(dead_code, unreachable_patterns)]
12516            fn _type_assertion(
12517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12518            ) {
12519                match _t {
12520                    alloy_sol_types::private::AssertTypeEq::<
12521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12522                    >(_) => {}
12523                }
12524            }
12525            #[automatically_derived]
12526            #[doc(hidden)]
12527            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
12528                fn from(value: blsKeysCall) -> Self {
12529                    (value.blsKeyHash,)
12530                }
12531            }
12532            #[automatically_derived]
12533            #[doc(hidden)]
12534            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
12535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12536                    Self { blsKeyHash: tuple.0 }
12537                }
12538            }
12539        }
12540        {
12541            #[doc(hidden)]
12542            #[allow(dead_code)]
12543            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12544            #[doc(hidden)]
12545            type UnderlyingRustTuple<'a> = (bool,);
12546            #[cfg(test)]
12547            #[allow(dead_code, unreachable_patterns)]
12548            fn _type_assertion(
12549                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12550            ) {
12551                match _t {
12552                    alloy_sol_types::private::AssertTypeEq::<
12553                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12554                    >(_) => {}
12555                }
12556            }
12557            #[automatically_derived]
12558            #[doc(hidden)]
12559            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
12560                fn from(value: blsKeysReturn) -> Self {
12561                    (value.used,)
12562                }
12563            }
12564            #[automatically_derived]
12565            #[doc(hidden)]
12566            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
12567                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12568                    Self { used: tuple.0 }
12569                }
12570            }
12571        }
12572        #[automatically_derived]
12573        impl alloy_sol_types::SolCall for blsKeysCall {
12574            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12575            type Token<'a> = <Self::Parameters<
12576                'a,
12577            > as alloy_sol_types::SolType>::Token<'a>;
12578            type Return = bool;
12579            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12580            type ReturnToken<'a> = <Self::ReturnTuple<
12581                'a,
12582            > as alloy_sol_types::SolType>::Token<'a>;
12583            const SIGNATURE: &'static str = "blsKeys(bytes32)";
12584            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
12585            #[inline]
12586            fn new<'a>(
12587                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12588            ) -> Self {
12589                tuple.into()
12590            }
12591            #[inline]
12592            fn tokenize(&self) -> Self::Token<'_> {
12593                (
12594                    <alloy::sol_types::sol_data::FixedBytes<
12595                        32,
12596                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
12597                )
12598            }
12599            #[inline]
12600            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12601                (
12602                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12603                        ret,
12604                    ),
12605                )
12606            }
12607            #[inline]
12608            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12609                <Self::ReturnTuple<
12610                    '_,
12611                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12612                    .map(|r| {
12613                        let r: blsKeysReturn = r.into();
12614                        r.used
12615                    })
12616            }
12617            #[inline]
12618            fn abi_decode_returns_validate(
12619                data: &[u8],
12620            ) -> alloy_sol_types::Result<Self::Return> {
12621                <Self::ReturnTuple<
12622                    '_,
12623                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12624                    .map(|r| {
12625                        let r: blsKeysReturn = r.into();
12626                        r.used
12627                    })
12628            }
12629        }
12630    };
12631    #[derive(serde::Serialize, serde::Deserialize)]
12632    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12633    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
12634```solidity
12635function claimValidatorExit(address validator) external;
12636```*/
12637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12638    #[derive(Clone)]
12639    pub struct claimValidatorExitCall {
12640        #[allow(missing_docs)]
12641        pub validator: alloy::sol_types::private::Address,
12642    }
12643    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
12644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12645    #[derive(Clone)]
12646    pub struct claimValidatorExitReturn {}
12647    #[allow(
12648        non_camel_case_types,
12649        non_snake_case,
12650        clippy::pub_underscore_fields,
12651        clippy::style
12652    )]
12653    const _: () = {
12654        use alloy::sol_types as alloy_sol_types;
12655        {
12656            #[doc(hidden)]
12657            #[allow(dead_code)]
12658            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12659            #[doc(hidden)]
12660            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12661            #[cfg(test)]
12662            #[allow(dead_code, unreachable_patterns)]
12663            fn _type_assertion(
12664                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12665            ) {
12666                match _t {
12667                    alloy_sol_types::private::AssertTypeEq::<
12668                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12669                    >(_) => {}
12670                }
12671            }
12672            #[automatically_derived]
12673            #[doc(hidden)]
12674            impl ::core::convert::From<claimValidatorExitCall>
12675            for UnderlyingRustTuple<'_> {
12676                fn from(value: claimValidatorExitCall) -> Self {
12677                    (value.validator,)
12678                }
12679            }
12680            #[automatically_derived]
12681            #[doc(hidden)]
12682            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12683            for claimValidatorExitCall {
12684                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12685                    Self { validator: tuple.0 }
12686                }
12687            }
12688        }
12689        {
12690            #[doc(hidden)]
12691            #[allow(dead_code)]
12692            type UnderlyingSolTuple<'a> = ();
12693            #[doc(hidden)]
12694            type UnderlyingRustTuple<'a> = ();
12695            #[cfg(test)]
12696            #[allow(dead_code, unreachable_patterns)]
12697            fn _type_assertion(
12698                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12699            ) {
12700                match _t {
12701                    alloy_sol_types::private::AssertTypeEq::<
12702                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12703                    >(_) => {}
12704                }
12705            }
12706            #[automatically_derived]
12707            #[doc(hidden)]
12708            impl ::core::convert::From<claimValidatorExitReturn>
12709            for UnderlyingRustTuple<'_> {
12710                fn from(value: claimValidatorExitReturn) -> Self {
12711                    ()
12712                }
12713            }
12714            #[automatically_derived]
12715            #[doc(hidden)]
12716            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12717            for claimValidatorExitReturn {
12718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12719                    Self {}
12720                }
12721            }
12722        }
12723        impl claimValidatorExitReturn {
12724            fn _tokenize(
12725                &self,
12726            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12727                ()
12728            }
12729        }
12730        #[automatically_derived]
12731        impl alloy_sol_types::SolCall for claimValidatorExitCall {
12732            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12733            type Token<'a> = <Self::Parameters<
12734                'a,
12735            > as alloy_sol_types::SolType>::Token<'a>;
12736            type Return = claimValidatorExitReturn;
12737            type ReturnTuple<'a> = ();
12738            type ReturnToken<'a> = <Self::ReturnTuple<
12739                'a,
12740            > as alloy_sol_types::SolType>::Token<'a>;
12741            const SIGNATURE: &'static str = "claimValidatorExit(address)";
12742            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
12743            #[inline]
12744            fn new<'a>(
12745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12746            ) -> Self {
12747                tuple.into()
12748            }
12749            #[inline]
12750            fn tokenize(&self) -> Self::Token<'_> {
12751                (
12752                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12753                        &self.validator,
12754                    ),
12755                )
12756            }
12757            #[inline]
12758            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12759                claimValidatorExitReturn::_tokenize(ret)
12760            }
12761            #[inline]
12762            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12763                <Self::ReturnTuple<
12764                    '_,
12765                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12766                    .map(Into::into)
12767            }
12768            #[inline]
12769            fn abi_decode_returns_validate(
12770                data: &[u8],
12771            ) -> alloy_sol_types::Result<Self::Return> {
12772                <Self::ReturnTuple<
12773                    '_,
12774                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12775                    .map(Into::into)
12776            }
12777        }
12778    };
12779    #[derive(serde::Serialize, serde::Deserialize)]
12780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12781    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
12782```solidity
12783function claimWithdrawal(address validator) external;
12784```*/
12785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12786    #[derive(Clone)]
12787    pub struct claimWithdrawalCall {
12788        #[allow(missing_docs)]
12789        pub validator: alloy::sol_types::private::Address,
12790    }
12791    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
12792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12793    #[derive(Clone)]
12794    pub struct claimWithdrawalReturn {}
12795    #[allow(
12796        non_camel_case_types,
12797        non_snake_case,
12798        clippy::pub_underscore_fields,
12799        clippy::style
12800    )]
12801    const _: () = {
12802        use alloy::sol_types as alloy_sol_types;
12803        {
12804            #[doc(hidden)]
12805            #[allow(dead_code)]
12806            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12807            #[doc(hidden)]
12808            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12809            #[cfg(test)]
12810            #[allow(dead_code, unreachable_patterns)]
12811            fn _type_assertion(
12812                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12813            ) {
12814                match _t {
12815                    alloy_sol_types::private::AssertTypeEq::<
12816                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12817                    >(_) => {}
12818                }
12819            }
12820            #[automatically_derived]
12821            #[doc(hidden)]
12822            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
12823                fn from(value: claimWithdrawalCall) -> Self {
12824                    (value.validator,)
12825                }
12826            }
12827            #[automatically_derived]
12828            #[doc(hidden)]
12829            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
12830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12831                    Self { validator: tuple.0 }
12832                }
12833            }
12834        }
12835        {
12836            #[doc(hidden)]
12837            #[allow(dead_code)]
12838            type UnderlyingSolTuple<'a> = ();
12839            #[doc(hidden)]
12840            type UnderlyingRustTuple<'a> = ();
12841            #[cfg(test)]
12842            #[allow(dead_code, unreachable_patterns)]
12843            fn _type_assertion(
12844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12845            ) {
12846                match _t {
12847                    alloy_sol_types::private::AssertTypeEq::<
12848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12849                    >(_) => {}
12850                }
12851            }
12852            #[automatically_derived]
12853            #[doc(hidden)]
12854            impl ::core::convert::From<claimWithdrawalReturn>
12855            for UnderlyingRustTuple<'_> {
12856                fn from(value: claimWithdrawalReturn) -> Self {
12857                    ()
12858                }
12859            }
12860            #[automatically_derived]
12861            #[doc(hidden)]
12862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12863            for claimWithdrawalReturn {
12864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12865                    Self {}
12866                }
12867            }
12868        }
12869        impl claimWithdrawalReturn {
12870            fn _tokenize(
12871                &self,
12872            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12873                ()
12874            }
12875        }
12876        #[automatically_derived]
12877        impl alloy_sol_types::SolCall for claimWithdrawalCall {
12878            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12879            type Token<'a> = <Self::Parameters<
12880                'a,
12881            > as alloy_sol_types::SolType>::Token<'a>;
12882            type Return = claimWithdrawalReturn;
12883            type ReturnTuple<'a> = ();
12884            type ReturnToken<'a> = <Self::ReturnTuple<
12885                'a,
12886            > as alloy_sol_types::SolType>::Token<'a>;
12887            const SIGNATURE: &'static str = "claimWithdrawal(address)";
12888            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
12889            #[inline]
12890            fn new<'a>(
12891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12892            ) -> Self {
12893                tuple.into()
12894            }
12895            #[inline]
12896            fn tokenize(&self) -> Self::Token<'_> {
12897                (
12898                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12899                        &self.validator,
12900                    ),
12901                )
12902            }
12903            #[inline]
12904            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12905                claimWithdrawalReturn::_tokenize(ret)
12906            }
12907            #[inline]
12908            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12909                <Self::ReturnTuple<
12910                    '_,
12911                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12912                    .map(Into::into)
12913            }
12914            #[inline]
12915            fn abi_decode_returns_validate(
12916                data: &[u8],
12917            ) -> alloy_sol_types::Result<Self::Return> {
12918                <Self::ReturnTuple<
12919                    '_,
12920                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12921                    .map(Into::into)
12922            }
12923        }
12924    };
12925    #[derive(serde::Serialize, serde::Deserialize)]
12926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12927    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
12928```solidity
12929function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
12930```*/
12931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12932    #[derive(Clone)]
12933    pub struct commissionTrackingCall {
12934        #[allow(missing_docs)]
12935        pub validator: alloy::sol_types::private::Address,
12936    }
12937    #[derive(serde::Serialize, serde::Deserialize)]
12938    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12939    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
12940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12941    #[derive(Clone)]
12942    pub struct commissionTrackingReturn {
12943        #[allow(missing_docs)]
12944        pub commission: u16,
12945        #[allow(missing_docs)]
12946        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
12947    }
12948    #[allow(
12949        non_camel_case_types,
12950        non_snake_case,
12951        clippy::pub_underscore_fields,
12952        clippy::style
12953    )]
12954    const _: () = {
12955        use alloy::sol_types as alloy_sol_types;
12956        {
12957            #[doc(hidden)]
12958            #[allow(dead_code)]
12959            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12960            #[doc(hidden)]
12961            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12962            #[cfg(test)]
12963            #[allow(dead_code, unreachable_patterns)]
12964            fn _type_assertion(
12965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12966            ) {
12967                match _t {
12968                    alloy_sol_types::private::AssertTypeEq::<
12969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12970                    >(_) => {}
12971                }
12972            }
12973            #[automatically_derived]
12974            #[doc(hidden)]
12975            impl ::core::convert::From<commissionTrackingCall>
12976            for UnderlyingRustTuple<'_> {
12977                fn from(value: commissionTrackingCall) -> Self {
12978                    (value.validator,)
12979                }
12980            }
12981            #[automatically_derived]
12982            #[doc(hidden)]
12983            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12984            for commissionTrackingCall {
12985                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12986                    Self { validator: tuple.0 }
12987                }
12988            }
12989        }
12990        {
12991            #[doc(hidden)]
12992            #[allow(dead_code)]
12993            type UnderlyingSolTuple<'a> = (
12994                alloy::sol_types::sol_data::Uint<16>,
12995                alloy::sol_types::sol_data::Uint<256>,
12996            );
12997            #[doc(hidden)]
12998            type UnderlyingRustTuple<'a> = (
12999                u16,
13000                alloy::sol_types::private::primitives::aliases::U256,
13001            );
13002            #[cfg(test)]
13003            #[allow(dead_code, unreachable_patterns)]
13004            fn _type_assertion(
13005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13006            ) {
13007                match _t {
13008                    alloy_sol_types::private::AssertTypeEq::<
13009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13010                    >(_) => {}
13011                }
13012            }
13013            #[automatically_derived]
13014            #[doc(hidden)]
13015            impl ::core::convert::From<commissionTrackingReturn>
13016            for UnderlyingRustTuple<'_> {
13017                fn from(value: commissionTrackingReturn) -> Self {
13018                    (value.commission, value.lastIncreaseTime)
13019                }
13020            }
13021            #[automatically_derived]
13022            #[doc(hidden)]
13023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13024            for commissionTrackingReturn {
13025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13026                    Self {
13027                        commission: tuple.0,
13028                        lastIncreaseTime: tuple.1,
13029                    }
13030                }
13031            }
13032        }
13033        impl commissionTrackingReturn {
13034            fn _tokenize(
13035                &self,
13036            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13037                (
13038                    <alloy::sol_types::sol_data::Uint<
13039                        16,
13040                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
13041                    <alloy::sol_types::sol_data::Uint<
13042                        256,
13043                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
13044                )
13045            }
13046        }
13047        #[automatically_derived]
13048        impl alloy_sol_types::SolCall for commissionTrackingCall {
13049            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13050            type Token<'a> = <Self::Parameters<
13051                'a,
13052            > as alloy_sol_types::SolType>::Token<'a>;
13053            type Return = commissionTrackingReturn;
13054            type ReturnTuple<'a> = (
13055                alloy::sol_types::sol_data::Uint<16>,
13056                alloy::sol_types::sol_data::Uint<256>,
13057            );
13058            type ReturnToken<'a> = <Self::ReturnTuple<
13059                'a,
13060            > as alloy_sol_types::SolType>::Token<'a>;
13061            const SIGNATURE: &'static str = "commissionTracking(address)";
13062            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
13063            #[inline]
13064            fn new<'a>(
13065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13066            ) -> Self {
13067                tuple.into()
13068            }
13069            #[inline]
13070            fn tokenize(&self) -> Self::Token<'_> {
13071                (
13072                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13073                        &self.validator,
13074                    ),
13075                )
13076            }
13077            #[inline]
13078            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13079                commissionTrackingReturn::_tokenize(ret)
13080            }
13081            #[inline]
13082            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13083                <Self::ReturnTuple<
13084                    '_,
13085                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13086                    .map(Into::into)
13087            }
13088            #[inline]
13089            fn abi_decode_returns_validate(
13090                data: &[u8],
13091            ) -> alloy_sol_types::Result<Self::Return> {
13092                <Self::ReturnTuple<
13093                    '_,
13094                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13095                    .map(Into::into)
13096            }
13097        }
13098    };
13099    #[derive(serde::Serialize, serde::Deserialize)]
13100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13101    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
13102```solidity
13103function delegate(address validator, uint256 amount) external;
13104```*/
13105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13106    #[derive(Clone)]
13107    pub struct delegateCall {
13108        #[allow(missing_docs)]
13109        pub validator: alloy::sol_types::private::Address,
13110        #[allow(missing_docs)]
13111        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13112    }
13113    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
13114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13115    #[derive(Clone)]
13116    pub struct delegateReturn {}
13117    #[allow(
13118        non_camel_case_types,
13119        non_snake_case,
13120        clippy::pub_underscore_fields,
13121        clippy::style
13122    )]
13123    const _: () = {
13124        use alloy::sol_types as alloy_sol_types;
13125        {
13126            #[doc(hidden)]
13127            #[allow(dead_code)]
13128            type UnderlyingSolTuple<'a> = (
13129                alloy::sol_types::sol_data::Address,
13130                alloy::sol_types::sol_data::Uint<256>,
13131            );
13132            #[doc(hidden)]
13133            type UnderlyingRustTuple<'a> = (
13134                alloy::sol_types::private::Address,
13135                alloy::sol_types::private::primitives::aliases::U256,
13136            );
13137            #[cfg(test)]
13138            #[allow(dead_code, unreachable_patterns)]
13139            fn _type_assertion(
13140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13141            ) {
13142                match _t {
13143                    alloy_sol_types::private::AssertTypeEq::<
13144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13145                    >(_) => {}
13146                }
13147            }
13148            #[automatically_derived]
13149            #[doc(hidden)]
13150            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
13151                fn from(value: delegateCall) -> Self {
13152                    (value.validator, value.amount)
13153                }
13154            }
13155            #[automatically_derived]
13156            #[doc(hidden)]
13157            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
13158                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13159                    Self {
13160                        validator: tuple.0,
13161                        amount: tuple.1,
13162                    }
13163                }
13164            }
13165        }
13166        {
13167            #[doc(hidden)]
13168            #[allow(dead_code)]
13169            type UnderlyingSolTuple<'a> = ();
13170            #[doc(hidden)]
13171            type UnderlyingRustTuple<'a> = ();
13172            #[cfg(test)]
13173            #[allow(dead_code, unreachable_patterns)]
13174            fn _type_assertion(
13175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13176            ) {
13177                match _t {
13178                    alloy_sol_types::private::AssertTypeEq::<
13179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13180                    >(_) => {}
13181                }
13182            }
13183            #[automatically_derived]
13184            #[doc(hidden)]
13185            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
13186                fn from(value: delegateReturn) -> Self {
13187                    ()
13188                }
13189            }
13190            #[automatically_derived]
13191            #[doc(hidden)]
13192            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
13193                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13194                    Self {}
13195                }
13196            }
13197        }
13198        impl delegateReturn {
13199            fn _tokenize(
13200                &self,
13201            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13202                ()
13203            }
13204        }
13205        #[automatically_derived]
13206        impl alloy_sol_types::SolCall for delegateCall {
13207            type Parameters<'a> = (
13208                alloy::sol_types::sol_data::Address,
13209                alloy::sol_types::sol_data::Uint<256>,
13210            );
13211            type Token<'a> = <Self::Parameters<
13212                'a,
13213            > as alloy_sol_types::SolType>::Token<'a>;
13214            type Return = delegateReturn;
13215            type ReturnTuple<'a> = ();
13216            type ReturnToken<'a> = <Self::ReturnTuple<
13217                'a,
13218            > as alloy_sol_types::SolType>::Token<'a>;
13219            const SIGNATURE: &'static str = "delegate(address,uint256)";
13220            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
13221            #[inline]
13222            fn new<'a>(
13223                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13224            ) -> Self {
13225                tuple.into()
13226            }
13227            #[inline]
13228            fn tokenize(&self) -> Self::Token<'_> {
13229                (
13230                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13231                        &self.validator,
13232                    ),
13233                    <alloy::sol_types::sol_data::Uint<
13234                        256,
13235                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13236                )
13237            }
13238            #[inline]
13239            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13240                delegateReturn::_tokenize(ret)
13241            }
13242            #[inline]
13243            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13244                <Self::ReturnTuple<
13245                    '_,
13246                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13247                    .map(Into::into)
13248            }
13249            #[inline]
13250            fn abi_decode_returns_validate(
13251                data: &[u8],
13252            ) -> alloy_sol_types::Result<Self::Return> {
13253                <Self::ReturnTuple<
13254                    '_,
13255                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13256                    .map(Into::into)
13257            }
13258        }
13259    };
13260    #[derive(serde::Serialize, serde::Deserialize)]
13261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13262    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
13263```solidity
13264function delegations(address validator, address delegator) external view returns (uint256 amount);
13265```*/
13266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13267    #[derive(Clone)]
13268    pub struct delegationsCall {
13269        #[allow(missing_docs)]
13270        pub validator: alloy::sol_types::private::Address,
13271        #[allow(missing_docs)]
13272        pub delegator: alloy::sol_types::private::Address,
13273    }
13274    #[derive(serde::Serialize, serde::Deserialize)]
13275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13276    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
13277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13278    #[derive(Clone)]
13279    pub struct delegationsReturn {
13280        #[allow(missing_docs)]
13281        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13282    }
13283    #[allow(
13284        non_camel_case_types,
13285        non_snake_case,
13286        clippy::pub_underscore_fields,
13287        clippy::style
13288    )]
13289    const _: () = {
13290        use alloy::sol_types as alloy_sol_types;
13291        {
13292            #[doc(hidden)]
13293            #[allow(dead_code)]
13294            type UnderlyingSolTuple<'a> = (
13295                alloy::sol_types::sol_data::Address,
13296                alloy::sol_types::sol_data::Address,
13297            );
13298            #[doc(hidden)]
13299            type UnderlyingRustTuple<'a> = (
13300                alloy::sol_types::private::Address,
13301                alloy::sol_types::private::Address,
13302            );
13303            #[cfg(test)]
13304            #[allow(dead_code, unreachable_patterns)]
13305            fn _type_assertion(
13306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13307            ) {
13308                match _t {
13309                    alloy_sol_types::private::AssertTypeEq::<
13310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13311                    >(_) => {}
13312                }
13313            }
13314            #[automatically_derived]
13315            #[doc(hidden)]
13316            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
13317                fn from(value: delegationsCall) -> Self {
13318                    (value.validator, value.delegator)
13319                }
13320            }
13321            #[automatically_derived]
13322            #[doc(hidden)]
13323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
13324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13325                    Self {
13326                        validator: tuple.0,
13327                        delegator: tuple.1,
13328                    }
13329                }
13330            }
13331        }
13332        {
13333            #[doc(hidden)]
13334            #[allow(dead_code)]
13335            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13336            #[doc(hidden)]
13337            type UnderlyingRustTuple<'a> = (
13338                alloy::sol_types::private::primitives::aliases::U256,
13339            );
13340            #[cfg(test)]
13341            #[allow(dead_code, unreachable_patterns)]
13342            fn _type_assertion(
13343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13344            ) {
13345                match _t {
13346                    alloy_sol_types::private::AssertTypeEq::<
13347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13348                    >(_) => {}
13349                }
13350            }
13351            #[automatically_derived]
13352            #[doc(hidden)]
13353            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
13354                fn from(value: delegationsReturn) -> Self {
13355                    (value.amount,)
13356                }
13357            }
13358            #[automatically_derived]
13359            #[doc(hidden)]
13360            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
13361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13362                    Self { amount: tuple.0 }
13363                }
13364            }
13365        }
13366        #[automatically_derived]
13367        impl alloy_sol_types::SolCall for delegationsCall {
13368            type Parameters<'a> = (
13369                alloy::sol_types::sol_data::Address,
13370                alloy::sol_types::sol_data::Address,
13371            );
13372            type Token<'a> = <Self::Parameters<
13373                'a,
13374            > as alloy_sol_types::SolType>::Token<'a>;
13375            type Return = alloy::sol_types::private::primitives::aliases::U256;
13376            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13377            type ReturnToken<'a> = <Self::ReturnTuple<
13378                'a,
13379            > as alloy_sol_types::SolType>::Token<'a>;
13380            const SIGNATURE: &'static str = "delegations(address,address)";
13381            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
13382            #[inline]
13383            fn new<'a>(
13384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13385            ) -> Self {
13386                tuple.into()
13387            }
13388            #[inline]
13389            fn tokenize(&self) -> Self::Token<'_> {
13390                (
13391                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13392                        &self.validator,
13393                    ),
13394                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13395                        &self.delegator,
13396                    ),
13397                )
13398            }
13399            #[inline]
13400            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13401                (
13402                    <alloy::sol_types::sol_data::Uint<
13403                        256,
13404                    > as alloy_sol_types::SolType>::tokenize(ret),
13405                )
13406            }
13407            #[inline]
13408            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13409                <Self::ReturnTuple<
13410                    '_,
13411                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13412                    .map(|r| {
13413                        let r: delegationsReturn = r.into();
13414                        r.amount
13415                    })
13416            }
13417            #[inline]
13418            fn abi_decode_returns_validate(
13419                data: &[u8],
13420            ) -> alloy_sol_types::Result<Self::Return> {
13421                <Self::ReturnTuple<
13422                    '_,
13423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13424                    .map(|r| {
13425                        let r: delegationsReturn = r.into();
13426                        r.amount
13427                    })
13428            }
13429        }
13430    };
13431    #[derive(serde::Serialize, serde::Deserialize)]
13432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13433    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
13434```solidity
13435function deregisterValidator() external;
13436```*/
13437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13438    #[derive(Clone)]
13439    pub struct deregisterValidatorCall;
13440    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
13441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13442    #[derive(Clone)]
13443    pub struct deregisterValidatorReturn {}
13444    #[allow(
13445        non_camel_case_types,
13446        non_snake_case,
13447        clippy::pub_underscore_fields,
13448        clippy::style
13449    )]
13450    const _: () = {
13451        use alloy::sol_types as alloy_sol_types;
13452        {
13453            #[doc(hidden)]
13454            #[allow(dead_code)]
13455            type UnderlyingSolTuple<'a> = ();
13456            #[doc(hidden)]
13457            type UnderlyingRustTuple<'a> = ();
13458            #[cfg(test)]
13459            #[allow(dead_code, unreachable_patterns)]
13460            fn _type_assertion(
13461                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13462            ) {
13463                match _t {
13464                    alloy_sol_types::private::AssertTypeEq::<
13465                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13466                    >(_) => {}
13467                }
13468            }
13469            #[automatically_derived]
13470            #[doc(hidden)]
13471            impl ::core::convert::From<deregisterValidatorCall>
13472            for UnderlyingRustTuple<'_> {
13473                fn from(value: deregisterValidatorCall) -> Self {
13474                    ()
13475                }
13476            }
13477            #[automatically_derived]
13478            #[doc(hidden)]
13479            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13480            for deregisterValidatorCall {
13481                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13482                    Self
13483                }
13484            }
13485        }
13486        {
13487            #[doc(hidden)]
13488            #[allow(dead_code)]
13489            type UnderlyingSolTuple<'a> = ();
13490            #[doc(hidden)]
13491            type UnderlyingRustTuple<'a> = ();
13492            #[cfg(test)]
13493            #[allow(dead_code, unreachable_patterns)]
13494            fn _type_assertion(
13495                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13496            ) {
13497                match _t {
13498                    alloy_sol_types::private::AssertTypeEq::<
13499                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13500                    >(_) => {}
13501                }
13502            }
13503            #[automatically_derived]
13504            #[doc(hidden)]
13505            impl ::core::convert::From<deregisterValidatorReturn>
13506            for UnderlyingRustTuple<'_> {
13507                fn from(value: deregisterValidatorReturn) -> Self {
13508                    ()
13509                }
13510            }
13511            #[automatically_derived]
13512            #[doc(hidden)]
13513            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13514            for deregisterValidatorReturn {
13515                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13516                    Self {}
13517                }
13518            }
13519        }
13520        impl deregisterValidatorReturn {
13521            fn _tokenize(
13522                &self,
13523            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13524                ()
13525            }
13526        }
13527        #[automatically_derived]
13528        impl alloy_sol_types::SolCall for deregisterValidatorCall {
13529            type Parameters<'a> = ();
13530            type Token<'a> = <Self::Parameters<
13531                'a,
13532            > as alloy_sol_types::SolType>::Token<'a>;
13533            type Return = deregisterValidatorReturn;
13534            type ReturnTuple<'a> = ();
13535            type ReturnToken<'a> = <Self::ReturnTuple<
13536                'a,
13537            > as alloy_sol_types::SolType>::Token<'a>;
13538            const SIGNATURE: &'static str = "deregisterValidator()";
13539            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
13540            #[inline]
13541            fn new<'a>(
13542                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13543            ) -> Self {
13544                tuple.into()
13545            }
13546            #[inline]
13547            fn tokenize(&self) -> Self::Token<'_> {
13548                ()
13549            }
13550            #[inline]
13551            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13552                deregisterValidatorReturn::_tokenize(ret)
13553            }
13554            #[inline]
13555            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13556                <Self::ReturnTuple<
13557                    '_,
13558                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13559                    .map(Into::into)
13560            }
13561            #[inline]
13562            fn abi_decode_returns_validate(
13563                data: &[u8],
13564            ) -> alloy_sol_types::Result<Self::Return> {
13565                <Self::ReturnTuple<
13566                    '_,
13567                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13568                    .map(Into::into)
13569            }
13570        }
13571    };
13572    #[derive(serde::Serialize, serde::Deserialize)]
13573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13574    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
13575```solidity
13576function exitEscrowPeriod() external view returns (uint256);
13577```*/
13578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13579    #[derive(Clone)]
13580    pub struct exitEscrowPeriodCall;
13581    #[derive(serde::Serialize, serde::Deserialize)]
13582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13583    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
13584    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13585    #[derive(Clone)]
13586    pub struct exitEscrowPeriodReturn {
13587        #[allow(missing_docs)]
13588        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13589    }
13590    #[allow(
13591        non_camel_case_types,
13592        non_snake_case,
13593        clippy::pub_underscore_fields,
13594        clippy::style
13595    )]
13596    const _: () = {
13597        use alloy::sol_types as alloy_sol_types;
13598        {
13599            #[doc(hidden)]
13600            #[allow(dead_code)]
13601            type UnderlyingSolTuple<'a> = ();
13602            #[doc(hidden)]
13603            type UnderlyingRustTuple<'a> = ();
13604            #[cfg(test)]
13605            #[allow(dead_code, unreachable_patterns)]
13606            fn _type_assertion(
13607                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13608            ) {
13609                match _t {
13610                    alloy_sol_types::private::AssertTypeEq::<
13611                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13612                    >(_) => {}
13613                }
13614            }
13615            #[automatically_derived]
13616            #[doc(hidden)]
13617            impl ::core::convert::From<exitEscrowPeriodCall>
13618            for UnderlyingRustTuple<'_> {
13619                fn from(value: exitEscrowPeriodCall) -> Self {
13620                    ()
13621                }
13622            }
13623            #[automatically_derived]
13624            #[doc(hidden)]
13625            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13626            for exitEscrowPeriodCall {
13627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13628                    Self
13629                }
13630            }
13631        }
13632        {
13633            #[doc(hidden)]
13634            #[allow(dead_code)]
13635            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13636            #[doc(hidden)]
13637            type UnderlyingRustTuple<'a> = (
13638                alloy::sol_types::private::primitives::aliases::U256,
13639            );
13640            #[cfg(test)]
13641            #[allow(dead_code, unreachable_patterns)]
13642            fn _type_assertion(
13643                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13644            ) {
13645                match _t {
13646                    alloy_sol_types::private::AssertTypeEq::<
13647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13648                    >(_) => {}
13649                }
13650            }
13651            #[automatically_derived]
13652            #[doc(hidden)]
13653            impl ::core::convert::From<exitEscrowPeriodReturn>
13654            for UnderlyingRustTuple<'_> {
13655                fn from(value: exitEscrowPeriodReturn) -> Self {
13656                    (value._0,)
13657                }
13658            }
13659            #[automatically_derived]
13660            #[doc(hidden)]
13661            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13662            for exitEscrowPeriodReturn {
13663                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13664                    Self { _0: tuple.0 }
13665                }
13666            }
13667        }
13668        #[automatically_derived]
13669        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
13670            type Parameters<'a> = ();
13671            type Token<'a> = <Self::Parameters<
13672                'a,
13673            > as alloy_sol_types::SolType>::Token<'a>;
13674            type Return = alloy::sol_types::private::primitives::aliases::U256;
13675            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13676            type ReturnToken<'a> = <Self::ReturnTuple<
13677                'a,
13678            > as alloy_sol_types::SolType>::Token<'a>;
13679            const SIGNATURE: &'static str = "exitEscrowPeriod()";
13680            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
13681            #[inline]
13682            fn new<'a>(
13683                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13684            ) -> Self {
13685                tuple.into()
13686            }
13687            #[inline]
13688            fn tokenize(&self) -> Self::Token<'_> {
13689                ()
13690            }
13691            #[inline]
13692            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13693                (
13694                    <alloy::sol_types::sol_data::Uint<
13695                        256,
13696                    > as alloy_sol_types::SolType>::tokenize(ret),
13697                )
13698            }
13699            #[inline]
13700            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13701                <Self::ReturnTuple<
13702                    '_,
13703                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13704                    .map(|r| {
13705                        let r: exitEscrowPeriodReturn = r.into();
13706                        r._0
13707                    })
13708            }
13709            #[inline]
13710            fn abi_decode_returns_validate(
13711                data: &[u8],
13712            ) -> alloy_sol_types::Result<Self::Return> {
13713                <Self::ReturnTuple<
13714                    '_,
13715                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13716                    .map(|r| {
13717                        let r: exitEscrowPeriodReturn = r.into();
13718                        r._0
13719                    })
13720            }
13721        }
13722    };
13723    #[derive(serde::Serialize, serde::Deserialize)]
13724    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13725    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
13726```solidity
13727function getRoleAdmin(bytes32 role) external view returns (bytes32);
13728```*/
13729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13730    #[derive(Clone)]
13731    pub struct getRoleAdminCall {
13732        #[allow(missing_docs)]
13733        pub role: alloy::sol_types::private::FixedBytes<32>,
13734    }
13735    #[derive(serde::Serialize, serde::Deserialize)]
13736    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13737    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
13738    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13739    #[derive(Clone)]
13740    pub struct getRoleAdminReturn {
13741        #[allow(missing_docs)]
13742        pub _0: alloy::sol_types::private::FixedBytes<32>,
13743    }
13744    #[allow(
13745        non_camel_case_types,
13746        non_snake_case,
13747        clippy::pub_underscore_fields,
13748        clippy::style
13749    )]
13750    const _: () = {
13751        use alloy::sol_types as alloy_sol_types;
13752        {
13753            #[doc(hidden)]
13754            #[allow(dead_code)]
13755            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13756            #[doc(hidden)]
13757            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13758            #[cfg(test)]
13759            #[allow(dead_code, unreachable_patterns)]
13760            fn _type_assertion(
13761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13762            ) {
13763                match _t {
13764                    alloy_sol_types::private::AssertTypeEq::<
13765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13766                    >(_) => {}
13767                }
13768            }
13769            #[automatically_derived]
13770            #[doc(hidden)]
13771            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
13772                fn from(value: getRoleAdminCall) -> Self {
13773                    (value.role,)
13774                }
13775            }
13776            #[automatically_derived]
13777            #[doc(hidden)]
13778            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
13779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13780                    Self { role: tuple.0 }
13781                }
13782            }
13783        }
13784        {
13785            #[doc(hidden)]
13786            #[allow(dead_code)]
13787            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13788            #[doc(hidden)]
13789            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13790            #[cfg(test)]
13791            #[allow(dead_code, unreachable_patterns)]
13792            fn _type_assertion(
13793                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13794            ) {
13795                match _t {
13796                    alloy_sol_types::private::AssertTypeEq::<
13797                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13798                    >(_) => {}
13799                }
13800            }
13801            #[automatically_derived]
13802            #[doc(hidden)]
13803            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
13804                fn from(value: getRoleAdminReturn) -> Self {
13805                    (value._0,)
13806                }
13807            }
13808            #[automatically_derived]
13809            #[doc(hidden)]
13810            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
13811                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13812                    Self { _0: tuple.0 }
13813                }
13814            }
13815        }
13816        #[automatically_derived]
13817        impl alloy_sol_types::SolCall for getRoleAdminCall {
13818            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13819            type Token<'a> = <Self::Parameters<
13820                'a,
13821            > as alloy_sol_types::SolType>::Token<'a>;
13822            type Return = alloy::sol_types::private::FixedBytes<32>;
13823            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13824            type ReturnToken<'a> = <Self::ReturnTuple<
13825                'a,
13826            > as alloy_sol_types::SolType>::Token<'a>;
13827            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
13828            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
13829            #[inline]
13830            fn new<'a>(
13831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13832            ) -> Self {
13833                tuple.into()
13834            }
13835            #[inline]
13836            fn tokenize(&self) -> Self::Token<'_> {
13837                (
13838                    <alloy::sol_types::sol_data::FixedBytes<
13839                        32,
13840                    > as alloy_sol_types::SolType>::tokenize(&self.role),
13841                )
13842            }
13843            #[inline]
13844            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13845                (
13846                    <alloy::sol_types::sol_data::FixedBytes<
13847                        32,
13848                    > as alloy_sol_types::SolType>::tokenize(ret),
13849                )
13850            }
13851            #[inline]
13852            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13853                <Self::ReturnTuple<
13854                    '_,
13855                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13856                    .map(|r| {
13857                        let r: getRoleAdminReturn = r.into();
13858                        r._0
13859                    })
13860            }
13861            #[inline]
13862            fn abi_decode_returns_validate(
13863                data: &[u8],
13864            ) -> alloy_sol_types::Result<Self::Return> {
13865                <Self::ReturnTuple<
13866                    '_,
13867                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13868                    .map(|r| {
13869                        let r: getRoleAdminReturn = r.into();
13870                        r._0
13871                    })
13872            }
13873        }
13874    };
13875    #[derive(serde::Serialize, serde::Deserialize)]
13876    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13877    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
13878```solidity
13879function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
13880```*/
13881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13882    #[derive(Clone)]
13883    pub struct getUndelegationCall {
13884        #[allow(missing_docs)]
13885        pub validator: alloy::sol_types::private::Address,
13886        #[allow(missing_docs)]
13887        pub delegator: alloy::sol_types::private::Address,
13888    }
13889    #[derive(serde::Serialize, serde::Deserialize)]
13890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13891    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
13892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13893    #[derive(Clone)]
13894    pub struct getUndelegationReturn {
13895        #[allow(missing_docs)]
13896        pub id: u64,
13897        #[allow(missing_docs)]
13898        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13899        #[allow(missing_docs)]
13900        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
13901    }
13902    #[allow(
13903        non_camel_case_types,
13904        non_snake_case,
13905        clippy::pub_underscore_fields,
13906        clippy::style
13907    )]
13908    const _: () = {
13909        use alloy::sol_types as alloy_sol_types;
13910        {
13911            #[doc(hidden)]
13912            #[allow(dead_code)]
13913            type UnderlyingSolTuple<'a> = (
13914                alloy::sol_types::sol_data::Address,
13915                alloy::sol_types::sol_data::Address,
13916            );
13917            #[doc(hidden)]
13918            type UnderlyingRustTuple<'a> = (
13919                alloy::sol_types::private::Address,
13920                alloy::sol_types::private::Address,
13921            );
13922            #[cfg(test)]
13923            #[allow(dead_code, unreachable_patterns)]
13924            fn _type_assertion(
13925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13926            ) {
13927                match _t {
13928                    alloy_sol_types::private::AssertTypeEq::<
13929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13930                    >(_) => {}
13931                }
13932            }
13933            #[automatically_derived]
13934            #[doc(hidden)]
13935            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
13936                fn from(value: getUndelegationCall) -> Self {
13937                    (value.validator, value.delegator)
13938                }
13939            }
13940            #[automatically_derived]
13941            #[doc(hidden)]
13942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
13943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13944                    Self {
13945                        validator: tuple.0,
13946                        delegator: tuple.1,
13947                    }
13948                }
13949            }
13950        }
13951        {
13952            #[doc(hidden)]
13953            #[allow(dead_code)]
13954            type UnderlyingSolTuple<'a> = (
13955                alloy::sol_types::sol_data::Uint<64>,
13956                alloy::sol_types::sol_data::Uint<256>,
13957                alloy::sol_types::sol_data::Uint<256>,
13958            );
13959            #[doc(hidden)]
13960            type UnderlyingRustTuple<'a> = (
13961                u64,
13962                alloy::sol_types::private::primitives::aliases::U256,
13963                alloy::sol_types::private::primitives::aliases::U256,
13964            );
13965            #[cfg(test)]
13966            #[allow(dead_code, unreachable_patterns)]
13967            fn _type_assertion(
13968                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13969            ) {
13970                match _t {
13971                    alloy_sol_types::private::AssertTypeEq::<
13972                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13973                    >(_) => {}
13974                }
13975            }
13976            #[automatically_derived]
13977            #[doc(hidden)]
13978            impl ::core::convert::From<getUndelegationReturn>
13979            for UnderlyingRustTuple<'_> {
13980                fn from(value: getUndelegationReturn) -> Self {
13981                    (value.id, value.amount, value.unlocksAt)
13982                }
13983            }
13984            #[automatically_derived]
13985            #[doc(hidden)]
13986            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13987            for getUndelegationReturn {
13988                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13989                    Self {
13990                        id: tuple.0,
13991                        amount: tuple.1,
13992                        unlocksAt: tuple.2,
13993                    }
13994                }
13995            }
13996        }
13997        impl getUndelegationReturn {
13998            fn _tokenize(
13999                &self,
14000            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14001                (
14002                    <alloy::sol_types::sol_data::Uint<
14003                        64,
14004                    > as alloy_sol_types::SolType>::tokenize(&self.id),
14005                    <alloy::sol_types::sol_data::Uint<
14006                        256,
14007                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
14008                    <alloy::sol_types::sol_data::Uint<
14009                        256,
14010                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
14011                )
14012            }
14013        }
14014        #[automatically_derived]
14015        impl alloy_sol_types::SolCall for getUndelegationCall {
14016            type Parameters<'a> = (
14017                alloy::sol_types::sol_data::Address,
14018                alloy::sol_types::sol_data::Address,
14019            );
14020            type Token<'a> = <Self::Parameters<
14021                'a,
14022            > as alloy_sol_types::SolType>::Token<'a>;
14023            type Return = getUndelegationReturn;
14024            type ReturnTuple<'a> = (
14025                alloy::sol_types::sol_data::Uint<64>,
14026                alloy::sol_types::sol_data::Uint<256>,
14027                alloy::sol_types::sol_data::Uint<256>,
14028            );
14029            type ReturnToken<'a> = <Self::ReturnTuple<
14030                'a,
14031            > as alloy_sol_types::SolType>::Token<'a>;
14032            const SIGNATURE: &'static str = "getUndelegation(address,address)";
14033            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
14034            #[inline]
14035            fn new<'a>(
14036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14037            ) -> Self {
14038                tuple.into()
14039            }
14040            #[inline]
14041            fn tokenize(&self) -> Self::Token<'_> {
14042                (
14043                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14044                        &self.validator,
14045                    ),
14046                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14047                        &self.delegator,
14048                    ),
14049                )
14050            }
14051            #[inline]
14052            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14053                getUndelegationReturn::_tokenize(ret)
14054            }
14055            #[inline]
14056            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14057                <Self::ReturnTuple<
14058                    '_,
14059                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14060                    .map(Into::into)
14061            }
14062            #[inline]
14063            fn abi_decode_returns_validate(
14064                data: &[u8],
14065            ) -> alloy_sol_types::Result<Self::Return> {
14066                <Self::ReturnTuple<
14067                    '_,
14068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14069                    .map(Into::into)
14070            }
14071        }
14072    };
14073    #[derive(serde::Serialize, serde::Deserialize)]
14074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14075    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
14076```solidity
14077function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
14078```*/
14079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14080    #[derive(Clone)]
14081    pub struct getVersionCall;
14082    #[derive(serde::Serialize, serde::Deserialize)]
14083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14084    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
14085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14086    #[derive(Clone)]
14087    pub struct getVersionReturn {
14088        #[allow(missing_docs)]
14089        pub majorVersion: u8,
14090        #[allow(missing_docs)]
14091        pub minorVersion: u8,
14092        #[allow(missing_docs)]
14093        pub patchVersion: u8,
14094    }
14095    #[allow(
14096        non_camel_case_types,
14097        non_snake_case,
14098        clippy::pub_underscore_fields,
14099        clippy::style
14100    )]
14101    const _: () = {
14102        use alloy::sol_types as alloy_sol_types;
14103        {
14104            #[doc(hidden)]
14105            #[allow(dead_code)]
14106            type UnderlyingSolTuple<'a> = ();
14107            #[doc(hidden)]
14108            type UnderlyingRustTuple<'a> = ();
14109            #[cfg(test)]
14110            #[allow(dead_code, unreachable_patterns)]
14111            fn _type_assertion(
14112                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14113            ) {
14114                match _t {
14115                    alloy_sol_types::private::AssertTypeEq::<
14116                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14117                    >(_) => {}
14118                }
14119            }
14120            #[automatically_derived]
14121            #[doc(hidden)]
14122            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
14123                fn from(value: getVersionCall) -> Self {
14124                    ()
14125                }
14126            }
14127            #[automatically_derived]
14128            #[doc(hidden)]
14129            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
14130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14131                    Self
14132                }
14133            }
14134        }
14135        {
14136            #[doc(hidden)]
14137            #[allow(dead_code)]
14138            type UnderlyingSolTuple<'a> = (
14139                alloy::sol_types::sol_data::Uint<8>,
14140                alloy::sol_types::sol_data::Uint<8>,
14141                alloy::sol_types::sol_data::Uint<8>,
14142            );
14143            #[doc(hidden)]
14144            type UnderlyingRustTuple<'a> = (u8, u8, u8);
14145            #[cfg(test)]
14146            #[allow(dead_code, unreachable_patterns)]
14147            fn _type_assertion(
14148                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14149            ) {
14150                match _t {
14151                    alloy_sol_types::private::AssertTypeEq::<
14152                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14153                    >(_) => {}
14154                }
14155            }
14156            #[automatically_derived]
14157            #[doc(hidden)]
14158            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
14159                fn from(value: getVersionReturn) -> Self {
14160                    (value.majorVersion, value.minorVersion, value.patchVersion)
14161                }
14162            }
14163            #[automatically_derived]
14164            #[doc(hidden)]
14165            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
14166                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14167                    Self {
14168                        majorVersion: tuple.0,
14169                        minorVersion: tuple.1,
14170                        patchVersion: tuple.2,
14171                    }
14172                }
14173            }
14174        }
14175        impl getVersionReturn {
14176            fn _tokenize(
14177                &self,
14178            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14179                (
14180                    <alloy::sol_types::sol_data::Uint<
14181                        8,
14182                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
14183                    <alloy::sol_types::sol_data::Uint<
14184                        8,
14185                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
14186                    <alloy::sol_types::sol_data::Uint<
14187                        8,
14188                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
14189                )
14190            }
14191        }
14192        #[automatically_derived]
14193        impl alloy_sol_types::SolCall for getVersionCall {
14194            type Parameters<'a> = ();
14195            type Token<'a> = <Self::Parameters<
14196                'a,
14197            > as alloy_sol_types::SolType>::Token<'a>;
14198            type Return = getVersionReturn;
14199            type ReturnTuple<'a> = (
14200                alloy::sol_types::sol_data::Uint<8>,
14201                alloy::sol_types::sol_data::Uint<8>,
14202                alloy::sol_types::sol_data::Uint<8>,
14203            );
14204            type ReturnToken<'a> = <Self::ReturnTuple<
14205                'a,
14206            > as alloy_sol_types::SolType>::Token<'a>;
14207            const SIGNATURE: &'static str = "getVersion()";
14208            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
14209            #[inline]
14210            fn new<'a>(
14211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14212            ) -> Self {
14213                tuple.into()
14214            }
14215            #[inline]
14216            fn tokenize(&self) -> Self::Token<'_> {
14217                ()
14218            }
14219            #[inline]
14220            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14221                getVersionReturn::_tokenize(ret)
14222            }
14223            #[inline]
14224            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14225                <Self::ReturnTuple<
14226                    '_,
14227                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14228                    .map(Into::into)
14229            }
14230            #[inline]
14231            fn abi_decode_returns_validate(
14232                data: &[u8],
14233            ) -> alloy_sol_types::Result<Self::Return> {
14234                <Self::ReturnTuple<
14235                    '_,
14236                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14237                    .map(Into::into)
14238            }
14239        }
14240    };
14241    #[derive(serde::Serialize, serde::Deserialize)]
14242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14243    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
14244```solidity
14245function grantRole(bytes32 role, address account) external;
14246```*/
14247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14248    #[derive(Clone)]
14249    pub struct grantRoleCall {
14250        #[allow(missing_docs)]
14251        pub role: alloy::sol_types::private::FixedBytes<32>,
14252        #[allow(missing_docs)]
14253        pub account: alloy::sol_types::private::Address,
14254    }
14255    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
14256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14257    #[derive(Clone)]
14258    pub struct grantRoleReturn {}
14259    #[allow(
14260        non_camel_case_types,
14261        non_snake_case,
14262        clippy::pub_underscore_fields,
14263        clippy::style
14264    )]
14265    const _: () = {
14266        use alloy::sol_types as alloy_sol_types;
14267        {
14268            #[doc(hidden)]
14269            #[allow(dead_code)]
14270            type UnderlyingSolTuple<'a> = (
14271                alloy::sol_types::sol_data::FixedBytes<32>,
14272                alloy::sol_types::sol_data::Address,
14273            );
14274            #[doc(hidden)]
14275            type UnderlyingRustTuple<'a> = (
14276                alloy::sol_types::private::FixedBytes<32>,
14277                alloy::sol_types::private::Address,
14278            );
14279            #[cfg(test)]
14280            #[allow(dead_code, unreachable_patterns)]
14281            fn _type_assertion(
14282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14283            ) {
14284                match _t {
14285                    alloy_sol_types::private::AssertTypeEq::<
14286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14287                    >(_) => {}
14288                }
14289            }
14290            #[automatically_derived]
14291            #[doc(hidden)]
14292            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
14293                fn from(value: grantRoleCall) -> Self {
14294                    (value.role, value.account)
14295                }
14296            }
14297            #[automatically_derived]
14298            #[doc(hidden)]
14299            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
14300                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14301                    Self {
14302                        role: tuple.0,
14303                        account: tuple.1,
14304                    }
14305                }
14306            }
14307        }
14308        {
14309            #[doc(hidden)]
14310            #[allow(dead_code)]
14311            type UnderlyingSolTuple<'a> = ();
14312            #[doc(hidden)]
14313            type UnderlyingRustTuple<'a> = ();
14314            #[cfg(test)]
14315            #[allow(dead_code, unreachable_patterns)]
14316            fn _type_assertion(
14317                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14318            ) {
14319                match _t {
14320                    alloy_sol_types::private::AssertTypeEq::<
14321                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14322                    >(_) => {}
14323                }
14324            }
14325            #[automatically_derived]
14326            #[doc(hidden)]
14327            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
14328                fn from(value: grantRoleReturn) -> Self {
14329                    ()
14330                }
14331            }
14332            #[automatically_derived]
14333            #[doc(hidden)]
14334            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
14335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14336                    Self {}
14337                }
14338            }
14339        }
14340        impl grantRoleReturn {
14341            fn _tokenize(
14342                &self,
14343            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14344                ()
14345            }
14346        }
14347        #[automatically_derived]
14348        impl alloy_sol_types::SolCall for grantRoleCall {
14349            type Parameters<'a> = (
14350                alloy::sol_types::sol_data::FixedBytes<32>,
14351                alloy::sol_types::sol_data::Address,
14352            );
14353            type Token<'a> = <Self::Parameters<
14354                'a,
14355            > as alloy_sol_types::SolType>::Token<'a>;
14356            type Return = grantRoleReturn;
14357            type ReturnTuple<'a> = ();
14358            type ReturnToken<'a> = <Self::ReturnTuple<
14359                'a,
14360            > as alloy_sol_types::SolType>::Token<'a>;
14361            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
14362            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
14363            #[inline]
14364            fn new<'a>(
14365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14366            ) -> Self {
14367                tuple.into()
14368            }
14369            #[inline]
14370            fn tokenize(&self) -> Self::Token<'_> {
14371                (
14372                    <alloy::sol_types::sol_data::FixedBytes<
14373                        32,
14374                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14375                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14376                        &self.account,
14377                    ),
14378                )
14379            }
14380            #[inline]
14381            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14382                grantRoleReturn::_tokenize(ret)
14383            }
14384            #[inline]
14385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14386                <Self::ReturnTuple<
14387                    '_,
14388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14389                    .map(Into::into)
14390            }
14391            #[inline]
14392            fn abi_decode_returns_validate(
14393                data: &[u8],
14394            ) -> alloy_sol_types::Result<Self::Return> {
14395                <Self::ReturnTuple<
14396                    '_,
14397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14398                    .map(Into::into)
14399            }
14400        }
14401    };
14402    #[derive(serde::Serialize, serde::Deserialize)]
14403    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14404    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
14405```solidity
14406function hasRole(bytes32 role, address account) external view returns (bool);
14407```*/
14408    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14409    #[derive(Clone)]
14410    pub struct hasRoleCall {
14411        #[allow(missing_docs)]
14412        pub role: alloy::sol_types::private::FixedBytes<32>,
14413        #[allow(missing_docs)]
14414        pub account: alloy::sol_types::private::Address,
14415    }
14416    #[derive(serde::Serialize, serde::Deserialize)]
14417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14418    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
14419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14420    #[derive(Clone)]
14421    pub struct hasRoleReturn {
14422        #[allow(missing_docs)]
14423        pub _0: bool,
14424    }
14425    #[allow(
14426        non_camel_case_types,
14427        non_snake_case,
14428        clippy::pub_underscore_fields,
14429        clippy::style
14430    )]
14431    const _: () = {
14432        use alloy::sol_types as alloy_sol_types;
14433        {
14434            #[doc(hidden)]
14435            #[allow(dead_code)]
14436            type UnderlyingSolTuple<'a> = (
14437                alloy::sol_types::sol_data::FixedBytes<32>,
14438                alloy::sol_types::sol_data::Address,
14439            );
14440            #[doc(hidden)]
14441            type UnderlyingRustTuple<'a> = (
14442                alloy::sol_types::private::FixedBytes<32>,
14443                alloy::sol_types::private::Address,
14444            );
14445            #[cfg(test)]
14446            #[allow(dead_code, unreachable_patterns)]
14447            fn _type_assertion(
14448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14449            ) {
14450                match _t {
14451                    alloy_sol_types::private::AssertTypeEq::<
14452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14453                    >(_) => {}
14454                }
14455            }
14456            #[automatically_derived]
14457            #[doc(hidden)]
14458            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
14459                fn from(value: hasRoleCall) -> Self {
14460                    (value.role, value.account)
14461                }
14462            }
14463            #[automatically_derived]
14464            #[doc(hidden)]
14465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
14466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14467                    Self {
14468                        role: tuple.0,
14469                        account: tuple.1,
14470                    }
14471                }
14472            }
14473        }
14474        {
14475            #[doc(hidden)]
14476            #[allow(dead_code)]
14477            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14478            #[doc(hidden)]
14479            type UnderlyingRustTuple<'a> = (bool,);
14480            #[cfg(test)]
14481            #[allow(dead_code, unreachable_patterns)]
14482            fn _type_assertion(
14483                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14484            ) {
14485                match _t {
14486                    alloy_sol_types::private::AssertTypeEq::<
14487                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14488                    >(_) => {}
14489                }
14490            }
14491            #[automatically_derived]
14492            #[doc(hidden)]
14493            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
14494                fn from(value: hasRoleReturn) -> Self {
14495                    (value._0,)
14496                }
14497            }
14498            #[automatically_derived]
14499            #[doc(hidden)]
14500            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
14501                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14502                    Self { _0: tuple.0 }
14503                }
14504            }
14505        }
14506        #[automatically_derived]
14507        impl alloy_sol_types::SolCall for hasRoleCall {
14508            type Parameters<'a> = (
14509                alloy::sol_types::sol_data::FixedBytes<32>,
14510                alloy::sol_types::sol_data::Address,
14511            );
14512            type Token<'a> = <Self::Parameters<
14513                'a,
14514            > as alloy_sol_types::SolType>::Token<'a>;
14515            type Return = bool;
14516            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14517            type ReturnToken<'a> = <Self::ReturnTuple<
14518                'a,
14519            > as alloy_sol_types::SolType>::Token<'a>;
14520            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
14521            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
14522            #[inline]
14523            fn new<'a>(
14524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14525            ) -> Self {
14526                tuple.into()
14527            }
14528            #[inline]
14529            fn tokenize(&self) -> Self::Token<'_> {
14530                (
14531                    <alloy::sol_types::sol_data::FixedBytes<
14532                        32,
14533                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14534                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14535                        &self.account,
14536                    ),
14537                )
14538            }
14539            #[inline]
14540            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14541                (
14542                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14543                        ret,
14544                    ),
14545                )
14546            }
14547            #[inline]
14548            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14549                <Self::ReturnTuple<
14550                    '_,
14551                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14552                    .map(|r| {
14553                        let r: hasRoleReturn = r.into();
14554                        r._0
14555                    })
14556            }
14557            #[inline]
14558            fn abi_decode_returns_validate(
14559                data: &[u8],
14560            ) -> alloy_sol_types::Result<Self::Return> {
14561                <Self::ReturnTuple<
14562                    '_,
14563                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14564                    .map(|r| {
14565                        let r: hasRoleReturn = r.into();
14566                        r._0
14567                    })
14568            }
14569        }
14570    };
14571    #[derive(serde::Serialize, serde::Deserialize)]
14572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14573    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
14574```solidity
14575function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
14576```*/
14577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14578    #[derive(Clone)]
14579    pub struct initializeCall {
14580        #[allow(missing_docs)]
14581        pub _tokenAddress: alloy::sol_types::private::Address,
14582        #[allow(missing_docs)]
14583        pub _lightClientAddress: alloy::sol_types::private::Address,
14584        #[allow(missing_docs)]
14585        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
14586        #[allow(missing_docs)]
14587        pub _timelock: alloy::sol_types::private::Address,
14588    }
14589    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
14590    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14591    #[derive(Clone)]
14592    pub struct initializeReturn {}
14593    #[allow(
14594        non_camel_case_types,
14595        non_snake_case,
14596        clippy::pub_underscore_fields,
14597        clippy::style
14598    )]
14599    const _: () = {
14600        use alloy::sol_types as alloy_sol_types;
14601        {
14602            #[doc(hidden)]
14603            #[allow(dead_code)]
14604            type UnderlyingSolTuple<'a> = (
14605                alloy::sol_types::sol_data::Address,
14606                alloy::sol_types::sol_data::Address,
14607                alloy::sol_types::sol_data::Uint<256>,
14608                alloy::sol_types::sol_data::Address,
14609            );
14610            #[doc(hidden)]
14611            type UnderlyingRustTuple<'a> = (
14612                alloy::sol_types::private::Address,
14613                alloy::sol_types::private::Address,
14614                alloy::sol_types::private::primitives::aliases::U256,
14615                alloy::sol_types::private::Address,
14616            );
14617            #[cfg(test)]
14618            #[allow(dead_code, unreachable_patterns)]
14619            fn _type_assertion(
14620                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14621            ) {
14622                match _t {
14623                    alloy_sol_types::private::AssertTypeEq::<
14624                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14625                    >(_) => {}
14626                }
14627            }
14628            #[automatically_derived]
14629            #[doc(hidden)]
14630            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
14631                fn from(value: initializeCall) -> Self {
14632                    (
14633                        value._tokenAddress,
14634                        value._lightClientAddress,
14635                        value._exitEscrowPeriod,
14636                        value._timelock,
14637                    )
14638                }
14639            }
14640            #[automatically_derived]
14641            #[doc(hidden)]
14642            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
14643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14644                    Self {
14645                        _tokenAddress: tuple.0,
14646                        _lightClientAddress: tuple.1,
14647                        _exitEscrowPeriod: tuple.2,
14648                        _timelock: tuple.3,
14649                    }
14650                }
14651            }
14652        }
14653        {
14654            #[doc(hidden)]
14655            #[allow(dead_code)]
14656            type UnderlyingSolTuple<'a> = ();
14657            #[doc(hidden)]
14658            type UnderlyingRustTuple<'a> = ();
14659            #[cfg(test)]
14660            #[allow(dead_code, unreachable_patterns)]
14661            fn _type_assertion(
14662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14663            ) {
14664                match _t {
14665                    alloy_sol_types::private::AssertTypeEq::<
14666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14667                    >(_) => {}
14668                }
14669            }
14670            #[automatically_derived]
14671            #[doc(hidden)]
14672            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
14673                fn from(value: initializeReturn) -> Self {
14674                    ()
14675                }
14676            }
14677            #[automatically_derived]
14678            #[doc(hidden)]
14679            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
14680                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14681                    Self {}
14682                }
14683            }
14684        }
14685        impl initializeReturn {
14686            fn _tokenize(
14687                &self,
14688            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14689                ()
14690            }
14691        }
14692        #[automatically_derived]
14693        impl alloy_sol_types::SolCall for initializeCall {
14694            type Parameters<'a> = (
14695                alloy::sol_types::sol_data::Address,
14696                alloy::sol_types::sol_data::Address,
14697                alloy::sol_types::sol_data::Uint<256>,
14698                alloy::sol_types::sol_data::Address,
14699            );
14700            type Token<'a> = <Self::Parameters<
14701                'a,
14702            > as alloy_sol_types::SolType>::Token<'a>;
14703            type Return = initializeReturn;
14704            type ReturnTuple<'a> = ();
14705            type ReturnToken<'a> = <Self::ReturnTuple<
14706                'a,
14707            > as alloy_sol_types::SolType>::Token<'a>;
14708            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
14709            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
14710            #[inline]
14711            fn new<'a>(
14712                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14713            ) -> Self {
14714                tuple.into()
14715            }
14716            #[inline]
14717            fn tokenize(&self) -> Self::Token<'_> {
14718                (
14719                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14720                        &self._tokenAddress,
14721                    ),
14722                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14723                        &self._lightClientAddress,
14724                    ),
14725                    <alloy::sol_types::sol_data::Uint<
14726                        256,
14727                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
14728                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14729                        &self._timelock,
14730                    ),
14731                )
14732            }
14733            #[inline]
14734            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14735                initializeReturn::_tokenize(ret)
14736            }
14737            #[inline]
14738            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14739                <Self::ReturnTuple<
14740                    '_,
14741                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14742                    .map(Into::into)
14743            }
14744            #[inline]
14745            fn abi_decode_returns_validate(
14746                data: &[u8],
14747            ) -> alloy_sol_types::Result<Self::Return> {
14748                <Self::ReturnTuple<
14749                    '_,
14750                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14751                    .map(Into::into)
14752            }
14753        }
14754    };
14755    #[derive(serde::Serialize, serde::Deserialize)]
14756    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14757    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
14758```solidity
14759function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
14760```*/
14761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14762    #[derive(Clone)]
14763    pub struct initializeV2Call {
14764        #[allow(missing_docs)]
14765        pub pauser: alloy::sol_types::private::Address,
14766        #[allow(missing_docs)]
14767        pub admin: alloy::sol_types::private::Address,
14768        #[allow(missing_docs)]
14769        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
14770        #[allow(missing_docs)]
14771        pub initialCommissions: alloy::sol_types::private::Vec<
14772            <InitialCommission as alloy::sol_types::SolType>::RustType,
14773        >,
14774    }
14775    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
14776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14777    #[derive(Clone)]
14778    pub struct initializeV2Return {}
14779    #[allow(
14780        non_camel_case_types,
14781        non_snake_case,
14782        clippy::pub_underscore_fields,
14783        clippy::style
14784    )]
14785    const _: () = {
14786        use alloy::sol_types as alloy_sol_types;
14787        {
14788            #[doc(hidden)]
14789            #[allow(dead_code)]
14790            type UnderlyingSolTuple<'a> = (
14791                alloy::sol_types::sol_data::Address,
14792                alloy::sol_types::sol_data::Address,
14793                alloy::sol_types::sol_data::Uint<256>,
14794                alloy::sol_types::sol_data::Array<InitialCommission>,
14795            );
14796            #[doc(hidden)]
14797            type UnderlyingRustTuple<'a> = (
14798                alloy::sol_types::private::Address,
14799                alloy::sol_types::private::Address,
14800                alloy::sol_types::private::primitives::aliases::U256,
14801                alloy::sol_types::private::Vec<
14802                    <InitialCommission as alloy::sol_types::SolType>::RustType,
14803                >,
14804            );
14805            #[cfg(test)]
14806            #[allow(dead_code, unreachable_patterns)]
14807            fn _type_assertion(
14808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14809            ) {
14810                match _t {
14811                    alloy_sol_types::private::AssertTypeEq::<
14812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14813                    >(_) => {}
14814                }
14815            }
14816            #[automatically_derived]
14817            #[doc(hidden)]
14818            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
14819                fn from(value: initializeV2Call) -> Self {
14820                    (
14821                        value.pauser,
14822                        value.admin,
14823                        value.initialActiveStake,
14824                        value.initialCommissions,
14825                    )
14826                }
14827            }
14828            #[automatically_derived]
14829            #[doc(hidden)]
14830            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
14831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14832                    Self {
14833                        pauser: tuple.0,
14834                        admin: tuple.1,
14835                        initialActiveStake: tuple.2,
14836                        initialCommissions: tuple.3,
14837                    }
14838                }
14839            }
14840        }
14841        {
14842            #[doc(hidden)]
14843            #[allow(dead_code)]
14844            type UnderlyingSolTuple<'a> = ();
14845            #[doc(hidden)]
14846            type UnderlyingRustTuple<'a> = ();
14847            #[cfg(test)]
14848            #[allow(dead_code, unreachable_patterns)]
14849            fn _type_assertion(
14850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14851            ) {
14852                match _t {
14853                    alloy_sol_types::private::AssertTypeEq::<
14854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14855                    >(_) => {}
14856                }
14857            }
14858            #[automatically_derived]
14859            #[doc(hidden)]
14860            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
14861                fn from(value: initializeV2Return) -> Self {
14862                    ()
14863                }
14864            }
14865            #[automatically_derived]
14866            #[doc(hidden)]
14867            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
14868                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14869                    Self {}
14870                }
14871            }
14872        }
14873        impl initializeV2Return {
14874            fn _tokenize(
14875                &self,
14876            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
14877                ()
14878            }
14879        }
14880        #[automatically_derived]
14881        impl alloy_sol_types::SolCall for initializeV2Call {
14882            type Parameters<'a> = (
14883                alloy::sol_types::sol_data::Address,
14884                alloy::sol_types::sol_data::Address,
14885                alloy::sol_types::sol_data::Uint<256>,
14886                alloy::sol_types::sol_data::Array<InitialCommission>,
14887            );
14888            type Token<'a> = <Self::Parameters<
14889                'a,
14890            > as alloy_sol_types::SolType>::Token<'a>;
14891            type Return = initializeV2Return;
14892            type ReturnTuple<'a> = ();
14893            type ReturnToken<'a> = <Self::ReturnTuple<
14894                'a,
14895            > as alloy_sol_types::SolType>::Token<'a>;
14896            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
14897            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
14898            #[inline]
14899            fn new<'a>(
14900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14901            ) -> Self {
14902                tuple.into()
14903            }
14904            #[inline]
14905            fn tokenize(&self) -> Self::Token<'_> {
14906                (
14907                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14908                        &self.pauser,
14909                    ),
14910                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14911                        &self.admin,
14912                    ),
14913                    <alloy::sol_types::sol_data::Uint<
14914                        256,
14915                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
14916                    <alloy::sol_types::sol_data::Array<
14917                        InitialCommission,
14918                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
14919                )
14920            }
14921            #[inline]
14922            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14923                initializeV2Return::_tokenize(ret)
14924            }
14925            #[inline]
14926            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14927                <Self::ReturnTuple<
14928                    '_,
14929                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14930                    .map(Into::into)
14931            }
14932            #[inline]
14933            fn abi_decode_returns_validate(
14934                data: &[u8],
14935            ) -> alloy_sol_types::Result<Self::Return> {
14936                <Self::ReturnTuple<
14937                    '_,
14938                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14939                    .map(Into::into)
14940            }
14941        }
14942    };
14943    #[derive(serde::Serialize, serde::Deserialize)]
14944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14945    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
14946```solidity
14947function initializedAtBlock() external view returns (uint256);
14948```*/
14949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14950    #[derive(Clone)]
14951    pub struct initializedAtBlockCall;
14952    #[derive(serde::Serialize, serde::Deserialize)]
14953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14954    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
14955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14956    #[derive(Clone)]
14957    pub struct initializedAtBlockReturn {
14958        #[allow(missing_docs)]
14959        pub _0: alloy::sol_types::private::primitives::aliases::U256,
14960    }
14961    #[allow(
14962        non_camel_case_types,
14963        non_snake_case,
14964        clippy::pub_underscore_fields,
14965        clippy::style
14966    )]
14967    const _: () = {
14968        use alloy::sol_types as alloy_sol_types;
14969        {
14970            #[doc(hidden)]
14971            #[allow(dead_code)]
14972            type UnderlyingSolTuple<'a> = ();
14973            #[doc(hidden)]
14974            type UnderlyingRustTuple<'a> = ();
14975            #[cfg(test)]
14976            #[allow(dead_code, unreachable_patterns)]
14977            fn _type_assertion(
14978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14979            ) {
14980                match _t {
14981                    alloy_sol_types::private::AssertTypeEq::<
14982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14983                    >(_) => {}
14984                }
14985            }
14986            #[automatically_derived]
14987            #[doc(hidden)]
14988            impl ::core::convert::From<initializedAtBlockCall>
14989            for UnderlyingRustTuple<'_> {
14990                fn from(value: initializedAtBlockCall) -> Self {
14991                    ()
14992                }
14993            }
14994            #[automatically_derived]
14995            #[doc(hidden)]
14996            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14997            for initializedAtBlockCall {
14998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14999                    Self
15000                }
15001            }
15002        }
15003        {
15004            #[doc(hidden)]
15005            #[allow(dead_code)]
15006            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15007            #[doc(hidden)]
15008            type UnderlyingRustTuple<'a> = (
15009                alloy::sol_types::private::primitives::aliases::U256,
15010            );
15011            #[cfg(test)]
15012            #[allow(dead_code, unreachable_patterns)]
15013            fn _type_assertion(
15014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15015            ) {
15016                match _t {
15017                    alloy_sol_types::private::AssertTypeEq::<
15018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15019                    >(_) => {}
15020                }
15021            }
15022            #[automatically_derived]
15023            #[doc(hidden)]
15024            impl ::core::convert::From<initializedAtBlockReturn>
15025            for UnderlyingRustTuple<'_> {
15026                fn from(value: initializedAtBlockReturn) -> Self {
15027                    (value._0,)
15028                }
15029            }
15030            #[automatically_derived]
15031            #[doc(hidden)]
15032            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15033            for initializedAtBlockReturn {
15034                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15035                    Self { _0: tuple.0 }
15036                }
15037            }
15038        }
15039        #[automatically_derived]
15040        impl alloy_sol_types::SolCall for initializedAtBlockCall {
15041            type Parameters<'a> = ();
15042            type Token<'a> = <Self::Parameters<
15043                'a,
15044            > as alloy_sol_types::SolType>::Token<'a>;
15045            type Return = alloy::sol_types::private::primitives::aliases::U256;
15046            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15047            type ReturnToken<'a> = <Self::ReturnTuple<
15048                'a,
15049            > as alloy_sol_types::SolType>::Token<'a>;
15050            const SIGNATURE: &'static str = "initializedAtBlock()";
15051            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
15052            #[inline]
15053            fn new<'a>(
15054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15055            ) -> Self {
15056                tuple.into()
15057            }
15058            #[inline]
15059            fn tokenize(&self) -> Self::Token<'_> {
15060                ()
15061            }
15062            #[inline]
15063            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15064                (
15065                    <alloy::sol_types::sol_data::Uint<
15066                        256,
15067                    > as alloy_sol_types::SolType>::tokenize(ret),
15068                )
15069            }
15070            #[inline]
15071            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15072                <Self::ReturnTuple<
15073                    '_,
15074                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15075                    .map(|r| {
15076                        let r: initializedAtBlockReturn = r.into();
15077                        r._0
15078                    })
15079            }
15080            #[inline]
15081            fn abi_decode_returns_validate(
15082                data: &[u8],
15083            ) -> alloy_sol_types::Result<Self::Return> {
15084                <Self::ReturnTuple<
15085                    '_,
15086                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15087                    .map(|r| {
15088                        let r: initializedAtBlockReturn = r.into();
15089                        r._0
15090                    })
15091            }
15092        }
15093    };
15094    #[derive(serde::Serialize, serde::Deserialize)]
15095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15096    /**Function with signature `lightClient()` and selector `0xb5700e68`.
15097```solidity
15098function lightClient() external view returns (address);
15099```*/
15100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15101    #[derive(Clone)]
15102    pub struct lightClientCall;
15103    #[derive(serde::Serialize, serde::Deserialize)]
15104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15105    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
15106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15107    #[derive(Clone)]
15108    pub struct lightClientReturn {
15109        #[allow(missing_docs)]
15110        pub _0: alloy::sol_types::private::Address,
15111    }
15112    #[allow(
15113        non_camel_case_types,
15114        non_snake_case,
15115        clippy::pub_underscore_fields,
15116        clippy::style
15117    )]
15118    const _: () = {
15119        use alloy::sol_types as alloy_sol_types;
15120        {
15121            #[doc(hidden)]
15122            #[allow(dead_code)]
15123            type UnderlyingSolTuple<'a> = ();
15124            #[doc(hidden)]
15125            type UnderlyingRustTuple<'a> = ();
15126            #[cfg(test)]
15127            #[allow(dead_code, unreachable_patterns)]
15128            fn _type_assertion(
15129                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15130            ) {
15131                match _t {
15132                    alloy_sol_types::private::AssertTypeEq::<
15133                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15134                    >(_) => {}
15135                }
15136            }
15137            #[automatically_derived]
15138            #[doc(hidden)]
15139            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
15140                fn from(value: lightClientCall) -> Self {
15141                    ()
15142                }
15143            }
15144            #[automatically_derived]
15145            #[doc(hidden)]
15146            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
15147                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15148                    Self
15149                }
15150            }
15151        }
15152        {
15153            #[doc(hidden)]
15154            #[allow(dead_code)]
15155            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15156            #[doc(hidden)]
15157            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15158            #[cfg(test)]
15159            #[allow(dead_code, unreachable_patterns)]
15160            fn _type_assertion(
15161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15162            ) {
15163                match _t {
15164                    alloy_sol_types::private::AssertTypeEq::<
15165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15166                    >(_) => {}
15167                }
15168            }
15169            #[automatically_derived]
15170            #[doc(hidden)]
15171            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
15172                fn from(value: lightClientReturn) -> Self {
15173                    (value._0,)
15174                }
15175            }
15176            #[automatically_derived]
15177            #[doc(hidden)]
15178            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
15179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15180                    Self { _0: tuple.0 }
15181                }
15182            }
15183        }
15184        #[automatically_derived]
15185        impl alloy_sol_types::SolCall for lightClientCall {
15186            type Parameters<'a> = ();
15187            type Token<'a> = <Self::Parameters<
15188                'a,
15189            > as alloy_sol_types::SolType>::Token<'a>;
15190            type Return = alloy::sol_types::private::Address;
15191            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15192            type ReturnToken<'a> = <Self::ReturnTuple<
15193                'a,
15194            > as alloy_sol_types::SolType>::Token<'a>;
15195            const SIGNATURE: &'static str = "lightClient()";
15196            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
15197            #[inline]
15198            fn new<'a>(
15199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15200            ) -> Self {
15201                tuple.into()
15202            }
15203            #[inline]
15204            fn tokenize(&self) -> Self::Token<'_> {
15205                ()
15206            }
15207            #[inline]
15208            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15209                (
15210                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15211                        ret,
15212                    ),
15213                )
15214            }
15215            #[inline]
15216            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15217                <Self::ReturnTuple<
15218                    '_,
15219                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15220                    .map(|r| {
15221                        let r: lightClientReturn = r.into();
15222                        r._0
15223                    })
15224            }
15225            #[inline]
15226            fn abi_decode_returns_validate(
15227                data: &[u8],
15228            ) -> alloy_sol_types::Result<Self::Return> {
15229                <Self::ReturnTuple<
15230                    '_,
15231                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15232                    .map(|r| {
15233                        let r: lightClientReturn = r.into();
15234                        r._0
15235                    })
15236            }
15237        }
15238    };
15239    #[derive(serde::Serialize, serde::Deserialize)]
15240    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15241    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
15242```solidity
15243function maxCommissionIncrease() external view returns (uint16);
15244```*/
15245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15246    #[derive(Clone)]
15247    pub struct maxCommissionIncreaseCall;
15248    #[derive(serde::Serialize, serde::Deserialize)]
15249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15250    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
15251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15252    #[derive(Clone)]
15253    pub struct maxCommissionIncreaseReturn {
15254        #[allow(missing_docs)]
15255        pub _0: u16,
15256    }
15257    #[allow(
15258        non_camel_case_types,
15259        non_snake_case,
15260        clippy::pub_underscore_fields,
15261        clippy::style
15262    )]
15263    const _: () = {
15264        use alloy::sol_types as alloy_sol_types;
15265        {
15266            #[doc(hidden)]
15267            #[allow(dead_code)]
15268            type UnderlyingSolTuple<'a> = ();
15269            #[doc(hidden)]
15270            type UnderlyingRustTuple<'a> = ();
15271            #[cfg(test)]
15272            #[allow(dead_code, unreachable_patterns)]
15273            fn _type_assertion(
15274                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15275            ) {
15276                match _t {
15277                    alloy_sol_types::private::AssertTypeEq::<
15278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15279                    >(_) => {}
15280                }
15281            }
15282            #[automatically_derived]
15283            #[doc(hidden)]
15284            impl ::core::convert::From<maxCommissionIncreaseCall>
15285            for UnderlyingRustTuple<'_> {
15286                fn from(value: maxCommissionIncreaseCall) -> Self {
15287                    ()
15288                }
15289            }
15290            #[automatically_derived]
15291            #[doc(hidden)]
15292            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15293            for maxCommissionIncreaseCall {
15294                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15295                    Self
15296                }
15297            }
15298        }
15299        {
15300            #[doc(hidden)]
15301            #[allow(dead_code)]
15302            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15303            #[doc(hidden)]
15304            type UnderlyingRustTuple<'a> = (u16,);
15305            #[cfg(test)]
15306            #[allow(dead_code, unreachable_patterns)]
15307            fn _type_assertion(
15308                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15309            ) {
15310                match _t {
15311                    alloy_sol_types::private::AssertTypeEq::<
15312                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15313                    >(_) => {}
15314                }
15315            }
15316            #[automatically_derived]
15317            #[doc(hidden)]
15318            impl ::core::convert::From<maxCommissionIncreaseReturn>
15319            for UnderlyingRustTuple<'_> {
15320                fn from(value: maxCommissionIncreaseReturn) -> Self {
15321                    (value._0,)
15322                }
15323            }
15324            #[automatically_derived]
15325            #[doc(hidden)]
15326            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15327            for maxCommissionIncreaseReturn {
15328                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15329                    Self { _0: tuple.0 }
15330                }
15331            }
15332        }
15333        #[automatically_derived]
15334        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
15335            type Parameters<'a> = ();
15336            type Token<'a> = <Self::Parameters<
15337                'a,
15338            > as alloy_sol_types::SolType>::Token<'a>;
15339            type Return = u16;
15340            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15341            type ReturnToken<'a> = <Self::ReturnTuple<
15342                'a,
15343            > as alloy_sol_types::SolType>::Token<'a>;
15344            const SIGNATURE: &'static str = "maxCommissionIncrease()";
15345            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
15346            #[inline]
15347            fn new<'a>(
15348                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15349            ) -> Self {
15350                tuple.into()
15351            }
15352            #[inline]
15353            fn tokenize(&self) -> Self::Token<'_> {
15354                ()
15355            }
15356            #[inline]
15357            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15358                (
15359                    <alloy::sol_types::sol_data::Uint<
15360                        16,
15361                    > as alloy_sol_types::SolType>::tokenize(ret),
15362                )
15363            }
15364            #[inline]
15365            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15366                <Self::ReturnTuple<
15367                    '_,
15368                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15369                    .map(|r| {
15370                        let r: maxCommissionIncreaseReturn = r.into();
15371                        r._0
15372                    })
15373            }
15374            #[inline]
15375            fn abi_decode_returns_validate(
15376                data: &[u8],
15377            ) -> alloy_sol_types::Result<Self::Return> {
15378                <Self::ReturnTuple<
15379                    '_,
15380                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15381                    .map(|r| {
15382                        let r: maxCommissionIncreaseReturn = r.into();
15383                        r._0
15384                    })
15385            }
15386        }
15387    };
15388    #[derive(serde::Serialize, serde::Deserialize)]
15389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15390    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
15391```solidity
15392function minCommissionIncreaseInterval() external view returns (uint256);
15393```*/
15394    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15395    #[derive(Clone)]
15396    pub struct minCommissionIncreaseIntervalCall;
15397    #[derive(serde::Serialize, serde::Deserialize)]
15398    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15399    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
15400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15401    #[derive(Clone)]
15402    pub struct minCommissionIncreaseIntervalReturn {
15403        #[allow(missing_docs)]
15404        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15405    }
15406    #[allow(
15407        non_camel_case_types,
15408        non_snake_case,
15409        clippy::pub_underscore_fields,
15410        clippy::style
15411    )]
15412    const _: () = {
15413        use alloy::sol_types as alloy_sol_types;
15414        {
15415            #[doc(hidden)]
15416            #[allow(dead_code)]
15417            type UnderlyingSolTuple<'a> = ();
15418            #[doc(hidden)]
15419            type UnderlyingRustTuple<'a> = ();
15420            #[cfg(test)]
15421            #[allow(dead_code, unreachable_patterns)]
15422            fn _type_assertion(
15423                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15424            ) {
15425                match _t {
15426                    alloy_sol_types::private::AssertTypeEq::<
15427                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15428                    >(_) => {}
15429                }
15430            }
15431            #[automatically_derived]
15432            #[doc(hidden)]
15433            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
15434            for UnderlyingRustTuple<'_> {
15435                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
15436                    ()
15437                }
15438            }
15439            #[automatically_derived]
15440            #[doc(hidden)]
15441            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15442            for minCommissionIncreaseIntervalCall {
15443                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15444                    Self
15445                }
15446            }
15447        }
15448        {
15449            #[doc(hidden)]
15450            #[allow(dead_code)]
15451            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15452            #[doc(hidden)]
15453            type UnderlyingRustTuple<'a> = (
15454                alloy::sol_types::private::primitives::aliases::U256,
15455            );
15456            #[cfg(test)]
15457            #[allow(dead_code, unreachable_patterns)]
15458            fn _type_assertion(
15459                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15460            ) {
15461                match _t {
15462                    alloy_sol_types::private::AssertTypeEq::<
15463                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15464                    >(_) => {}
15465                }
15466            }
15467            #[automatically_derived]
15468            #[doc(hidden)]
15469            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
15470            for UnderlyingRustTuple<'_> {
15471                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
15472                    (value._0,)
15473                }
15474            }
15475            #[automatically_derived]
15476            #[doc(hidden)]
15477            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15478            for minCommissionIncreaseIntervalReturn {
15479                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15480                    Self { _0: tuple.0 }
15481                }
15482            }
15483        }
15484        #[automatically_derived]
15485        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
15486            type Parameters<'a> = ();
15487            type Token<'a> = <Self::Parameters<
15488                'a,
15489            > as alloy_sol_types::SolType>::Token<'a>;
15490            type Return = alloy::sol_types::private::primitives::aliases::U256;
15491            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15492            type ReturnToken<'a> = <Self::ReturnTuple<
15493                'a,
15494            > as alloy_sol_types::SolType>::Token<'a>;
15495            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
15496            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
15497            #[inline]
15498            fn new<'a>(
15499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15500            ) -> Self {
15501                tuple.into()
15502            }
15503            #[inline]
15504            fn tokenize(&self) -> Self::Token<'_> {
15505                ()
15506            }
15507            #[inline]
15508            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15509                (
15510                    <alloy::sol_types::sol_data::Uint<
15511                        256,
15512                    > as alloy_sol_types::SolType>::tokenize(ret),
15513                )
15514            }
15515            #[inline]
15516            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15517                <Self::ReturnTuple<
15518                    '_,
15519                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15520                    .map(|r| {
15521                        let r: minCommissionIncreaseIntervalReturn = r.into();
15522                        r._0
15523                    })
15524            }
15525            #[inline]
15526            fn abi_decode_returns_validate(
15527                data: &[u8],
15528            ) -> alloy_sol_types::Result<Self::Return> {
15529                <Self::ReturnTuple<
15530                    '_,
15531                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15532                    .map(|r| {
15533                        let r: minCommissionIncreaseIntervalReturn = r.into();
15534                        r._0
15535                    })
15536            }
15537        }
15538    };
15539    #[derive(serde::Serialize, serde::Deserialize)]
15540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15541    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
15542```solidity
15543function minDelegateAmount() external view returns (uint256);
15544```*/
15545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15546    #[derive(Clone)]
15547    pub struct minDelegateAmountCall;
15548    #[derive(serde::Serialize, serde::Deserialize)]
15549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15550    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
15551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15552    #[derive(Clone)]
15553    pub struct minDelegateAmountReturn {
15554        #[allow(missing_docs)]
15555        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15556    }
15557    #[allow(
15558        non_camel_case_types,
15559        non_snake_case,
15560        clippy::pub_underscore_fields,
15561        clippy::style
15562    )]
15563    const _: () = {
15564        use alloy::sol_types as alloy_sol_types;
15565        {
15566            #[doc(hidden)]
15567            #[allow(dead_code)]
15568            type UnderlyingSolTuple<'a> = ();
15569            #[doc(hidden)]
15570            type UnderlyingRustTuple<'a> = ();
15571            #[cfg(test)]
15572            #[allow(dead_code, unreachable_patterns)]
15573            fn _type_assertion(
15574                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15575            ) {
15576                match _t {
15577                    alloy_sol_types::private::AssertTypeEq::<
15578                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15579                    >(_) => {}
15580                }
15581            }
15582            #[automatically_derived]
15583            #[doc(hidden)]
15584            impl ::core::convert::From<minDelegateAmountCall>
15585            for UnderlyingRustTuple<'_> {
15586                fn from(value: minDelegateAmountCall) -> Self {
15587                    ()
15588                }
15589            }
15590            #[automatically_derived]
15591            #[doc(hidden)]
15592            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15593            for minDelegateAmountCall {
15594                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15595                    Self
15596                }
15597            }
15598        }
15599        {
15600            #[doc(hidden)]
15601            #[allow(dead_code)]
15602            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15603            #[doc(hidden)]
15604            type UnderlyingRustTuple<'a> = (
15605                alloy::sol_types::private::primitives::aliases::U256,
15606            );
15607            #[cfg(test)]
15608            #[allow(dead_code, unreachable_patterns)]
15609            fn _type_assertion(
15610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15611            ) {
15612                match _t {
15613                    alloy_sol_types::private::AssertTypeEq::<
15614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15615                    >(_) => {}
15616                }
15617            }
15618            #[automatically_derived]
15619            #[doc(hidden)]
15620            impl ::core::convert::From<minDelegateAmountReturn>
15621            for UnderlyingRustTuple<'_> {
15622                fn from(value: minDelegateAmountReturn) -> Self {
15623                    (value._0,)
15624                }
15625            }
15626            #[automatically_derived]
15627            #[doc(hidden)]
15628            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15629            for minDelegateAmountReturn {
15630                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15631                    Self { _0: tuple.0 }
15632                }
15633            }
15634        }
15635        #[automatically_derived]
15636        impl alloy_sol_types::SolCall for minDelegateAmountCall {
15637            type Parameters<'a> = ();
15638            type Token<'a> = <Self::Parameters<
15639                'a,
15640            > as alloy_sol_types::SolType>::Token<'a>;
15641            type Return = alloy::sol_types::private::primitives::aliases::U256;
15642            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15643            type ReturnToken<'a> = <Self::ReturnTuple<
15644                'a,
15645            > as alloy_sol_types::SolType>::Token<'a>;
15646            const SIGNATURE: &'static str = "minDelegateAmount()";
15647            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
15648            #[inline]
15649            fn new<'a>(
15650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15651            ) -> Self {
15652                tuple.into()
15653            }
15654            #[inline]
15655            fn tokenize(&self) -> Self::Token<'_> {
15656                ()
15657            }
15658            #[inline]
15659            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15660                (
15661                    <alloy::sol_types::sol_data::Uint<
15662                        256,
15663                    > as alloy_sol_types::SolType>::tokenize(ret),
15664                )
15665            }
15666            #[inline]
15667            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15668                <Self::ReturnTuple<
15669                    '_,
15670                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15671                    .map(|r| {
15672                        let r: minDelegateAmountReturn = r.into();
15673                        r._0
15674                    })
15675            }
15676            #[inline]
15677            fn abi_decode_returns_validate(
15678                data: &[u8],
15679            ) -> alloy_sol_types::Result<Self::Return> {
15680                <Self::ReturnTuple<
15681                    '_,
15682                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15683                    .map(|r| {
15684                        let r: minDelegateAmountReturn = r.into();
15685                        r._0
15686                    })
15687            }
15688        }
15689    };
15690    #[derive(serde::Serialize, serde::Deserialize)]
15691    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15692    /**Function with signature `owner()` and selector `0x8da5cb5b`.
15693```solidity
15694function owner() external view returns (address);
15695```*/
15696    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15697    #[derive(Clone)]
15698    pub struct ownerCall;
15699    #[derive(serde::Serialize, serde::Deserialize)]
15700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15701    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
15702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15703    #[derive(Clone)]
15704    pub struct ownerReturn {
15705        #[allow(missing_docs)]
15706        pub _0: alloy::sol_types::private::Address,
15707    }
15708    #[allow(
15709        non_camel_case_types,
15710        non_snake_case,
15711        clippy::pub_underscore_fields,
15712        clippy::style
15713    )]
15714    const _: () = {
15715        use alloy::sol_types as alloy_sol_types;
15716        {
15717            #[doc(hidden)]
15718            #[allow(dead_code)]
15719            type UnderlyingSolTuple<'a> = ();
15720            #[doc(hidden)]
15721            type UnderlyingRustTuple<'a> = ();
15722            #[cfg(test)]
15723            #[allow(dead_code, unreachable_patterns)]
15724            fn _type_assertion(
15725                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15726            ) {
15727                match _t {
15728                    alloy_sol_types::private::AssertTypeEq::<
15729                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15730                    >(_) => {}
15731                }
15732            }
15733            #[automatically_derived]
15734            #[doc(hidden)]
15735            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
15736                fn from(value: ownerCall) -> Self {
15737                    ()
15738                }
15739            }
15740            #[automatically_derived]
15741            #[doc(hidden)]
15742            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
15743                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15744                    Self
15745                }
15746            }
15747        }
15748        {
15749            #[doc(hidden)]
15750            #[allow(dead_code)]
15751            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15752            #[doc(hidden)]
15753            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15754            #[cfg(test)]
15755            #[allow(dead_code, unreachable_patterns)]
15756            fn _type_assertion(
15757                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15758            ) {
15759                match _t {
15760                    alloy_sol_types::private::AssertTypeEq::<
15761                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15762                    >(_) => {}
15763                }
15764            }
15765            #[automatically_derived]
15766            #[doc(hidden)]
15767            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
15768                fn from(value: ownerReturn) -> Self {
15769                    (value._0,)
15770                }
15771            }
15772            #[automatically_derived]
15773            #[doc(hidden)]
15774            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
15775                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15776                    Self { _0: tuple.0 }
15777                }
15778            }
15779        }
15780        #[automatically_derived]
15781        impl alloy_sol_types::SolCall for ownerCall {
15782            type Parameters<'a> = ();
15783            type Token<'a> = <Self::Parameters<
15784                'a,
15785            > as alloy_sol_types::SolType>::Token<'a>;
15786            type Return = alloy::sol_types::private::Address;
15787            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15788            type ReturnToken<'a> = <Self::ReturnTuple<
15789                'a,
15790            > as alloy_sol_types::SolType>::Token<'a>;
15791            const SIGNATURE: &'static str = "owner()";
15792            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
15793            #[inline]
15794            fn new<'a>(
15795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15796            ) -> Self {
15797                tuple.into()
15798            }
15799            #[inline]
15800            fn tokenize(&self) -> Self::Token<'_> {
15801                ()
15802            }
15803            #[inline]
15804            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15805                (
15806                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15807                        ret,
15808                    ),
15809                )
15810            }
15811            #[inline]
15812            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15813                <Self::ReturnTuple<
15814                    '_,
15815                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15816                    .map(|r| {
15817                        let r: ownerReturn = r.into();
15818                        r._0
15819                    })
15820            }
15821            #[inline]
15822            fn abi_decode_returns_validate(
15823                data: &[u8],
15824            ) -> alloy_sol_types::Result<Self::Return> {
15825                <Self::ReturnTuple<
15826                    '_,
15827                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15828                    .map(|r| {
15829                        let r: ownerReturn = r.into();
15830                        r._0
15831                    })
15832            }
15833        }
15834    };
15835    #[derive(serde::Serialize, serde::Deserialize)]
15836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15837    /**Function with signature `pause()` and selector `0x8456cb59`.
15838```solidity
15839function pause() external;
15840```*/
15841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15842    #[derive(Clone)]
15843    pub struct pauseCall;
15844    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
15845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15846    #[derive(Clone)]
15847    pub struct pauseReturn {}
15848    #[allow(
15849        non_camel_case_types,
15850        non_snake_case,
15851        clippy::pub_underscore_fields,
15852        clippy::style
15853    )]
15854    const _: () = {
15855        use alloy::sol_types as alloy_sol_types;
15856        {
15857            #[doc(hidden)]
15858            #[allow(dead_code)]
15859            type UnderlyingSolTuple<'a> = ();
15860            #[doc(hidden)]
15861            type UnderlyingRustTuple<'a> = ();
15862            #[cfg(test)]
15863            #[allow(dead_code, unreachable_patterns)]
15864            fn _type_assertion(
15865                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15866            ) {
15867                match _t {
15868                    alloy_sol_types::private::AssertTypeEq::<
15869                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15870                    >(_) => {}
15871                }
15872            }
15873            #[automatically_derived]
15874            #[doc(hidden)]
15875            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
15876                fn from(value: pauseCall) -> Self {
15877                    ()
15878                }
15879            }
15880            #[automatically_derived]
15881            #[doc(hidden)]
15882            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
15883                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15884                    Self
15885                }
15886            }
15887        }
15888        {
15889            #[doc(hidden)]
15890            #[allow(dead_code)]
15891            type UnderlyingSolTuple<'a> = ();
15892            #[doc(hidden)]
15893            type UnderlyingRustTuple<'a> = ();
15894            #[cfg(test)]
15895            #[allow(dead_code, unreachable_patterns)]
15896            fn _type_assertion(
15897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15898            ) {
15899                match _t {
15900                    alloy_sol_types::private::AssertTypeEq::<
15901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15902                    >(_) => {}
15903                }
15904            }
15905            #[automatically_derived]
15906            #[doc(hidden)]
15907            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
15908                fn from(value: pauseReturn) -> Self {
15909                    ()
15910                }
15911            }
15912            #[automatically_derived]
15913            #[doc(hidden)]
15914            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
15915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15916                    Self {}
15917                }
15918            }
15919        }
15920        impl pauseReturn {
15921            fn _tokenize(
15922                &self,
15923            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15924                ()
15925            }
15926        }
15927        #[automatically_derived]
15928        impl alloy_sol_types::SolCall for pauseCall {
15929            type Parameters<'a> = ();
15930            type Token<'a> = <Self::Parameters<
15931                'a,
15932            > as alloy_sol_types::SolType>::Token<'a>;
15933            type Return = pauseReturn;
15934            type ReturnTuple<'a> = ();
15935            type ReturnToken<'a> = <Self::ReturnTuple<
15936                'a,
15937            > as alloy_sol_types::SolType>::Token<'a>;
15938            const SIGNATURE: &'static str = "pause()";
15939            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
15940            #[inline]
15941            fn new<'a>(
15942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15943            ) -> Self {
15944                tuple.into()
15945            }
15946            #[inline]
15947            fn tokenize(&self) -> Self::Token<'_> {
15948                ()
15949            }
15950            #[inline]
15951            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15952                pauseReturn::_tokenize(ret)
15953            }
15954            #[inline]
15955            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15956                <Self::ReturnTuple<
15957                    '_,
15958                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15959                    .map(Into::into)
15960            }
15961            #[inline]
15962            fn abi_decode_returns_validate(
15963                data: &[u8],
15964            ) -> alloy_sol_types::Result<Self::Return> {
15965                <Self::ReturnTuple<
15966                    '_,
15967                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15968                    .map(Into::into)
15969            }
15970        }
15971    };
15972    #[derive(serde::Serialize, serde::Deserialize)]
15973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15974    /**Function with signature `paused()` and selector `0x5c975abb`.
15975```solidity
15976function paused() external view returns (bool);
15977```*/
15978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15979    #[derive(Clone)]
15980    pub struct pausedCall;
15981    #[derive(serde::Serialize, serde::Deserialize)]
15982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15983    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
15984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15985    #[derive(Clone)]
15986    pub struct pausedReturn {
15987        #[allow(missing_docs)]
15988        pub _0: bool,
15989    }
15990    #[allow(
15991        non_camel_case_types,
15992        non_snake_case,
15993        clippy::pub_underscore_fields,
15994        clippy::style
15995    )]
15996    const _: () = {
15997        use alloy::sol_types as alloy_sol_types;
15998        {
15999            #[doc(hidden)]
16000            #[allow(dead_code)]
16001            type UnderlyingSolTuple<'a> = ();
16002            #[doc(hidden)]
16003            type UnderlyingRustTuple<'a> = ();
16004            #[cfg(test)]
16005            #[allow(dead_code, unreachable_patterns)]
16006            fn _type_assertion(
16007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16008            ) {
16009                match _t {
16010                    alloy_sol_types::private::AssertTypeEq::<
16011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16012                    >(_) => {}
16013                }
16014            }
16015            #[automatically_derived]
16016            #[doc(hidden)]
16017            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
16018                fn from(value: pausedCall) -> Self {
16019                    ()
16020                }
16021            }
16022            #[automatically_derived]
16023            #[doc(hidden)]
16024            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
16025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16026                    Self
16027                }
16028            }
16029        }
16030        {
16031            #[doc(hidden)]
16032            #[allow(dead_code)]
16033            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16034            #[doc(hidden)]
16035            type UnderlyingRustTuple<'a> = (bool,);
16036            #[cfg(test)]
16037            #[allow(dead_code, unreachable_patterns)]
16038            fn _type_assertion(
16039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16040            ) {
16041                match _t {
16042                    alloy_sol_types::private::AssertTypeEq::<
16043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16044                    >(_) => {}
16045                }
16046            }
16047            #[automatically_derived]
16048            #[doc(hidden)]
16049            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
16050                fn from(value: pausedReturn) -> Self {
16051                    (value._0,)
16052                }
16053            }
16054            #[automatically_derived]
16055            #[doc(hidden)]
16056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
16057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16058                    Self { _0: tuple.0 }
16059                }
16060            }
16061        }
16062        #[automatically_derived]
16063        impl alloy_sol_types::SolCall for pausedCall {
16064            type Parameters<'a> = ();
16065            type Token<'a> = <Self::Parameters<
16066                'a,
16067            > as alloy_sol_types::SolType>::Token<'a>;
16068            type Return = bool;
16069            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16070            type ReturnToken<'a> = <Self::ReturnTuple<
16071                'a,
16072            > as alloy_sol_types::SolType>::Token<'a>;
16073            const SIGNATURE: &'static str = "paused()";
16074            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
16075            #[inline]
16076            fn new<'a>(
16077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16078            ) -> Self {
16079                tuple.into()
16080            }
16081            #[inline]
16082            fn tokenize(&self) -> Self::Token<'_> {
16083                ()
16084            }
16085            #[inline]
16086            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16087                (
16088                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
16089                        ret,
16090                    ),
16091                )
16092            }
16093            #[inline]
16094            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16095                <Self::ReturnTuple<
16096                    '_,
16097                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16098                    .map(|r| {
16099                        let r: pausedReturn = r.into();
16100                        r._0
16101                    })
16102            }
16103            #[inline]
16104            fn abi_decode_returns_validate(
16105                data: &[u8],
16106            ) -> alloy_sol_types::Result<Self::Return> {
16107                <Self::ReturnTuple<
16108                    '_,
16109                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16110                    .map(|r| {
16111                        let r: pausedReturn = r.into();
16112                        r._0
16113                    })
16114            }
16115        }
16116    };
16117    #[derive(serde::Serialize, serde::Deserialize)]
16118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16119    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
16120```solidity
16121function proxiableUUID() external view returns (bytes32);
16122```*/
16123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16124    #[derive(Clone)]
16125    pub struct proxiableUUIDCall;
16126    #[derive(serde::Serialize, serde::Deserialize)]
16127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16128    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
16129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16130    #[derive(Clone)]
16131    pub struct proxiableUUIDReturn {
16132        #[allow(missing_docs)]
16133        pub _0: alloy::sol_types::private::FixedBytes<32>,
16134    }
16135    #[allow(
16136        non_camel_case_types,
16137        non_snake_case,
16138        clippy::pub_underscore_fields,
16139        clippy::style
16140    )]
16141    const _: () = {
16142        use alloy::sol_types as alloy_sol_types;
16143        {
16144            #[doc(hidden)]
16145            #[allow(dead_code)]
16146            type UnderlyingSolTuple<'a> = ();
16147            #[doc(hidden)]
16148            type UnderlyingRustTuple<'a> = ();
16149            #[cfg(test)]
16150            #[allow(dead_code, unreachable_patterns)]
16151            fn _type_assertion(
16152                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16153            ) {
16154                match _t {
16155                    alloy_sol_types::private::AssertTypeEq::<
16156                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16157                    >(_) => {}
16158                }
16159            }
16160            #[automatically_derived]
16161            #[doc(hidden)]
16162            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
16163                fn from(value: proxiableUUIDCall) -> Self {
16164                    ()
16165                }
16166            }
16167            #[automatically_derived]
16168            #[doc(hidden)]
16169            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
16170                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16171                    Self
16172                }
16173            }
16174        }
16175        {
16176            #[doc(hidden)]
16177            #[allow(dead_code)]
16178            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16179            #[doc(hidden)]
16180            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
16181            #[cfg(test)]
16182            #[allow(dead_code, unreachable_patterns)]
16183            fn _type_assertion(
16184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16185            ) {
16186                match _t {
16187                    alloy_sol_types::private::AssertTypeEq::<
16188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16189                    >(_) => {}
16190                }
16191            }
16192            #[automatically_derived]
16193            #[doc(hidden)]
16194            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
16195                fn from(value: proxiableUUIDReturn) -> Self {
16196                    (value._0,)
16197                }
16198            }
16199            #[automatically_derived]
16200            #[doc(hidden)]
16201            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
16202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16203                    Self { _0: tuple.0 }
16204                }
16205            }
16206        }
16207        #[automatically_derived]
16208        impl alloy_sol_types::SolCall for proxiableUUIDCall {
16209            type Parameters<'a> = ();
16210            type Token<'a> = <Self::Parameters<
16211                'a,
16212            > as alloy_sol_types::SolType>::Token<'a>;
16213            type Return = alloy::sol_types::private::FixedBytes<32>;
16214            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16215            type ReturnToken<'a> = <Self::ReturnTuple<
16216                'a,
16217            > as alloy_sol_types::SolType>::Token<'a>;
16218            const SIGNATURE: &'static str = "proxiableUUID()";
16219            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
16220            #[inline]
16221            fn new<'a>(
16222                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16223            ) -> Self {
16224                tuple.into()
16225            }
16226            #[inline]
16227            fn tokenize(&self) -> Self::Token<'_> {
16228                ()
16229            }
16230            #[inline]
16231            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16232                (
16233                    <alloy::sol_types::sol_data::FixedBytes<
16234                        32,
16235                    > as alloy_sol_types::SolType>::tokenize(ret),
16236                )
16237            }
16238            #[inline]
16239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16240                <Self::ReturnTuple<
16241                    '_,
16242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16243                    .map(|r| {
16244                        let r: proxiableUUIDReturn = r.into();
16245                        r._0
16246                    })
16247            }
16248            #[inline]
16249            fn abi_decode_returns_validate(
16250                data: &[u8],
16251            ) -> alloy_sol_types::Result<Self::Return> {
16252                <Self::ReturnTuple<
16253                    '_,
16254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16255                    .map(|r| {
16256                        let r: proxiableUUIDReturn = r.into();
16257                        r._0
16258                    })
16259            }
16260        }
16261    };
16262    #[derive(serde::Serialize, serde::Deserialize)]
16263    #[derive()]
16264    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
16265```solidity
16266function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
16267```*/
16268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16269    #[derive(Clone)]
16270    pub struct registerValidatorCall {
16271        #[allow(missing_docs)]
16272        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16273        #[allow(missing_docs)]
16274        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16275        #[allow(missing_docs)]
16276        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16277        #[allow(missing_docs)]
16278        pub _3: u16,
16279    }
16280    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
16281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16282    #[derive(Clone)]
16283    pub struct registerValidatorReturn {}
16284    #[allow(
16285        non_camel_case_types,
16286        non_snake_case,
16287        clippy::pub_underscore_fields,
16288        clippy::style
16289    )]
16290    const _: () = {
16291        use alloy::sol_types as alloy_sol_types;
16292        {
16293            #[doc(hidden)]
16294            #[allow(dead_code)]
16295            type UnderlyingSolTuple<'a> = (
16296                BN254::G2Point,
16297                EdOnBN254::EdOnBN254Point,
16298                BN254::G1Point,
16299                alloy::sol_types::sol_data::Uint<16>,
16300            );
16301            #[doc(hidden)]
16302            type UnderlyingRustTuple<'a> = (
16303                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16304                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16305                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16306                u16,
16307            );
16308            #[cfg(test)]
16309            #[allow(dead_code, unreachable_patterns)]
16310            fn _type_assertion(
16311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16312            ) {
16313                match _t {
16314                    alloy_sol_types::private::AssertTypeEq::<
16315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16316                    >(_) => {}
16317                }
16318            }
16319            #[automatically_derived]
16320            #[doc(hidden)]
16321            impl ::core::convert::From<registerValidatorCall>
16322            for UnderlyingRustTuple<'_> {
16323                fn from(value: registerValidatorCall) -> Self {
16324                    (value._0, value._1, value._2, value._3)
16325                }
16326            }
16327            #[automatically_derived]
16328            #[doc(hidden)]
16329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16330            for registerValidatorCall {
16331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16332                    Self {
16333                        _0: tuple.0,
16334                        _1: tuple.1,
16335                        _2: tuple.2,
16336                        _3: tuple.3,
16337                    }
16338                }
16339            }
16340        }
16341        {
16342            #[doc(hidden)]
16343            #[allow(dead_code)]
16344            type UnderlyingSolTuple<'a> = ();
16345            #[doc(hidden)]
16346            type UnderlyingRustTuple<'a> = ();
16347            #[cfg(test)]
16348            #[allow(dead_code, unreachable_patterns)]
16349            fn _type_assertion(
16350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16351            ) {
16352                match _t {
16353                    alloy_sol_types::private::AssertTypeEq::<
16354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16355                    >(_) => {}
16356                }
16357            }
16358            #[automatically_derived]
16359            #[doc(hidden)]
16360            impl ::core::convert::From<registerValidatorReturn>
16361            for UnderlyingRustTuple<'_> {
16362                fn from(value: registerValidatorReturn) -> Self {
16363                    ()
16364                }
16365            }
16366            #[automatically_derived]
16367            #[doc(hidden)]
16368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16369            for registerValidatorReturn {
16370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16371                    Self {}
16372                }
16373            }
16374        }
16375        impl registerValidatorReturn {
16376            fn _tokenize(
16377                &self,
16378            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16379                ()
16380            }
16381        }
16382        #[automatically_derived]
16383        impl alloy_sol_types::SolCall for registerValidatorCall {
16384            type Parameters<'a> = (
16385                BN254::G2Point,
16386                EdOnBN254::EdOnBN254Point,
16387                BN254::G1Point,
16388                alloy::sol_types::sol_data::Uint<16>,
16389            );
16390            type Token<'a> = <Self::Parameters<
16391                'a,
16392            > as alloy_sol_types::SolType>::Token<'a>;
16393            type Return = registerValidatorReturn;
16394            type ReturnTuple<'a> = ();
16395            type ReturnToken<'a> = <Self::ReturnTuple<
16396                'a,
16397            > as alloy_sol_types::SolType>::Token<'a>;
16398            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
16399            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
16400            #[inline]
16401            fn new<'a>(
16402                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16403            ) -> Self {
16404                tuple.into()
16405            }
16406            #[inline]
16407            fn tokenize(&self) -> Self::Token<'_> {
16408                (
16409                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
16410                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16411                        &self._1,
16412                    ),
16413                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
16414                    <alloy::sol_types::sol_data::Uint<
16415                        16,
16416                    > as alloy_sol_types::SolType>::tokenize(&self._3),
16417                )
16418            }
16419            #[inline]
16420            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16421                registerValidatorReturn::_tokenize(ret)
16422            }
16423            #[inline]
16424            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16425                <Self::ReturnTuple<
16426                    '_,
16427                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16428                    .map(Into::into)
16429            }
16430            #[inline]
16431            fn abi_decode_returns_validate(
16432                data: &[u8],
16433            ) -> alloy_sol_types::Result<Self::Return> {
16434                <Self::ReturnTuple<
16435                    '_,
16436                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16437                    .map(Into::into)
16438            }
16439        }
16440    };
16441    #[derive(serde::Serialize, serde::Deserialize)]
16442    #[derive()]
16443    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
16444```solidity
16445function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
16446```*/
16447    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16448    #[derive(Clone)]
16449    pub struct registerValidatorV2Call {
16450        #[allow(missing_docs)]
16451        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16452        #[allow(missing_docs)]
16453        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16454        #[allow(missing_docs)]
16455        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16456        #[allow(missing_docs)]
16457        pub schnorrSig: alloy::sol_types::private::Bytes,
16458        #[allow(missing_docs)]
16459        pub commission: u16,
16460        #[allow(missing_docs)]
16461        pub metadataUri: alloy::sol_types::private::String,
16462    }
16463    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
16464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16465    #[derive(Clone)]
16466    pub struct registerValidatorV2Return {}
16467    #[allow(
16468        non_camel_case_types,
16469        non_snake_case,
16470        clippy::pub_underscore_fields,
16471        clippy::style
16472    )]
16473    const _: () = {
16474        use alloy::sol_types as alloy_sol_types;
16475        {
16476            #[doc(hidden)]
16477            #[allow(dead_code)]
16478            type UnderlyingSolTuple<'a> = (
16479                BN254::G2Point,
16480                EdOnBN254::EdOnBN254Point,
16481                BN254::G1Point,
16482                alloy::sol_types::sol_data::Bytes,
16483                alloy::sol_types::sol_data::Uint<16>,
16484                alloy::sol_types::sol_data::String,
16485            );
16486            #[doc(hidden)]
16487            type UnderlyingRustTuple<'a> = (
16488                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16489                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16490                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16491                alloy::sol_types::private::Bytes,
16492                u16,
16493                alloy::sol_types::private::String,
16494            );
16495            #[cfg(test)]
16496            #[allow(dead_code, unreachable_patterns)]
16497            fn _type_assertion(
16498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16499            ) {
16500                match _t {
16501                    alloy_sol_types::private::AssertTypeEq::<
16502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16503                    >(_) => {}
16504                }
16505            }
16506            #[automatically_derived]
16507            #[doc(hidden)]
16508            impl ::core::convert::From<registerValidatorV2Call>
16509            for UnderlyingRustTuple<'_> {
16510                fn from(value: registerValidatorV2Call) -> Self {
16511                    (
16512                        value.blsVK,
16513                        value.schnorrVK,
16514                        value.blsSig,
16515                        value.schnorrSig,
16516                        value.commission,
16517                        value.metadataUri,
16518                    )
16519                }
16520            }
16521            #[automatically_derived]
16522            #[doc(hidden)]
16523            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16524            for registerValidatorV2Call {
16525                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16526                    Self {
16527                        blsVK: tuple.0,
16528                        schnorrVK: tuple.1,
16529                        blsSig: tuple.2,
16530                        schnorrSig: tuple.3,
16531                        commission: tuple.4,
16532                        metadataUri: tuple.5,
16533                    }
16534                }
16535            }
16536        }
16537        {
16538            #[doc(hidden)]
16539            #[allow(dead_code)]
16540            type UnderlyingSolTuple<'a> = ();
16541            #[doc(hidden)]
16542            type UnderlyingRustTuple<'a> = ();
16543            #[cfg(test)]
16544            #[allow(dead_code, unreachable_patterns)]
16545            fn _type_assertion(
16546                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16547            ) {
16548                match _t {
16549                    alloy_sol_types::private::AssertTypeEq::<
16550                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16551                    >(_) => {}
16552                }
16553            }
16554            #[automatically_derived]
16555            #[doc(hidden)]
16556            impl ::core::convert::From<registerValidatorV2Return>
16557            for UnderlyingRustTuple<'_> {
16558                fn from(value: registerValidatorV2Return) -> Self {
16559                    ()
16560                }
16561            }
16562            #[automatically_derived]
16563            #[doc(hidden)]
16564            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16565            for registerValidatorV2Return {
16566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16567                    Self {}
16568                }
16569            }
16570        }
16571        impl registerValidatorV2Return {
16572            fn _tokenize(
16573                &self,
16574            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16575                ()
16576            }
16577        }
16578        #[automatically_derived]
16579        impl alloy_sol_types::SolCall for registerValidatorV2Call {
16580            type Parameters<'a> = (
16581                BN254::G2Point,
16582                EdOnBN254::EdOnBN254Point,
16583                BN254::G1Point,
16584                alloy::sol_types::sol_data::Bytes,
16585                alloy::sol_types::sol_data::Uint<16>,
16586                alloy::sol_types::sol_data::String,
16587            );
16588            type Token<'a> = <Self::Parameters<
16589                'a,
16590            > as alloy_sol_types::SolType>::Token<'a>;
16591            type Return = registerValidatorV2Return;
16592            type ReturnTuple<'a> = ();
16593            type ReturnToken<'a> = <Self::ReturnTuple<
16594                'a,
16595            > as alloy_sol_types::SolType>::Token<'a>;
16596            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
16597            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
16598            #[inline]
16599            fn new<'a>(
16600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16601            ) -> Self {
16602                tuple.into()
16603            }
16604            #[inline]
16605            fn tokenize(&self) -> Self::Token<'_> {
16606                (
16607                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
16608                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16609                        &self.schnorrVK,
16610                    ),
16611                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
16612                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
16613                        &self.schnorrSig,
16614                    ),
16615                    <alloy::sol_types::sol_data::Uint<
16616                        16,
16617                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
16618                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
16619                        &self.metadataUri,
16620                    ),
16621                )
16622            }
16623            #[inline]
16624            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16625                registerValidatorV2Return::_tokenize(ret)
16626            }
16627            #[inline]
16628            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16629                <Self::ReturnTuple<
16630                    '_,
16631                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16632                    .map(Into::into)
16633            }
16634            #[inline]
16635            fn abi_decode_returns_validate(
16636                data: &[u8],
16637            ) -> alloy_sol_types::Result<Self::Return> {
16638                <Self::ReturnTuple<
16639                    '_,
16640                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16641                    .map(Into::into)
16642            }
16643        }
16644    };
16645    #[derive(serde::Serialize, serde::Deserialize)]
16646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16647    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
16648```solidity
16649function renounceOwnership() external;
16650```*/
16651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16652    #[derive(Clone)]
16653    pub struct renounceOwnershipCall;
16654    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
16655    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16656    #[derive(Clone)]
16657    pub struct renounceOwnershipReturn {}
16658    #[allow(
16659        non_camel_case_types,
16660        non_snake_case,
16661        clippy::pub_underscore_fields,
16662        clippy::style
16663    )]
16664    const _: () = {
16665        use alloy::sol_types as alloy_sol_types;
16666        {
16667            #[doc(hidden)]
16668            #[allow(dead_code)]
16669            type UnderlyingSolTuple<'a> = ();
16670            #[doc(hidden)]
16671            type UnderlyingRustTuple<'a> = ();
16672            #[cfg(test)]
16673            #[allow(dead_code, unreachable_patterns)]
16674            fn _type_assertion(
16675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16676            ) {
16677                match _t {
16678                    alloy_sol_types::private::AssertTypeEq::<
16679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16680                    >(_) => {}
16681                }
16682            }
16683            #[automatically_derived]
16684            #[doc(hidden)]
16685            impl ::core::convert::From<renounceOwnershipCall>
16686            for UnderlyingRustTuple<'_> {
16687                fn from(value: renounceOwnershipCall) -> Self {
16688                    ()
16689                }
16690            }
16691            #[automatically_derived]
16692            #[doc(hidden)]
16693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16694            for renounceOwnershipCall {
16695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16696                    Self
16697                }
16698            }
16699        }
16700        {
16701            #[doc(hidden)]
16702            #[allow(dead_code)]
16703            type UnderlyingSolTuple<'a> = ();
16704            #[doc(hidden)]
16705            type UnderlyingRustTuple<'a> = ();
16706            #[cfg(test)]
16707            #[allow(dead_code, unreachable_patterns)]
16708            fn _type_assertion(
16709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16710            ) {
16711                match _t {
16712                    alloy_sol_types::private::AssertTypeEq::<
16713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16714                    >(_) => {}
16715                }
16716            }
16717            #[automatically_derived]
16718            #[doc(hidden)]
16719            impl ::core::convert::From<renounceOwnershipReturn>
16720            for UnderlyingRustTuple<'_> {
16721                fn from(value: renounceOwnershipReturn) -> Self {
16722                    ()
16723                }
16724            }
16725            #[automatically_derived]
16726            #[doc(hidden)]
16727            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16728            for renounceOwnershipReturn {
16729                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16730                    Self {}
16731                }
16732            }
16733        }
16734        impl renounceOwnershipReturn {
16735            fn _tokenize(
16736                &self,
16737            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16738                ()
16739            }
16740        }
16741        #[automatically_derived]
16742        impl alloy_sol_types::SolCall for renounceOwnershipCall {
16743            type Parameters<'a> = ();
16744            type Token<'a> = <Self::Parameters<
16745                'a,
16746            > as alloy_sol_types::SolType>::Token<'a>;
16747            type Return = renounceOwnershipReturn;
16748            type ReturnTuple<'a> = ();
16749            type ReturnToken<'a> = <Self::ReturnTuple<
16750                'a,
16751            > as alloy_sol_types::SolType>::Token<'a>;
16752            const SIGNATURE: &'static str = "renounceOwnership()";
16753            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
16754            #[inline]
16755            fn new<'a>(
16756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16757            ) -> Self {
16758                tuple.into()
16759            }
16760            #[inline]
16761            fn tokenize(&self) -> Self::Token<'_> {
16762                ()
16763            }
16764            #[inline]
16765            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16766                renounceOwnershipReturn::_tokenize(ret)
16767            }
16768            #[inline]
16769            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16770                <Self::ReturnTuple<
16771                    '_,
16772                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16773                    .map(Into::into)
16774            }
16775            #[inline]
16776            fn abi_decode_returns_validate(
16777                data: &[u8],
16778            ) -> alloy_sol_types::Result<Self::Return> {
16779                <Self::ReturnTuple<
16780                    '_,
16781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16782                    .map(Into::into)
16783            }
16784        }
16785    };
16786    #[derive(serde::Serialize, serde::Deserialize)]
16787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16788    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
16789```solidity
16790function renounceRole(bytes32 role, address callerConfirmation) external;
16791```*/
16792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16793    #[derive(Clone)]
16794    pub struct renounceRoleCall {
16795        #[allow(missing_docs)]
16796        pub role: alloy::sol_types::private::FixedBytes<32>,
16797        #[allow(missing_docs)]
16798        pub callerConfirmation: alloy::sol_types::private::Address,
16799    }
16800    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
16801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16802    #[derive(Clone)]
16803    pub struct renounceRoleReturn {}
16804    #[allow(
16805        non_camel_case_types,
16806        non_snake_case,
16807        clippy::pub_underscore_fields,
16808        clippy::style
16809    )]
16810    const _: () = {
16811        use alloy::sol_types as alloy_sol_types;
16812        {
16813            #[doc(hidden)]
16814            #[allow(dead_code)]
16815            type UnderlyingSolTuple<'a> = (
16816                alloy::sol_types::sol_data::FixedBytes<32>,
16817                alloy::sol_types::sol_data::Address,
16818            );
16819            #[doc(hidden)]
16820            type UnderlyingRustTuple<'a> = (
16821                alloy::sol_types::private::FixedBytes<32>,
16822                alloy::sol_types::private::Address,
16823            );
16824            #[cfg(test)]
16825            #[allow(dead_code, unreachable_patterns)]
16826            fn _type_assertion(
16827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16828            ) {
16829                match _t {
16830                    alloy_sol_types::private::AssertTypeEq::<
16831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16832                    >(_) => {}
16833                }
16834            }
16835            #[automatically_derived]
16836            #[doc(hidden)]
16837            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
16838                fn from(value: renounceRoleCall) -> Self {
16839                    (value.role, value.callerConfirmation)
16840                }
16841            }
16842            #[automatically_derived]
16843            #[doc(hidden)]
16844            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
16845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16846                    Self {
16847                        role: tuple.0,
16848                        callerConfirmation: tuple.1,
16849                    }
16850                }
16851            }
16852        }
16853        {
16854            #[doc(hidden)]
16855            #[allow(dead_code)]
16856            type UnderlyingSolTuple<'a> = ();
16857            #[doc(hidden)]
16858            type UnderlyingRustTuple<'a> = ();
16859            #[cfg(test)]
16860            #[allow(dead_code, unreachable_patterns)]
16861            fn _type_assertion(
16862                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16863            ) {
16864                match _t {
16865                    alloy_sol_types::private::AssertTypeEq::<
16866                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16867                    >(_) => {}
16868                }
16869            }
16870            #[automatically_derived]
16871            #[doc(hidden)]
16872            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
16873                fn from(value: renounceRoleReturn) -> Self {
16874                    ()
16875                }
16876            }
16877            #[automatically_derived]
16878            #[doc(hidden)]
16879            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
16880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16881                    Self {}
16882                }
16883            }
16884        }
16885        impl renounceRoleReturn {
16886            fn _tokenize(
16887                &self,
16888            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16889                ()
16890            }
16891        }
16892        #[automatically_derived]
16893        impl alloy_sol_types::SolCall for renounceRoleCall {
16894            type Parameters<'a> = (
16895                alloy::sol_types::sol_data::FixedBytes<32>,
16896                alloy::sol_types::sol_data::Address,
16897            );
16898            type Token<'a> = <Self::Parameters<
16899                'a,
16900            > as alloy_sol_types::SolType>::Token<'a>;
16901            type Return = renounceRoleReturn;
16902            type ReturnTuple<'a> = ();
16903            type ReturnToken<'a> = <Self::ReturnTuple<
16904                'a,
16905            > as alloy_sol_types::SolType>::Token<'a>;
16906            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
16907            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
16908            #[inline]
16909            fn new<'a>(
16910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16911            ) -> Self {
16912                tuple.into()
16913            }
16914            #[inline]
16915            fn tokenize(&self) -> Self::Token<'_> {
16916                (
16917                    <alloy::sol_types::sol_data::FixedBytes<
16918                        32,
16919                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16920                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16921                        &self.callerConfirmation,
16922                    ),
16923                )
16924            }
16925            #[inline]
16926            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16927                renounceRoleReturn::_tokenize(ret)
16928            }
16929            #[inline]
16930            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16931                <Self::ReturnTuple<
16932                    '_,
16933                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16934                    .map(Into::into)
16935            }
16936            #[inline]
16937            fn abi_decode_returns_validate(
16938                data: &[u8],
16939            ) -> alloy_sol_types::Result<Self::Return> {
16940                <Self::ReturnTuple<
16941                    '_,
16942                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16943                    .map(Into::into)
16944            }
16945        }
16946    };
16947    #[derive(serde::Serialize, serde::Deserialize)]
16948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16949    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
16950```solidity
16951function revokeRole(bytes32 role, address account) external;
16952```*/
16953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16954    #[derive(Clone)]
16955    pub struct revokeRoleCall {
16956        #[allow(missing_docs)]
16957        pub role: alloy::sol_types::private::FixedBytes<32>,
16958        #[allow(missing_docs)]
16959        pub account: alloy::sol_types::private::Address,
16960    }
16961    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
16962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16963    #[derive(Clone)]
16964    pub struct revokeRoleReturn {}
16965    #[allow(
16966        non_camel_case_types,
16967        non_snake_case,
16968        clippy::pub_underscore_fields,
16969        clippy::style
16970    )]
16971    const _: () = {
16972        use alloy::sol_types as alloy_sol_types;
16973        {
16974            #[doc(hidden)]
16975            #[allow(dead_code)]
16976            type UnderlyingSolTuple<'a> = (
16977                alloy::sol_types::sol_data::FixedBytes<32>,
16978                alloy::sol_types::sol_data::Address,
16979            );
16980            #[doc(hidden)]
16981            type UnderlyingRustTuple<'a> = (
16982                alloy::sol_types::private::FixedBytes<32>,
16983                alloy::sol_types::private::Address,
16984            );
16985            #[cfg(test)]
16986            #[allow(dead_code, unreachable_patterns)]
16987            fn _type_assertion(
16988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16989            ) {
16990                match _t {
16991                    alloy_sol_types::private::AssertTypeEq::<
16992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16993                    >(_) => {}
16994                }
16995            }
16996            #[automatically_derived]
16997            #[doc(hidden)]
16998            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
16999                fn from(value: revokeRoleCall) -> Self {
17000                    (value.role, value.account)
17001                }
17002            }
17003            #[automatically_derived]
17004            #[doc(hidden)]
17005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
17006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17007                    Self {
17008                        role: tuple.0,
17009                        account: tuple.1,
17010                    }
17011                }
17012            }
17013        }
17014        {
17015            #[doc(hidden)]
17016            #[allow(dead_code)]
17017            type UnderlyingSolTuple<'a> = ();
17018            #[doc(hidden)]
17019            type UnderlyingRustTuple<'a> = ();
17020            #[cfg(test)]
17021            #[allow(dead_code, unreachable_patterns)]
17022            fn _type_assertion(
17023                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17024            ) {
17025                match _t {
17026                    alloy_sol_types::private::AssertTypeEq::<
17027                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17028                    >(_) => {}
17029                }
17030            }
17031            #[automatically_derived]
17032            #[doc(hidden)]
17033            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
17034                fn from(value: revokeRoleReturn) -> Self {
17035                    ()
17036                }
17037            }
17038            #[automatically_derived]
17039            #[doc(hidden)]
17040            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
17041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17042                    Self {}
17043                }
17044            }
17045        }
17046        impl revokeRoleReturn {
17047            fn _tokenize(
17048                &self,
17049            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17050                ()
17051            }
17052        }
17053        #[automatically_derived]
17054        impl alloy_sol_types::SolCall for revokeRoleCall {
17055            type Parameters<'a> = (
17056                alloy::sol_types::sol_data::FixedBytes<32>,
17057                alloy::sol_types::sol_data::Address,
17058            );
17059            type Token<'a> = <Self::Parameters<
17060                'a,
17061            > as alloy_sol_types::SolType>::Token<'a>;
17062            type Return = revokeRoleReturn;
17063            type ReturnTuple<'a> = ();
17064            type ReturnToken<'a> = <Self::ReturnTuple<
17065                'a,
17066            > as alloy_sol_types::SolType>::Token<'a>;
17067            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
17068            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
17069            #[inline]
17070            fn new<'a>(
17071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17072            ) -> Self {
17073                tuple.into()
17074            }
17075            #[inline]
17076            fn tokenize(&self) -> Self::Token<'_> {
17077                (
17078                    <alloy::sol_types::sol_data::FixedBytes<
17079                        32,
17080                    > as alloy_sol_types::SolType>::tokenize(&self.role),
17081                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17082                        &self.account,
17083                    ),
17084                )
17085            }
17086            #[inline]
17087            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17088                revokeRoleReturn::_tokenize(ret)
17089            }
17090            #[inline]
17091            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17092                <Self::ReturnTuple<
17093                    '_,
17094                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17095                    .map(Into::into)
17096            }
17097            #[inline]
17098            fn abi_decode_returns_validate(
17099                data: &[u8],
17100            ) -> alloy_sol_types::Result<Self::Return> {
17101                <Self::ReturnTuple<
17102                    '_,
17103                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17104                    .map(Into::into)
17105            }
17106        }
17107    };
17108    #[derive(serde::Serialize, serde::Deserialize)]
17109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17110    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
17111```solidity
17112function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
17113```*/
17114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17115    #[derive(Clone)]
17116    pub struct schnorrKeysCall {
17117        #[allow(missing_docs)]
17118        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
17119    }
17120    #[derive(serde::Serialize, serde::Deserialize)]
17121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17122    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
17123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17124    #[derive(Clone)]
17125    pub struct schnorrKeysReturn {
17126        #[allow(missing_docs)]
17127        pub used: bool,
17128    }
17129    #[allow(
17130        non_camel_case_types,
17131        non_snake_case,
17132        clippy::pub_underscore_fields,
17133        clippy::style
17134    )]
17135    const _: () = {
17136        use alloy::sol_types as alloy_sol_types;
17137        {
17138            #[doc(hidden)]
17139            #[allow(dead_code)]
17140            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17141            #[doc(hidden)]
17142            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
17143            #[cfg(test)]
17144            #[allow(dead_code, unreachable_patterns)]
17145            fn _type_assertion(
17146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17147            ) {
17148                match _t {
17149                    alloy_sol_types::private::AssertTypeEq::<
17150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17151                    >(_) => {}
17152                }
17153            }
17154            #[automatically_derived]
17155            #[doc(hidden)]
17156            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
17157                fn from(value: schnorrKeysCall) -> Self {
17158                    (value.schnorrKey,)
17159                }
17160            }
17161            #[automatically_derived]
17162            #[doc(hidden)]
17163            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
17164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17165                    Self { schnorrKey: tuple.0 }
17166                }
17167            }
17168        }
17169        {
17170            #[doc(hidden)]
17171            #[allow(dead_code)]
17172            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17173            #[doc(hidden)]
17174            type UnderlyingRustTuple<'a> = (bool,);
17175            #[cfg(test)]
17176            #[allow(dead_code, unreachable_patterns)]
17177            fn _type_assertion(
17178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17179            ) {
17180                match _t {
17181                    alloy_sol_types::private::AssertTypeEq::<
17182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17183                    >(_) => {}
17184                }
17185            }
17186            #[automatically_derived]
17187            #[doc(hidden)]
17188            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
17189                fn from(value: schnorrKeysReturn) -> Self {
17190                    (value.used,)
17191                }
17192            }
17193            #[automatically_derived]
17194            #[doc(hidden)]
17195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
17196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17197                    Self { used: tuple.0 }
17198                }
17199            }
17200        }
17201        #[automatically_derived]
17202        impl alloy_sol_types::SolCall for schnorrKeysCall {
17203            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17204            type Token<'a> = <Self::Parameters<
17205                'a,
17206            > as alloy_sol_types::SolType>::Token<'a>;
17207            type Return = bool;
17208            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17209            type ReturnToken<'a> = <Self::ReturnTuple<
17210                'a,
17211            > as alloy_sol_types::SolType>::Token<'a>;
17212            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
17213            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
17214            #[inline]
17215            fn new<'a>(
17216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17217            ) -> Self {
17218                tuple.into()
17219            }
17220            #[inline]
17221            fn tokenize(&self) -> Self::Token<'_> {
17222                (
17223                    <alloy::sol_types::sol_data::FixedBytes<
17224                        32,
17225                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
17226                )
17227            }
17228            #[inline]
17229            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17230                (
17231                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17232                        ret,
17233                    ),
17234                )
17235            }
17236            #[inline]
17237            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17238                <Self::ReturnTuple<
17239                    '_,
17240                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17241                    .map(|r| {
17242                        let r: schnorrKeysReturn = r.into();
17243                        r.used
17244                    })
17245            }
17246            #[inline]
17247            fn abi_decode_returns_validate(
17248                data: &[u8],
17249            ) -> alloy_sol_types::Result<Self::Return> {
17250                <Self::ReturnTuple<
17251                    '_,
17252                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17253                    .map(|r| {
17254                        let r: schnorrKeysReturn = r.into();
17255                        r.used
17256                    })
17257            }
17258        }
17259    };
17260    #[derive(serde::Serialize, serde::Deserialize)]
17261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17262    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
17263```solidity
17264function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
17265```*/
17266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17267    #[derive(Clone)]
17268    pub struct setMaxCommissionIncreaseCall {
17269        #[allow(missing_docs)]
17270        pub newMaxIncrease: u16,
17271    }
17272    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
17273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17274    #[derive(Clone)]
17275    pub struct setMaxCommissionIncreaseReturn {}
17276    #[allow(
17277        non_camel_case_types,
17278        non_snake_case,
17279        clippy::pub_underscore_fields,
17280        clippy::style
17281    )]
17282    const _: () = {
17283        use alloy::sol_types as alloy_sol_types;
17284        {
17285            #[doc(hidden)]
17286            #[allow(dead_code)]
17287            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17288            #[doc(hidden)]
17289            type UnderlyingRustTuple<'a> = (u16,);
17290            #[cfg(test)]
17291            #[allow(dead_code, unreachable_patterns)]
17292            fn _type_assertion(
17293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17294            ) {
17295                match _t {
17296                    alloy_sol_types::private::AssertTypeEq::<
17297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17298                    >(_) => {}
17299                }
17300            }
17301            #[automatically_derived]
17302            #[doc(hidden)]
17303            impl ::core::convert::From<setMaxCommissionIncreaseCall>
17304            for UnderlyingRustTuple<'_> {
17305                fn from(value: setMaxCommissionIncreaseCall) -> Self {
17306                    (value.newMaxIncrease,)
17307                }
17308            }
17309            #[automatically_derived]
17310            #[doc(hidden)]
17311            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17312            for setMaxCommissionIncreaseCall {
17313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17314                    Self { newMaxIncrease: tuple.0 }
17315                }
17316            }
17317        }
17318        {
17319            #[doc(hidden)]
17320            #[allow(dead_code)]
17321            type UnderlyingSolTuple<'a> = ();
17322            #[doc(hidden)]
17323            type UnderlyingRustTuple<'a> = ();
17324            #[cfg(test)]
17325            #[allow(dead_code, unreachable_patterns)]
17326            fn _type_assertion(
17327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17328            ) {
17329                match _t {
17330                    alloy_sol_types::private::AssertTypeEq::<
17331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17332                    >(_) => {}
17333                }
17334            }
17335            #[automatically_derived]
17336            #[doc(hidden)]
17337            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
17338            for UnderlyingRustTuple<'_> {
17339                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
17340                    ()
17341                }
17342            }
17343            #[automatically_derived]
17344            #[doc(hidden)]
17345            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17346            for setMaxCommissionIncreaseReturn {
17347                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17348                    Self {}
17349                }
17350            }
17351        }
17352        impl setMaxCommissionIncreaseReturn {
17353            fn _tokenize(
17354                &self,
17355            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
17356                '_,
17357            > {
17358                ()
17359            }
17360        }
17361        #[automatically_derived]
17362        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
17363            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17364            type Token<'a> = <Self::Parameters<
17365                'a,
17366            > as alloy_sol_types::SolType>::Token<'a>;
17367            type Return = setMaxCommissionIncreaseReturn;
17368            type ReturnTuple<'a> = ();
17369            type ReturnToken<'a> = <Self::ReturnTuple<
17370                'a,
17371            > as alloy_sol_types::SolType>::Token<'a>;
17372            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
17373            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
17374            #[inline]
17375            fn new<'a>(
17376                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17377            ) -> Self {
17378                tuple.into()
17379            }
17380            #[inline]
17381            fn tokenize(&self) -> Self::Token<'_> {
17382                (
17383                    <alloy::sol_types::sol_data::Uint<
17384                        16,
17385                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
17386                )
17387            }
17388            #[inline]
17389            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17390                setMaxCommissionIncreaseReturn::_tokenize(ret)
17391            }
17392            #[inline]
17393            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17394                <Self::ReturnTuple<
17395                    '_,
17396                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17397                    .map(Into::into)
17398            }
17399            #[inline]
17400            fn abi_decode_returns_validate(
17401                data: &[u8],
17402            ) -> alloy_sol_types::Result<Self::Return> {
17403                <Self::ReturnTuple<
17404                    '_,
17405                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17406                    .map(Into::into)
17407            }
17408        }
17409    };
17410    #[derive(serde::Serialize, serde::Deserialize)]
17411    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17412    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
17413```solidity
17414function setMinCommissionUpdateInterval(uint256 newInterval) external;
17415```*/
17416    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17417    #[derive(Clone)]
17418    pub struct setMinCommissionUpdateIntervalCall {
17419        #[allow(missing_docs)]
17420        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
17421    }
17422    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
17423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17424    #[derive(Clone)]
17425    pub struct setMinCommissionUpdateIntervalReturn {}
17426    #[allow(
17427        non_camel_case_types,
17428        non_snake_case,
17429        clippy::pub_underscore_fields,
17430        clippy::style
17431    )]
17432    const _: () = {
17433        use alloy::sol_types as alloy_sol_types;
17434        {
17435            #[doc(hidden)]
17436            #[allow(dead_code)]
17437            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17438            #[doc(hidden)]
17439            type UnderlyingRustTuple<'a> = (
17440                alloy::sol_types::private::primitives::aliases::U256,
17441            );
17442            #[cfg(test)]
17443            #[allow(dead_code, unreachable_patterns)]
17444            fn _type_assertion(
17445                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17446            ) {
17447                match _t {
17448                    alloy_sol_types::private::AssertTypeEq::<
17449                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17450                    >(_) => {}
17451                }
17452            }
17453            #[automatically_derived]
17454            #[doc(hidden)]
17455            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
17456            for UnderlyingRustTuple<'_> {
17457                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
17458                    (value.newInterval,)
17459                }
17460            }
17461            #[automatically_derived]
17462            #[doc(hidden)]
17463            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17464            for setMinCommissionUpdateIntervalCall {
17465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17466                    Self { newInterval: tuple.0 }
17467                }
17468            }
17469        }
17470        {
17471            #[doc(hidden)]
17472            #[allow(dead_code)]
17473            type UnderlyingSolTuple<'a> = ();
17474            #[doc(hidden)]
17475            type UnderlyingRustTuple<'a> = ();
17476            #[cfg(test)]
17477            #[allow(dead_code, unreachable_patterns)]
17478            fn _type_assertion(
17479                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17480            ) {
17481                match _t {
17482                    alloy_sol_types::private::AssertTypeEq::<
17483                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17484                    >(_) => {}
17485                }
17486            }
17487            #[automatically_derived]
17488            #[doc(hidden)]
17489            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
17490            for UnderlyingRustTuple<'_> {
17491                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
17492                    ()
17493                }
17494            }
17495            #[automatically_derived]
17496            #[doc(hidden)]
17497            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17498            for setMinCommissionUpdateIntervalReturn {
17499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17500                    Self {}
17501                }
17502            }
17503        }
17504        impl setMinCommissionUpdateIntervalReturn {
17505            fn _tokenize(
17506                &self,
17507            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
17508                '_,
17509            > {
17510                ()
17511            }
17512        }
17513        #[automatically_derived]
17514        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
17515            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17516            type Token<'a> = <Self::Parameters<
17517                'a,
17518            > as alloy_sol_types::SolType>::Token<'a>;
17519            type Return = setMinCommissionUpdateIntervalReturn;
17520            type ReturnTuple<'a> = ();
17521            type ReturnToken<'a> = <Self::ReturnTuple<
17522                'a,
17523            > as alloy_sol_types::SolType>::Token<'a>;
17524            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
17525            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
17526            #[inline]
17527            fn new<'a>(
17528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17529            ) -> Self {
17530                tuple.into()
17531            }
17532            #[inline]
17533            fn tokenize(&self) -> Self::Token<'_> {
17534                (
17535                    <alloy::sol_types::sol_data::Uint<
17536                        256,
17537                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
17538                )
17539            }
17540            #[inline]
17541            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17542                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
17543            }
17544            #[inline]
17545            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17546                <Self::ReturnTuple<
17547                    '_,
17548                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17549                    .map(Into::into)
17550            }
17551            #[inline]
17552            fn abi_decode_returns_validate(
17553                data: &[u8],
17554            ) -> alloy_sol_types::Result<Self::Return> {
17555                <Self::ReturnTuple<
17556                    '_,
17557                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17558                    .map(Into::into)
17559            }
17560        }
17561    };
17562    #[derive(serde::Serialize, serde::Deserialize)]
17563    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17564    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
17565```solidity
17566function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
17567```*/
17568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17569    #[derive(Clone)]
17570    pub struct setMinDelegateAmountCall {
17571        #[allow(missing_docs)]
17572        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
17573    }
17574    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
17575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17576    #[derive(Clone)]
17577    pub struct setMinDelegateAmountReturn {}
17578    #[allow(
17579        non_camel_case_types,
17580        non_snake_case,
17581        clippy::pub_underscore_fields,
17582        clippy::style
17583    )]
17584    const _: () = {
17585        use alloy::sol_types as alloy_sol_types;
17586        {
17587            #[doc(hidden)]
17588            #[allow(dead_code)]
17589            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17590            #[doc(hidden)]
17591            type UnderlyingRustTuple<'a> = (
17592                alloy::sol_types::private::primitives::aliases::U256,
17593            );
17594            #[cfg(test)]
17595            #[allow(dead_code, unreachable_patterns)]
17596            fn _type_assertion(
17597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17598            ) {
17599                match _t {
17600                    alloy_sol_types::private::AssertTypeEq::<
17601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17602                    >(_) => {}
17603                }
17604            }
17605            #[automatically_derived]
17606            #[doc(hidden)]
17607            impl ::core::convert::From<setMinDelegateAmountCall>
17608            for UnderlyingRustTuple<'_> {
17609                fn from(value: setMinDelegateAmountCall) -> Self {
17610                    (value.newMinDelegateAmount,)
17611                }
17612            }
17613            #[automatically_derived]
17614            #[doc(hidden)]
17615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17616            for setMinDelegateAmountCall {
17617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17618                    Self {
17619                        newMinDelegateAmount: tuple.0,
17620                    }
17621                }
17622            }
17623        }
17624        {
17625            #[doc(hidden)]
17626            #[allow(dead_code)]
17627            type UnderlyingSolTuple<'a> = ();
17628            #[doc(hidden)]
17629            type UnderlyingRustTuple<'a> = ();
17630            #[cfg(test)]
17631            #[allow(dead_code, unreachable_patterns)]
17632            fn _type_assertion(
17633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17634            ) {
17635                match _t {
17636                    alloy_sol_types::private::AssertTypeEq::<
17637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17638                    >(_) => {}
17639                }
17640            }
17641            #[automatically_derived]
17642            #[doc(hidden)]
17643            impl ::core::convert::From<setMinDelegateAmountReturn>
17644            for UnderlyingRustTuple<'_> {
17645                fn from(value: setMinDelegateAmountReturn) -> Self {
17646                    ()
17647                }
17648            }
17649            #[automatically_derived]
17650            #[doc(hidden)]
17651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17652            for setMinDelegateAmountReturn {
17653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17654                    Self {}
17655                }
17656            }
17657        }
17658        impl setMinDelegateAmountReturn {
17659            fn _tokenize(
17660                &self,
17661            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
17662                '_,
17663            > {
17664                ()
17665            }
17666        }
17667        #[automatically_derived]
17668        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
17669            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17670            type Token<'a> = <Self::Parameters<
17671                'a,
17672            > as alloy_sol_types::SolType>::Token<'a>;
17673            type Return = setMinDelegateAmountReturn;
17674            type ReturnTuple<'a> = ();
17675            type ReturnToken<'a> = <Self::ReturnTuple<
17676                'a,
17677            > as alloy_sol_types::SolType>::Token<'a>;
17678            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
17679            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
17680            #[inline]
17681            fn new<'a>(
17682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17683            ) -> Self {
17684                tuple.into()
17685            }
17686            #[inline]
17687            fn tokenize(&self) -> Self::Token<'_> {
17688                (
17689                    <alloy::sol_types::sol_data::Uint<
17690                        256,
17691                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
17692                )
17693            }
17694            #[inline]
17695            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17696                setMinDelegateAmountReturn::_tokenize(ret)
17697            }
17698            #[inline]
17699            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17700                <Self::ReturnTuple<
17701                    '_,
17702                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17703                    .map(Into::into)
17704            }
17705            #[inline]
17706            fn abi_decode_returns_validate(
17707                data: &[u8],
17708            ) -> alloy_sol_types::Result<Self::Return> {
17709                <Self::ReturnTuple<
17710                    '_,
17711                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17712                    .map(Into::into)
17713            }
17714        }
17715    };
17716    #[derive(serde::Serialize, serde::Deserialize)]
17717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17718    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
17719```solidity
17720function supportsInterface(bytes4 interfaceId) external view returns (bool);
17721```*/
17722    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17723    #[derive(Clone)]
17724    pub struct supportsInterfaceCall {
17725        #[allow(missing_docs)]
17726        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
17727    }
17728    #[derive(serde::Serialize, serde::Deserialize)]
17729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17730    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
17731    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17732    #[derive(Clone)]
17733    pub struct supportsInterfaceReturn {
17734        #[allow(missing_docs)]
17735        pub _0: bool,
17736    }
17737    #[allow(
17738        non_camel_case_types,
17739        non_snake_case,
17740        clippy::pub_underscore_fields,
17741        clippy::style
17742    )]
17743    const _: () = {
17744        use alloy::sol_types as alloy_sol_types;
17745        {
17746            #[doc(hidden)]
17747            #[allow(dead_code)]
17748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17749            #[doc(hidden)]
17750            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
17751            #[cfg(test)]
17752            #[allow(dead_code, unreachable_patterns)]
17753            fn _type_assertion(
17754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17755            ) {
17756                match _t {
17757                    alloy_sol_types::private::AssertTypeEq::<
17758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17759                    >(_) => {}
17760                }
17761            }
17762            #[automatically_derived]
17763            #[doc(hidden)]
17764            impl ::core::convert::From<supportsInterfaceCall>
17765            for UnderlyingRustTuple<'_> {
17766                fn from(value: supportsInterfaceCall) -> Self {
17767                    (value.interfaceId,)
17768                }
17769            }
17770            #[automatically_derived]
17771            #[doc(hidden)]
17772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17773            for supportsInterfaceCall {
17774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17775                    Self { interfaceId: tuple.0 }
17776                }
17777            }
17778        }
17779        {
17780            #[doc(hidden)]
17781            #[allow(dead_code)]
17782            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17783            #[doc(hidden)]
17784            type UnderlyingRustTuple<'a> = (bool,);
17785            #[cfg(test)]
17786            #[allow(dead_code, unreachable_patterns)]
17787            fn _type_assertion(
17788                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17789            ) {
17790                match _t {
17791                    alloy_sol_types::private::AssertTypeEq::<
17792                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17793                    >(_) => {}
17794                }
17795            }
17796            #[automatically_derived]
17797            #[doc(hidden)]
17798            impl ::core::convert::From<supportsInterfaceReturn>
17799            for UnderlyingRustTuple<'_> {
17800                fn from(value: supportsInterfaceReturn) -> Self {
17801                    (value._0,)
17802                }
17803            }
17804            #[automatically_derived]
17805            #[doc(hidden)]
17806            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17807            for supportsInterfaceReturn {
17808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17809                    Self { _0: tuple.0 }
17810                }
17811            }
17812        }
17813        #[automatically_derived]
17814        impl alloy_sol_types::SolCall for supportsInterfaceCall {
17815            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17816            type Token<'a> = <Self::Parameters<
17817                'a,
17818            > as alloy_sol_types::SolType>::Token<'a>;
17819            type Return = bool;
17820            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17821            type ReturnToken<'a> = <Self::ReturnTuple<
17822                'a,
17823            > as alloy_sol_types::SolType>::Token<'a>;
17824            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
17825            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
17826            #[inline]
17827            fn new<'a>(
17828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17829            ) -> Self {
17830                tuple.into()
17831            }
17832            #[inline]
17833            fn tokenize(&self) -> Self::Token<'_> {
17834                (
17835                    <alloy::sol_types::sol_data::FixedBytes<
17836                        4,
17837                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
17838                )
17839            }
17840            #[inline]
17841            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17842                (
17843                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17844                        ret,
17845                    ),
17846                )
17847            }
17848            #[inline]
17849            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17850                <Self::ReturnTuple<
17851                    '_,
17852                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17853                    .map(|r| {
17854                        let r: supportsInterfaceReturn = r.into();
17855                        r._0
17856                    })
17857            }
17858            #[inline]
17859            fn abi_decode_returns_validate(
17860                data: &[u8],
17861            ) -> alloy_sol_types::Result<Self::Return> {
17862                <Self::ReturnTuple<
17863                    '_,
17864                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17865                    .map(|r| {
17866                        let r: supportsInterfaceReturn = r.into();
17867                        r._0
17868                    })
17869            }
17870        }
17871    };
17872    #[derive(serde::Serialize, serde::Deserialize)]
17873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17874    /**Function with signature `token()` and selector `0xfc0c546a`.
17875```solidity
17876function token() external view returns (address);
17877```*/
17878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17879    #[derive(Clone)]
17880    pub struct tokenCall;
17881    #[derive(serde::Serialize, serde::Deserialize)]
17882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17883    ///Container type for the return parameters of the [`token()`](tokenCall) function.
17884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17885    #[derive(Clone)]
17886    pub struct tokenReturn {
17887        #[allow(missing_docs)]
17888        pub _0: alloy::sol_types::private::Address,
17889    }
17890    #[allow(
17891        non_camel_case_types,
17892        non_snake_case,
17893        clippy::pub_underscore_fields,
17894        clippy::style
17895    )]
17896    const _: () = {
17897        use alloy::sol_types as alloy_sol_types;
17898        {
17899            #[doc(hidden)]
17900            #[allow(dead_code)]
17901            type UnderlyingSolTuple<'a> = ();
17902            #[doc(hidden)]
17903            type UnderlyingRustTuple<'a> = ();
17904            #[cfg(test)]
17905            #[allow(dead_code, unreachable_patterns)]
17906            fn _type_assertion(
17907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17908            ) {
17909                match _t {
17910                    alloy_sol_types::private::AssertTypeEq::<
17911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17912                    >(_) => {}
17913                }
17914            }
17915            #[automatically_derived]
17916            #[doc(hidden)]
17917            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
17918                fn from(value: tokenCall) -> Self {
17919                    ()
17920                }
17921            }
17922            #[automatically_derived]
17923            #[doc(hidden)]
17924            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
17925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17926                    Self
17927                }
17928            }
17929        }
17930        {
17931            #[doc(hidden)]
17932            #[allow(dead_code)]
17933            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17934            #[doc(hidden)]
17935            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17936            #[cfg(test)]
17937            #[allow(dead_code, unreachable_patterns)]
17938            fn _type_assertion(
17939                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17940            ) {
17941                match _t {
17942                    alloy_sol_types::private::AssertTypeEq::<
17943                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17944                    >(_) => {}
17945                }
17946            }
17947            #[automatically_derived]
17948            #[doc(hidden)]
17949            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
17950                fn from(value: tokenReturn) -> Self {
17951                    (value._0,)
17952                }
17953            }
17954            #[automatically_derived]
17955            #[doc(hidden)]
17956            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
17957                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17958                    Self { _0: tuple.0 }
17959                }
17960            }
17961        }
17962        #[automatically_derived]
17963        impl alloy_sol_types::SolCall for tokenCall {
17964            type Parameters<'a> = ();
17965            type Token<'a> = <Self::Parameters<
17966                'a,
17967            > as alloy_sol_types::SolType>::Token<'a>;
17968            type Return = alloy::sol_types::private::Address;
17969            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17970            type ReturnToken<'a> = <Self::ReturnTuple<
17971                'a,
17972            > as alloy_sol_types::SolType>::Token<'a>;
17973            const SIGNATURE: &'static str = "token()";
17974            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
17975            #[inline]
17976            fn new<'a>(
17977                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17978            ) -> Self {
17979                tuple.into()
17980            }
17981            #[inline]
17982            fn tokenize(&self) -> Self::Token<'_> {
17983                ()
17984            }
17985            #[inline]
17986            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17987                (
17988                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17989                        ret,
17990                    ),
17991                )
17992            }
17993            #[inline]
17994            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17995                <Self::ReturnTuple<
17996                    '_,
17997                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17998                    .map(|r| {
17999                        let r: tokenReturn = r.into();
18000                        r._0
18001                    })
18002            }
18003            #[inline]
18004            fn abi_decode_returns_validate(
18005                data: &[u8],
18006            ) -> alloy_sol_types::Result<Self::Return> {
18007                <Self::ReturnTuple<
18008                    '_,
18009                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18010                    .map(|r| {
18011                        let r: tokenReturn = r.into();
18012                        r._0
18013                    })
18014            }
18015        }
18016    };
18017    #[derive(serde::Serialize, serde::Deserialize)]
18018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18019    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
18020```solidity
18021function transferOwnership(address newOwner) external;
18022```*/
18023    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18024    #[derive(Clone)]
18025    pub struct transferOwnershipCall {
18026        #[allow(missing_docs)]
18027        pub newOwner: alloy::sol_types::private::Address,
18028    }
18029    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
18030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18031    #[derive(Clone)]
18032    pub struct transferOwnershipReturn {}
18033    #[allow(
18034        non_camel_case_types,
18035        non_snake_case,
18036        clippy::pub_underscore_fields,
18037        clippy::style
18038    )]
18039    const _: () = {
18040        use alloy::sol_types as alloy_sol_types;
18041        {
18042            #[doc(hidden)]
18043            #[allow(dead_code)]
18044            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
18045            #[doc(hidden)]
18046            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
18047            #[cfg(test)]
18048            #[allow(dead_code, unreachable_patterns)]
18049            fn _type_assertion(
18050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18051            ) {
18052                match _t {
18053                    alloy_sol_types::private::AssertTypeEq::<
18054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18055                    >(_) => {}
18056                }
18057            }
18058            #[automatically_derived]
18059            #[doc(hidden)]
18060            impl ::core::convert::From<transferOwnershipCall>
18061            for UnderlyingRustTuple<'_> {
18062                fn from(value: transferOwnershipCall) -> Self {
18063                    (value.newOwner,)
18064                }
18065            }
18066            #[automatically_derived]
18067            #[doc(hidden)]
18068            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18069            for transferOwnershipCall {
18070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18071                    Self { newOwner: tuple.0 }
18072                }
18073            }
18074        }
18075        {
18076            #[doc(hidden)]
18077            #[allow(dead_code)]
18078            type UnderlyingSolTuple<'a> = ();
18079            #[doc(hidden)]
18080            type UnderlyingRustTuple<'a> = ();
18081            #[cfg(test)]
18082            #[allow(dead_code, unreachable_patterns)]
18083            fn _type_assertion(
18084                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18085            ) {
18086                match _t {
18087                    alloy_sol_types::private::AssertTypeEq::<
18088                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18089                    >(_) => {}
18090                }
18091            }
18092            #[automatically_derived]
18093            #[doc(hidden)]
18094            impl ::core::convert::From<transferOwnershipReturn>
18095            for UnderlyingRustTuple<'_> {
18096                fn from(value: transferOwnershipReturn) -> Self {
18097                    ()
18098                }
18099            }
18100            #[automatically_derived]
18101            #[doc(hidden)]
18102            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18103            for transferOwnershipReturn {
18104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18105                    Self {}
18106                }
18107            }
18108        }
18109        impl transferOwnershipReturn {
18110            fn _tokenize(
18111                &self,
18112            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18113                ()
18114            }
18115        }
18116        #[automatically_derived]
18117        impl alloy_sol_types::SolCall for transferOwnershipCall {
18118            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
18119            type Token<'a> = <Self::Parameters<
18120                'a,
18121            > as alloy_sol_types::SolType>::Token<'a>;
18122            type Return = transferOwnershipReturn;
18123            type ReturnTuple<'a> = ();
18124            type ReturnToken<'a> = <Self::ReturnTuple<
18125                'a,
18126            > as alloy_sol_types::SolType>::Token<'a>;
18127            const SIGNATURE: &'static str = "transferOwnership(address)";
18128            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
18129            #[inline]
18130            fn new<'a>(
18131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18132            ) -> Self {
18133                tuple.into()
18134            }
18135            #[inline]
18136            fn tokenize(&self) -> Self::Token<'_> {
18137                (
18138                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18139                        &self.newOwner,
18140                    ),
18141                )
18142            }
18143            #[inline]
18144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18145                transferOwnershipReturn::_tokenize(ret)
18146            }
18147            #[inline]
18148            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18149                <Self::ReturnTuple<
18150                    '_,
18151                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18152                    .map(Into::into)
18153            }
18154            #[inline]
18155            fn abi_decode_returns_validate(
18156                data: &[u8],
18157            ) -> alloy_sol_types::Result<Self::Return> {
18158                <Self::ReturnTuple<
18159                    '_,
18160                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18161                    .map(Into::into)
18162            }
18163        }
18164    };
18165    #[derive(serde::Serialize, serde::Deserialize)]
18166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18167    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
18168```solidity
18169function undelegate(address validator, uint256 amount) external;
18170```*/
18171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18172    #[derive(Clone)]
18173    pub struct undelegateCall {
18174        #[allow(missing_docs)]
18175        pub validator: alloy::sol_types::private::Address,
18176        #[allow(missing_docs)]
18177        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18178    }
18179    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
18180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18181    #[derive(Clone)]
18182    pub struct undelegateReturn {}
18183    #[allow(
18184        non_camel_case_types,
18185        non_snake_case,
18186        clippy::pub_underscore_fields,
18187        clippy::style
18188    )]
18189    const _: () = {
18190        use alloy::sol_types as alloy_sol_types;
18191        {
18192            #[doc(hidden)]
18193            #[allow(dead_code)]
18194            type UnderlyingSolTuple<'a> = (
18195                alloy::sol_types::sol_data::Address,
18196                alloy::sol_types::sol_data::Uint<256>,
18197            );
18198            #[doc(hidden)]
18199            type UnderlyingRustTuple<'a> = (
18200                alloy::sol_types::private::Address,
18201                alloy::sol_types::private::primitives::aliases::U256,
18202            );
18203            #[cfg(test)]
18204            #[allow(dead_code, unreachable_patterns)]
18205            fn _type_assertion(
18206                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18207            ) {
18208                match _t {
18209                    alloy_sol_types::private::AssertTypeEq::<
18210                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18211                    >(_) => {}
18212                }
18213            }
18214            #[automatically_derived]
18215            #[doc(hidden)]
18216            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
18217                fn from(value: undelegateCall) -> Self {
18218                    (value.validator, value.amount)
18219                }
18220            }
18221            #[automatically_derived]
18222            #[doc(hidden)]
18223            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
18224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18225                    Self {
18226                        validator: tuple.0,
18227                        amount: tuple.1,
18228                    }
18229                }
18230            }
18231        }
18232        {
18233            #[doc(hidden)]
18234            #[allow(dead_code)]
18235            type UnderlyingSolTuple<'a> = ();
18236            #[doc(hidden)]
18237            type UnderlyingRustTuple<'a> = ();
18238            #[cfg(test)]
18239            #[allow(dead_code, unreachable_patterns)]
18240            fn _type_assertion(
18241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18242            ) {
18243                match _t {
18244                    alloy_sol_types::private::AssertTypeEq::<
18245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18246                    >(_) => {}
18247                }
18248            }
18249            #[automatically_derived]
18250            #[doc(hidden)]
18251            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
18252                fn from(value: undelegateReturn) -> Self {
18253                    ()
18254                }
18255            }
18256            #[automatically_derived]
18257            #[doc(hidden)]
18258            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
18259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18260                    Self {}
18261                }
18262            }
18263        }
18264        impl undelegateReturn {
18265            fn _tokenize(
18266                &self,
18267            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18268                ()
18269            }
18270        }
18271        #[automatically_derived]
18272        impl alloy_sol_types::SolCall for undelegateCall {
18273            type Parameters<'a> = (
18274                alloy::sol_types::sol_data::Address,
18275                alloy::sol_types::sol_data::Uint<256>,
18276            );
18277            type Token<'a> = <Self::Parameters<
18278                'a,
18279            > as alloy_sol_types::SolType>::Token<'a>;
18280            type Return = undelegateReturn;
18281            type ReturnTuple<'a> = ();
18282            type ReturnToken<'a> = <Self::ReturnTuple<
18283                'a,
18284            > as alloy_sol_types::SolType>::Token<'a>;
18285            const SIGNATURE: &'static str = "undelegate(address,uint256)";
18286            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
18287            #[inline]
18288            fn new<'a>(
18289                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18290            ) -> Self {
18291                tuple.into()
18292            }
18293            #[inline]
18294            fn tokenize(&self) -> Self::Token<'_> {
18295                (
18296                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18297                        &self.validator,
18298                    ),
18299                    <alloy::sol_types::sol_data::Uint<
18300                        256,
18301                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18302                )
18303            }
18304            #[inline]
18305            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18306                undelegateReturn::_tokenize(ret)
18307            }
18308            #[inline]
18309            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18310                <Self::ReturnTuple<
18311                    '_,
18312                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18313                    .map(Into::into)
18314            }
18315            #[inline]
18316            fn abi_decode_returns_validate(
18317                data: &[u8],
18318            ) -> alloy_sol_types::Result<Self::Return> {
18319                <Self::ReturnTuple<
18320                    '_,
18321                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18322                    .map(Into::into)
18323            }
18324        }
18325    };
18326    #[derive(serde::Serialize, serde::Deserialize)]
18327    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18328    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
18329```solidity
18330function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
18331```*/
18332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18333    #[derive(Clone)]
18334    pub struct undelegationsCall {
18335        #[allow(missing_docs)]
18336        pub validator: alloy::sol_types::private::Address,
18337        #[allow(missing_docs)]
18338        pub delegator: alloy::sol_types::private::Address,
18339    }
18340    #[derive(serde::Serialize, serde::Deserialize)]
18341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18342    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
18343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18344    #[derive(Clone)]
18345    pub struct undelegationsReturn {
18346        #[allow(missing_docs)]
18347        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18348        #[allow(missing_docs)]
18349        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
18350    }
18351    #[allow(
18352        non_camel_case_types,
18353        non_snake_case,
18354        clippy::pub_underscore_fields,
18355        clippy::style
18356    )]
18357    const _: () = {
18358        use alloy::sol_types as alloy_sol_types;
18359        {
18360            #[doc(hidden)]
18361            #[allow(dead_code)]
18362            type UnderlyingSolTuple<'a> = (
18363                alloy::sol_types::sol_data::Address,
18364                alloy::sol_types::sol_data::Address,
18365            );
18366            #[doc(hidden)]
18367            type UnderlyingRustTuple<'a> = (
18368                alloy::sol_types::private::Address,
18369                alloy::sol_types::private::Address,
18370            );
18371            #[cfg(test)]
18372            #[allow(dead_code, unreachable_patterns)]
18373            fn _type_assertion(
18374                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18375            ) {
18376                match _t {
18377                    alloy_sol_types::private::AssertTypeEq::<
18378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18379                    >(_) => {}
18380                }
18381            }
18382            #[automatically_derived]
18383            #[doc(hidden)]
18384            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
18385                fn from(value: undelegationsCall) -> Self {
18386                    (value.validator, value.delegator)
18387                }
18388            }
18389            #[automatically_derived]
18390            #[doc(hidden)]
18391            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
18392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18393                    Self {
18394                        validator: tuple.0,
18395                        delegator: tuple.1,
18396                    }
18397                }
18398            }
18399        }
18400        {
18401            #[doc(hidden)]
18402            #[allow(dead_code)]
18403            type UnderlyingSolTuple<'a> = (
18404                alloy::sol_types::sol_data::Uint<256>,
18405                alloy::sol_types::sol_data::Uint<256>,
18406            );
18407            #[doc(hidden)]
18408            type UnderlyingRustTuple<'a> = (
18409                alloy::sol_types::private::primitives::aliases::U256,
18410                alloy::sol_types::private::primitives::aliases::U256,
18411            );
18412            #[cfg(test)]
18413            #[allow(dead_code, unreachable_patterns)]
18414            fn _type_assertion(
18415                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18416            ) {
18417                match _t {
18418                    alloy_sol_types::private::AssertTypeEq::<
18419                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18420                    >(_) => {}
18421                }
18422            }
18423            #[automatically_derived]
18424            #[doc(hidden)]
18425            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
18426                fn from(value: undelegationsReturn) -> Self {
18427                    (value.amount, value.unlocksAt)
18428                }
18429            }
18430            #[automatically_derived]
18431            #[doc(hidden)]
18432            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
18433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18434                    Self {
18435                        amount: tuple.0,
18436                        unlocksAt: tuple.1,
18437                    }
18438                }
18439            }
18440        }
18441        impl undelegationsReturn {
18442            fn _tokenize(
18443                &self,
18444            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18445                (
18446                    <alloy::sol_types::sol_data::Uint<
18447                        256,
18448                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18449                    <alloy::sol_types::sol_data::Uint<
18450                        256,
18451                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
18452                )
18453            }
18454        }
18455        #[automatically_derived]
18456        impl alloy_sol_types::SolCall for undelegationsCall {
18457            type Parameters<'a> = (
18458                alloy::sol_types::sol_data::Address,
18459                alloy::sol_types::sol_data::Address,
18460            );
18461            type Token<'a> = <Self::Parameters<
18462                'a,
18463            > as alloy_sol_types::SolType>::Token<'a>;
18464            type Return = undelegationsReturn;
18465            type ReturnTuple<'a> = (
18466                alloy::sol_types::sol_data::Uint<256>,
18467                alloy::sol_types::sol_data::Uint<256>,
18468            );
18469            type ReturnToken<'a> = <Self::ReturnTuple<
18470                'a,
18471            > as alloy_sol_types::SolType>::Token<'a>;
18472            const SIGNATURE: &'static str = "undelegations(address,address)";
18473            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
18474            #[inline]
18475            fn new<'a>(
18476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18477            ) -> Self {
18478                tuple.into()
18479            }
18480            #[inline]
18481            fn tokenize(&self) -> Self::Token<'_> {
18482                (
18483                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18484                        &self.validator,
18485                    ),
18486                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18487                        &self.delegator,
18488                    ),
18489                )
18490            }
18491            #[inline]
18492            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18493                undelegationsReturn::_tokenize(ret)
18494            }
18495            #[inline]
18496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18497                <Self::ReturnTuple<
18498                    '_,
18499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18500                    .map(Into::into)
18501            }
18502            #[inline]
18503            fn abi_decode_returns_validate(
18504                data: &[u8],
18505            ) -> alloy_sol_types::Result<Self::Return> {
18506                <Self::ReturnTuple<
18507                    '_,
18508                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18509                    .map(Into::into)
18510            }
18511        }
18512    };
18513    #[derive(serde::Serialize, serde::Deserialize)]
18514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18515    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
18516```solidity
18517function unpause() external;
18518```*/
18519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18520    #[derive(Clone)]
18521    pub struct unpauseCall;
18522    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
18523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18524    #[derive(Clone)]
18525    pub struct unpauseReturn {}
18526    #[allow(
18527        non_camel_case_types,
18528        non_snake_case,
18529        clippy::pub_underscore_fields,
18530        clippy::style
18531    )]
18532    const _: () = {
18533        use alloy::sol_types as alloy_sol_types;
18534        {
18535            #[doc(hidden)]
18536            #[allow(dead_code)]
18537            type UnderlyingSolTuple<'a> = ();
18538            #[doc(hidden)]
18539            type UnderlyingRustTuple<'a> = ();
18540            #[cfg(test)]
18541            #[allow(dead_code, unreachable_patterns)]
18542            fn _type_assertion(
18543                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18544            ) {
18545                match _t {
18546                    alloy_sol_types::private::AssertTypeEq::<
18547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18548                    >(_) => {}
18549                }
18550            }
18551            #[automatically_derived]
18552            #[doc(hidden)]
18553            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
18554                fn from(value: unpauseCall) -> Self {
18555                    ()
18556                }
18557            }
18558            #[automatically_derived]
18559            #[doc(hidden)]
18560            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
18561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18562                    Self
18563                }
18564            }
18565        }
18566        {
18567            #[doc(hidden)]
18568            #[allow(dead_code)]
18569            type UnderlyingSolTuple<'a> = ();
18570            #[doc(hidden)]
18571            type UnderlyingRustTuple<'a> = ();
18572            #[cfg(test)]
18573            #[allow(dead_code, unreachable_patterns)]
18574            fn _type_assertion(
18575                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18576            ) {
18577                match _t {
18578                    alloy_sol_types::private::AssertTypeEq::<
18579                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18580                    >(_) => {}
18581                }
18582            }
18583            #[automatically_derived]
18584            #[doc(hidden)]
18585            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
18586                fn from(value: unpauseReturn) -> Self {
18587                    ()
18588                }
18589            }
18590            #[automatically_derived]
18591            #[doc(hidden)]
18592            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
18593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18594                    Self {}
18595                }
18596            }
18597        }
18598        impl unpauseReturn {
18599            fn _tokenize(
18600                &self,
18601            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18602                ()
18603            }
18604        }
18605        #[automatically_derived]
18606        impl alloy_sol_types::SolCall for unpauseCall {
18607            type Parameters<'a> = ();
18608            type Token<'a> = <Self::Parameters<
18609                'a,
18610            > as alloy_sol_types::SolType>::Token<'a>;
18611            type Return = unpauseReturn;
18612            type ReturnTuple<'a> = ();
18613            type ReturnToken<'a> = <Self::ReturnTuple<
18614                'a,
18615            > as alloy_sol_types::SolType>::Token<'a>;
18616            const SIGNATURE: &'static str = "unpause()";
18617            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
18618            #[inline]
18619            fn new<'a>(
18620                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18621            ) -> Self {
18622                tuple.into()
18623            }
18624            #[inline]
18625            fn tokenize(&self) -> Self::Token<'_> {
18626                ()
18627            }
18628            #[inline]
18629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18630                unpauseReturn::_tokenize(ret)
18631            }
18632            #[inline]
18633            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18634                <Self::ReturnTuple<
18635                    '_,
18636                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18637                    .map(Into::into)
18638            }
18639            #[inline]
18640            fn abi_decode_returns_validate(
18641                data: &[u8],
18642            ) -> alloy_sol_types::Result<Self::Return> {
18643                <Self::ReturnTuple<
18644                    '_,
18645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18646                    .map(Into::into)
18647            }
18648        }
18649    };
18650    #[derive(serde::Serialize, serde::Deserialize)]
18651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18652    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
18653```solidity
18654function updateCommission(uint16 newCommission) external;
18655```*/
18656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18657    #[derive(Clone)]
18658    pub struct updateCommissionCall {
18659        #[allow(missing_docs)]
18660        pub newCommission: u16,
18661    }
18662    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
18663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18664    #[derive(Clone)]
18665    pub struct updateCommissionReturn {}
18666    #[allow(
18667        non_camel_case_types,
18668        non_snake_case,
18669        clippy::pub_underscore_fields,
18670        clippy::style
18671    )]
18672    const _: () = {
18673        use alloy::sol_types as alloy_sol_types;
18674        {
18675            #[doc(hidden)]
18676            #[allow(dead_code)]
18677            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18678            #[doc(hidden)]
18679            type UnderlyingRustTuple<'a> = (u16,);
18680            #[cfg(test)]
18681            #[allow(dead_code, unreachable_patterns)]
18682            fn _type_assertion(
18683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18684            ) {
18685                match _t {
18686                    alloy_sol_types::private::AssertTypeEq::<
18687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18688                    >(_) => {}
18689                }
18690            }
18691            #[automatically_derived]
18692            #[doc(hidden)]
18693            impl ::core::convert::From<updateCommissionCall>
18694            for UnderlyingRustTuple<'_> {
18695                fn from(value: updateCommissionCall) -> Self {
18696                    (value.newCommission,)
18697                }
18698            }
18699            #[automatically_derived]
18700            #[doc(hidden)]
18701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18702            for updateCommissionCall {
18703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18704                    Self { newCommission: tuple.0 }
18705                }
18706            }
18707        }
18708        {
18709            #[doc(hidden)]
18710            #[allow(dead_code)]
18711            type UnderlyingSolTuple<'a> = ();
18712            #[doc(hidden)]
18713            type UnderlyingRustTuple<'a> = ();
18714            #[cfg(test)]
18715            #[allow(dead_code, unreachable_patterns)]
18716            fn _type_assertion(
18717                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18718            ) {
18719                match _t {
18720                    alloy_sol_types::private::AssertTypeEq::<
18721                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18722                    >(_) => {}
18723                }
18724            }
18725            #[automatically_derived]
18726            #[doc(hidden)]
18727            impl ::core::convert::From<updateCommissionReturn>
18728            for UnderlyingRustTuple<'_> {
18729                fn from(value: updateCommissionReturn) -> Self {
18730                    ()
18731                }
18732            }
18733            #[automatically_derived]
18734            #[doc(hidden)]
18735            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18736            for updateCommissionReturn {
18737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18738                    Self {}
18739                }
18740            }
18741        }
18742        impl updateCommissionReturn {
18743            fn _tokenize(
18744                &self,
18745            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18746                ()
18747            }
18748        }
18749        #[automatically_derived]
18750        impl alloy_sol_types::SolCall for updateCommissionCall {
18751            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18752            type Token<'a> = <Self::Parameters<
18753                'a,
18754            > as alloy_sol_types::SolType>::Token<'a>;
18755            type Return = updateCommissionReturn;
18756            type ReturnTuple<'a> = ();
18757            type ReturnToken<'a> = <Self::ReturnTuple<
18758                'a,
18759            > as alloy_sol_types::SolType>::Token<'a>;
18760            const SIGNATURE: &'static str = "updateCommission(uint16)";
18761            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
18762            #[inline]
18763            fn new<'a>(
18764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18765            ) -> Self {
18766                tuple.into()
18767            }
18768            #[inline]
18769            fn tokenize(&self) -> Self::Token<'_> {
18770                (
18771                    <alloy::sol_types::sol_data::Uint<
18772                        16,
18773                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
18774                )
18775            }
18776            #[inline]
18777            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18778                updateCommissionReturn::_tokenize(ret)
18779            }
18780            #[inline]
18781            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18782                <Self::ReturnTuple<
18783                    '_,
18784                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18785                    .map(Into::into)
18786            }
18787            #[inline]
18788            fn abi_decode_returns_validate(
18789                data: &[u8],
18790            ) -> alloy_sol_types::Result<Self::Return> {
18791                <Self::ReturnTuple<
18792                    '_,
18793                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18794                    .map(Into::into)
18795            }
18796        }
18797    };
18798    #[derive(serde::Serialize, serde::Deserialize)]
18799    #[derive()]
18800    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
18801```solidity
18802function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
18803```*/
18804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18805    #[derive(Clone)]
18806    pub struct updateConsensusKeysCall {
18807        #[allow(missing_docs)]
18808        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18809        #[allow(missing_docs)]
18810        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18811        #[allow(missing_docs)]
18812        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18813    }
18814    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
18815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18816    #[derive(Clone)]
18817    pub struct updateConsensusKeysReturn {}
18818    #[allow(
18819        non_camel_case_types,
18820        non_snake_case,
18821        clippy::pub_underscore_fields,
18822        clippy::style
18823    )]
18824    const _: () = {
18825        use alloy::sol_types as alloy_sol_types;
18826        {
18827            #[doc(hidden)]
18828            #[allow(dead_code)]
18829            type UnderlyingSolTuple<'a> = (
18830                BN254::G2Point,
18831                EdOnBN254::EdOnBN254Point,
18832                BN254::G1Point,
18833            );
18834            #[doc(hidden)]
18835            type UnderlyingRustTuple<'a> = (
18836                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18837                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18838                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18839            );
18840            #[cfg(test)]
18841            #[allow(dead_code, unreachable_patterns)]
18842            fn _type_assertion(
18843                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18844            ) {
18845                match _t {
18846                    alloy_sol_types::private::AssertTypeEq::<
18847                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18848                    >(_) => {}
18849                }
18850            }
18851            #[automatically_derived]
18852            #[doc(hidden)]
18853            impl ::core::convert::From<updateConsensusKeysCall>
18854            for UnderlyingRustTuple<'_> {
18855                fn from(value: updateConsensusKeysCall) -> Self {
18856                    (value._0, value._1, value._2)
18857                }
18858            }
18859            #[automatically_derived]
18860            #[doc(hidden)]
18861            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18862            for updateConsensusKeysCall {
18863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18864                    Self {
18865                        _0: tuple.0,
18866                        _1: tuple.1,
18867                        _2: tuple.2,
18868                    }
18869                }
18870            }
18871        }
18872        {
18873            #[doc(hidden)]
18874            #[allow(dead_code)]
18875            type UnderlyingSolTuple<'a> = ();
18876            #[doc(hidden)]
18877            type UnderlyingRustTuple<'a> = ();
18878            #[cfg(test)]
18879            #[allow(dead_code, unreachable_patterns)]
18880            fn _type_assertion(
18881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18882            ) {
18883                match _t {
18884                    alloy_sol_types::private::AssertTypeEq::<
18885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18886                    >(_) => {}
18887                }
18888            }
18889            #[automatically_derived]
18890            #[doc(hidden)]
18891            impl ::core::convert::From<updateConsensusKeysReturn>
18892            for UnderlyingRustTuple<'_> {
18893                fn from(value: updateConsensusKeysReturn) -> Self {
18894                    ()
18895                }
18896            }
18897            #[automatically_derived]
18898            #[doc(hidden)]
18899            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18900            for updateConsensusKeysReturn {
18901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18902                    Self {}
18903                }
18904            }
18905        }
18906        impl updateConsensusKeysReturn {
18907            fn _tokenize(
18908                &self,
18909            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18910                ()
18911            }
18912        }
18913        #[automatically_derived]
18914        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
18915            type Parameters<'a> = (
18916                BN254::G2Point,
18917                EdOnBN254::EdOnBN254Point,
18918                BN254::G1Point,
18919            );
18920            type Token<'a> = <Self::Parameters<
18921                'a,
18922            > as alloy_sol_types::SolType>::Token<'a>;
18923            type Return = updateConsensusKeysReturn;
18924            type ReturnTuple<'a> = ();
18925            type ReturnToken<'a> = <Self::ReturnTuple<
18926                'a,
18927            > as alloy_sol_types::SolType>::Token<'a>;
18928            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
18929            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
18930            #[inline]
18931            fn new<'a>(
18932                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18933            ) -> Self {
18934                tuple.into()
18935            }
18936            #[inline]
18937            fn tokenize(&self) -> Self::Token<'_> {
18938                (
18939                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18940                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18941                        &self._1,
18942                    ),
18943                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18944                )
18945            }
18946            #[inline]
18947            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18948                updateConsensusKeysReturn::_tokenize(ret)
18949            }
18950            #[inline]
18951            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18952                <Self::ReturnTuple<
18953                    '_,
18954                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18955                    .map(Into::into)
18956            }
18957            #[inline]
18958            fn abi_decode_returns_validate(
18959                data: &[u8],
18960            ) -> alloy_sol_types::Result<Self::Return> {
18961                <Self::ReturnTuple<
18962                    '_,
18963                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18964                    .map(Into::into)
18965            }
18966        }
18967    };
18968    #[derive(serde::Serialize, serde::Deserialize)]
18969    #[derive()]
18970    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
18971```solidity
18972function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
18973```*/
18974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18975    #[derive(Clone)]
18976    pub struct updateConsensusKeysV2Call {
18977        #[allow(missing_docs)]
18978        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18979        #[allow(missing_docs)]
18980        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18981        #[allow(missing_docs)]
18982        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18983        #[allow(missing_docs)]
18984        pub schnorrSig: alloy::sol_types::private::Bytes,
18985    }
18986    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
18987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18988    #[derive(Clone)]
18989    pub struct updateConsensusKeysV2Return {}
18990    #[allow(
18991        non_camel_case_types,
18992        non_snake_case,
18993        clippy::pub_underscore_fields,
18994        clippy::style
18995    )]
18996    const _: () = {
18997        use alloy::sol_types as alloy_sol_types;
18998        {
18999            #[doc(hidden)]
19000            #[allow(dead_code)]
19001            type UnderlyingSolTuple<'a> = (
19002                BN254::G2Point,
19003                EdOnBN254::EdOnBN254Point,
19004                BN254::G1Point,
19005                alloy::sol_types::sol_data::Bytes,
19006            );
19007            #[doc(hidden)]
19008            type UnderlyingRustTuple<'a> = (
19009                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
19010                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
19011                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
19012                alloy::sol_types::private::Bytes,
19013            );
19014            #[cfg(test)]
19015            #[allow(dead_code, unreachable_patterns)]
19016            fn _type_assertion(
19017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19018            ) {
19019                match _t {
19020                    alloy_sol_types::private::AssertTypeEq::<
19021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19022                    >(_) => {}
19023                }
19024            }
19025            #[automatically_derived]
19026            #[doc(hidden)]
19027            impl ::core::convert::From<updateConsensusKeysV2Call>
19028            for UnderlyingRustTuple<'_> {
19029                fn from(value: updateConsensusKeysV2Call) -> Self {
19030                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
19031                }
19032            }
19033            #[automatically_derived]
19034            #[doc(hidden)]
19035            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19036            for updateConsensusKeysV2Call {
19037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19038                    Self {
19039                        blsVK: tuple.0,
19040                        schnorrVK: tuple.1,
19041                        blsSig: tuple.2,
19042                        schnorrSig: tuple.3,
19043                    }
19044                }
19045            }
19046        }
19047        {
19048            #[doc(hidden)]
19049            #[allow(dead_code)]
19050            type UnderlyingSolTuple<'a> = ();
19051            #[doc(hidden)]
19052            type UnderlyingRustTuple<'a> = ();
19053            #[cfg(test)]
19054            #[allow(dead_code, unreachable_patterns)]
19055            fn _type_assertion(
19056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19057            ) {
19058                match _t {
19059                    alloy_sol_types::private::AssertTypeEq::<
19060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19061                    >(_) => {}
19062                }
19063            }
19064            #[automatically_derived]
19065            #[doc(hidden)]
19066            impl ::core::convert::From<updateConsensusKeysV2Return>
19067            for UnderlyingRustTuple<'_> {
19068                fn from(value: updateConsensusKeysV2Return) -> Self {
19069                    ()
19070                }
19071            }
19072            #[automatically_derived]
19073            #[doc(hidden)]
19074            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19075            for updateConsensusKeysV2Return {
19076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19077                    Self {}
19078                }
19079            }
19080        }
19081        impl updateConsensusKeysV2Return {
19082            fn _tokenize(
19083                &self,
19084            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
19085                '_,
19086            > {
19087                ()
19088            }
19089        }
19090        #[automatically_derived]
19091        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
19092            type Parameters<'a> = (
19093                BN254::G2Point,
19094                EdOnBN254::EdOnBN254Point,
19095                BN254::G1Point,
19096                alloy::sol_types::sol_data::Bytes,
19097            );
19098            type Token<'a> = <Self::Parameters<
19099                'a,
19100            > as alloy_sol_types::SolType>::Token<'a>;
19101            type Return = updateConsensusKeysV2Return;
19102            type ReturnTuple<'a> = ();
19103            type ReturnToken<'a> = <Self::ReturnTuple<
19104                'a,
19105            > as alloy_sol_types::SolType>::Token<'a>;
19106            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
19107            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
19108            #[inline]
19109            fn new<'a>(
19110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19111            ) -> Self {
19112                tuple.into()
19113            }
19114            #[inline]
19115            fn tokenize(&self) -> Self::Token<'_> {
19116                (
19117                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
19118                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
19119                        &self.schnorrVK,
19120                    ),
19121                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
19122                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
19123                        &self.schnorrSig,
19124                    ),
19125                )
19126            }
19127            #[inline]
19128            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19129                updateConsensusKeysV2Return::_tokenize(ret)
19130            }
19131            #[inline]
19132            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19133                <Self::ReturnTuple<
19134                    '_,
19135                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19136                    .map(Into::into)
19137            }
19138            #[inline]
19139            fn abi_decode_returns_validate(
19140                data: &[u8],
19141            ) -> alloy_sol_types::Result<Self::Return> {
19142                <Self::ReturnTuple<
19143                    '_,
19144                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19145                    .map(Into::into)
19146            }
19147        }
19148    };
19149    #[derive(serde::Serialize, serde::Deserialize)]
19150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19151    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
19152```solidity
19153function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
19154```*/
19155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19156    #[derive(Clone)]
19157    pub struct updateExitEscrowPeriodCall {
19158        #[allow(missing_docs)]
19159        pub newExitEscrowPeriod: u64,
19160    }
19161    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
19162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19163    #[derive(Clone)]
19164    pub struct updateExitEscrowPeriodReturn {}
19165    #[allow(
19166        non_camel_case_types,
19167        non_snake_case,
19168        clippy::pub_underscore_fields,
19169        clippy::style
19170    )]
19171    const _: () = {
19172        use alloy::sol_types as alloy_sol_types;
19173        {
19174            #[doc(hidden)]
19175            #[allow(dead_code)]
19176            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19177            #[doc(hidden)]
19178            type UnderlyingRustTuple<'a> = (u64,);
19179            #[cfg(test)]
19180            #[allow(dead_code, unreachable_patterns)]
19181            fn _type_assertion(
19182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19183            ) {
19184                match _t {
19185                    alloy_sol_types::private::AssertTypeEq::<
19186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19187                    >(_) => {}
19188                }
19189            }
19190            #[automatically_derived]
19191            #[doc(hidden)]
19192            impl ::core::convert::From<updateExitEscrowPeriodCall>
19193            for UnderlyingRustTuple<'_> {
19194                fn from(value: updateExitEscrowPeriodCall) -> Self {
19195                    (value.newExitEscrowPeriod,)
19196                }
19197            }
19198            #[automatically_derived]
19199            #[doc(hidden)]
19200            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19201            for updateExitEscrowPeriodCall {
19202                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19203                    Self {
19204                        newExitEscrowPeriod: tuple.0,
19205                    }
19206                }
19207            }
19208        }
19209        {
19210            #[doc(hidden)]
19211            #[allow(dead_code)]
19212            type UnderlyingSolTuple<'a> = ();
19213            #[doc(hidden)]
19214            type UnderlyingRustTuple<'a> = ();
19215            #[cfg(test)]
19216            #[allow(dead_code, unreachable_patterns)]
19217            fn _type_assertion(
19218                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19219            ) {
19220                match _t {
19221                    alloy_sol_types::private::AssertTypeEq::<
19222                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19223                    >(_) => {}
19224                }
19225            }
19226            #[automatically_derived]
19227            #[doc(hidden)]
19228            impl ::core::convert::From<updateExitEscrowPeriodReturn>
19229            for UnderlyingRustTuple<'_> {
19230                fn from(value: updateExitEscrowPeriodReturn) -> Self {
19231                    ()
19232                }
19233            }
19234            #[automatically_derived]
19235            #[doc(hidden)]
19236            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19237            for updateExitEscrowPeriodReturn {
19238                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19239                    Self {}
19240                }
19241            }
19242        }
19243        impl updateExitEscrowPeriodReturn {
19244            fn _tokenize(
19245                &self,
19246            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
19247                '_,
19248            > {
19249                ()
19250            }
19251        }
19252        #[automatically_derived]
19253        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
19254            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19255            type Token<'a> = <Self::Parameters<
19256                'a,
19257            > as alloy_sol_types::SolType>::Token<'a>;
19258            type Return = updateExitEscrowPeriodReturn;
19259            type ReturnTuple<'a> = ();
19260            type ReturnToken<'a> = <Self::ReturnTuple<
19261                'a,
19262            > as alloy_sol_types::SolType>::Token<'a>;
19263            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
19264            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
19265            #[inline]
19266            fn new<'a>(
19267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19268            ) -> Self {
19269                tuple.into()
19270            }
19271            #[inline]
19272            fn tokenize(&self) -> Self::Token<'_> {
19273                (
19274                    <alloy::sol_types::sol_data::Uint<
19275                        64,
19276                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
19277                )
19278            }
19279            #[inline]
19280            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19281                updateExitEscrowPeriodReturn::_tokenize(ret)
19282            }
19283            #[inline]
19284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19285                <Self::ReturnTuple<
19286                    '_,
19287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19288                    .map(Into::into)
19289            }
19290            #[inline]
19291            fn abi_decode_returns_validate(
19292                data: &[u8],
19293            ) -> alloy_sol_types::Result<Self::Return> {
19294                <Self::ReturnTuple<
19295                    '_,
19296                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19297                    .map(Into::into)
19298            }
19299        }
19300    };
19301    #[derive(serde::Serialize, serde::Deserialize)]
19302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19303    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
19304```solidity
19305function updateMetadataUri(string memory metadataUri) external;
19306```*/
19307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19308    #[derive(Clone)]
19309    pub struct updateMetadataUriCall {
19310        #[allow(missing_docs)]
19311        pub metadataUri: alloy::sol_types::private::String,
19312    }
19313    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
19314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19315    #[derive(Clone)]
19316    pub struct updateMetadataUriReturn {}
19317    #[allow(
19318        non_camel_case_types,
19319        non_snake_case,
19320        clippy::pub_underscore_fields,
19321        clippy::style
19322    )]
19323    const _: () = {
19324        use alloy::sol_types as alloy_sol_types;
19325        {
19326            #[doc(hidden)]
19327            #[allow(dead_code)]
19328            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19329            #[doc(hidden)]
19330            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19331            #[cfg(test)]
19332            #[allow(dead_code, unreachable_patterns)]
19333            fn _type_assertion(
19334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19335            ) {
19336                match _t {
19337                    alloy_sol_types::private::AssertTypeEq::<
19338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19339                    >(_) => {}
19340                }
19341            }
19342            #[automatically_derived]
19343            #[doc(hidden)]
19344            impl ::core::convert::From<updateMetadataUriCall>
19345            for UnderlyingRustTuple<'_> {
19346                fn from(value: updateMetadataUriCall) -> Self {
19347                    (value.metadataUri,)
19348                }
19349            }
19350            #[automatically_derived]
19351            #[doc(hidden)]
19352            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19353            for updateMetadataUriCall {
19354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19355                    Self { metadataUri: tuple.0 }
19356                }
19357            }
19358        }
19359        {
19360            #[doc(hidden)]
19361            #[allow(dead_code)]
19362            type UnderlyingSolTuple<'a> = ();
19363            #[doc(hidden)]
19364            type UnderlyingRustTuple<'a> = ();
19365            #[cfg(test)]
19366            #[allow(dead_code, unreachable_patterns)]
19367            fn _type_assertion(
19368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19369            ) {
19370                match _t {
19371                    alloy_sol_types::private::AssertTypeEq::<
19372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19373                    >(_) => {}
19374                }
19375            }
19376            #[automatically_derived]
19377            #[doc(hidden)]
19378            impl ::core::convert::From<updateMetadataUriReturn>
19379            for UnderlyingRustTuple<'_> {
19380                fn from(value: updateMetadataUriReturn) -> Self {
19381                    ()
19382                }
19383            }
19384            #[automatically_derived]
19385            #[doc(hidden)]
19386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19387            for updateMetadataUriReturn {
19388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19389                    Self {}
19390                }
19391            }
19392        }
19393        impl updateMetadataUriReturn {
19394            fn _tokenize(
19395                &self,
19396            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19397                ()
19398            }
19399        }
19400        #[automatically_derived]
19401        impl alloy_sol_types::SolCall for updateMetadataUriCall {
19402            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
19403            type Token<'a> = <Self::Parameters<
19404                'a,
19405            > as alloy_sol_types::SolType>::Token<'a>;
19406            type Return = updateMetadataUriReturn;
19407            type ReturnTuple<'a> = ();
19408            type ReturnToken<'a> = <Self::ReturnTuple<
19409                'a,
19410            > as alloy_sol_types::SolType>::Token<'a>;
19411            const SIGNATURE: &'static str = "updateMetadataUri(string)";
19412            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
19413            #[inline]
19414            fn new<'a>(
19415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19416            ) -> Self {
19417                tuple.into()
19418            }
19419            #[inline]
19420            fn tokenize(&self) -> Self::Token<'_> {
19421                (
19422                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
19423                        &self.metadataUri,
19424                    ),
19425                )
19426            }
19427            #[inline]
19428            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19429                updateMetadataUriReturn::_tokenize(ret)
19430            }
19431            #[inline]
19432            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19433                <Self::ReturnTuple<
19434                    '_,
19435                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19436                    .map(Into::into)
19437            }
19438            #[inline]
19439            fn abi_decode_returns_validate(
19440                data: &[u8],
19441            ) -> alloy_sol_types::Result<Self::Return> {
19442                <Self::ReturnTuple<
19443                    '_,
19444                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19445                    .map(Into::into)
19446            }
19447        }
19448    };
19449    #[derive(serde::Serialize, serde::Deserialize)]
19450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19451    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
19452```solidity
19453function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
19454```*/
19455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19456    #[derive(Clone)]
19457    pub struct upgradeToAndCallCall {
19458        #[allow(missing_docs)]
19459        pub newImplementation: alloy::sol_types::private::Address,
19460        #[allow(missing_docs)]
19461        pub data: alloy::sol_types::private::Bytes,
19462    }
19463    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
19464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19465    #[derive(Clone)]
19466    pub struct upgradeToAndCallReturn {}
19467    #[allow(
19468        non_camel_case_types,
19469        non_snake_case,
19470        clippy::pub_underscore_fields,
19471        clippy::style
19472    )]
19473    const _: () = {
19474        use alloy::sol_types as alloy_sol_types;
19475        {
19476            #[doc(hidden)]
19477            #[allow(dead_code)]
19478            type UnderlyingSolTuple<'a> = (
19479                alloy::sol_types::sol_data::Address,
19480                alloy::sol_types::sol_data::Bytes,
19481            );
19482            #[doc(hidden)]
19483            type UnderlyingRustTuple<'a> = (
19484                alloy::sol_types::private::Address,
19485                alloy::sol_types::private::Bytes,
19486            );
19487            #[cfg(test)]
19488            #[allow(dead_code, unreachable_patterns)]
19489            fn _type_assertion(
19490                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19491            ) {
19492                match _t {
19493                    alloy_sol_types::private::AssertTypeEq::<
19494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19495                    >(_) => {}
19496                }
19497            }
19498            #[automatically_derived]
19499            #[doc(hidden)]
19500            impl ::core::convert::From<upgradeToAndCallCall>
19501            for UnderlyingRustTuple<'_> {
19502                fn from(value: upgradeToAndCallCall) -> Self {
19503                    (value.newImplementation, value.data)
19504                }
19505            }
19506            #[automatically_derived]
19507            #[doc(hidden)]
19508            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19509            for upgradeToAndCallCall {
19510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19511                    Self {
19512                        newImplementation: tuple.0,
19513                        data: tuple.1,
19514                    }
19515                }
19516            }
19517        }
19518        {
19519            #[doc(hidden)]
19520            #[allow(dead_code)]
19521            type UnderlyingSolTuple<'a> = ();
19522            #[doc(hidden)]
19523            type UnderlyingRustTuple<'a> = ();
19524            #[cfg(test)]
19525            #[allow(dead_code, unreachable_patterns)]
19526            fn _type_assertion(
19527                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19528            ) {
19529                match _t {
19530                    alloy_sol_types::private::AssertTypeEq::<
19531                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19532                    >(_) => {}
19533                }
19534            }
19535            #[automatically_derived]
19536            #[doc(hidden)]
19537            impl ::core::convert::From<upgradeToAndCallReturn>
19538            for UnderlyingRustTuple<'_> {
19539                fn from(value: upgradeToAndCallReturn) -> Self {
19540                    ()
19541                }
19542            }
19543            #[automatically_derived]
19544            #[doc(hidden)]
19545            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19546            for upgradeToAndCallReturn {
19547                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19548                    Self {}
19549                }
19550            }
19551        }
19552        impl upgradeToAndCallReturn {
19553            fn _tokenize(
19554                &self,
19555            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19556                ()
19557            }
19558        }
19559        #[automatically_derived]
19560        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
19561            type Parameters<'a> = (
19562                alloy::sol_types::sol_data::Address,
19563                alloy::sol_types::sol_data::Bytes,
19564            );
19565            type Token<'a> = <Self::Parameters<
19566                'a,
19567            > as alloy_sol_types::SolType>::Token<'a>;
19568            type Return = upgradeToAndCallReturn;
19569            type ReturnTuple<'a> = ();
19570            type ReturnToken<'a> = <Self::ReturnTuple<
19571                'a,
19572            > as alloy_sol_types::SolType>::Token<'a>;
19573            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
19574            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
19575            #[inline]
19576            fn new<'a>(
19577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19578            ) -> Self {
19579                tuple.into()
19580            }
19581            #[inline]
19582            fn tokenize(&self) -> Self::Token<'_> {
19583                (
19584                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19585                        &self.newImplementation,
19586                    ),
19587                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
19588                        &self.data,
19589                    ),
19590                )
19591            }
19592            #[inline]
19593            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19594                upgradeToAndCallReturn::_tokenize(ret)
19595            }
19596            #[inline]
19597            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19598                <Self::ReturnTuple<
19599                    '_,
19600                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19601                    .map(Into::into)
19602            }
19603            #[inline]
19604            fn abi_decode_returns_validate(
19605                data: &[u8],
19606            ) -> alloy_sol_types::Result<Self::Return> {
19607                <Self::ReturnTuple<
19608                    '_,
19609                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19610                    .map(Into::into)
19611            }
19612        }
19613    };
19614    #[derive(serde::Serialize, serde::Deserialize)]
19615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19616    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
19617```solidity
19618function validateMetadataUri(string memory metadataUri) external pure;
19619```*/
19620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19621    #[derive(Clone)]
19622    pub struct validateMetadataUriCall {
19623        #[allow(missing_docs)]
19624        pub metadataUri: alloy::sol_types::private::String,
19625    }
19626    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
19627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19628    #[derive(Clone)]
19629    pub struct validateMetadataUriReturn {}
19630    #[allow(
19631        non_camel_case_types,
19632        non_snake_case,
19633        clippy::pub_underscore_fields,
19634        clippy::style
19635    )]
19636    const _: () = {
19637        use alloy::sol_types as alloy_sol_types;
19638        {
19639            #[doc(hidden)]
19640            #[allow(dead_code)]
19641            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19642            #[doc(hidden)]
19643            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19644            #[cfg(test)]
19645            #[allow(dead_code, unreachable_patterns)]
19646            fn _type_assertion(
19647                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19648            ) {
19649                match _t {
19650                    alloy_sol_types::private::AssertTypeEq::<
19651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19652                    >(_) => {}
19653                }
19654            }
19655            #[automatically_derived]
19656            #[doc(hidden)]
19657            impl ::core::convert::From<validateMetadataUriCall>
19658            for UnderlyingRustTuple<'_> {
19659                fn from(value: validateMetadataUriCall) -> Self {
19660                    (value.metadataUri,)
19661                }
19662            }
19663            #[automatically_derived]
19664            #[doc(hidden)]
19665            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19666            for validateMetadataUriCall {
19667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19668                    Self { metadataUri: tuple.0 }
19669                }
19670            }
19671        }
19672        {
19673            #[doc(hidden)]
19674            #[allow(dead_code)]
19675            type UnderlyingSolTuple<'a> = ();
19676            #[doc(hidden)]
19677            type UnderlyingRustTuple<'a> = ();
19678            #[cfg(test)]
19679            #[allow(dead_code, unreachable_patterns)]
19680            fn _type_assertion(
19681                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19682            ) {
19683                match _t {
19684                    alloy_sol_types::private::AssertTypeEq::<
19685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19686                    >(_) => {}
19687                }
19688            }
19689            #[automatically_derived]
19690            #[doc(hidden)]
19691            impl ::core::convert::From<validateMetadataUriReturn>
19692            for UnderlyingRustTuple<'_> {
19693                fn from(value: validateMetadataUriReturn) -> Self {
19694                    ()
19695                }
19696            }
19697            #[automatically_derived]
19698            #[doc(hidden)]
19699            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19700            for validateMetadataUriReturn {
19701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19702                    Self {}
19703                }
19704            }
19705        }
19706        impl validateMetadataUriReturn {
19707            fn _tokenize(
19708                &self,
19709            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19710                ()
19711            }
19712        }
19713        #[automatically_derived]
19714        impl alloy_sol_types::SolCall for validateMetadataUriCall {
19715            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
19716            type Token<'a> = <Self::Parameters<
19717                'a,
19718            > as alloy_sol_types::SolType>::Token<'a>;
19719            type Return = validateMetadataUriReturn;
19720            type ReturnTuple<'a> = ();
19721            type ReturnToken<'a> = <Self::ReturnTuple<
19722                'a,
19723            > as alloy_sol_types::SolType>::Token<'a>;
19724            const SIGNATURE: &'static str = "validateMetadataUri(string)";
19725            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
19726            #[inline]
19727            fn new<'a>(
19728                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19729            ) -> Self {
19730                tuple.into()
19731            }
19732            #[inline]
19733            fn tokenize(&self) -> Self::Token<'_> {
19734                (
19735                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
19736                        &self.metadataUri,
19737                    ),
19738                )
19739            }
19740            #[inline]
19741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19742                validateMetadataUriReturn::_tokenize(ret)
19743            }
19744            #[inline]
19745            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19746                <Self::ReturnTuple<
19747                    '_,
19748                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19749                    .map(Into::into)
19750            }
19751            #[inline]
19752            fn abi_decode_returns_validate(
19753                data: &[u8],
19754            ) -> alloy_sol_types::Result<Self::Return> {
19755                <Self::ReturnTuple<
19756                    '_,
19757                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19758                    .map(Into::into)
19759            }
19760        }
19761    };
19762    #[derive(serde::Serialize, serde::Deserialize)]
19763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19764    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
19765```solidity
19766function validatorExits(address validator) external view returns (uint256 unlocksAt);
19767```*/
19768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19769    #[derive(Clone)]
19770    pub struct validatorExitsCall {
19771        #[allow(missing_docs)]
19772        pub validator: alloy::sol_types::private::Address,
19773    }
19774    #[derive(serde::Serialize, serde::Deserialize)]
19775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19776    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
19777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19778    #[derive(Clone)]
19779    pub struct validatorExitsReturn {
19780        #[allow(missing_docs)]
19781        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
19782    }
19783    #[allow(
19784        non_camel_case_types,
19785        non_snake_case,
19786        clippy::pub_underscore_fields,
19787        clippy::style
19788    )]
19789    const _: () = {
19790        use alloy::sol_types as alloy_sol_types;
19791        {
19792            #[doc(hidden)]
19793            #[allow(dead_code)]
19794            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19795            #[doc(hidden)]
19796            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19797            #[cfg(test)]
19798            #[allow(dead_code, unreachable_patterns)]
19799            fn _type_assertion(
19800                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19801            ) {
19802                match _t {
19803                    alloy_sol_types::private::AssertTypeEq::<
19804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19805                    >(_) => {}
19806                }
19807            }
19808            #[automatically_derived]
19809            #[doc(hidden)]
19810            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
19811                fn from(value: validatorExitsCall) -> Self {
19812                    (value.validator,)
19813                }
19814            }
19815            #[automatically_derived]
19816            #[doc(hidden)]
19817            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
19818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19819                    Self { validator: tuple.0 }
19820                }
19821            }
19822        }
19823        {
19824            #[doc(hidden)]
19825            #[allow(dead_code)]
19826            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19827            #[doc(hidden)]
19828            type UnderlyingRustTuple<'a> = (
19829                alloy::sol_types::private::primitives::aliases::U256,
19830            );
19831            #[cfg(test)]
19832            #[allow(dead_code, unreachable_patterns)]
19833            fn _type_assertion(
19834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19835            ) {
19836                match _t {
19837                    alloy_sol_types::private::AssertTypeEq::<
19838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19839                    >(_) => {}
19840                }
19841            }
19842            #[automatically_derived]
19843            #[doc(hidden)]
19844            impl ::core::convert::From<validatorExitsReturn>
19845            for UnderlyingRustTuple<'_> {
19846                fn from(value: validatorExitsReturn) -> Self {
19847                    (value.unlocksAt,)
19848                }
19849            }
19850            #[automatically_derived]
19851            #[doc(hidden)]
19852            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19853            for validatorExitsReturn {
19854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19855                    Self { unlocksAt: tuple.0 }
19856                }
19857            }
19858        }
19859        #[automatically_derived]
19860        impl alloy_sol_types::SolCall for validatorExitsCall {
19861            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19862            type Token<'a> = <Self::Parameters<
19863                'a,
19864            > as alloy_sol_types::SolType>::Token<'a>;
19865            type Return = alloy::sol_types::private::primitives::aliases::U256;
19866            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19867            type ReturnToken<'a> = <Self::ReturnTuple<
19868                'a,
19869            > as alloy_sol_types::SolType>::Token<'a>;
19870            const SIGNATURE: &'static str = "validatorExits(address)";
19871            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
19872            #[inline]
19873            fn new<'a>(
19874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19875            ) -> Self {
19876                tuple.into()
19877            }
19878            #[inline]
19879            fn tokenize(&self) -> Self::Token<'_> {
19880                (
19881                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19882                        &self.validator,
19883                    ),
19884                )
19885            }
19886            #[inline]
19887            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19888                (
19889                    <alloy::sol_types::sol_data::Uint<
19890                        256,
19891                    > as alloy_sol_types::SolType>::tokenize(ret),
19892                )
19893            }
19894            #[inline]
19895            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19896                <Self::ReturnTuple<
19897                    '_,
19898                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19899                    .map(|r| {
19900                        let r: validatorExitsReturn = r.into();
19901                        r.unlocksAt
19902                    })
19903            }
19904            #[inline]
19905            fn abi_decode_returns_validate(
19906                data: &[u8],
19907            ) -> alloy_sol_types::Result<Self::Return> {
19908                <Self::ReturnTuple<
19909                    '_,
19910                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19911                    .map(|r| {
19912                        let r: validatorExitsReturn = r.into();
19913                        r.unlocksAt
19914                    })
19915            }
19916        }
19917    };
19918    #[derive(serde::Serialize, serde::Deserialize)]
19919    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19920    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
19921```solidity
19922function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
19923```*/
19924    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19925    #[derive(Clone)]
19926    pub struct validatorsCall {
19927        #[allow(missing_docs)]
19928        pub account: alloy::sol_types::private::Address,
19929    }
19930    #[derive(serde::Serialize, serde::Deserialize)]
19931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19932    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
19933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19934    #[derive(Clone)]
19935    pub struct validatorsReturn {
19936        #[allow(missing_docs)]
19937        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
19938        #[allow(missing_docs)]
19939        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19940    }
19941    #[allow(
19942        non_camel_case_types,
19943        non_snake_case,
19944        clippy::pub_underscore_fields,
19945        clippy::style
19946    )]
19947    const _: () = {
19948        use alloy::sol_types as alloy_sol_types;
19949        {
19950            #[doc(hidden)]
19951            #[allow(dead_code)]
19952            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19953            #[doc(hidden)]
19954            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19955            #[cfg(test)]
19956            #[allow(dead_code, unreachable_patterns)]
19957            fn _type_assertion(
19958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19959            ) {
19960                match _t {
19961                    alloy_sol_types::private::AssertTypeEq::<
19962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19963                    >(_) => {}
19964                }
19965            }
19966            #[automatically_derived]
19967            #[doc(hidden)]
19968            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
19969                fn from(value: validatorsCall) -> Self {
19970                    (value.account,)
19971                }
19972            }
19973            #[automatically_derived]
19974            #[doc(hidden)]
19975            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
19976                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19977                    Self { account: tuple.0 }
19978                }
19979            }
19980        }
19981        {
19982            #[doc(hidden)]
19983            #[allow(dead_code)]
19984            type UnderlyingSolTuple<'a> = (
19985                alloy::sol_types::sol_data::Uint<256>,
19986                StakeTable::ValidatorStatus,
19987            );
19988            #[doc(hidden)]
19989            type UnderlyingRustTuple<'a> = (
19990                alloy::sol_types::private::primitives::aliases::U256,
19991                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19992            );
19993            #[cfg(test)]
19994            #[allow(dead_code, unreachable_patterns)]
19995            fn _type_assertion(
19996                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19997            ) {
19998                match _t {
19999                    alloy_sol_types::private::AssertTypeEq::<
20000                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20001                    >(_) => {}
20002                }
20003            }
20004            #[automatically_derived]
20005            #[doc(hidden)]
20006            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
20007                fn from(value: validatorsReturn) -> Self {
20008                    (value.delegatedAmount, value.status)
20009                }
20010            }
20011            #[automatically_derived]
20012            #[doc(hidden)]
20013            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
20014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20015                    Self {
20016                        delegatedAmount: tuple.0,
20017                        status: tuple.1,
20018                    }
20019                }
20020            }
20021        }
20022        impl validatorsReturn {
20023            fn _tokenize(
20024                &self,
20025            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20026                (
20027                    <alloy::sol_types::sol_data::Uint<
20028                        256,
20029                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
20030                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
20031                        &self.status,
20032                    ),
20033                )
20034            }
20035        }
20036        #[automatically_derived]
20037        impl alloy_sol_types::SolCall for validatorsCall {
20038            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
20039            type Token<'a> = <Self::Parameters<
20040                'a,
20041            > as alloy_sol_types::SolType>::Token<'a>;
20042            type Return = validatorsReturn;
20043            type ReturnTuple<'a> = (
20044                alloy::sol_types::sol_data::Uint<256>,
20045                StakeTable::ValidatorStatus,
20046            );
20047            type ReturnToken<'a> = <Self::ReturnTuple<
20048                'a,
20049            > as alloy_sol_types::SolType>::Token<'a>;
20050            const SIGNATURE: &'static str = "validators(address)";
20051            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
20052            #[inline]
20053            fn new<'a>(
20054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20055            ) -> Self {
20056                tuple.into()
20057            }
20058            #[inline]
20059            fn tokenize(&self) -> Self::Token<'_> {
20060                (
20061                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20062                        &self.account,
20063                    ),
20064                )
20065            }
20066            #[inline]
20067            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20068                validatorsReturn::_tokenize(ret)
20069            }
20070            #[inline]
20071            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20072                <Self::ReturnTuple<
20073                    '_,
20074                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20075                    .map(Into::into)
20076            }
20077            #[inline]
20078            fn abi_decode_returns_validate(
20079                data: &[u8],
20080            ) -> alloy_sol_types::Result<Self::Return> {
20081                <Self::ReturnTuple<
20082                    '_,
20083                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
20084                    .map(Into::into)
20085            }
20086        }
20087    };
20088    ///Container for all the [`StakeTableV2`](self) function calls.
20089    #[derive(Clone)]
20090    #[derive(serde::Serialize, serde::Deserialize)]
20091    #[derive()]
20092    pub enum StakeTableV2Calls {
20093        #[allow(missing_docs)]
20094        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
20095        #[allow(missing_docs)]
20096        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
20097        #[allow(missing_docs)]
20098        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
20099        #[allow(missing_docs)]
20100        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
20101        #[allow(missing_docs)]
20102        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
20103        #[allow(missing_docs)]
20104        PAUSER_ROLE(PAUSER_ROLECall),
20105        #[allow(missing_docs)]
20106        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
20107        #[allow(missing_docs)]
20108        _hashBlsKey(_hashBlsKeyCall),
20109        #[allow(missing_docs)]
20110        activeStake(activeStakeCall),
20111        #[allow(missing_docs)]
20112        blsKeys(blsKeysCall),
20113        #[allow(missing_docs)]
20114        claimValidatorExit(claimValidatorExitCall),
20115        #[allow(missing_docs)]
20116        claimWithdrawal(claimWithdrawalCall),
20117        #[allow(missing_docs)]
20118        commissionTracking(commissionTrackingCall),
20119        #[allow(missing_docs)]
20120        delegate(delegateCall),
20121        #[allow(missing_docs)]
20122        delegations(delegationsCall),
20123        #[allow(missing_docs)]
20124        deregisterValidator(deregisterValidatorCall),
20125        #[allow(missing_docs)]
20126        exitEscrowPeriod(exitEscrowPeriodCall),
20127        #[allow(missing_docs)]
20128        getRoleAdmin(getRoleAdminCall),
20129        #[allow(missing_docs)]
20130        getUndelegation(getUndelegationCall),
20131        #[allow(missing_docs)]
20132        getVersion(getVersionCall),
20133        #[allow(missing_docs)]
20134        grantRole(grantRoleCall),
20135        #[allow(missing_docs)]
20136        hasRole(hasRoleCall),
20137        #[allow(missing_docs)]
20138        initialize(initializeCall),
20139        #[allow(missing_docs)]
20140        initializeV2(initializeV2Call),
20141        #[allow(missing_docs)]
20142        initializedAtBlock(initializedAtBlockCall),
20143        #[allow(missing_docs)]
20144        lightClient(lightClientCall),
20145        #[allow(missing_docs)]
20146        maxCommissionIncrease(maxCommissionIncreaseCall),
20147        #[allow(missing_docs)]
20148        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
20149        #[allow(missing_docs)]
20150        minDelegateAmount(minDelegateAmountCall),
20151        #[allow(missing_docs)]
20152        owner(ownerCall),
20153        #[allow(missing_docs)]
20154        pause(pauseCall),
20155        #[allow(missing_docs)]
20156        paused(pausedCall),
20157        #[allow(missing_docs)]
20158        proxiableUUID(proxiableUUIDCall),
20159        #[allow(missing_docs)]
20160        registerValidator(registerValidatorCall),
20161        #[allow(missing_docs)]
20162        registerValidatorV2(registerValidatorV2Call),
20163        #[allow(missing_docs)]
20164        renounceOwnership(renounceOwnershipCall),
20165        #[allow(missing_docs)]
20166        renounceRole(renounceRoleCall),
20167        #[allow(missing_docs)]
20168        revokeRole(revokeRoleCall),
20169        #[allow(missing_docs)]
20170        schnorrKeys(schnorrKeysCall),
20171        #[allow(missing_docs)]
20172        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
20173        #[allow(missing_docs)]
20174        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
20175        #[allow(missing_docs)]
20176        setMinDelegateAmount(setMinDelegateAmountCall),
20177        #[allow(missing_docs)]
20178        supportsInterface(supportsInterfaceCall),
20179        #[allow(missing_docs)]
20180        token(tokenCall),
20181        #[allow(missing_docs)]
20182        transferOwnership(transferOwnershipCall),
20183        #[allow(missing_docs)]
20184        undelegate(undelegateCall),
20185        #[allow(missing_docs)]
20186        undelegations(undelegationsCall),
20187        #[allow(missing_docs)]
20188        unpause(unpauseCall),
20189        #[allow(missing_docs)]
20190        updateCommission(updateCommissionCall),
20191        #[allow(missing_docs)]
20192        updateConsensusKeys(updateConsensusKeysCall),
20193        #[allow(missing_docs)]
20194        updateConsensusKeysV2(updateConsensusKeysV2Call),
20195        #[allow(missing_docs)]
20196        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
20197        #[allow(missing_docs)]
20198        updateMetadataUri(updateMetadataUriCall),
20199        #[allow(missing_docs)]
20200        upgradeToAndCall(upgradeToAndCallCall),
20201        #[allow(missing_docs)]
20202        validateMetadataUri(validateMetadataUriCall),
20203        #[allow(missing_docs)]
20204        validatorExits(validatorExitsCall),
20205        #[allow(missing_docs)]
20206        validators(validatorsCall),
20207    }
20208    impl StakeTableV2Calls {
20209        /// All the selectors of this enum.
20210        ///
20211        /// Note that the selectors might not be in the same order as the variants.
20212        /// No guarantees are made about the order of the selectors.
20213        ///
20214        /// Prefer using `SolInterface` methods instead.
20215        pub const SELECTORS: &'static [[u8; 4usize]] = &[
20216            [1u8, 255u8, 201u8, 167u8],
20217            [2u8, 110u8, 64u8, 43u8],
20218            [13u8, 142u8, 110u8, 44u8],
20219            [19u8, 185u8, 5u8, 122u8],
20220            [26u8, 32u8, 205u8, 99u8],
20221            [33u8, 64u8, 254u8, 205u8],
20222            [36u8, 138u8, 156u8, 163u8],
20223            [43u8, 158u8, 92u8, 138u8],
20224            [45u8, 201u8, 186u8, 198u8],
20225            [47u8, 47u8, 241u8, 93u8],
20226            [47u8, 226u8, 135u8, 89u8],
20227            [54u8, 86u8, 138u8, 190u8],
20228            [57u8, 75u8, 52u8, 143u8],
20229            [59u8, 43u8, 127u8, 250u8],
20230            [62u8, 115u8, 46u8, 186u8],
20231            [62u8, 157u8, 249u8, 181u8],
20232            [63u8, 59u8, 179u8, 102u8],
20233            [63u8, 75u8, 168u8, 58u8],
20234            [77u8, 153u8, 221u8, 22u8],
20235            [79u8, 30u8, 242u8, 134u8],
20236            [82u8, 120u8, 11u8, 110u8],
20237            [82u8, 209u8, 144u8, 45u8],
20238            [85u8, 68u8, 194u8, 241u8],
20239            [92u8, 151u8, 90u8, 187u8],
20240            [95u8, 135u8, 84u8, 166u8],
20241            [106u8, 145u8, 28u8, 207u8],
20242            [106u8, 210u8, 142u8, 159u8],
20243            [113u8, 80u8, 24u8, 166u8],
20244            [114u8, 233u8, 201u8, 52u8],
20245            [132u8, 86u8, 203u8, 89u8],
20246            [135u8, 12u8, 143u8, 38u8],
20247            [141u8, 165u8, 203u8, 91u8],
20248            [145u8, 209u8, 72u8, 84u8],
20249            [155u8, 48u8, 165u8, 230u8],
20250            [158u8, 154u8, 143u8, 49u8],
20251            [159u8, 251u8, 107u8, 67u8],
20252            [162u8, 23u8, 253u8, 223u8],
20253            [162u8, 215u8, 141u8, 213u8],
20254            [163u8, 6u8, 106u8, 171u8],
20255            [172u8, 92u8, 42u8, 208u8],
20256            [173u8, 60u8, 177u8, 204u8],
20257            [179u8, 230u8, 235u8, 213u8],
20258            [181u8, 112u8, 14u8, 104u8],
20259            [181u8, 236u8, 179u8, 68u8],
20260            [187u8, 96u8, 191u8, 176u8],
20261            [189u8, 73u8, 195u8, 95u8],
20262            [190u8, 32u8, 48u8, 148u8],
20263            [198u8, 72u8, 20u8, 221u8],
20264            [213u8, 71u8, 116u8, 31u8],
20265            [217u8, 204u8, 125u8, 38u8],
20266            [227u8, 242u8, 55u8, 230u8],
20267            [228u8, 209u8, 251u8, 148u8],
20268            [230u8, 41u8, 119u8, 248u8],
20269            [230u8, 58u8, 177u8, 233u8],
20270            [242u8, 253u8, 227u8, 139u8],
20271            [250u8, 82u8, 199u8, 216u8],
20272            [252u8, 12u8, 84u8, 106u8],
20273        ];
20274        /// The names of the variants in the same order as `SELECTORS`.
20275        pub const VARIANT_NAMES: &'static [&'static str] = &[
20276            ::core::stringify!(supportsInterface),
20277            ::core::stringify!(delegate),
20278            ::core::stringify!(getVersion),
20279            ::core::stringify!(registerValidator),
20280            ::core::stringify!(updateExitEscrowPeriod),
20281            ::core::stringify!(claimValidatorExit),
20282            ::core::stringify!(getRoleAdmin),
20283            ::core::stringify!(registerValidatorV2),
20284            ::core::stringify!(setMaxCommissionIncrease),
20285            ::core::stringify!(grantRole),
20286            ::core::stringify!(MAX_METADATA_URI_LENGTH),
20287            ::core::stringify!(renounceRole),
20288            ::core::stringify!(setMinCommissionUpdateInterval),
20289            ::core::stringify!(updateCommission),
20290            ::core::stringify!(setMinDelegateAmount),
20291            ::core::stringify!(initializedAtBlock),
20292            ::core::stringify!(maxCommissionIncrease),
20293            ::core::stringify!(unpause),
20294            ::core::stringify!(undelegate),
20295            ::core::stringify!(upgradeToAndCall),
20296            ::core::stringify!(initializeV2),
20297            ::core::stringify!(proxiableUUID),
20298            ::core::stringify!(updateConsensusKeys),
20299            ::core::stringify!(paused),
20300            ::core::stringify!(schnorrKeys),
20301            ::core::stringify!(deregisterValidator),
20302            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
20303            ::core::stringify!(renounceOwnership),
20304            ::core::stringify!(minDelegateAmount),
20305            ::core::stringify!(pause),
20306            ::core::stringify!(updateMetadataUri),
20307            ::core::stringify!(owner),
20308            ::core::stringify!(hasRole),
20309            ::core::stringify!(_hashBlsKey),
20310            ::core::stringify!(exitEscrowPeriod),
20311            ::core::stringify!(commissionTracking),
20312            ::core::stringify!(DEFAULT_ADMIN_ROLE),
20313            ::core::stringify!(undelegations),
20314            ::core::stringify!(claimWithdrawal),
20315            ::core::stringify!(updateConsensusKeysV2),
20316            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
20317            ::core::stringify!(blsKeys),
20318            ::core::stringify!(lightClient),
20319            ::core::stringify!(validatorExits),
20320            ::core::stringify!(getUndelegation),
20321            ::core::stringify!(activeStake),
20322            ::core::stringify!(initialize),
20323            ::core::stringify!(delegations),
20324            ::core::stringify!(revokeRole),
20325            ::core::stringify!(minCommissionIncreaseInterval),
20326            ::core::stringify!(validateMetadataUri),
20327            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
20328            ::core::stringify!(MAX_COMMISSION_BPS),
20329            ::core::stringify!(PAUSER_ROLE),
20330            ::core::stringify!(transferOwnership),
20331            ::core::stringify!(validators),
20332            ::core::stringify!(token),
20333        ];
20334        /// The signatures in the same order as `SELECTORS`.
20335        pub const SIGNATURES: &'static [&'static str] = &[
20336            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
20337            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
20338            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
20339            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
20340            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
20341            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
20342            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
20343            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20344            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
20345            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20346            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
20347            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20348            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
20349            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
20350            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
20351            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
20352            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
20353            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
20354            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
20355            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
20356            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20357            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
20358            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20359            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
20360            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20361            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
20362            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
20363            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
20364            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
20365            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
20366            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
20367            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
20368            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20369            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
20370            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
20371            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
20372            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
20373            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
20374            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
20375            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
20376            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
20377            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
20378            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
20379            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
20380            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
20381            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
20382            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
20383            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
20384            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
20385            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
20386            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
20387            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
20388            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
20389            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
20390            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
20391            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
20392            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
20393        ];
20394        /// Returns the signature for the given selector, if known.
20395        #[inline]
20396        pub fn signature_by_selector(
20397            selector: [u8; 4usize],
20398        ) -> ::core::option::Option<&'static str> {
20399            match Self::SELECTORS.binary_search(&selector) {
20400                ::core::result::Result::Ok(idx) => {
20401                    ::core::option::Option::Some(Self::SIGNATURES[idx])
20402                }
20403                ::core::result::Result::Err(_) => ::core::option::Option::None,
20404            }
20405        }
20406        /// Returns the enum variant name for the given selector, if known.
20407        #[inline]
20408        pub fn name_by_selector(
20409            selector: [u8; 4usize],
20410        ) -> ::core::option::Option<&'static str> {
20411            let sig = Self::signature_by_selector(selector)?;
20412            sig.split_once('(').map(|(name, _)| name)
20413        }
20414    }
20415    #[automatically_derived]
20416    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
20417        const NAME: &'static str = "StakeTableV2Calls";
20418        const MIN_DATA_LENGTH: usize = 0usize;
20419        const COUNT: usize = 57usize;
20420        #[inline]
20421        fn selector(&self) -> [u8; 4] {
20422            match self {
20423                Self::DEFAULT_ADMIN_ROLE(_) => {
20424                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
20425                }
20426                Self::MAX_COMMISSION_BPS(_) => {
20427                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
20428                }
20429                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
20430                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
20431                }
20432                Self::MAX_METADATA_URI_LENGTH(_) => {
20433                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
20434                }
20435                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
20436                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
20437                }
20438                Self::PAUSER_ROLE(_) => {
20439                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
20440                }
20441                Self::UPGRADE_INTERFACE_VERSION(_) => {
20442                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
20443                }
20444                Self::_hashBlsKey(_) => {
20445                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
20446                }
20447                Self::activeStake(_) => {
20448                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
20449                }
20450                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
20451                Self::claimValidatorExit(_) => {
20452                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
20453                }
20454                Self::claimWithdrawal(_) => {
20455                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
20456                }
20457                Self::commissionTracking(_) => {
20458                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
20459                }
20460                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
20461                Self::delegations(_) => {
20462                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
20463                }
20464                Self::deregisterValidator(_) => {
20465                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20466                }
20467                Self::exitEscrowPeriod(_) => {
20468                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20469                }
20470                Self::getRoleAdmin(_) => {
20471                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
20472                }
20473                Self::getUndelegation(_) => {
20474                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
20475                }
20476                Self::getVersion(_) => {
20477                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
20478                }
20479                Self::grantRole(_) => {
20480                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
20481                }
20482                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
20483                Self::initialize(_) => {
20484                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
20485                }
20486                Self::initializeV2(_) => {
20487                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
20488                }
20489                Self::initializedAtBlock(_) => {
20490                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
20491                }
20492                Self::lightClient(_) => {
20493                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
20494                }
20495                Self::maxCommissionIncrease(_) => {
20496                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20497                }
20498                Self::minCommissionIncreaseInterval(_) => {
20499                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20500                }
20501                Self::minDelegateAmount(_) => {
20502                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20503                }
20504                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
20505                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
20506                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
20507                Self::proxiableUUID(_) => {
20508                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
20509                }
20510                Self::registerValidator(_) => {
20511                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20512                }
20513                Self::registerValidatorV2(_) => {
20514                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
20515                }
20516                Self::renounceOwnership(_) => {
20517                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20518                }
20519                Self::renounceRole(_) => {
20520                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
20521                }
20522                Self::revokeRole(_) => {
20523                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
20524                }
20525                Self::schnorrKeys(_) => {
20526                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
20527                }
20528                Self::setMaxCommissionIncrease(_) => {
20529                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20530                }
20531                Self::setMinCommissionUpdateInterval(_) => {
20532                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20533                }
20534                Self::setMinDelegateAmount(_) => {
20535                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20536                }
20537                Self::supportsInterface(_) => {
20538                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
20539                }
20540                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
20541                Self::transferOwnership(_) => {
20542                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20543                }
20544                Self::undelegate(_) => {
20545                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
20546                }
20547                Self::undelegations(_) => {
20548                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
20549                }
20550                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
20551                Self::updateCommission(_) => {
20552                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
20553                }
20554                Self::updateConsensusKeys(_) => {
20555                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
20556                }
20557                Self::updateConsensusKeysV2(_) => {
20558                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
20559                }
20560                Self::updateExitEscrowPeriod(_) => {
20561                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20562                }
20563                Self::updateMetadataUri(_) => {
20564                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20565                }
20566                Self::upgradeToAndCall(_) => {
20567                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
20568                }
20569                Self::validateMetadataUri(_) => {
20570                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20571                }
20572                Self::validatorExits(_) => {
20573                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
20574                }
20575                Self::validators(_) => {
20576                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
20577                }
20578            }
20579        }
20580        #[inline]
20581        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
20582            Self::SELECTORS.get(i).copied()
20583        }
20584        #[inline]
20585        fn valid_selector(selector: [u8; 4]) -> bool {
20586            Self::SELECTORS.binary_search(&selector).is_ok()
20587        }
20588        #[inline]
20589        #[allow(non_snake_case)]
20590        fn abi_decode_raw(
20591            selector: [u8; 4],
20592            data: &[u8],
20593        ) -> alloy_sol_types::Result<Self> {
20594            static DECODE_SHIMS: &[fn(
20595                &[u8],
20596            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
20597                {
20598                    fn supportsInterface(
20599                        data: &[u8],
20600                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20601                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
20602                                data,
20603                            )
20604                            .map(StakeTableV2Calls::supportsInterface)
20605                    }
20606                    supportsInterface
20607                },
20608                {
20609                    fn delegate(
20610                        data: &[u8],
20611                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20612                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20613                            .map(StakeTableV2Calls::delegate)
20614                    }
20615                    delegate
20616                },
20617                {
20618                    fn getVersion(
20619                        data: &[u8],
20620                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20621                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20622                                data,
20623                            )
20624                            .map(StakeTableV2Calls::getVersion)
20625                    }
20626                    getVersion
20627                },
20628                {
20629                    fn registerValidator(
20630                        data: &[u8],
20631                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20632                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20633                                data,
20634                            )
20635                            .map(StakeTableV2Calls::registerValidator)
20636                    }
20637                    registerValidator
20638                },
20639                {
20640                    fn updateExitEscrowPeriod(
20641                        data: &[u8],
20642                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20643                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20644                                data,
20645                            )
20646                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
20647                    }
20648                    updateExitEscrowPeriod
20649                },
20650                {
20651                    fn claimValidatorExit(
20652                        data: &[u8],
20653                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20654                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
20655                                data,
20656                            )
20657                            .map(StakeTableV2Calls::claimValidatorExit)
20658                    }
20659                    claimValidatorExit
20660                },
20661                {
20662                    fn getRoleAdmin(
20663                        data: &[u8],
20664                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20665                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
20666                                data,
20667                            )
20668                            .map(StakeTableV2Calls::getRoleAdmin)
20669                    }
20670                    getRoleAdmin
20671                },
20672                {
20673                    fn registerValidatorV2(
20674                        data: &[u8],
20675                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20676                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20677                                data,
20678                            )
20679                            .map(StakeTableV2Calls::registerValidatorV2)
20680                    }
20681                    registerValidatorV2
20682                },
20683                {
20684                    fn setMaxCommissionIncrease(
20685                        data: &[u8],
20686                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20687                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20688                                data,
20689                            )
20690                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
20691                    }
20692                    setMaxCommissionIncrease
20693                },
20694                {
20695                    fn grantRole(
20696                        data: &[u8],
20697                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20698                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20699                            .map(StakeTableV2Calls::grantRole)
20700                    }
20701                    grantRole
20702                },
20703                {
20704                    fn MAX_METADATA_URI_LENGTH(
20705                        data: &[u8],
20706                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20707                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
20708                                data,
20709                            )
20710                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
20711                    }
20712                    MAX_METADATA_URI_LENGTH
20713                },
20714                {
20715                    fn renounceRole(
20716                        data: &[u8],
20717                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20718                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
20719                                data,
20720                            )
20721                            .map(StakeTableV2Calls::renounceRole)
20722                    }
20723                    renounceRole
20724                },
20725                {
20726                    fn setMinCommissionUpdateInterval(
20727                        data: &[u8],
20728                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20729                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20730                                data,
20731                            )
20732                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
20733                    }
20734                    setMinCommissionUpdateInterval
20735                },
20736                {
20737                    fn updateCommission(
20738                        data: &[u8],
20739                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20740                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20741                                data,
20742                            )
20743                            .map(StakeTableV2Calls::updateCommission)
20744                    }
20745                    updateCommission
20746                },
20747                {
20748                    fn setMinDelegateAmount(
20749                        data: &[u8],
20750                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20751                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20752                                data,
20753                            )
20754                            .map(StakeTableV2Calls::setMinDelegateAmount)
20755                    }
20756                    setMinDelegateAmount
20757                },
20758                {
20759                    fn initializedAtBlock(
20760                        data: &[u8],
20761                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20762                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
20763                                data,
20764                            )
20765                            .map(StakeTableV2Calls::initializedAtBlock)
20766                    }
20767                    initializedAtBlock
20768                },
20769                {
20770                    fn maxCommissionIncrease(
20771                        data: &[u8],
20772                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20773                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20774                                data,
20775                            )
20776                            .map(StakeTableV2Calls::maxCommissionIncrease)
20777                    }
20778                    maxCommissionIncrease
20779                },
20780                {
20781                    fn unpause(
20782                        data: &[u8],
20783                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20784                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20785                            .map(StakeTableV2Calls::unpause)
20786                    }
20787                    unpause
20788                },
20789                {
20790                    fn undelegate(
20791                        data: &[u8],
20792                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20793                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
20794                                data,
20795                            )
20796                            .map(StakeTableV2Calls::undelegate)
20797                    }
20798                    undelegate
20799                },
20800                {
20801                    fn upgradeToAndCall(
20802                        data: &[u8],
20803                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20804                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
20805                                data,
20806                            )
20807                            .map(StakeTableV2Calls::upgradeToAndCall)
20808                    }
20809                    upgradeToAndCall
20810                },
20811                {
20812                    fn initializeV2(
20813                        data: &[u8],
20814                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20815                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20816                                data,
20817                            )
20818                            .map(StakeTableV2Calls::initializeV2)
20819                    }
20820                    initializeV2
20821                },
20822                {
20823                    fn proxiableUUID(
20824                        data: &[u8],
20825                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20826                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
20827                                data,
20828                            )
20829                            .map(StakeTableV2Calls::proxiableUUID)
20830                    }
20831                    proxiableUUID
20832                },
20833                {
20834                    fn updateConsensusKeys(
20835                        data: &[u8],
20836                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20837                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20838                                data,
20839                            )
20840                            .map(StakeTableV2Calls::updateConsensusKeys)
20841                    }
20842                    updateConsensusKeys
20843                },
20844                {
20845                    fn paused(
20846                        data: &[u8],
20847                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20848                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20849                            .map(StakeTableV2Calls::paused)
20850                    }
20851                    paused
20852                },
20853                {
20854                    fn schnorrKeys(
20855                        data: &[u8],
20856                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20857                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20858                                data,
20859                            )
20860                            .map(StakeTableV2Calls::schnorrKeys)
20861                    }
20862                    schnorrKeys
20863                },
20864                {
20865                    fn deregisterValidator(
20866                        data: &[u8],
20867                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20868                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20869                                data,
20870                            )
20871                            .map(StakeTableV2Calls::deregisterValidator)
20872                    }
20873                    deregisterValidator
20874                },
20875                {
20876                    fn MIN_EXIT_ESCROW_PERIOD(
20877                        data: &[u8],
20878                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20879                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
20880                                data,
20881                            )
20882                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
20883                    }
20884                    MIN_EXIT_ESCROW_PERIOD
20885                },
20886                {
20887                    fn renounceOwnership(
20888                        data: &[u8],
20889                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20890                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
20891                                data,
20892                            )
20893                            .map(StakeTableV2Calls::renounceOwnership)
20894                    }
20895                    renounceOwnership
20896                },
20897                {
20898                    fn minDelegateAmount(
20899                        data: &[u8],
20900                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20901                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20902                                data,
20903                            )
20904                            .map(StakeTableV2Calls::minDelegateAmount)
20905                    }
20906                    minDelegateAmount
20907                },
20908                {
20909                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20910                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20911                            .map(StakeTableV2Calls::pause)
20912                    }
20913                    pause
20914                },
20915                {
20916                    fn updateMetadataUri(
20917                        data: &[u8],
20918                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20919                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
20920                                data,
20921                            )
20922                            .map(StakeTableV2Calls::updateMetadataUri)
20923                    }
20924                    updateMetadataUri
20925                },
20926                {
20927                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20928                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20929                            .map(StakeTableV2Calls::owner)
20930                    }
20931                    owner
20932                },
20933                {
20934                    fn hasRole(
20935                        data: &[u8],
20936                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20937                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20938                            .map(StakeTableV2Calls::hasRole)
20939                    }
20940                    hasRole
20941                },
20942                {
20943                    fn _hashBlsKey(
20944                        data: &[u8],
20945                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20946                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
20947                                data,
20948                            )
20949                            .map(StakeTableV2Calls::_hashBlsKey)
20950                    }
20951                    _hashBlsKey
20952                },
20953                {
20954                    fn exitEscrowPeriod(
20955                        data: &[u8],
20956                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20957                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20958                                data,
20959                            )
20960                            .map(StakeTableV2Calls::exitEscrowPeriod)
20961                    }
20962                    exitEscrowPeriod
20963                },
20964                {
20965                    fn commissionTracking(
20966                        data: &[u8],
20967                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20968                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
20969                                data,
20970                            )
20971                            .map(StakeTableV2Calls::commissionTracking)
20972                    }
20973                    commissionTracking
20974                },
20975                {
20976                    fn DEFAULT_ADMIN_ROLE(
20977                        data: &[u8],
20978                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20979                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
20980                                data,
20981                            )
20982                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
20983                    }
20984                    DEFAULT_ADMIN_ROLE
20985                },
20986                {
20987                    fn undelegations(
20988                        data: &[u8],
20989                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20990                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20991                                data,
20992                            )
20993                            .map(StakeTableV2Calls::undelegations)
20994                    }
20995                    undelegations
20996                },
20997                {
20998                    fn claimWithdrawal(
20999                        data: &[u8],
21000                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21001                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
21002                                data,
21003                            )
21004                            .map(StakeTableV2Calls::claimWithdrawal)
21005                    }
21006                    claimWithdrawal
21007                },
21008                {
21009                    fn updateConsensusKeysV2(
21010                        data: &[u8],
21011                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21012                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
21013                                data,
21014                            )
21015                            .map(StakeTableV2Calls::updateConsensusKeysV2)
21016                    }
21017                    updateConsensusKeysV2
21018                },
21019                {
21020                    fn UPGRADE_INTERFACE_VERSION(
21021                        data: &[u8],
21022                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21023                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
21024                                data,
21025                            )
21026                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
21027                    }
21028                    UPGRADE_INTERFACE_VERSION
21029                },
21030                {
21031                    fn blsKeys(
21032                        data: &[u8],
21033                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21034                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
21035                            .map(StakeTableV2Calls::blsKeys)
21036                    }
21037                    blsKeys
21038                },
21039                {
21040                    fn lightClient(
21041                        data: &[u8],
21042                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21043                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
21044                                data,
21045                            )
21046                            .map(StakeTableV2Calls::lightClient)
21047                    }
21048                    lightClient
21049                },
21050                {
21051                    fn validatorExits(
21052                        data: &[u8],
21053                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21054                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
21055                                data,
21056                            )
21057                            .map(StakeTableV2Calls::validatorExits)
21058                    }
21059                    validatorExits
21060                },
21061                {
21062                    fn getUndelegation(
21063                        data: &[u8],
21064                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21065                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
21066                                data,
21067                            )
21068                            .map(StakeTableV2Calls::getUndelegation)
21069                    }
21070                    getUndelegation
21071                },
21072                {
21073                    fn activeStake(
21074                        data: &[u8],
21075                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21076                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
21077                                data,
21078                            )
21079                            .map(StakeTableV2Calls::activeStake)
21080                    }
21081                    activeStake
21082                },
21083                {
21084                    fn initialize(
21085                        data: &[u8],
21086                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21087                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
21088                                data,
21089                            )
21090                            .map(StakeTableV2Calls::initialize)
21091                    }
21092                    initialize
21093                },
21094                {
21095                    fn delegations(
21096                        data: &[u8],
21097                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21098                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
21099                                data,
21100                            )
21101                            .map(StakeTableV2Calls::delegations)
21102                    }
21103                    delegations
21104                },
21105                {
21106                    fn revokeRole(
21107                        data: &[u8],
21108                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21109                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
21110                                data,
21111                            )
21112                            .map(StakeTableV2Calls::revokeRole)
21113                    }
21114                    revokeRole
21115                },
21116                {
21117                    fn minCommissionIncreaseInterval(
21118                        data: &[u8],
21119                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21120                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
21121                                data,
21122                            )
21123                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
21124                    }
21125                    minCommissionIncreaseInterval
21126                },
21127                {
21128                    fn validateMetadataUri(
21129                        data: &[u8],
21130                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21131                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
21132                                data,
21133                            )
21134                            .map(StakeTableV2Calls::validateMetadataUri)
21135                    }
21136                    validateMetadataUri
21137                },
21138                {
21139                    fn MAX_EXIT_ESCROW_PERIOD(
21140                        data: &[u8],
21141                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21142                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
21143                                data,
21144                            )
21145                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
21146                    }
21147                    MAX_EXIT_ESCROW_PERIOD
21148                },
21149                {
21150                    fn MAX_COMMISSION_BPS(
21151                        data: &[u8],
21152                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21153                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw(
21154                                data,
21155                            )
21156                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
21157                    }
21158                    MAX_COMMISSION_BPS
21159                },
21160                {
21161                    fn PAUSER_ROLE(
21162                        data: &[u8],
21163                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21164                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
21165                                data,
21166                            )
21167                            .map(StakeTableV2Calls::PAUSER_ROLE)
21168                    }
21169                    PAUSER_ROLE
21170                },
21171                {
21172                    fn transferOwnership(
21173                        data: &[u8],
21174                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21175                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
21176                                data,
21177                            )
21178                            .map(StakeTableV2Calls::transferOwnership)
21179                    }
21180                    transferOwnership
21181                },
21182                {
21183                    fn validators(
21184                        data: &[u8],
21185                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21186                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
21187                                data,
21188                            )
21189                            .map(StakeTableV2Calls::validators)
21190                    }
21191                    validators
21192                },
21193                {
21194                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21195                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
21196                            .map(StakeTableV2Calls::token)
21197                    }
21198                    token
21199                },
21200            ];
21201            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
21202                return Err(
21203                    alloy_sol_types::Error::unknown_selector(
21204                        <Self as alloy_sol_types::SolInterface>::NAME,
21205                        selector,
21206                    ),
21207                );
21208            };
21209            DECODE_SHIMS[idx](data)
21210        }
21211        #[inline]
21212        #[allow(non_snake_case)]
21213        fn abi_decode_raw_validate(
21214            selector: [u8; 4],
21215            data: &[u8],
21216        ) -> alloy_sol_types::Result<Self> {
21217            static DECODE_VALIDATE_SHIMS: &[fn(
21218                &[u8],
21219            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
21220                {
21221                    fn supportsInterface(
21222                        data: &[u8],
21223                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21224                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21225                                data,
21226                            )
21227                            .map(StakeTableV2Calls::supportsInterface)
21228                    }
21229                    supportsInterface
21230                },
21231                {
21232                    fn delegate(
21233                        data: &[u8],
21234                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21235                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21236                                data,
21237                            )
21238                            .map(StakeTableV2Calls::delegate)
21239                    }
21240                    delegate
21241                },
21242                {
21243                    fn getVersion(
21244                        data: &[u8],
21245                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21246                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21247                                data,
21248                            )
21249                            .map(StakeTableV2Calls::getVersion)
21250                    }
21251                    getVersion
21252                },
21253                {
21254                    fn registerValidator(
21255                        data: &[u8],
21256                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21257                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21258                                data,
21259                            )
21260                            .map(StakeTableV2Calls::registerValidator)
21261                    }
21262                    registerValidator
21263                },
21264                {
21265                    fn updateExitEscrowPeriod(
21266                        data: &[u8],
21267                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21268                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21269                                data,
21270                            )
21271                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
21272                    }
21273                    updateExitEscrowPeriod
21274                },
21275                {
21276                    fn claimValidatorExit(
21277                        data: &[u8],
21278                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21279                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21280                                data,
21281                            )
21282                            .map(StakeTableV2Calls::claimValidatorExit)
21283                    }
21284                    claimValidatorExit
21285                },
21286                {
21287                    fn getRoleAdmin(
21288                        data: &[u8],
21289                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21290                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21291                                data,
21292                            )
21293                            .map(StakeTableV2Calls::getRoleAdmin)
21294                    }
21295                    getRoleAdmin
21296                },
21297                {
21298                    fn registerValidatorV2(
21299                        data: &[u8],
21300                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21301                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21302                                data,
21303                            )
21304                            .map(StakeTableV2Calls::registerValidatorV2)
21305                    }
21306                    registerValidatorV2
21307                },
21308                {
21309                    fn setMaxCommissionIncrease(
21310                        data: &[u8],
21311                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21312                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21313                                data,
21314                            )
21315                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
21316                    }
21317                    setMaxCommissionIncrease
21318                },
21319                {
21320                    fn grantRole(
21321                        data: &[u8],
21322                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21323                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21324                                data,
21325                            )
21326                            .map(StakeTableV2Calls::grantRole)
21327                    }
21328                    grantRole
21329                },
21330                {
21331                    fn MAX_METADATA_URI_LENGTH(
21332                        data: &[u8],
21333                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21334                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21335                                data,
21336                            )
21337                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
21338                    }
21339                    MAX_METADATA_URI_LENGTH
21340                },
21341                {
21342                    fn renounceRole(
21343                        data: &[u8],
21344                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21345                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21346                                data,
21347                            )
21348                            .map(StakeTableV2Calls::renounceRole)
21349                    }
21350                    renounceRole
21351                },
21352                {
21353                    fn setMinCommissionUpdateInterval(
21354                        data: &[u8],
21355                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21356                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21357                                data,
21358                            )
21359                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
21360                    }
21361                    setMinCommissionUpdateInterval
21362                },
21363                {
21364                    fn updateCommission(
21365                        data: &[u8],
21366                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21367                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21368                                data,
21369                            )
21370                            .map(StakeTableV2Calls::updateCommission)
21371                    }
21372                    updateCommission
21373                },
21374                {
21375                    fn setMinDelegateAmount(
21376                        data: &[u8],
21377                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21378                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21379                                data,
21380                            )
21381                            .map(StakeTableV2Calls::setMinDelegateAmount)
21382                    }
21383                    setMinDelegateAmount
21384                },
21385                {
21386                    fn initializedAtBlock(
21387                        data: &[u8],
21388                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21389                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21390                                data,
21391                            )
21392                            .map(StakeTableV2Calls::initializedAtBlock)
21393                    }
21394                    initializedAtBlock
21395                },
21396                {
21397                    fn maxCommissionIncrease(
21398                        data: &[u8],
21399                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21400                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21401                                data,
21402                            )
21403                            .map(StakeTableV2Calls::maxCommissionIncrease)
21404                    }
21405                    maxCommissionIncrease
21406                },
21407                {
21408                    fn unpause(
21409                        data: &[u8],
21410                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21411                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21412                                data,
21413                            )
21414                            .map(StakeTableV2Calls::unpause)
21415                    }
21416                    unpause
21417                },
21418                {
21419                    fn undelegate(
21420                        data: &[u8],
21421                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21422                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21423                                data,
21424                            )
21425                            .map(StakeTableV2Calls::undelegate)
21426                    }
21427                    undelegate
21428                },
21429                {
21430                    fn upgradeToAndCall(
21431                        data: &[u8],
21432                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21433                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21434                                data,
21435                            )
21436                            .map(StakeTableV2Calls::upgradeToAndCall)
21437                    }
21438                    upgradeToAndCall
21439                },
21440                {
21441                    fn initializeV2(
21442                        data: &[u8],
21443                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21444                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21445                                data,
21446                            )
21447                            .map(StakeTableV2Calls::initializeV2)
21448                    }
21449                    initializeV2
21450                },
21451                {
21452                    fn proxiableUUID(
21453                        data: &[u8],
21454                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21455                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21456                                data,
21457                            )
21458                            .map(StakeTableV2Calls::proxiableUUID)
21459                    }
21460                    proxiableUUID
21461                },
21462                {
21463                    fn updateConsensusKeys(
21464                        data: &[u8],
21465                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21466                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21467                                data,
21468                            )
21469                            .map(StakeTableV2Calls::updateConsensusKeys)
21470                    }
21471                    updateConsensusKeys
21472                },
21473                {
21474                    fn paused(
21475                        data: &[u8],
21476                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21477                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21478                                data,
21479                            )
21480                            .map(StakeTableV2Calls::paused)
21481                    }
21482                    paused
21483                },
21484                {
21485                    fn schnorrKeys(
21486                        data: &[u8],
21487                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21488                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21489                                data,
21490                            )
21491                            .map(StakeTableV2Calls::schnorrKeys)
21492                    }
21493                    schnorrKeys
21494                },
21495                {
21496                    fn deregisterValidator(
21497                        data: &[u8],
21498                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21499                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21500                                data,
21501                            )
21502                            .map(StakeTableV2Calls::deregisterValidator)
21503                    }
21504                    deregisterValidator
21505                },
21506                {
21507                    fn MIN_EXIT_ESCROW_PERIOD(
21508                        data: &[u8],
21509                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21510                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21511                                data,
21512                            )
21513                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
21514                    }
21515                    MIN_EXIT_ESCROW_PERIOD
21516                },
21517                {
21518                    fn renounceOwnership(
21519                        data: &[u8],
21520                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21521                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21522                                data,
21523                            )
21524                            .map(StakeTableV2Calls::renounceOwnership)
21525                    }
21526                    renounceOwnership
21527                },
21528                {
21529                    fn minDelegateAmount(
21530                        data: &[u8],
21531                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21532                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21533                                data,
21534                            )
21535                            .map(StakeTableV2Calls::minDelegateAmount)
21536                    }
21537                    minDelegateAmount
21538                },
21539                {
21540                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21541                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21542                                data,
21543                            )
21544                            .map(StakeTableV2Calls::pause)
21545                    }
21546                    pause
21547                },
21548                {
21549                    fn updateMetadataUri(
21550                        data: &[u8],
21551                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21552                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21553                                data,
21554                            )
21555                            .map(StakeTableV2Calls::updateMetadataUri)
21556                    }
21557                    updateMetadataUri
21558                },
21559                {
21560                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21561                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21562                                data,
21563                            )
21564                            .map(StakeTableV2Calls::owner)
21565                    }
21566                    owner
21567                },
21568                {
21569                    fn hasRole(
21570                        data: &[u8],
21571                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21572                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21573                                data,
21574                            )
21575                            .map(StakeTableV2Calls::hasRole)
21576                    }
21577                    hasRole
21578                },
21579                {
21580                    fn _hashBlsKey(
21581                        data: &[u8],
21582                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21583                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21584                                data,
21585                            )
21586                            .map(StakeTableV2Calls::_hashBlsKey)
21587                    }
21588                    _hashBlsKey
21589                },
21590                {
21591                    fn exitEscrowPeriod(
21592                        data: &[u8],
21593                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21594                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21595                                data,
21596                            )
21597                            .map(StakeTableV2Calls::exitEscrowPeriod)
21598                    }
21599                    exitEscrowPeriod
21600                },
21601                {
21602                    fn commissionTracking(
21603                        data: &[u8],
21604                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21605                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21606                                data,
21607                            )
21608                            .map(StakeTableV2Calls::commissionTracking)
21609                    }
21610                    commissionTracking
21611                },
21612                {
21613                    fn DEFAULT_ADMIN_ROLE(
21614                        data: &[u8],
21615                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21616                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21617                                data,
21618                            )
21619                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
21620                    }
21621                    DEFAULT_ADMIN_ROLE
21622                },
21623                {
21624                    fn undelegations(
21625                        data: &[u8],
21626                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21627                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21628                                data,
21629                            )
21630                            .map(StakeTableV2Calls::undelegations)
21631                    }
21632                    undelegations
21633                },
21634                {
21635                    fn claimWithdrawal(
21636                        data: &[u8],
21637                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21638                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21639                                data,
21640                            )
21641                            .map(StakeTableV2Calls::claimWithdrawal)
21642                    }
21643                    claimWithdrawal
21644                },
21645                {
21646                    fn updateConsensusKeysV2(
21647                        data: &[u8],
21648                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21649                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21650                                data,
21651                            )
21652                            .map(StakeTableV2Calls::updateConsensusKeysV2)
21653                    }
21654                    updateConsensusKeysV2
21655                },
21656                {
21657                    fn UPGRADE_INTERFACE_VERSION(
21658                        data: &[u8],
21659                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21660                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21661                                data,
21662                            )
21663                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
21664                    }
21665                    UPGRADE_INTERFACE_VERSION
21666                },
21667                {
21668                    fn blsKeys(
21669                        data: &[u8],
21670                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21671                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21672                                data,
21673                            )
21674                            .map(StakeTableV2Calls::blsKeys)
21675                    }
21676                    blsKeys
21677                },
21678                {
21679                    fn lightClient(
21680                        data: &[u8],
21681                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21682                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21683                                data,
21684                            )
21685                            .map(StakeTableV2Calls::lightClient)
21686                    }
21687                    lightClient
21688                },
21689                {
21690                    fn validatorExits(
21691                        data: &[u8],
21692                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21693                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21694                                data,
21695                            )
21696                            .map(StakeTableV2Calls::validatorExits)
21697                    }
21698                    validatorExits
21699                },
21700                {
21701                    fn getUndelegation(
21702                        data: &[u8],
21703                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21704                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21705                                data,
21706                            )
21707                            .map(StakeTableV2Calls::getUndelegation)
21708                    }
21709                    getUndelegation
21710                },
21711                {
21712                    fn activeStake(
21713                        data: &[u8],
21714                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21715                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21716                                data,
21717                            )
21718                            .map(StakeTableV2Calls::activeStake)
21719                    }
21720                    activeStake
21721                },
21722                {
21723                    fn initialize(
21724                        data: &[u8],
21725                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21726                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21727                                data,
21728                            )
21729                            .map(StakeTableV2Calls::initialize)
21730                    }
21731                    initialize
21732                },
21733                {
21734                    fn delegations(
21735                        data: &[u8],
21736                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21737                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21738                                data,
21739                            )
21740                            .map(StakeTableV2Calls::delegations)
21741                    }
21742                    delegations
21743                },
21744                {
21745                    fn revokeRole(
21746                        data: &[u8],
21747                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21748                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21749                                data,
21750                            )
21751                            .map(StakeTableV2Calls::revokeRole)
21752                    }
21753                    revokeRole
21754                },
21755                {
21756                    fn minCommissionIncreaseInterval(
21757                        data: &[u8],
21758                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21759                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21760                                data,
21761                            )
21762                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
21763                    }
21764                    minCommissionIncreaseInterval
21765                },
21766                {
21767                    fn validateMetadataUri(
21768                        data: &[u8],
21769                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21770                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21771                                data,
21772                            )
21773                            .map(StakeTableV2Calls::validateMetadataUri)
21774                    }
21775                    validateMetadataUri
21776                },
21777                {
21778                    fn MAX_EXIT_ESCROW_PERIOD(
21779                        data: &[u8],
21780                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21781                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21782                                data,
21783                            )
21784                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
21785                    }
21786                    MAX_EXIT_ESCROW_PERIOD
21787                },
21788                {
21789                    fn MAX_COMMISSION_BPS(
21790                        data: &[u8],
21791                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21792                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21793                                data,
21794                            )
21795                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
21796                    }
21797                    MAX_COMMISSION_BPS
21798                },
21799                {
21800                    fn PAUSER_ROLE(
21801                        data: &[u8],
21802                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21803                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21804                                data,
21805                            )
21806                            .map(StakeTableV2Calls::PAUSER_ROLE)
21807                    }
21808                    PAUSER_ROLE
21809                },
21810                {
21811                    fn transferOwnership(
21812                        data: &[u8],
21813                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21814                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21815                                data,
21816                            )
21817                            .map(StakeTableV2Calls::transferOwnership)
21818                    }
21819                    transferOwnership
21820                },
21821                {
21822                    fn validators(
21823                        data: &[u8],
21824                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21825                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21826                                data,
21827                            )
21828                            .map(StakeTableV2Calls::validators)
21829                    }
21830                    validators
21831                },
21832                {
21833                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21834                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21835                                data,
21836                            )
21837                            .map(StakeTableV2Calls::token)
21838                    }
21839                    token
21840                },
21841            ];
21842            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
21843                return Err(
21844                    alloy_sol_types::Error::unknown_selector(
21845                        <Self as alloy_sol_types::SolInterface>::NAME,
21846                        selector,
21847                    ),
21848                );
21849            };
21850            DECODE_VALIDATE_SHIMS[idx](data)
21851        }
21852        #[inline]
21853        fn abi_encoded_size(&self) -> usize {
21854            match self {
21855                Self::DEFAULT_ADMIN_ROLE(inner) => {
21856                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21857                        inner,
21858                    )
21859                }
21860                Self::MAX_COMMISSION_BPS(inner) => {
21861                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
21862                        inner,
21863                    )
21864                }
21865                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
21866                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21867                        inner,
21868                    )
21869                }
21870                Self::MAX_METADATA_URI_LENGTH(inner) => {
21871                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
21872                        inner,
21873                    )
21874                }
21875                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
21876                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21877                        inner,
21878                    )
21879                }
21880                Self::PAUSER_ROLE(inner) => {
21881                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21882                        inner,
21883                    )
21884                }
21885                Self::UPGRADE_INTERFACE_VERSION(inner) => {
21886                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
21887                        inner,
21888                    )
21889                }
21890                Self::_hashBlsKey(inner) => {
21891                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
21892                        inner,
21893                    )
21894                }
21895                Self::activeStake(inner) => {
21896                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
21897                        inner,
21898                    )
21899                }
21900                Self::blsKeys(inner) => {
21901                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21902                }
21903                Self::claimValidatorExit(inner) => {
21904                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
21905                        inner,
21906                    )
21907                }
21908                Self::claimWithdrawal(inner) => {
21909                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21910                        inner,
21911                    )
21912                }
21913                Self::commissionTracking(inner) => {
21914                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
21915                        inner,
21916                    )
21917                }
21918                Self::delegate(inner) => {
21919                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21920                }
21921                Self::delegations(inner) => {
21922                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21923                        inner,
21924                    )
21925                }
21926                Self::deregisterValidator(inner) => {
21927                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
21928                        inner,
21929                    )
21930                }
21931                Self::exitEscrowPeriod(inner) => {
21932                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
21933                        inner,
21934                    )
21935                }
21936                Self::getRoleAdmin(inner) => {
21937                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
21938                        inner,
21939                    )
21940                }
21941                Self::getUndelegation(inner) => {
21942                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
21943                        inner,
21944                    )
21945                }
21946                Self::getVersion(inner) => {
21947                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21948                }
21949                Self::grantRole(inner) => {
21950                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21951                }
21952                Self::hasRole(inner) => {
21953                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21954                }
21955                Self::initialize(inner) => {
21956                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21957                }
21958                Self::initializeV2(inner) => {
21959                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21960                        inner,
21961                    )
21962                }
21963                Self::initializedAtBlock(inner) => {
21964                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
21965                        inner,
21966                    )
21967                }
21968                Self::lightClient(inner) => {
21969                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
21970                        inner,
21971                    )
21972                }
21973                Self::maxCommissionIncrease(inner) => {
21974                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
21975                        inner,
21976                    )
21977                }
21978                Self::minCommissionIncreaseInterval(inner) => {
21979                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21980                        inner,
21981                    )
21982                }
21983                Self::minDelegateAmount(inner) => {
21984                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
21985                        inner,
21986                    )
21987                }
21988                Self::owner(inner) => {
21989                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21990                }
21991                Self::pause(inner) => {
21992                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21993                }
21994                Self::paused(inner) => {
21995                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21996                }
21997                Self::proxiableUUID(inner) => {
21998                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
21999                        inner,
22000                    )
22001                }
22002                Self::registerValidator(inner) => {
22003                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
22004                        inner,
22005                    )
22006                }
22007                Self::registerValidatorV2(inner) => {
22008                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
22009                        inner,
22010                    )
22011                }
22012                Self::renounceOwnership(inner) => {
22013                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
22014                        inner,
22015                    )
22016                }
22017                Self::renounceRole(inner) => {
22018                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
22019                        inner,
22020                    )
22021                }
22022                Self::revokeRole(inner) => {
22023                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22024                }
22025                Self::schnorrKeys(inner) => {
22026                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
22027                        inner,
22028                    )
22029                }
22030                Self::setMaxCommissionIncrease(inner) => {
22031                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
22032                        inner,
22033                    )
22034                }
22035                Self::setMinCommissionUpdateInterval(inner) => {
22036                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
22037                        inner,
22038                    )
22039                }
22040                Self::setMinDelegateAmount(inner) => {
22041                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
22042                        inner,
22043                    )
22044                }
22045                Self::supportsInterface(inner) => {
22046                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
22047                        inner,
22048                    )
22049                }
22050                Self::token(inner) => {
22051                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22052                }
22053                Self::transferOwnership(inner) => {
22054                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
22055                        inner,
22056                    )
22057                }
22058                Self::undelegate(inner) => {
22059                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22060                }
22061                Self::undelegations(inner) => {
22062                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
22063                        inner,
22064                    )
22065                }
22066                Self::unpause(inner) => {
22067                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22068                }
22069                Self::updateCommission(inner) => {
22070                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
22071                        inner,
22072                    )
22073                }
22074                Self::updateConsensusKeys(inner) => {
22075                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
22076                        inner,
22077                    )
22078                }
22079                Self::updateConsensusKeysV2(inner) => {
22080                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
22081                        inner,
22082                    )
22083                }
22084                Self::updateExitEscrowPeriod(inner) => {
22085                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
22086                        inner,
22087                    )
22088                }
22089                Self::updateMetadataUri(inner) => {
22090                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
22091                        inner,
22092                    )
22093                }
22094                Self::upgradeToAndCall(inner) => {
22095                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
22096                        inner,
22097                    )
22098                }
22099                Self::validateMetadataUri(inner) => {
22100                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
22101                        inner,
22102                    )
22103                }
22104                Self::validatorExits(inner) => {
22105                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
22106                        inner,
22107                    )
22108                }
22109                Self::validators(inner) => {
22110                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22111                }
22112            }
22113        }
22114        #[inline]
22115        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
22116            match self {
22117                Self::DEFAULT_ADMIN_ROLE(inner) => {
22118                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
22119                        inner,
22120                        out,
22121                    )
22122                }
22123                Self::MAX_COMMISSION_BPS(inner) => {
22124                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
22125                        inner,
22126                        out,
22127                    )
22128                }
22129                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
22130                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
22131                        inner,
22132                        out,
22133                    )
22134                }
22135                Self::MAX_METADATA_URI_LENGTH(inner) => {
22136                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
22137                        inner,
22138                        out,
22139                    )
22140                }
22141                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
22142                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
22143                        inner,
22144                        out,
22145                    )
22146                }
22147                Self::PAUSER_ROLE(inner) => {
22148                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
22149                        inner,
22150                        out,
22151                    )
22152                }
22153                Self::UPGRADE_INTERFACE_VERSION(inner) => {
22154                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
22155                        inner,
22156                        out,
22157                    )
22158                }
22159                Self::_hashBlsKey(inner) => {
22160                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
22161                        inner,
22162                        out,
22163                    )
22164                }
22165                Self::activeStake(inner) => {
22166                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22167                        inner,
22168                        out,
22169                    )
22170                }
22171                Self::blsKeys(inner) => {
22172                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22173                }
22174                Self::claimValidatorExit(inner) => {
22175                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
22176                        inner,
22177                        out,
22178                    )
22179                }
22180                Self::claimWithdrawal(inner) => {
22181                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22182                        inner,
22183                        out,
22184                    )
22185                }
22186                Self::commissionTracking(inner) => {
22187                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
22188                        inner,
22189                        out,
22190                    )
22191                }
22192                Self::delegate(inner) => {
22193                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22194                        inner,
22195                        out,
22196                    )
22197                }
22198                Self::delegations(inner) => {
22199                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22200                        inner,
22201                        out,
22202                    )
22203                }
22204                Self::deregisterValidator(inner) => {
22205                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22206                        inner,
22207                        out,
22208                    )
22209                }
22210                Self::exitEscrowPeriod(inner) => {
22211                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22212                        inner,
22213                        out,
22214                    )
22215                }
22216                Self::getRoleAdmin(inner) => {
22217                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
22218                        inner,
22219                        out,
22220                    )
22221                }
22222                Self::getUndelegation(inner) => {
22223                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
22224                        inner,
22225                        out,
22226                    )
22227                }
22228                Self::getVersion(inner) => {
22229                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22230                        inner,
22231                        out,
22232                    )
22233                }
22234                Self::grantRole(inner) => {
22235                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22236                        inner,
22237                        out,
22238                    )
22239                }
22240                Self::hasRole(inner) => {
22241                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22242                }
22243                Self::initialize(inner) => {
22244                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22245                        inner,
22246                        out,
22247                    )
22248                }
22249                Self::initializeV2(inner) => {
22250                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22251                        inner,
22252                        out,
22253                    )
22254                }
22255                Self::initializedAtBlock(inner) => {
22256                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
22257                        inner,
22258                        out,
22259                    )
22260                }
22261                Self::lightClient(inner) => {
22262                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
22263                        inner,
22264                        out,
22265                    )
22266                }
22267                Self::maxCommissionIncrease(inner) => {
22268                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22269                        inner,
22270                        out,
22271                    )
22272                }
22273                Self::minCommissionIncreaseInterval(inner) => {
22274                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22275                        inner,
22276                        out,
22277                    )
22278                }
22279                Self::minDelegateAmount(inner) => {
22280                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22281                        inner,
22282                        out,
22283                    )
22284                }
22285                Self::owner(inner) => {
22286                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22287                }
22288                Self::pause(inner) => {
22289                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22290                }
22291                Self::paused(inner) => {
22292                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22293                }
22294                Self::proxiableUUID(inner) => {
22295                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
22296                        inner,
22297                        out,
22298                    )
22299                }
22300                Self::registerValidator(inner) => {
22301                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22302                        inner,
22303                        out,
22304                    )
22305                }
22306                Self::registerValidatorV2(inner) => {
22307                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22308                        inner,
22309                        out,
22310                    )
22311                }
22312                Self::renounceOwnership(inner) => {
22313                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22314                        inner,
22315                        out,
22316                    )
22317                }
22318                Self::renounceRole(inner) => {
22319                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22320                        inner,
22321                        out,
22322                    )
22323                }
22324                Self::revokeRole(inner) => {
22325                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22326                        inner,
22327                        out,
22328                    )
22329                }
22330                Self::schnorrKeys(inner) => {
22331                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22332                        inner,
22333                        out,
22334                    )
22335                }
22336                Self::setMaxCommissionIncrease(inner) => {
22337                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22338                        inner,
22339                        out,
22340                    )
22341                }
22342                Self::setMinCommissionUpdateInterval(inner) => {
22343                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22344                        inner,
22345                        out,
22346                    )
22347                }
22348                Self::setMinDelegateAmount(inner) => {
22349                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22350                        inner,
22351                        out,
22352                    )
22353                }
22354                Self::supportsInterface(inner) => {
22355                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
22356                        inner,
22357                        out,
22358                    )
22359                }
22360                Self::token(inner) => {
22361                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22362                }
22363                Self::transferOwnership(inner) => {
22364                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22365                        inner,
22366                        out,
22367                    )
22368                }
22369                Self::undelegate(inner) => {
22370                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22371                        inner,
22372                        out,
22373                    )
22374                }
22375                Self::undelegations(inner) => {
22376                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22377                        inner,
22378                        out,
22379                    )
22380                }
22381                Self::unpause(inner) => {
22382                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22383                }
22384                Self::updateCommission(inner) => {
22385                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22386                        inner,
22387                        out,
22388                    )
22389                }
22390                Self::updateConsensusKeys(inner) => {
22391                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22392                        inner,
22393                        out,
22394                    )
22395                }
22396                Self::updateConsensusKeysV2(inner) => {
22397                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22398                        inner,
22399                        out,
22400                    )
22401                }
22402                Self::updateExitEscrowPeriod(inner) => {
22403                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22404                        inner,
22405                        out,
22406                    )
22407                }
22408                Self::updateMetadataUri(inner) => {
22409                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22410                        inner,
22411                        out,
22412                    )
22413                }
22414                Self::upgradeToAndCall(inner) => {
22415                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
22416                        inner,
22417                        out,
22418                    )
22419                }
22420                Self::validateMetadataUri(inner) => {
22421                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22422                        inner,
22423                        out,
22424                    )
22425                }
22426                Self::validatorExits(inner) => {
22427                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22428                        inner,
22429                        out,
22430                    )
22431                }
22432                Self::validators(inner) => {
22433                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22434                        inner,
22435                        out,
22436                    )
22437                }
22438            }
22439        }
22440    }
22441    ///Container for all the [`StakeTableV2`](self) custom errors.
22442    #[derive(Clone)]
22443    #[derive(serde::Serialize, serde::Deserialize)]
22444    #[derive(Debug, PartialEq, Eq, Hash)]
22445    pub enum StakeTableV2Errors {
22446        #[allow(missing_docs)]
22447        AccessControlBadConfirmation(AccessControlBadConfirmation),
22448        #[allow(missing_docs)]
22449        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
22450        #[allow(missing_docs)]
22451        AddressEmptyCode(AddressEmptyCode),
22452        #[allow(missing_docs)]
22453        BLSSigIsInfinity(BLSSigIsInfinity),
22454        #[allow(missing_docs)]
22455        BLSSigVerificationFailed(BLSSigVerificationFailed),
22456        #[allow(missing_docs)]
22457        BLSVKIsInfinity(BLSVKIsInfinity),
22458        #[allow(missing_docs)]
22459        BN254PairingProdFailed(BN254PairingProdFailed),
22460        #[allow(missing_docs)]
22461        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
22462        #[allow(missing_docs)]
22463        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
22464        #[allow(missing_docs)]
22465        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
22466        #[allow(missing_docs)]
22467        CommissionUnchanged(CommissionUnchanged),
22468        #[allow(missing_docs)]
22469        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
22470        #[allow(missing_docs)]
22471        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
22472        #[allow(missing_docs)]
22473        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
22474        #[allow(missing_docs)]
22475        DelegateAmountTooSmall(DelegateAmountTooSmall),
22476        #[allow(missing_docs)]
22477        DeprecatedFunction(DeprecatedFunction),
22478        #[allow(missing_docs)]
22479        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
22480        #[allow(missing_docs)]
22481        ERC1967NonPayable(ERC1967NonPayable),
22482        #[allow(missing_docs)]
22483        EnforcedPause(EnforcedPause),
22484        #[allow(missing_docs)]
22485        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
22486        #[allow(missing_docs)]
22487        ExpectedPause(ExpectedPause),
22488        #[allow(missing_docs)]
22489        FailedInnerCall(FailedInnerCall),
22490        #[allow(missing_docs)]
22491        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
22492        #[allow(missing_docs)]
22493        InsufficientAllowance(InsufficientAllowance),
22494        #[allow(missing_docs)]
22495        InsufficientBalance(InsufficientBalance),
22496        #[allow(missing_docs)]
22497        InvalidCommission(InvalidCommission),
22498        #[allow(missing_docs)]
22499        InvalidG1(InvalidG1),
22500        #[allow(missing_docs)]
22501        InvalidInitialization(InvalidInitialization),
22502        #[allow(missing_docs)]
22503        InvalidMetadataUriLength(InvalidMetadataUriLength),
22504        #[allow(missing_docs)]
22505        InvalidRateLimitParameters(InvalidRateLimitParameters),
22506        #[allow(missing_docs)]
22507        InvalidSchnorrSig(InvalidSchnorrSig),
22508        #[allow(missing_docs)]
22509        InvalidSchnorrVK(InvalidSchnorrVK),
22510        #[allow(missing_docs)]
22511        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
22512        #[allow(missing_docs)]
22513        NoUndelegationFound(NoUndelegationFound),
22514        #[allow(missing_docs)]
22515        NotInitializing(NotInitializing),
22516        #[allow(missing_docs)]
22517        NothingToWithdraw(NothingToWithdraw),
22518        #[allow(missing_docs)]
22519        OwnableInvalidOwner(OwnableInvalidOwner),
22520        #[allow(missing_docs)]
22521        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
22522        #[allow(missing_docs)]
22523        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
22524        #[allow(missing_docs)]
22525        PowPrecompileFailed(PowPrecompileFailed),
22526        #[allow(missing_docs)]
22527        PrematureWithdrawal(PrematureWithdrawal),
22528        #[allow(missing_docs)]
22529        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
22530        #[allow(missing_docs)]
22531        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
22532        #[allow(missing_docs)]
22533        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
22534        #[allow(missing_docs)]
22535        UndelegationAlreadyExists(UndelegationAlreadyExists),
22536        #[allow(missing_docs)]
22537        ValidatorAlreadyExited(ValidatorAlreadyExited),
22538        #[allow(missing_docs)]
22539        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
22540        #[allow(missing_docs)]
22541        ValidatorInactive(ValidatorInactive),
22542        #[allow(missing_docs)]
22543        ValidatorNotExited(ValidatorNotExited),
22544        #[allow(missing_docs)]
22545        ZeroAddress(ZeroAddress),
22546        #[allow(missing_docs)]
22547        ZeroAmount(ZeroAmount),
22548    }
22549    impl StakeTableV2Errors {
22550        /// All the selectors of this enum.
22551        ///
22552        /// Note that the selectors might not be in the same order as the variants.
22553        /// No guarantees are made about the order of the selectors.
22554        ///
22555        /// Prefer using `SolInterface` methods instead.
22556        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22557            [1u8, 181u8, 20u8, 174u8],
22558            [6u8, 207u8, 67u8, 143u8],
22559            [12u8, 237u8, 62u8, 80u8],
22560            [17u8, 140u8, 218u8, 167u8],
22561            [20u8, 37u8, 234u8, 66u8],
22562            [22u8, 235u8, 148u8, 203u8],
22563            [30u8, 79u8, 189u8, 247u8],
22564            [31u8, 42u8, 32u8, 5u8],
22565            [35u8, 159u8, 245u8, 127u8],
22566            [37u8, 173u8, 72u8, 202u8],
22567            [42u8, 27u8, 45u8, 216u8],
22568            [47u8, 171u8, 146u8, 202u8],
22569            [50u8, 116u8, 250u8, 100u8],
22570            [66u8, 71u8, 6u8, 135u8],
22571            [76u8, 156u8, 140u8, 227u8],
22572            [80u8, 129u8, 78u8, 16u8],
22573            [80u8, 138u8, 121u8, 63u8],
22574            [90u8, 119u8, 67u8, 87u8],
22575            [102u8, 151u8, 178u8, 50u8],
22576            [103u8, 78u8, 142u8, 243u8],
22577            [116u8, 39u8, 35u8, 50u8],
22578            [123u8, 38u8, 158u8, 146u8],
22579            [125u8, 41u8, 135u8, 49u8],
22580            [139u8, 120u8, 99u8, 29u8],
22581            [141u8, 252u8, 32u8, 43u8],
22582            [144u8, 184u8, 103u8, 138u8],
22583            [146u8, 102u8, 83u8, 81u8],
22584            [153u8, 115u8, 247u8, 216u8],
22585            [153u8, 150u8, 179u8, 21u8],
22586            [158u8, 120u8, 209u8, 76u8],
22587            [170u8, 29u8, 73u8, 164u8],
22588            [174u8, 73u8, 59u8, 3u8],
22589            [176u8, 181u8, 251u8, 153u8],
22590            [179u8, 152u8, 151u8, 159u8],
22591            [181u8, 36u8, 253u8, 106u8],
22592            [181u8, 126u8, 33u8, 223u8],
22593            [188u8, 134u8, 197u8, 154u8],
22594            [194u8, 6u8, 51u8, 79u8],
22595            [194u8, 11u8, 172u8, 148u8],
22596            [194u8, 215u8, 248u8, 19u8],
22597            [208u8, 208u8, 79u8, 96u8],
22598            [212u8, 35u8, 164u8, 241u8],
22599            [215u8, 230u8, 188u8, 248u8],
22600            [217u8, 46u8, 35u8, 61u8],
22601            [217u8, 60u8, 6u8, 101u8],
22602            [220u8, 129u8, 219u8, 133u8],
22603            [224u8, 124u8, 141u8, 186u8],
22604            [226u8, 81u8, 125u8, 63u8],
22605            [234u8, 180u8, 169u8, 99u8],
22606            [242u8, 83u8, 20u8, 166u8],
22607            [249u8, 46u8, 232u8, 169u8],
22608        ];
22609        /// The names of the variants in the same order as `SELECTORS`.
22610        pub const VARIANT_NAMES: &'static [&'static str] = &[
22611            ::core::stringify!(BlsKeyAlreadyUsed),
22612            ::core::stringify!(InvalidSchnorrVK),
22613            ::core::stringify!(BLSSigVerificationFailed),
22614            ::core::stringify!(OwnableUnauthorizedAccount),
22615            ::core::stringify!(FailedInnerCall),
22616            ::core::stringify!(CommissionUpdateTooSoon),
22617            ::core::stringify!(OwnableInvalidOwner),
22618            ::core::stringify!(ZeroAmount),
22619            ::core::stringify!(InvalidMetadataUriLength),
22620            ::core::stringify!(CommissionIncreaseExceedsMax),
22621            ::core::stringify!(InsufficientAllowance),
22622            ::core::stringify!(OwnershipCannotBeRenounced),
22623            ::core::stringify!(PowPrecompileFailed),
22624            ::core::stringify!(InvalidSchnorrSig),
22625            ::core::stringify!(ERC1967InvalidImplementation),
22626            ::core::stringify!(CommissionAlreadyInitialized),
22627            ::core::stringify!(ValidatorInactive),
22628            ::core::stringify!(PrematureWithdrawal),
22629            ::core::stringify!(AccessControlBadConfirmation),
22630            ::core::stringify!(InvalidRateLimitParameters),
22631            ::core::stringify!(BLSSigIsInfinity),
22632            ::core::stringify!(InitialActiveStakeExceedsBalance),
22633            ::core::stringify!(DelegateAmountTooSmall),
22634            ::core::stringify!(DefaultAdminCannotBeRenounced),
22635            ::core::stringify!(ExpectedPause),
22636            ::core::stringify!(MinDelegateAmountTooSmall),
22637            ::core::stringify!(InsufficientBalance),
22638            ::core::stringify!(ValidatorAlreadyRegistered),
22639            ::core::stringify!(AddressEmptyCode),
22640            ::core::stringify!(InvalidG1),
22641            ::core::stringify!(UUPSUnsupportedProxiableUUID),
22642            ::core::stringify!(SchnorrKeyAlreadyUsed),
22643            ::core::stringify!(DefaultAdminCannotBeRevoked),
22644            ::core::stringify!(ERC1967NonPayable),
22645            ::core::stringify!(NoUndelegationFound),
22646            ::core::stringify!(ExitEscrowPeriodInvalid),
22647            ::core::stringify!(BLSVKIsInfinity),
22648            ::core::stringify!(BN254PairingProdFailed),
22649            ::core::stringify!(CommissionUnchanged),
22650            ::core::stringify!(DeprecatedFunction),
22651            ::core::stringify!(NothingToWithdraw),
22652            ::core::stringify!(UndelegationAlreadyExists),
22653            ::core::stringify!(NotInitializing),
22654            ::core::stringify!(ZeroAddress),
22655            ::core::stringify!(EnforcedPause),
22656            ::core::stringify!(InvalidCommission),
22657            ::core::stringify!(UUPSUnauthorizedCallContext),
22658            ::core::stringify!(AccessControlUnauthorizedAccount),
22659            ::core::stringify!(ValidatorAlreadyExited),
22660            ::core::stringify!(ValidatorNotExited),
22661            ::core::stringify!(InvalidInitialization),
22662        ];
22663        /// The signatures in the same order as `SELECTORS`.
22664        pub const SIGNATURES: &'static [&'static str] = &[
22665            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22666            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
22667            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
22668            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22669            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
22670            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
22671            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
22672            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
22673            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
22674            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
22675            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
22676            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22677            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
22678            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
22679            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
22680            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
22681            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
22682            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
22683            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
22684            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
22685            <BLSSigIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
22686            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
22687            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22688            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22689            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
22690            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22691            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
22692            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
22693            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
22694            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
22695            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
22696            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22697            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
22698            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
22699            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
22700            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
22701            <BLSVKIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
22702            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
22703            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
22704            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
22705            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
22706            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
22707            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
22708            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
22709            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
22710            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
22711            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
22712            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22713            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
22714            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
22715            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
22716        ];
22717        /// Returns the signature for the given selector, if known.
22718        #[inline]
22719        pub fn signature_by_selector(
22720            selector: [u8; 4usize],
22721        ) -> ::core::option::Option<&'static str> {
22722            match Self::SELECTORS.binary_search(&selector) {
22723                ::core::result::Result::Ok(idx) => {
22724                    ::core::option::Option::Some(Self::SIGNATURES[idx])
22725                }
22726                ::core::result::Result::Err(_) => ::core::option::Option::None,
22727            }
22728        }
22729        /// Returns the enum variant name for the given selector, if known.
22730        #[inline]
22731        pub fn name_by_selector(
22732            selector: [u8; 4usize],
22733        ) -> ::core::option::Option<&'static str> {
22734            let sig = Self::signature_by_selector(selector)?;
22735            sig.split_once('(').map(|(name, _)| name)
22736        }
22737    }
22738    #[automatically_derived]
22739    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
22740        const NAME: &'static str = "StakeTableV2Errors";
22741        const MIN_DATA_LENGTH: usize = 0usize;
22742        const COUNT: usize = 51usize;
22743        #[inline]
22744        fn selector(&self) -> [u8; 4] {
22745            match self {
22746                Self::AccessControlBadConfirmation(_) => {
22747                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
22748                }
22749                Self::AccessControlUnauthorizedAccount(_) => {
22750                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22751                }
22752                Self::AddressEmptyCode(_) => {
22753                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
22754                }
22755                Self::BLSSigIsInfinity(_) => {
22756                    <BLSSigIsInfinity as alloy_sol_types::SolError>::SELECTOR
22757                }
22758                Self::BLSSigVerificationFailed(_) => {
22759                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
22760                }
22761                Self::BLSVKIsInfinity(_) => {
22762                    <BLSVKIsInfinity as alloy_sol_types::SolError>::SELECTOR
22763                }
22764                Self::BN254PairingProdFailed(_) => {
22765                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
22766                }
22767                Self::BlsKeyAlreadyUsed(_) => {
22768                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22769                }
22770                Self::CommissionAlreadyInitialized(_) => {
22771                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
22772                }
22773                Self::CommissionIncreaseExceedsMax(_) => {
22774                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
22775                }
22776                Self::CommissionUnchanged(_) => {
22777                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
22778                }
22779                Self::CommissionUpdateTooSoon(_) => {
22780                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
22781                }
22782                Self::DefaultAdminCannotBeRenounced(_) => {
22783                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22784                }
22785                Self::DefaultAdminCannotBeRevoked(_) => {
22786                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
22787                }
22788                Self::DelegateAmountTooSmall(_) => {
22789                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22790                }
22791                Self::DeprecatedFunction(_) => {
22792                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
22793                }
22794                Self::ERC1967InvalidImplementation(_) => {
22795                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
22796                }
22797                Self::ERC1967NonPayable(_) => {
22798                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
22799                }
22800                Self::EnforcedPause(_) => {
22801                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
22802                }
22803                Self::ExitEscrowPeriodInvalid(_) => {
22804                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
22805                }
22806                Self::ExpectedPause(_) => {
22807                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
22808                }
22809                Self::FailedInnerCall(_) => {
22810                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
22811                }
22812                Self::InitialActiveStakeExceedsBalance(_) => {
22813                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
22814                }
22815                Self::InsufficientAllowance(_) => {
22816                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
22817                }
22818                Self::InsufficientBalance(_) => {
22819                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
22820                }
22821                Self::InvalidCommission(_) => {
22822                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
22823                }
22824                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
22825                Self::InvalidInitialization(_) => {
22826                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
22827                }
22828                Self::InvalidMetadataUriLength(_) => {
22829                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
22830                }
22831                Self::InvalidRateLimitParameters(_) => {
22832                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
22833                }
22834                Self::InvalidSchnorrSig(_) => {
22835                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
22836                }
22837                Self::InvalidSchnorrVK(_) => {
22838                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
22839                }
22840                Self::MinDelegateAmountTooSmall(_) => {
22841                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22842                }
22843                Self::NoUndelegationFound(_) => {
22844                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
22845                }
22846                Self::NotInitializing(_) => {
22847                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
22848                }
22849                Self::NothingToWithdraw(_) => {
22850                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
22851                }
22852                Self::OwnableInvalidOwner(_) => {
22853                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
22854                }
22855                Self::OwnableUnauthorizedAccount(_) => {
22856                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22857                }
22858                Self::OwnershipCannotBeRenounced(_) => {
22859                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22860                }
22861                Self::PowPrecompileFailed(_) => {
22862                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
22863                }
22864                Self::PrematureWithdrawal(_) => {
22865                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
22866                }
22867                Self::SchnorrKeyAlreadyUsed(_) => {
22868                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22869                }
22870                Self::UUPSUnauthorizedCallContext(_) => {
22871                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
22872                }
22873                Self::UUPSUnsupportedProxiableUUID(_) => {
22874                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
22875                }
22876                Self::UndelegationAlreadyExists(_) => {
22877                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
22878                }
22879                Self::ValidatorAlreadyExited(_) => {
22880                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
22881                }
22882                Self::ValidatorAlreadyRegistered(_) => {
22883                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
22884                }
22885                Self::ValidatorInactive(_) => {
22886                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
22887                }
22888                Self::ValidatorNotExited(_) => {
22889                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
22890                }
22891                Self::ZeroAddress(_) => {
22892                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
22893                }
22894                Self::ZeroAmount(_) => {
22895                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
22896                }
22897            }
22898        }
22899        #[inline]
22900        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
22901            Self::SELECTORS.get(i).copied()
22902        }
22903        #[inline]
22904        fn valid_selector(selector: [u8; 4]) -> bool {
22905            Self::SELECTORS.binary_search(&selector).is_ok()
22906        }
22907        #[inline]
22908        #[allow(non_snake_case)]
22909        fn abi_decode_raw(
22910            selector: [u8; 4],
22911            data: &[u8],
22912        ) -> alloy_sol_types::Result<Self> {
22913            static DECODE_SHIMS: &[fn(
22914                &[u8],
22915            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
22916                {
22917                    fn BlsKeyAlreadyUsed(
22918                        data: &[u8],
22919                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22920                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
22921                                data,
22922                            )
22923                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
22924                    }
22925                    BlsKeyAlreadyUsed
22926                },
22927                {
22928                    fn InvalidSchnorrVK(
22929                        data: &[u8],
22930                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22931                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
22932                                data,
22933                            )
22934                            .map(StakeTableV2Errors::InvalidSchnorrVK)
22935                    }
22936                    InvalidSchnorrVK
22937                },
22938                {
22939                    fn BLSSigVerificationFailed(
22940                        data: &[u8],
22941                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22942                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
22943                                data,
22944                            )
22945                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
22946                    }
22947                    BLSSigVerificationFailed
22948                },
22949                {
22950                    fn OwnableUnauthorizedAccount(
22951                        data: &[u8],
22952                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22953                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
22954                                data,
22955                            )
22956                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
22957                    }
22958                    OwnableUnauthorizedAccount
22959                },
22960                {
22961                    fn FailedInnerCall(
22962                        data: &[u8],
22963                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22964                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
22965                                data,
22966                            )
22967                            .map(StakeTableV2Errors::FailedInnerCall)
22968                    }
22969                    FailedInnerCall
22970                },
22971                {
22972                    fn CommissionUpdateTooSoon(
22973                        data: &[u8],
22974                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22975                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
22976                                data,
22977                            )
22978                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
22979                    }
22980                    CommissionUpdateTooSoon
22981                },
22982                {
22983                    fn OwnableInvalidOwner(
22984                        data: &[u8],
22985                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22986                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
22987                                data,
22988                            )
22989                            .map(StakeTableV2Errors::OwnableInvalidOwner)
22990                    }
22991                    OwnableInvalidOwner
22992                },
22993                {
22994                    fn ZeroAmount(
22995                        data: &[u8],
22996                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22997                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
22998                            .map(StakeTableV2Errors::ZeroAmount)
22999                    }
23000                    ZeroAmount
23001                },
23002                {
23003                    fn InvalidMetadataUriLength(
23004                        data: &[u8],
23005                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23006                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw(
23007                                data,
23008                            )
23009                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
23010                    }
23011                    InvalidMetadataUriLength
23012                },
23013                {
23014                    fn CommissionIncreaseExceedsMax(
23015                        data: &[u8],
23016                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23017                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
23018                                data,
23019                            )
23020                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
23021                    }
23022                    CommissionIncreaseExceedsMax
23023                },
23024                {
23025                    fn InsufficientAllowance(
23026                        data: &[u8],
23027                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23028                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
23029                                data,
23030                            )
23031                            .map(StakeTableV2Errors::InsufficientAllowance)
23032                    }
23033                    InsufficientAllowance
23034                },
23035                {
23036                    fn OwnershipCannotBeRenounced(
23037                        data: &[u8],
23038                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23039                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
23040                                data,
23041                            )
23042                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
23043                    }
23044                    OwnershipCannotBeRenounced
23045                },
23046                {
23047                    fn PowPrecompileFailed(
23048                        data: &[u8],
23049                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23050                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
23051                                data,
23052                            )
23053                            .map(StakeTableV2Errors::PowPrecompileFailed)
23054                    }
23055                    PowPrecompileFailed
23056                },
23057                {
23058                    fn InvalidSchnorrSig(
23059                        data: &[u8],
23060                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23061                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
23062                                data,
23063                            )
23064                            .map(StakeTableV2Errors::InvalidSchnorrSig)
23065                    }
23066                    InvalidSchnorrSig
23067                },
23068                {
23069                    fn ERC1967InvalidImplementation(
23070                        data: &[u8],
23071                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23072                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
23073                                data,
23074                            )
23075                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
23076                    }
23077                    ERC1967InvalidImplementation
23078                },
23079                {
23080                    fn CommissionAlreadyInitialized(
23081                        data: &[u8],
23082                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23083                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
23084                                data,
23085                            )
23086                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
23087                    }
23088                    CommissionAlreadyInitialized
23089                },
23090                {
23091                    fn ValidatorInactive(
23092                        data: &[u8],
23093                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23094                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
23095                                data,
23096                            )
23097                            .map(StakeTableV2Errors::ValidatorInactive)
23098                    }
23099                    ValidatorInactive
23100                },
23101                {
23102                    fn PrematureWithdrawal(
23103                        data: &[u8],
23104                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23105                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
23106                                data,
23107                            )
23108                            .map(StakeTableV2Errors::PrematureWithdrawal)
23109                    }
23110                    PrematureWithdrawal
23111                },
23112                {
23113                    fn AccessControlBadConfirmation(
23114                        data: &[u8],
23115                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23116                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
23117                                data,
23118                            )
23119                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
23120                    }
23121                    AccessControlBadConfirmation
23122                },
23123                {
23124                    fn InvalidRateLimitParameters(
23125                        data: &[u8],
23126                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23127                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
23128                                data,
23129                            )
23130                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
23131                    }
23132                    InvalidRateLimitParameters
23133                },
23134                {
23135                    fn BLSSigIsInfinity(
23136                        data: &[u8],
23137                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23138                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw(
23139                                data,
23140                            )
23141                            .map(StakeTableV2Errors::BLSSigIsInfinity)
23142                    }
23143                    BLSSigIsInfinity
23144                },
23145                {
23146                    fn InitialActiveStakeExceedsBalance(
23147                        data: &[u8],
23148                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23149                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw(
23150                                data,
23151                            )
23152                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
23153                    }
23154                    InitialActiveStakeExceedsBalance
23155                },
23156                {
23157                    fn DelegateAmountTooSmall(
23158                        data: &[u8],
23159                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23160                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
23161                                data,
23162                            )
23163                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
23164                    }
23165                    DelegateAmountTooSmall
23166                },
23167                {
23168                    fn DefaultAdminCannotBeRenounced(
23169                        data: &[u8],
23170                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23171                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
23172                                data,
23173                            )
23174                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
23175                    }
23176                    DefaultAdminCannotBeRenounced
23177                },
23178                {
23179                    fn ExpectedPause(
23180                        data: &[u8],
23181                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23182                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
23183                                data,
23184                            )
23185                            .map(StakeTableV2Errors::ExpectedPause)
23186                    }
23187                    ExpectedPause
23188                },
23189                {
23190                    fn MinDelegateAmountTooSmall(
23191                        data: &[u8],
23192                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23193                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
23194                                data,
23195                            )
23196                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23197                    }
23198                    MinDelegateAmountTooSmall
23199                },
23200                {
23201                    fn InsufficientBalance(
23202                        data: &[u8],
23203                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23204                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
23205                                data,
23206                            )
23207                            .map(StakeTableV2Errors::InsufficientBalance)
23208                    }
23209                    InsufficientBalance
23210                },
23211                {
23212                    fn ValidatorAlreadyRegistered(
23213                        data: &[u8],
23214                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23215                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
23216                                data,
23217                            )
23218                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23219                    }
23220                    ValidatorAlreadyRegistered
23221                },
23222                {
23223                    fn AddressEmptyCode(
23224                        data: &[u8],
23225                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23226                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
23227                                data,
23228                            )
23229                            .map(StakeTableV2Errors::AddressEmptyCode)
23230                    }
23231                    AddressEmptyCode
23232                },
23233                {
23234                    fn InvalidG1(
23235                        data: &[u8],
23236                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23237                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
23238                            .map(StakeTableV2Errors::InvalidG1)
23239                    }
23240                    InvalidG1
23241                },
23242                {
23243                    fn UUPSUnsupportedProxiableUUID(
23244                        data: &[u8],
23245                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23246                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
23247                                data,
23248                            )
23249                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23250                    }
23251                    UUPSUnsupportedProxiableUUID
23252                },
23253                {
23254                    fn SchnorrKeyAlreadyUsed(
23255                        data: &[u8],
23256                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23257                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
23258                                data,
23259                            )
23260                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23261                    }
23262                    SchnorrKeyAlreadyUsed
23263                },
23264                {
23265                    fn DefaultAdminCannotBeRevoked(
23266                        data: &[u8],
23267                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23268                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
23269                                data,
23270                            )
23271                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23272                    }
23273                    DefaultAdminCannotBeRevoked
23274                },
23275                {
23276                    fn ERC1967NonPayable(
23277                        data: &[u8],
23278                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23279                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
23280                                data,
23281                            )
23282                            .map(StakeTableV2Errors::ERC1967NonPayable)
23283                    }
23284                    ERC1967NonPayable
23285                },
23286                {
23287                    fn NoUndelegationFound(
23288                        data: &[u8],
23289                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23290                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw(
23291                                data,
23292                            )
23293                            .map(StakeTableV2Errors::NoUndelegationFound)
23294                    }
23295                    NoUndelegationFound
23296                },
23297                {
23298                    fn ExitEscrowPeriodInvalid(
23299                        data: &[u8],
23300                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23301                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
23302                                data,
23303                            )
23304                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23305                    }
23306                    ExitEscrowPeriodInvalid
23307                },
23308                {
23309                    fn BLSVKIsInfinity(
23310                        data: &[u8],
23311                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23312                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw(
23313                                data,
23314                            )
23315                            .map(StakeTableV2Errors::BLSVKIsInfinity)
23316                    }
23317                    BLSVKIsInfinity
23318                },
23319                {
23320                    fn BN254PairingProdFailed(
23321                        data: &[u8],
23322                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23323                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
23324                                data,
23325                            )
23326                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23327                    }
23328                    BN254PairingProdFailed
23329                },
23330                {
23331                    fn CommissionUnchanged(
23332                        data: &[u8],
23333                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23334                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
23335                                data,
23336                            )
23337                            .map(StakeTableV2Errors::CommissionUnchanged)
23338                    }
23339                    CommissionUnchanged
23340                },
23341                {
23342                    fn DeprecatedFunction(
23343                        data: &[u8],
23344                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23345                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
23346                                data,
23347                            )
23348                            .map(StakeTableV2Errors::DeprecatedFunction)
23349                    }
23350                    DeprecatedFunction
23351                },
23352                {
23353                    fn NothingToWithdraw(
23354                        data: &[u8],
23355                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23356                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
23357                                data,
23358                            )
23359                            .map(StakeTableV2Errors::NothingToWithdraw)
23360                    }
23361                    NothingToWithdraw
23362                },
23363                {
23364                    fn UndelegationAlreadyExists(
23365                        data: &[u8],
23366                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23367                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
23368                                data,
23369                            )
23370                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23371                    }
23372                    UndelegationAlreadyExists
23373                },
23374                {
23375                    fn NotInitializing(
23376                        data: &[u8],
23377                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23378                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
23379                                data,
23380                            )
23381                            .map(StakeTableV2Errors::NotInitializing)
23382                    }
23383                    NotInitializing
23384                },
23385                {
23386                    fn ZeroAddress(
23387                        data: &[u8],
23388                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23389                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
23390                            .map(StakeTableV2Errors::ZeroAddress)
23391                    }
23392                    ZeroAddress
23393                },
23394                {
23395                    fn EnforcedPause(
23396                        data: &[u8],
23397                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23398                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
23399                                data,
23400                            )
23401                            .map(StakeTableV2Errors::EnforcedPause)
23402                    }
23403                    EnforcedPause
23404                },
23405                {
23406                    fn InvalidCommission(
23407                        data: &[u8],
23408                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23409                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
23410                                data,
23411                            )
23412                            .map(StakeTableV2Errors::InvalidCommission)
23413                    }
23414                    InvalidCommission
23415                },
23416                {
23417                    fn UUPSUnauthorizedCallContext(
23418                        data: &[u8],
23419                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23420                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
23421                                data,
23422                            )
23423                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
23424                    }
23425                    UUPSUnauthorizedCallContext
23426                },
23427                {
23428                    fn AccessControlUnauthorizedAccount(
23429                        data: &[u8],
23430                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23431                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
23432                                data,
23433                            )
23434                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
23435                    }
23436                    AccessControlUnauthorizedAccount
23437                },
23438                {
23439                    fn ValidatorAlreadyExited(
23440                        data: &[u8],
23441                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23442                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
23443                                data,
23444                            )
23445                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
23446                    }
23447                    ValidatorAlreadyExited
23448                },
23449                {
23450                    fn ValidatorNotExited(
23451                        data: &[u8],
23452                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23453                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
23454                                data,
23455                            )
23456                            .map(StakeTableV2Errors::ValidatorNotExited)
23457                    }
23458                    ValidatorNotExited
23459                },
23460                {
23461                    fn InvalidInitialization(
23462                        data: &[u8],
23463                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23464                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
23465                                data,
23466                            )
23467                            .map(StakeTableV2Errors::InvalidInitialization)
23468                    }
23469                    InvalidInitialization
23470                },
23471            ];
23472            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23473                return Err(
23474                    alloy_sol_types::Error::unknown_selector(
23475                        <Self as alloy_sol_types::SolInterface>::NAME,
23476                        selector,
23477                    ),
23478                );
23479            };
23480            DECODE_SHIMS[idx](data)
23481        }
23482        #[inline]
23483        #[allow(non_snake_case)]
23484        fn abi_decode_raw_validate(
23485            selector: [u8; 4],
23486            data: &[u8],
23487        ) -> alloy_sol_types::Result<Self> {
23488            static DECODE_VALIDATE_SHIMS: &[fn(
23489                &[u8],
23490            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
23491                {
23492                    fn BlsKeyAlreadyUsed(
23493                        data: &[u8],
23494                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23495                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23496                                data,
23497                            )
23498                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
23499                    }
23500                    BlsKeyAlreadyUsed
23501                },
23502                {
23503                    fn InvalidSchnorrVK(
23504                        data: &[u8],
23505                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23506                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
23507                                data,
23508                            )
23509                            .map(StakeTableV2Errors::InvalidSchnorrVK)
23510                    }
23511                    InvalidSchnorrVK
23512                },
23513                {
23514                    fn BLSSigVerificationFailed(
23515                        data: &[u8],
23516                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23517                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23518                                data,
23519                            )
23520                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
23521                    }
23522                    BLSSigVerificationFailed
23523                },
23524                {
23525                    fn OwnableUnauthorizedAccount(
23526                        data: &[u8],
23527                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23528                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23529                                data,
23530                            )
23531                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
23532                    }
23533                    OwnableUnauthorizedAccount
23534                },
23535                {
23536                    fn FailedInnerCall(
23537                        data: &[u8],
23538                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23539                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23540                                data,
23541                            )
23542                            .map(StakeTableV2Errors::FailedInnerCall)
23543                    }
23544                    FailedInnerCall
23545                },
23546                {
23547                    fn CommissionUpdateTooSoon(
23548                        data: &[u8],
23549                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23550                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
23551                                data,
23552                            )
23553                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
23554                    }
23555                    CommissionUpdateTooSoon
23556                },
23557                {
23558                    fn OwnableInvalidOwner(
23559                        data: &[u8],
23560                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23561                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
23562                                data,
23563                            )
23564                            .map(StakeTableV2Errors::OwnableInvalidOwner)
23565                    }
23566                    OwnableInvalidOwner
23567                },
23568                {
23569                    fn ZeroAmount(
23570                        data: &[u8],
23571                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23572                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23573                                data,
23574                            )
23575                            .map(StakeTableV2Errors::ZeroAmount)
23576                    }
23577                    ZeroAmount
23578                },
23579                {
23580                    fn InvalidMetadataUriLength(
23581                        data: &[u8],
23582                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23583                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
23584                                data,
23585                            )
23586                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
23587                    }
23588                    InvalidMetadataUriLength
23589                },
23590                {
23591                    fn CommissionIncreaseExceedsMax(
23592                        data: &[u8],
23593                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23594                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
23595                                data,
23596                            )
23597                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
23598                    }
23599                    CommissionIncreaseExceedsMax
23600                },
23601                {
23602                    fn InsufficientAllowance(
23603                        data: &[u8],
23604                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23605                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23606                                data,
23607                            )
23608                            .map(StakeTableV2Errors::InsufficientAllowance)
23609                    }
23610                    InsufficientAllowance
23611                },
23612                {
23613                    fn OwnershipCannotBeRenounced(
23614                        data: &[u8],
23615                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23616                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
23617                                data,
23618                            )
23619                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
23620                    }
23621                    OwnershipCannotBeRenounced
23622                },
23623                {
23624                    fn PowPrecompileFailed(
23625                        data: &[u8],
23626                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23627                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23628                                data,
23629                            )
23630                            .map(StakeTableV2Errors::PowPrecompileFailed)
23631                    }
23632                    PowPrecompileFailed
23633                },
23634                {
23635                    fn InvalidSchnorrSig(
23636                        data: &[u8],
23637                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23638                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
23639                                data,
23640                            )
23641                            .map(StakeTableV2Errors::InvalidSchnorrSig)
23642                    }
23643                    InvalidSchnorrSig
23644                },
23645                {
23646                    fn ERC1967InvalidImplementation(
23647                        data: &[u8],
23648                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23649                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23650                                data,
23651                            )
23652                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
23653                    }
23654                    ERC1967InvalidImplementation
23655                },
23656                {
23657                    fn CommissionAlreadyInitialized(
23658                        data: &[u8],
23659                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23660                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
23661                                data,
23662                            )
23663                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
23664                    }
23665                    CommissionAlreadyInitialized
23666                },
23667                {
23668                    fn ValidatorInactive(
23669                        data: &[u8],
23670                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23671                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
23672                                data,
23673                            )
23674                            .map(StakeTableV2Errors::ValidatorInactive)
23675                    }
23676                    ValidatorInactive
23677                },
23678                {
23679                    fn PrematureWithdrawal(
23680                        data: &[u8],
23681                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23682                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
23683                                data,
23684                            )
23685                            .map(StakeTableV2Errors::PrematureWithdrawal)
23686                    }
23687                    PrematureWithdrawal
23688                },
23689                {
23690                    fn AccessControlBadConfirmation(
23691                        data: &[u8],
23692                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23693                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23694                                data,
23695                            )
23696                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
23697                    }
23698                    AccessControlBadConfirmation
23699                },
23700                {
23701                    fn InvalidRateLimitParameters(
23702                        data: &[u8],
23703                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23704                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
23705                                data,
23706                            )
23707                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
23708                    }
23709                    InvalidRateLimitParameters
23710                },
23711                {
23712                    fn BLSSigIsInfinity(
23713                        data: &[u8],
23714                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23715                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_validate(
23716                                data,
23717                            )
23718                            .map(StakeTableV2Errors::BLSSigIsInfinity)
23719                    }
23720                    BLSSigIsInfinity
23721                },
23722                {
23723                    fn InitialActiveStakeExceedsBalance(
23724                        data: &[u8],
23725                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23726                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23727                                data,
23728                            )
23729                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
23730                    }
23731                    InitialActiveStakeExceedsBalance
23732                },
23733                {
23734                    fn DelegateAmountTooSmall(
23735                        data: &[u8],
23736                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23737                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23738                                data,
23739                            )
23740                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
23741                    }
23742                    DelegateAmountTooSmall
23743                },
23744                {
23745                    fn DefaultAdminCannotBeRenounced(
23746                        data: &[u8],
23747                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23748                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
23749                                data,
23750                            )
23751                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
23752                    }
23753                    DefaultAdminCannotBeRenounced
23754                },
23755                {
23756                    fn ExpectedPause(
23757                        data: &[u8],
23758                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23759                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23760                                data,
23761                            )
23762                            .map(StakeTableV2Errors::ExpectedPause)
23763                    }
23764                    ExpectedPause
23765                },
23766                {
23767                    fn MinDelegateAmountTooSmall(
23768                        data: &[u8],
23769                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23770                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23771                                data,
23772                            )
23773                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23774                    }
23775                    MinDelegateAmountTooSmall
23776                },
23777                {
23778                    fn InsufficientBalance(
23779                        data: &[u8],
23780                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23781                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23782                                data,
23783                            )
23784                            .map(StakeTableV2Errors::InsufficientBalance)
23785                    }
23786                    InsufficientBalance
23787                },
23788                {
23789                    fn ValidatorAlreadyRegistered(
23790                        data: &[u8],
23791                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23792                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
23793                                data,
23794                            )
23795                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23796                    }
23797                    ValidatorAlreadyRegistered
23798                },
23799                {
23800                    fn AddressEmptyCode(
23801                        data: &[u8],
23802                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23803                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
23804                                data,
23805                            )
23806                            .map(StakeTableV2Errors::AddressEmptyCode)
23807                    }
23808                    AddressEmptyCode
23809                },
23810                {
23811                    fn InvalidG1(
23812                        data: &[u8],
23813                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23814                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
23815                                data,
23816                            )
23817                            .map(StakeTableV2Errors::InvalidG1)
23818                    }
23819                    InvalidG1
23820                },
23821                {
23822                    fn UUPSUnsupportedProxiableUUID(
23823                        data: &[u8],
23824                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23825                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
23826                                data,
23827                            )
23828                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23829                    }
23830                    UUPSUnsupportedProxiableUUID
23831                },
23832                {
23833                    fn SchnorrKeyAlreadyUsed(
23834                        data: &[u8],
23835                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23836                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23837                                data,
23838                            )
23839                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23840                    }
23841                    SchnorrKeyAlreadyUsed
23842                },
23843                {
23844                    fn DefaultAdminCannotBeRevoked(
23845                        data: &[u8],
23846                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23847                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
23848                                data,
23849                            )
23850                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23851                    }
23852                    DefaultAdminCannotBeRevoked
23853                },
23854                {
23855                    fn ERC1967NonPayable(
23856                        data: &[u8],
23857                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23858                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
23859                                data,
23860                            )
23861                            .map(StakeTableV2Errors::ERC1967NonPayable)
23862                    }
23863                    ERC1967NonPayable
23864                },
23865                {
23866                    fn NoUndelegationFound(
23867                        data: &[u8],
23868                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23869                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
23870                                data,
23871                            )
23872                            .map(StakeTableV2Errors::NoUndelegationFound)
23873                    }
23874                    NoUndelegationFound
23875                },
23876                {
23877                    fn ExitEscrowPeriodInvalid(
23878                        data: &[u8],
23879                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23880                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
23881                                data,
23882                            )
23883                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23884                    }
23885                    ExitEscrowPeriodInvalid
23886                },
23887                {
23888                    fn BLSVKIsInfinity(
23889                        data: &[u8],
23890                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23891                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_validate(
23892                                data,
23893                            )
23894                            .map(StakeTableV2Errors::BLSVKIsInfinity)
23895                    }
23896                    BLSVKIsInfinity
23897                },
23898                {
23899                    fn BN254PairingProdFailed(
23900                        data: &[u8],
23901                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23902                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23903                                data,
23904                            )
23905                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23906                    }
23907                    BN254PairingProdFailed
23908                },
23909                {
23910                    fn CommissionUnchanged(
23911                        data: &[u8],
23912                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23913                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
23914                                data,
23915                            )
23916                            .map(StakeTableV2Errors::CommissionUnchanged)
23917                    }
23918                    CommissionUnchanged
23919                },
23920                {
23921                    fn DeprecatedFunction(
23922                        data: &[u8],
23923                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23924                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
23925                                data,
23926                            )
23927                            .map(StakeTableV2Errors::DeprecatedFunction)
23928                    }
23929                    DeprecatedFunction
23930                },
23931                {
23932                    fn NothingToWithdraw(
23933                        data: &[u8],
23934                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23935                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
23936                                data,
23937                            )
23938                            .map(StakeTableV2Errors::NothingToWithdraw)
23939                    }
23940                    NothingToWithdraw
23941                },
23942                {
23943                    fn UndelegationAlreadyExists(
23944                        data: &[u8],
23945                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23946                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
23947                                data,
23948                            )
23949                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23950                    }
23951                    UndelegationAlreadyExists
23952                },
23953                {
23954                    fn NotInitializing(
23955                        data: &[u8],
23956                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23957                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
23958                                data,
23959                            )
23960                            .map(StakeTableV2Errors::NotInitializing)
23961                    }
23962                    NotInitializing
23963                },
23964                {
23965                    fn ZeroAddress(
23966                        data: &[u8],
23967                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23968                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
23969                                data,
23970                            )
23971                            .map(StakeTableV2Errors::ZeroAddress)
23972                    }
23973                    ZeroAddress
23974                },
23975                {
23976                    fn EnforcedPause(
23977                        data: &[u8],
23978                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23979                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23980                                data,
23981                            )
23982                            .map(StakeTableV2Errors::EnforcedPause)
23983                    }
23984                    EnforcedPause
23985                },
23986                {
23987                    fn InvalidCommission(
23988                        data: &[u8],
23989                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23990                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
23991                                data,
23992                            )
23993                            .map(StakeTableV2Errors::InvalidCommission)
23994                    }
23995                    InvalidCommission
23996                },
23997                {
23998                    fn UUPSUnauthorizedCallContext(
23999                        data: &[u8],
24000                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
24001                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
24002                                data,
24003                            )
24004                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
24005                    }
24006                    UUPSUnauthorizedCallContext
24007                },
24008                {
24009                    fn AccessControlUnauthorizedAccount(
24010                        data: &[u8],
24011                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
24012                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
24013                                data,
24014                            )
24015                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
24016                    }
24017                    AccessControlUnauthorizedAccount
24018                },
24019                {
24020                    fn ValidatorAlreadyExited(
24021                        data: &[u8],
24022                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
24023                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
24024                                data,
24025                            )
24026                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
24027                    }
24028                    ValidatorAlreadyExited
24029                },
24030                {
24031                    fn ValidatorNotExited(
24032                        data: &[u8],
24033                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
24034                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
24035                                data,
24036                            )
24037                            .map(StakeTableV2Errors::ValidatorNotExited)
24038                    }
24039                    ValidatorNotExited
24040                },
24041                {
24042                    fn InvalidInitialization(
24043                        data: &[u8],
24044                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
24045                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
24046                                data,
24047                            )
24048                            .map(StakeTableV2Errors::InvalidInitialization)
24049                    }
24050                    InvalidInitialization
24051                },
24052            ];
24053            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
24054                return Err(
24055                    alloy_sol_types::Error::unknown_selector(
24056                        <Self as alloy_sol_types::SolInterface>::NAME,
24057                        selector,
24058                    ),
24059                );
24060            };
24061            DECODE_VALIDATE_SHIMS[idx](data)
24062        }
24063        #[inline]
24064        fn abi_encoded_size(&self) -> usize {
24065            match self {
24066                Self::AccessControlBadConfirmation(inner) => {
24067                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
24068                        inner,
24069                    )
24070                }
24071                Self::AccessControlUnauthorizedAccount(inner) => {
24072                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
24073                        inner,
24074                    )
24075                }
24076                Self::AddressEmptyCode(inner) => {
24077                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
24078                        inner,
24079                    )
24080                }
24081                Self::BLSSigIsInfinity(inner) => {
24082                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
24083                        inner,
24084                    )
24085                }
24086                Self::BLSSigVerificationFailed(inner) => {
24087                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
24088                        inner,
24089                    )
24090                }
24091                Self::BLSVKIsInfinity(inner) => {
24092                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
24093                        inner,
24094                    )
24095                }
24096                Self::BN254PairingProdFailed(inner) => {
24097                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
24098                        inner,
24099                    )
24100                }
24101                Self::BlsKeyAlreadyUsed(inner) => {
24102                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
24103                        inner,
24104                    )
24105                }
24106                Self::CommissionAlreadyInitialized(inner) => {
24107                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
24108                        inner,
24109                    )
24110                }
24111                Self::CommissionIncreaseExceedsMax(inner) => {
24112                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
24113                        inner,
24114                    )
24115                }
24116                Self::CommissionUnchanged(inner) => {
24117                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
24118                        inner,
24119                    )
24120                }
24121                Self::CommissionUpdateTooSoon(inner) => {
24122                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
24123                        inner,
24124                    )
24125                }
24126                Self::DefaultAdminCannotBeRenounced(inner) => {
24127                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
24128                        inner,
24129                    )
24130                }
24131                Self::DefaultAdminCannotBeRevoked(inner) => {
24132                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
24133                        inner,
24134                    )
24135                }
24136                Self::DelegateAmountTooSmall(inner) => {
24137                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
24138                        inner,
24139                    )
24140                }
24141                Self::DeprecatedFunction(inner) => {
24142                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
24143                        inner,
24144                    )
24145                }
24146                Self::ERC1967InvalidImplementation(inner) => {
24147                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
24148                        inner,
24149                    )
24150                }
24151                Self::ERC1967NonPayable(inner) => {
24152                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
24153                        inner,
24154                    )
24155                }
24156                Self::EnforcedPause(inner) => {
24157                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
24158                }
24159                Self::ExitEscrowPeriodInvalid(inner) => {
24160                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
24161                        inner,
24162                    )
24163                }
24164                Self::ExpectedPause(inner) => {
24165                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
24166                }
24167                Self::FailedInnerCall(inner) => {
24168                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
24169                        inner,
24170                    )
24171                }
24172                Self::InitialActiveStakeExceedsBalance(inner) => {
24173                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
24174                        inner,
24175                    )
24176                }
24177                Self::InsufficientAllowance(inner) => {
24178                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
24179                        inner,
24180                    )
24181                }
24182                Self::InsufficientBalance(inner) => {
24183                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
24184                        inner,
24185                    )
24186                }
24187                Self::InvalidCommission(inner) => {
24188                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
24189                        inner,
24190                    )
24191                }
24192                Self::InvalidG1(inner) => {
24193                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
24194                }
24195                Self::InvalidInitialization(inner) => {
24196                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
24197                        inner,
24198                    )
24199                }
24200                Self::InvalidMetadataUriLength(inner) => {
24201                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
24202                        inner,
24203                    )
24204                }
24205                Self::InvalidRateLimitParameters(inner) => {
24206                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
24207                        inner,
24208                    )
24209                }
24210                Self::InvalidSchnorrSig(inner) => {
24211                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
24212                        inner,
24213                    )
24214                }
24215                Self::InvalidSchnorrVK(inner) => {
24216                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
24217                        inner,
24218                    )
24219                }
24220                Self::MinDelegateAmountTooSmall(inner) => {
24221                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
24222                        inner,
24223                    )
24224                }
24225                Self::NoUndelegationFound(inner) => {
24226                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
24227                        inner,
24228                    )
24229                }
24230                Self::NotInitializing(inner) => {
24231                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
24232                        inner,
24233                    )
24234                }
24235                Self::NothingToWithdraw(inner) => {
24236                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
24237                        inner,
24238                    )
24239                }
24240                Self::OwnableInvalidOwner(inner) => {
24241                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
24242                        inner,
24243                    )
24244                }
24245                Self::OwnableUnauthorizedAccount(inner) => {
24246                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
24247                        inner,
24248                    )
24249                }
24250                Self::OwnershipCannotBeRenounced(inner) => {
24251                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
24252                        inner,
24253                    )
24254                }
24255                Self::PowPrecompileFailed(inner) => {
24256                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
24257                        inner,
24258                    )
24259                }
24260                Self::PrematureWithdrawal(inner) => {
24261                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
24262                        inner,
24263                    )
24264                }
24265                Self::SchnorrKeyAlreadyUsed(inner) => {
24266                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
24267                        inner,
24268                    )
24269                }
24270                Self::UUPSUnauthorizedCallContext(inner) => {
24271                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
24272                        inner,
24273                    )
24274                }
24275                Self::UUPSUnsupportedProxiableUUID(inner) => {
24276                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
24277                        inner,
24278                    )
24279                }
24280                Self::UndelegationAlreadyExists(inner) => {
24281                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
24282                        inner,
24283                    )
24284                }
24285                Self::ValidatorAlreadyExited(inner) => {
24286                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
24287                        inner,
24288                    )
24289                }
24290                Self::ValidatorAlreadyRegistered(inner) => {
24291                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
24292                        inner,
24293                    )
24294                }
24295                Self::ValidatorInactive(inner) => {
24296                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
24297                        inner,
24298                    )
24299                }
24300                Self::ValidatorNotExited(inner) => {
24301                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
24302                        inner,
24303                    )
24304                }
24305                Self::ZeroAddress(inner) => {
24306                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
24307                }
24308                Self::ZeroAmount(inner) => {
24309                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
24310                }
24311            }
24312        }
24313        #[inline]
24314        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
24315            match self {
24316                Self::AccessControlBadConfirmation(inner) => {
24317                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
24318                        inner,
24319                        out,
24320                    )
24321                }
24322                Self::AccessControlUnauthorizedAccount(inner) => {
24323                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24324                        inner,
24325                        out,
24326                    )
24327                }
24328                Self::AddressEmptyCode(inner) => {
24329                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
24330                        inner,
24331                        out,
24332                    )
24333                }
24334                Self::BLSSigIsInfinity(inner) => {
24335                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
24336                        inner,
24337                        out,
24338                    )
24339                }
24340                Self::BLSSigVerificationFailed(inner) => {
24341                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
24342                        inner,
24343                        out,
24344                    )
24345                }
24346                Self::BLSVKIsInfinity(inner) => {
24347                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
24348                        inner,
24349                        out,
24350                    )
24351                }
24352                Self::BN254PairingProdFailed(inner) => {
24353                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
24354                        inner,
24355                        out,
24356                    )
24357                }
24358                Self::BlsKeyAlreadyUsed(inner) => {
24359                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24360                        inner,
24361                        out,
24362                    )
24363                }
24364                Self::CommissionAlreadyInitialized(inner) => {
24365                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
24366                        inner,
24367                        out,
24368                    )
24369                }
24370                Self::CommissionIncreaseExceedsMax(inner) => {
24371                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
24372                        inner,
24373                        out,
24374                    )
24375                }
24376                Self::CommissionUnchanged(inner) => {
24377                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
24378                        inner,
24379                        out,
24380                    )
24381                }
24382                Self::CommissionUpdateTooSoon(inner) => {
24383                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
24384                        inner,
24385                        out,
24386                    )
24387                }
24388                Self::DefaultAdminCannotBeRenounced(inner) => {
24389                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24390                        inner,
24391                        out,
24392                    )
24393                }
24394                Self::DefaultAdminCannotBeRevoked(inner) => {
24395                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
24396                        inner,
24397                        out,
24398                    )
24399                }
24400                Self::DelegateAmountTooSmall(inner) => {
24401                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24402                        inner,
24403                        out,
24404                    )
24405                }
24406                Self::DeprecatedFunction(inner) => {
24407                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
24408                        inner,
24409                        out,
24410                    )
24411                }
24412                Self::ERC1967InvalidImplementation(inner) => {
24413                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
24414                        inner,
24415                        out,
24416                    )
24417                }
24418                Self::ERC1967NonPayable(inner) => {
24419                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
24420                        inner,
24421                        out,
24422                    )
24423                }
24424                Self::EnforcedPause(inner) => {
24425                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
24426                        inner,
24427                        out,
24428                    )
24429                }
24430                Self::ExitEscrowPeriodInvalid(inner) => {
24431                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
24432                        inner,
24433                        out,
24434                    )
24435                }
24436                Self::ExpectedPause(inner) => {
24437                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
24438                        inner,
24439                        out,
24440                    )
24441                }
24442                Self::FailedInnerCall(inner) => {
24443                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
24444                        inner,
24445                        out,
24446                    )
24447                }
24448                Self::InitialActiveStakeExceedsBalance(inner) => {
24449                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
24450                        inner,
24451                        out,
24452                    )
24453                }
24454                Self::InsufficientAllowance(inner) => {
24455                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
24456                        inner,
24457                        out,
24458                    )
24459                }
24460                Self::InsufficientBalance(inner) => {
24461                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
24462                        inner,
24463                        out,
24464                    )
24465                }
24466                Self::InvalidCommission(inner) => {
24467                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
24468                        inner,
24469                        out,
24470                    )
24471                }
24472                Self::InvalidG1(inner) => {
24473                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24474                }
24475                Self::InvalidInitialization(inner) => {
24476                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
24477                        inner,
24478                        out,
24479                    )
24480                }
24481                Self::InvalidMetadataUriLength(inner) => {
24482                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
24483                        inner,
24484                        out,
24485                    )
24486                }
24487                Self::InvalidRateLimitParameters(inner) => {
24488                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
24489                        inner,
24490                        out,
24491                    )
24492                }
24493                Self::InvalidSchnorrSig(inner) => {
24494                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
24495                        inner,
24496                        out,
24497                    )
24498                }
24499                Self::InvalidSchnorrVK(inner) => {
24500                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
24501                        inner,
24502                        out,
24503                    )
24504                }
24505                Self::MinDelegateAmountTooSmall(inner) => {
24506                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24507                        inner,
24508                        out,
24509                    )
24510                }
24511                Self::NoUndelegationFound(inner) => {
24512                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
24513                        inner,
24514                        out,
24515                    )
24516                }
24517                Self::NotInitializing(inner) => {
24518                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
24519                        inner,
24520                        out,
24521                    )
24522                }
24523                Self::NothingToWithdraw(inner) => {
24524                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
24525                        inner,
24526                        out,
24527                    )
24528                }
24529                Self::OwnableInvalidOwner(inner) => {
24530                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
24531                        inner,
24532                        out,
24533                    )
24534                }
24535                Self::OwnableUnauthorizedAccount(inner) => {
24536                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24537                        inner,
24538                        out,
24539                    )
24540                }
24541                Self::OwnershipCannotBeRenounced(inner) => {
24542                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24543                        inner,
24544                        out,
24545                    )
24546                }
24547                Self::PowPrecompileFailed(inner) => {
24548                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
24549                        inner,
24550                        out,
24551                    )
24552                }
24553                Self::PrematureWithdrawal(inner) => {
24554                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
24555                        inner,
24556                        out,
24557                    )
24558                }
24559                Self::SchnorrKeyAlreadyUsed(inner) => {
24560                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24561                        inner,
24562                        out,
24563                    )
24564                }
24565                Self::UUPSUnauthorizedCallContext(inner) => {
24566                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
24567                        inner,
24568                        out,
24569                    )
24570                }
24571                Self::UUPSUnsupportedProxiableUUID(inner) => {
24572                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
24573                        inner,
24574                        out,
24575                    )
24576                }
24577                Self::UndelegationAlreadyExists(inner) => {
24578                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
24579                        inner,
24580                        out,
24581                    )
24582                }
24583                Self::ValidatorAlreadyExited(inner) => {
24584                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
24585                        inner,
24586                        out,
24587                    )
24588                }
24589                Self::ValidatorAlreadyRegistered(inner) => {
24590                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
24591                        inner,
24592                        out,
24593                    )
24594                }
24595                Self::ValidatorInactive(inner) => {
24596                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
24597                        inner,
24598                        out,
24599                    )
24600                }
24601                Self::ValidatorNotExited(inner) => {
24602                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
24603                        inner,
24604                        out,
24605                    )
24606                }
24607                Self::ZeroAddress(inner) => {
24608                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
24609                        inner,
24610                        out,
24611                    )
24612                }
24613                Self::ZeroAmount(inner) => {
24614                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24615                }
24616            }
24617        }
24618    }
24619    ///Container for all the [`StakeTableV2`](self) events.
24620    #[derive(Clone)]
24621    #[derive(serde::Serialize, serde::Deserialize)]
24622    #[derive()]
24623    pub enum StakeTableV2Events {
24624        #[allow(missing_docs)]
24625        CommissionUpdated(CommissionUpdated),
24626        #[allow(missing_docs)]
24627        ConsensusKeysUpdated(ConsensusKeysUpdated),
24628        #[allow(missing_docs)]
24629        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
24630        #[allow(missing_docs)]
24631        Delegated(Delegated),
24632        #[allow(missing_docs)]
24633        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
24634        #[allow(missing_docs)]
24635        Initialized(Initialized),
24636        #[allow(missing_docs)]
24637        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
24638        #[allow(missing_docs)]
24639        MetadataUriUpdated(MetadataUriUpdated),
24640        #[allow(missing_docs)]
24641        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
24642        #[allow(missing_docs)]
24643        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
24644        #[allow(missing_docs)]
24645        OwnershipTransferred(OwnershipTransferred),
24646        #[allow(missing_docs)]
24647        Paused(Paused),
24648        #[allow(missing_docs)]
24649        RoleAdminChanged(RoleAdminChanged),
24650        #[allow(missing_docs)]
24651        RoleGranted(RoleGranted),
24652        #[allow(missing_docs)]
24653        RoleRevoked(RoleRevoked),
24654        #[allow(missing_docs)]
24655        Undelegated(Undelegated),
24656        #[allow(missing_docs)]
24657        UndelegatedV2(UndelegatedV2),
24658        #[allow(missing_docs)]
24659        Unpaused(Unpaused),
24660        #[allow(missing_docs)]
24661        Upgraded(Upgraded),
24662        #[allow(missing_docs)]
24663        ValidatorExit(ValidatorExit),
24664        #[allow(missing_docs)]
24665        ValidatorExitClaimed(ValidatorExitClaimed),
24666        #[allow(missing_docs)]
24667        ValidatorExitV2(ValidatorExitV2),
24668        #[allow(missing_docs)]
24669        ValidatorRegistered(ValidatorRegistered),
24670        #[allow(missing_docs)]
24671        ValidatorRegisteredV2(ValidatorRegisteredV2),
24672        #[allow(missing_docs)]
24673        Withdrawal(Withdrawal),
24674        #[allow(missing_docs)]
24675        WithdrawalClaimed(WithdrawalClaimed),
24676    }
24677    impl StakeTableV2Events {
24678        /// All the selectors of this enum.
24679        ///
24680        /// Note that the selectors might not be in the same order as the variants.
24681        /// No guarantees are made about the order of the selectors.
24682        ///
24683        /// Prefer using `SolInterface` methods instead.
24684        pub const SELECTORS: &'static [[u8; 32usize]] = &[
24685            [
24686                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
24687                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
24688                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
24689            ],
24690            [
24691                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
24692                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
24693                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
24694            ],
24695            [
24696                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
24697                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
24698                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
24699            ],
24700            [
24701                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
24702                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
24703                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
24704            ],
24705            [
24706                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
24707                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
24708                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
24709            ],
24710            [
24711                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
24712                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
24713                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
24714            ],
24715            [
24716                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
24717                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
24718                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
24719            ],
24720            [
24721                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
24722                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
24723                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
24724            ],
24725            [
24726                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
24727                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
24728                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
24729            ],
24730            [
24731                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
24732                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
24733                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
24734            ],
24735            [
24736                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
24737                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
24738                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
24739            ],
24740            [
24741                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
24742                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
24743                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
24744            ],
24745            [
24746                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
24747                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
24748                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
24749            ],
24750            [
24751                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
24752                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
24753                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
24754            ],
24755            [
24756                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
24757                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
24758                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
24759            ],
24760            [
24761                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
24762                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
24763                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
24764            ],
24765            [
24766                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
24767                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
24768                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
24769            ],
24770            [
24771                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
24772                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
24773                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
24774            ],
24775            [
24776                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
24777                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
24778                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
24779            ],
24780            [
24781                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
24782                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
24783                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
24784            ],
24785            [
24786                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
24787                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
24788                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
24789            ],
24790            [
24791                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
24792                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
24793                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
24794            ],
24795            [
24796                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
24797                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
24798                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
24799            ],
24800            [
24801                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
24802                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
24803                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
24804            ],
24805            [
24806                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
24807                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
24808                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
24809            ],
24810            [
24811                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
24812                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
24813                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
24814            ],
24815        ];
24816        /// The names of the variants in the same order as `SELECTORS`.
24817        pub const VARIANT_NAMES: &'static [&'static str] = &[
24818            ::core::stringify!(MinDelegateAmountUpdated),
24819            ::core::stringify!(MetadataUriUpdated),
24820            ::core::stringify!(ValidatorRegisteredV2),
24821            ::core::stringify!(RoleGranted),
24822            ::core::stringify!(Undelegated),
24823            ::core::stringify!(ValidatorExitV2),
24824            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
24825            ::core::stringify!(Unpaused),
24826            ::core::stringify!(Paused),
24827            ::core::stringify!(UndelegatedV2),
24828            ::core::stringify!(ExitEscrowPeriodUpdated),
24829            ::core::stringify!(Withdrawal),
24830            ::core::stringify!(ConsensusKeysUpdated),
24831            ::core::stringify!(ValidatorExitClaimed),
24832            ::core::stringify!(OwnershipTransferred),
24833            ::core::stringify!(WithdrawalClaimed),
24834            ::core::stringify!(Upgraded),
24835            ::core::stringify!(RoleAdminChanged),
24836            ::core::stringify!(CommissionUpdated),
24837            ::core::stringify!(MaxCommissionIncreaseUpdated),
24838            ::core::stringify!(Initialized),
24839            ::core::stringify!(ConsensusKeysUpdatedV2),
24840            ::core::stringify!(Delegated),
24841            ::core::stringify!(RoleRevoked),
24842            ::core::stringify!(ValidatorRegistered),
24843            ::core::stringify!(ValidatorExit),
24844        ];
24845        /// The signatures in the same order as `SELECTORS`.
24846        pub const SIGNATURES: &'static [&'static str] = &[
24847            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24848            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24849            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24850            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
24851            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
24852            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24853            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24854            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
24855            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
24856            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24857            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24858            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
24859            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24860            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
24861            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
24862            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
24863            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
24864            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
24865            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24866            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
24867            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
24868            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
24869            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
24870            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
24871            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
24872            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
24873        ];
24874        /// Returns the signature for the given selector, if known.
24875        #[inline]
24876        pub fn signature_by_selector(
24877            selector: [u8; 32usize],
24878        ) -> ::core::option::Option<&'static str> {
24879            match Self::SELECTORS.binary_search(&selector) {
24880                ::core::result::Result::Ok(idx) => {
24881                    ::core::option::Option::Some(Self::SIGNATURES[idx])
24882                }
24883                ::core::result::Result::Err(_) => ::core::option::Option::None,
24884            }
24885        }
24886        /// Returns the enum variant name for the given selector, if known.
24887        #[inline]
24888        pub fn name_by_selector(
24889            selector: [u8; 32usize],
24890        ) -> ::core::option::Option<&'static str> {
24891            let sig = Self::signature_by_selector(selector)?;
24892            sig.split_once('(').map(|(name, _)| name)
24893        }
24894    }
24895    #[automatically_derived]
24896    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
24897        const NAME: &'static str = "StakeTableV2Events";
24898        const COUNT: usize = 26usize;
24899        fn decode_raw_log(
24900            topics: &[alloy_sol_types::Word],
24901            data: &[u8],
24902        ) -> alloy_sol_types::Result<Self> {
24903            match topics.first().copied() {
24904                Some(
24905                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24906                ) => {
24907                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24908                            topics,
24909                            data,
24910                        )
24911                        .map(Self::CommissionUpdated)
24912                }
24913                Some(
24914                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24915                ) => {
24916                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24917                            topics,
24918                            data,
24919                        )
24920                        .map(Self::ConsensusKeysUpdated)
24921                }
24922                Some(
24923                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24924                ) => {
24925                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24926                            topics,
24927                            data,
24928                        )
24929                        .map(Self::ConsensusKeysUpdatedV2)
24930                }
24931                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24932                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
24933                            topics,
24934                            data,
24935                        )
24936                        .map(Self::Delegated)
24937                }
24938                Some(
24939                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24940                ) => {
24941                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24942                            topics,
24943                            data,
24944                        )
24945                        .map(Self::ExitEscrowPeriodUpdated)
24946                }
24947                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24948                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
24949                            topics,
24950                            data,
24951                        )
24952                        .map(Self::Initialized)
24953                }
24954                Some(
24955                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24956                ) => {
24957                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24958                            topics,
24959                            data,
24960                        )
24961                        .map(Self::MaxCommissionIncreaseUpdated)
24962                }
24963                Some(
24964                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24965                ) => {
24966                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24967                            topics,
24968                            data,
24969                        )
24970                        .map(Self::MetadataUriUpdated)
24971                }
24972                Some(
24973                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24974                ) => {
24975                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24976                            topics,
24977                            data,
24978                        )
24979                        .map(Self::MinCommissionUpdateIntervalUpdated)
24980                }
24981                Some(
24982                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24983                ) => {
24984                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24985                            topics,
24986                            data,
24987                        )
24988                        .map(Self::MinDelegateAmountUpdated)
24989                }
24990                Some(
24991                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24992                ) => {
24993                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
24994                            topics,
24995                            data,
24996                        )
24997                        .map(Self::OwnershipTransferred)
24998                }
24999                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25000                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
25001                        .map(Self::Paused)
25002                }
25003                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25004                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
25005                            topics,
25006                            data,
25007                        )
25008                        .map(Self::RoleAdminChanged)
25009                }
25010                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25011                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
25012                            topics,
25013                            data,
25014                        )
25015                        .map(Self::RoleGranted)
25016                }
25017                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25018                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
25019                            topics,
25020                            data,
25021                        )
25022                        .map(Self::RoleRevoked)
25023                }
25024                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25025                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
25026                            topics,
25027                            data,
25028                        )
25029                        .map(Self::Undelegated)
25030                }
25031                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25032                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
25033                            topics,
25034                            data,
25035                        )
25036                        .map(Self::UndelegatedV2)
25037                }
25038                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25039                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
25040                        .map(Self::Unpaused)
25041                }
25042                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25043                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
25044                        .map(Self::Upgraded)
25045                }
25046                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25047                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
25048                            topics,
25049                            data,
25050                        )
25051                        .map(Self::ValidatorExit)
25052                }
25053                Some(
25054                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25055                ) => {
25056                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
25057                            topics,
25058                            data,
25059                        )
25060                        .map(Self::ValidatorExitClaimed)
25061                }
25062                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25063                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log(
25064                            topics,
25065                            data,
25066                        )
25067                        .map(Self::ValidatorExitV2)
25068                }
25069                Some(
25070                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25071                ) => {
25072                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
25073                            topics,
25074                            data,
25075                        )
25076                        .map(Self::ValidatorRegistered)
25077                }
25078                Some(
25079                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25080                ) => {
25081                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
25082                            topics,
25083                            data,
25084                        )
25085                        .map(Self::ValidatorRegisteredV2)
25086                }
25087                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25088                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
25089                            topics,
25090                            data,
25091                        )
25092                        .map(Self::Withdrawal)
25093                }
25094                Some(
25095                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25096                ) => {
25097                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
25098                            topics,
25099                            data,
25100                        )
25101                        .map(Self::WithdrawalClaimed)
25102                }
25103                _ => {
25104                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
25105                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
25106                        log: alloy_sol_types::private::Box::new(
25107                            alloy_sol_types::private::LogData::new_unchecked(
25108                                topics.to_vec(),
25109                                data.to_vec().into(),
25110                            ),
25111                        ),
25112                    })
25113                }
25114            }
25115        }
25116    }
25117    #[automatically_derived]
25118    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
25119        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
25120            match self {
25121                Self::CommissionUpdated(inner) => {
25122                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25123                }
25124                Self::ConsensusKeysUpdated(inner) => {
25125                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25126                }
25127                Self::ConsensusKeysUpdatedV2(inner) => {
25128                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25129                }
25130                Self::Delegated(inner) => {
25131                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25132                }
25133                Self::ExitEscrowPeriodUpdated(inner) => {
25134                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25135                }
25136                Self::Initialized(inner) => {
25137                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25138                }
25139                Self::MaxCommissionIncreaseUpdated(inner) => {
25140                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25141                }
25142                Self::MetadataUriUpdated(inner) => {
25143                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25144                }
25145                Self::MinCommissionUpdateIntervalUpdated(inner) => {
25146                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25147                }
25148                Self::MinDelegateAmountUpdated(inner) => {
25149                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25150                }
25151                Self::OwnershipTransferred(inner) => {
25152                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25153                }
25154                Self::Paused(inner) => {
25155                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25156                }
25157                Self::RoleAdminChanged(inner) => {
25158                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25159                }
25160                Self::RoleGranted(inner) => {
25161                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25162                }
25163                Self::RoleRevoked(inner) => {
25164                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25165                }
25166                Self::Undelegated(inner) => {
25167                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25168                }
25169                Self::UndelegatedV2(inner) => {
25170                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25171                }
25172                Self::Unpaused(inner) => {
25173                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25174                }
25175                Self::Upgraded(inner) => {
25176                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25177                }
25178                Self::ValidatorExit(inner) => {
25179                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25180                }
25181                Self::ValidatorExitClaimed(inner) => {
25182                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25183                }
25184                Self::ValidatorExitV2(inner) => {
25185                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25186                }
25187                Self::ValidatorRegistered(inner) => {
25188                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25189                }
25190                Self::ValidatorRegisteredV2(inner) => {
25191                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25192                }
25193                Self::Withdrawal(inner) => {
25194                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25195                }
25196                Self::WithdrawalClaimed(inner) => {
25197                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25198                }
25199            }
25200        }
25201        fn into_log_data(self) -> alloy_sol_types::private::LogData {
25202            match self {
25203                Self::CommissionUpdated(inner) => {
25204                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25205                }
25206                Self::ConsensusKeysUpdated(inner) => {
25207                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25208                }
25209                Self::ConsensusKeysUpdatedV2(inner) => {
25210                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25211                }
25212                Self::Delegated(inner) => {
25213                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25214                }
25215                Self::ExitEscrowPeriodUpdated(inner) => {
25216                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25217                }
25218                Self::Initialized(inner) => {
25219                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25220                }
25221                Self::MaxCommissionIncreaseUpdated(inner) => {
25222                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25223                }
25224                Self::MetadataUriUpdated(inner) => {
25225                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25226                }
25227                Self::MinCommissionUpdateIntervalUpdated(inner) => {
25228                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25229                }
25230                Self::MinDelegateAmountUpdated(inner) => {
25231                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25232                }
25233                Self::OwnershipTransferred(inner) => {
25234                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25235                }
25236                Self::Paused(inner) => {
25237                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25238                }
25239                Self::RoleAdminChanged(inner) => {
25240                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25241                }
25242                Self::RoleGranted(inner) => {
25243                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25244                }
25245                Self::RoleRevoked(inner) => {
25246                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25247                }
25248                Self::Undelegated(inner) => {
25249                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25250                }
25251                Self::UndelegatedV2(inner) => {
25252                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25253                }
25254                Self::Unpaused(inner) => {
25255                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25256                }
25257                Self::Upgraded(inner) => {
25258                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25259                }
25260                Self::ValidatorExit(inner) => {
25261                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25262                }
25263                Self::ValidatorExitClaimed(inner) => {
25264                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25265                }
25266                Self::ValidatorExitV2(inner) => {
25267                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25268                }
25269                Self::ValidatorRegistered(inner) => {
25270                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25271                }
25272                Self::ValidatorRegisteredV2(inner) => {
25273                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25274                }
25275                Self::Withdrawal(inner) => {
25276                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25277                }
25278                Self::WithdrawalClaimed(inner) => {
25279                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25280                }
25281            }
25282        }
25283    }
25284    use alloy::contract as alloy_contract;
25285    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
25286
25287See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
25288    #[inline]
25289    pub const fn new<
25290        P: alloy_contract::private::Provider<N>,
25291        N: alloy_contract::private::Network,
25292    >(
25293        address: alloy_sol_types::private::Address,
25294        __provider: P,
25295    ) -> StakeTableV2Instance<P, N> {
25296        StakeTableV2Instance::<P, N>::new(address, __provider)
25297    }
25298    /**Deploys this contract using the given `provider` and constructor arguments, if any.
25299
25300Returns a new instance of the contract, if the deployment was successful.
25301
25302For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
25303    #[inline]
25304    pub fn deploy<
25305        P: alloy_contract::private::Provider<N>,
25306        N: alloy_contract::private::Network,
25307    >(
25308        __provider: P,
25309    ) -> impl ::core::future::Future<
25310        Output = alloy_contract::Result<StakeTableV2Instance<P, N>>,
25311    > {
25312        StakeTableV2Instance::<P, N>::deploy(__provider)
25313    }
25314    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
25315and constructor arguments, if any.
25316
25317This is a simple wrapper around creating a `RawCallBuilder` with the data set to
25318the bytecode concatenated with the constructor's ABI-encoded arguments.*/
25319    #[inline]
25320    pub fn deploy_builder<
25321        P: alloy_contract::private::Provider<N>,
25322        N: alloy_contract::private::Network,
25323    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
25324        StakeTableV2Instance::<P, N>::deploy_builder(__provider)
25325    }
25326    /**A [`StakeTableV2`](self) instance.
25327
25328Contains type-safe methods for interacting with an on-chain instance of the
25329[`StakeTableV2`](self) contract located at a given `address`, using a given
25330provider `P`.
25331
25332If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
25333documentation on how to provide it), the `deploy` and `deploy_builder` methods can
25334be used to deploy a new instance of the contract.
25335
25336See the [module-level documentation](self) for all the available methods.*/
25337    #[derive(Clone)]
25338    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
25339        address: alloy_sol_types::private::Address,
25340        provider: P,
25341        _network: ::core::marker::PhantomData<N>,
25342    }
25343    #[automatically_derived]
25344    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
25345        #[inline]
25346        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
25347            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
25348        }
25349    }
25350    /// Instantiation and getters/setters.
25351    impl<
25352        P: alloy_contract::private::Provider<N>,
25353        N: alloy_contract::private::Network,
25354    > StakeTableV2Instance<P, N> {
25355        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
25356
25357See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
25358        #[inline]
25359        pub const fn new(
25360            address: alloy_sol_types::private::Address,
25361            __provider: P,
25362        ) -> Self {
25363            Self {
25364                address,
25365                provider: __provider,
25366                _network: ::core::marker::PhantomData,
25367            }
25368        }
25369        /**Deploys this contract using the given `provider` and constructor arguments, if any.
25370
25371Returns a new instance of the contract, if the deployment was successful.
25372
25373For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
25374        #[inline]
25375        pub async fn deploy(
25376            __provider: P,
25377        ) -> alloy_contract::Result<StakeTableV2Instance<P, N>> {
25378            let call_builder = Self::deploy_builder(__provider);
25379            let contract_address = call_builder.deploy().await?;
25380            Ok(Self::new(contract_address, call_builder.provider))
25381        }
25382        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
25383and constructor arguments, if any.
25384
25385This is a simple wrapper around creating a `RawCallBuilder` with the data set to
25386the bytecode concatenated with the constructor's ABI-encoded arguments.*/
25387        #[inline]
25388        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
25389            alloy_contract::RawCallBuilder::new_raw_deploy(
25390                __provider,
25391                ::core::clone::Clone::clone(&BYTECODE),
25392            )
25393        }
25394        /// Returns a reference to the address.
25395        #[inline]
25396        pub const fn address(&self) -> &alloy_sol_types::private::Address {
25397            &self.address
25398        }
25399        /// Sets the address.
25400        #[inline]
25401        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
25402            self.address = address;
25403        }
25404        /// Sets the address and returns `self`.
25405        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
25406            self.set_address(address);
25407            self
25408        }
25409        /// Returns a reference to the provider.
25410        #[inline]
25411        pub const fn provider(&self) -> &P {
25412            &self.provider
25413        }
25414    }
25415    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
25416        /// Clones the provider and returns a new instance with the cloned provider.
25417        #[inline]
25418        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
25419            StakeTableV2Instance {
25420                address: self.address,
25421                provider: ::core::clone::Clone::clone(&self.provider),
25422                _network: ::core::marker::PhantomData,
25423            }
25424        }
25425    }
25426    /// Function calls.
25427    impl<
25428        P: alloy_contract::private::Provider<N>,
25429        N: alloy_contract::private::Network,
25430    > StakeTableV2Instance<P, N> {
25431        /// Creates a new call builder using this contract instance's provider and address.
25432        ///
25433        /// Note that the call can be any function call, not just those defined in this
25434        /// contract. Prefer using the other methods for building type-safe contract calls.
25435        pub fn call_builder<C: alloy_sol_types::SolCall>(
25436            &self,
25437            call: &C,
25438        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
25439            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
25440        }
25441        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
25442        pub fn DEFAULT_ADMIN_ROLE(
25443            &self,
25444        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
25445            self.call_builder(&DEFAULT_ADMIN_ROLECall)
25446        }
25447        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
25448        pub fn MAX_COMMISSION_BPS(
25449            &self,
25450        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
25451            self.call_builder(&MAX_COMMISSION_BPSCall)
25452        }
25453        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
25454        pub fn MAX_EXIT_ESCROW_PERIOD(
25455            &self,
25456        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
25457            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
25458        }
25459        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
25460        pub fn MAX_METADATA_URI_LENGTH(
25461            &self,
25462        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
25463            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
25464        }
25465        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
25466        pub fn MIN_EXIT_ESCROW_PERIOD(
25467            &self,
25468        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
25469            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
25470        }
25471        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
25472        pub fn PAUSER_ROLE(
25473            &self,
25474        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
25475            self.call_builder(&PAUSER_ROLECall)
25476        }
25477        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
25478        pub fn UPGRADE_INTERFACE_VERSION(
25479            &self,
25480        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
25481            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
25482        }
25483        ///Creates a new call builder for the [`_hashBlsKey`] function.
25484        pub fn _hashBlsKey(
25485            &self,
25486            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25487        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
25488            self.call_builder(&_hashBlsKeyCall { blsVK })
25489        }
25490        ///Creates a new call builder for the [`activeStake`] function.
25491        pub fn activeStake(
25492            &self,
25493        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
25494            self.call_builder(&activeStakeCall)
25495        }
25496        ///Creates a new call builder for the [`blsKeys`] function.
25497        pub fn blsKeys(
25498            &self,
25499            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
25500        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
25501            self.call_builder(&blsKeysCall { blsKeyHash })
25502        }
25503        ///Creates a new call builder for the [`claimValidatorExit`] function.
25504        pub fn claimValidatorExit(
25505            &self,
25506            validator: alloy::sol_types::private::Address,
25507        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
25508            self.call_builder(
25509                &claimValidatorExitCall {
25510                    validator,
25511                },
25512            )
25513        }
25514        ///Creates a new call builder for the [`claimWithdrawal`] function.
25515        pub fn claimWithdrawal(
25516            &self,
25517            validator: alloy::sol_types::private::Address,
25518        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
25519            self.call_builder(&claimWithdrawalCall { validator })
25520        }
25521        ///Creates a new call builder for the [`commissionTracking`] function.
25522        pub fn commissionTracking(
25523            &self,
25524            validator: alloy::sol_types::private::Address,
25525        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
25526            self.call_builder(
25527                &commissionTrackingCall {
25528                    validator,
25529                },
25530            )
25531        }
25532        ///Creates a new call builder for the [`delegate`] function.
25533        pub fn delegate(
25534            &self,
25535            validator: alloy::sol_types::private::Address,
25536            amount: alloy::sol_types::private::primitives::aliases::U256,
25537        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
25538            self.call_builder(&delegateCall { validator, amount })
25539        }
25540        ///Creates a new call builder for the [`delegations`] function.
25541        pub fn delegations(
25542            &self,
25543            validator: alloy::sol_types::private::Address,
25544            delegator: alloy::sol_types::private::Address,
25545        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
25546            self.call_builder(
25547                &delegationsCall {
25548                    validator,
25549                    delegator,
25550                },
25551            )
25552        }
25553        ///Creates a new call builder for the [`deregisterValidator`] function.
25554        pub fn deregisterValidator(
25555            &self,
25556        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
25557            self.call_builder(&deregisterValidatorCall)
25558        }
25559        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
25560        pub fn exitEscrowPeriod(
25561            &self,
25562        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
25563            self.call_builder(&exitEscrowPeriodCall)
25564        }
25565        ///Creates a new call builder for the [`getRoleAdmin`] function.
25566        pub fn getRoleAdmin(
25567            &self,
25568            role: alloy::sol_types::private::FixedBytes<32>,
25569        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
25570            self.call_builder(&getRoleAdminCall { role })
25571        }
25572        ///Creates a new call builder for the [`getUndelegation`] function.
25573        pub fn getUndelegation(
25574            &self,
25575            validator: alloy::sol_types::private::Address,
25576            delegator: alloy::sol_types::private::Address,
25577        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
25578            self.call_builder(
25579                &getUndelegationCall {
25580                    validator,
25581                    delegator,
25582                },
25583            )
25584        }
25585        ///Creates a new call builder for the [`getVersion`] function.
25586        pub fn getVersion(
25587            &self,
25588        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
25589            self.call_builder(&getVersionCall)
25590        }
25591        ///Creates a new call builder for the [`grantRole`] function.
25592        pub fn grantRole(
25593            &self,
25594            role: alloy::sol_types::private::FixedBytes<32>,
25595            account: alloy::sol_types::private::Address,
25596        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
25597            self.call_builder(&grantRoleCall { role, account })
25598        }
25599        ///Creates a new call builder for the [`hasRole`] function.
25600        pub fn hasRole(
25601            &self,
25602            role: alloy::sol_types::private::FixedBytes<32>,
25603            account: alloy::sol_types::private::Address,
25604        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
25605            self.call_builder(&hasRoleCall { role, account })
25606        }
25607        ///Creates a new call builder for the [`initialize`] function.
25608        pub fn initialize(
25609            &self,
25610            _tokenAddress: alloy::sol_types::private::Address,
25611            _lightClientAddress: alloy::sol_types::private::Address,
25612            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
25613            _timelock: alloy::sol_types::private::Address,
25614        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
25615            self.call_builder(
25616                &initializeCall {
25617                    _tokenAddress,
25618                    _lightClientAddress,
25619                    _exitEscrowPeriod,
25620                    _timelock,
25621                },
25622            )
25623        }
25624        ///Creates a new call builder for the [`initializeV2`] function.
25625        pub fn initializeV2(
25626            &self,
25627            pauser: alloy::sol_types::private::Address,
25628            admin: alloy::sol_types::private::Address,
25629            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
25630            initialCommissions: alloy::sol_types::private::Vec<
25631                <InitialCommission as alloy::sol_types::SolType>::RustType,
25632            >,
25633        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
25634            self.call_builder(
25635                &initializeV2Call {
25636                    pauser,
25637                    admin,
25638                    initialActiveStake,
25639                    initialCommissions,
25640                },
25641            )
25642        }
25643        ///Creates a new call builder for the [`initializedAtBlock`] function.
25644        pub fn initializedAtBlock(
25645            &self,
25646        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
25647            self.call_builder(&initializedAtBlockCall)
25648        }
25649        ///Creates a new call builder for the [`lightClient`] function.
25650        pub fn lightClient(
25651            &self,
25652        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
25653            self.call_builder(&lightClientCall)
25654        }
25655        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
25656        pub fn maxCommissionIncrease(
25657            &self,
25658        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
25659            self.call_builder(&maxCommissionIncreaseCall)
25660        }
25661        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
25662        pub fn minCommissionIncreaseInterval(
25663            &self,
25664        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
25665            self.call_builder(&minCommissionIncreaseIntervalCall)
25666        }
25667        ///Creates a new call builder for the [`minDelegateAmount`] function.
25668        pub fn minDelegateAmount(
25669            &self,
25670        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
25671            self.call_builder(&minDelegateAmountCall)
25672        }
25673        ///Creates a new call builder for the [`owner`] function.
25674        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
25675            self.call_builder(&ownerCall)
25676        }
25677        ///Creates a new call builder for the [`pause`] function.
25678        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
25679            self.call_builder(&pauseCall)
25680        }
25681        ///Creates a new call builder for the [`paused`] function.
25682        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
25683            self.call_builder(&pausedCall)
25684        }
25685        ///Creates a new call builder for the [`proxiableUUID`] function.
25686        pub fn proxiableUUID(
25687            &self,
25688        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
25689            self.call_builder(&proxiableUUIDCall)
25690        }
25691        ///Creates a new call builder for the [`registerValidator`] function.
25692        pub fn registerValidator(
25693            &self,
25694            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25695            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25696            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25697            _3: u16,
25698        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
25699            self.call_builder(
25700                &registerValidatorCall {
25701                    _0,
25702                    _1,
25703                    _2,
25704                    _3,
25705                },
25706            )
25707        }
25708        ///Creates a new call builder for the [`registerValidatorV2`] function.
25709        pub fn registerValidatorV2(
25710            &self,
25711            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25712            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25713            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25714            schnorrSig: alloy::sol_types::private::Bytes,
25715            commission: u16,
25716            metadataUri: alloy::sol_types::private::String,
25717        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
25718            self.call_builder(
25719                &registerValidatorV2Call {
25720                    blsVK,
25721                    schnorrVK,
25722                    blsSig,
25723                    schnorrSig,
25724                    commission,
25725                    metadataUri,
25726                },
25727            )
25728        }
25729        ///Creates a new call builder for the [`renounceOwnership`] function.
25730        pub fn renounceOwnership(
25731            &self,
25732        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
25733            self.call_builder(&renounceOwnershipCall)
25734        }
25735        ///Creates a new call builder for the [`renounceRole`] function.
25736        pub fn renounceRole(
25737            &self,
25738            role: alloy::sol_types::private::FixedBytes<32>,
25739            callerConfirmation: alloy::sol_types::private::Address,
25740        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
25741            self.call_builder(
25742                &renounceRoleCall {
25743                    role,
25744                    callerConfirmation,
25745                },
25746            )
25747        }
25748        ///Creates a new call builder for the [`revokeRole`] function.
25749        pub fn revokeRole(
25750            &self,
25751            role: alloy::sol_types::private::FixedBytes<32>,
25752            account: alloy::sol_types::private::Address,
25753        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
25754            self.call_builder(&revokeRoleCall { role, account })
25755        }
25756        ///Creates a new call builder for the [`schnorrKeys`] function.
25757        pub fn schnorrKeys(
25758            &self,
25759            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
25760        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
25761            self.call_builder(&schnorrKeysCall { schnorrKey })
25762        }
25763        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
25764        pub fn setMaxCommissionIncrease(
25765            &self,
25766            newMaxIncrease: u16,
25767        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
25768            self.call_builder(
25769                &setMaxCommissionIncreaseCall {
25770                    newMaxIncrease,
25771                },
25772            )
25773        }
25774        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
25775        pub fn setMinCommissionUpdateInterval(
25776            &self,
25777            newInterval: alloy::sol_types::private::primitives::aliases::U256,
25778        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
25779            self.call_builder(
25780                &setMinCommissionUpdateIntervalCall {
25781                    newInterval,
25782                },
25783            )
25784        }
25785        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
25786        pub fn setMinDelegateAmount(
25787            &self,
25788            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
25789        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
25790            self.call_builder(
25791                &setMinDelegateAmountCall {
25792                    newMinDelegateAmount,
25793                },
25794            )
25795        }
25796        ///Creates a new call builder for the [`supportsInterface`] function.
25797        pub fn supportsInterface(
25798            &self,
25799            interfaceId: alloy::sol_types::private::FixedBytes<4>,
25800        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
25801            self.call_builder(
25802                &supportsInterfaceCall {
25803                    interfaceId,
25804                },
25805            )
25806        }
25807        ///Creates a new call builder for the [`token`] function.
25808        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
25809            self.call_builder(&tokenCall)
25810        }
25811        ///Creates a new call builder for the [`transferOwnership`] function.
25812        pub fn transferOwnership(
25813            &self,
25814            newOwner: alloy::sol_types::private::Address,
25815        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
25816            self.call_builder(&transferOwnershipCall { newOwner })
25817        }
25818        ///Creates a new call builder for the [`undelegate`] function.
25819        pub fn undelegate(
25820            &self,
25821            validator: alloy::sol_types::private::Address,
25822            amount: alloy::sol_types::private::primitives::aliases::U256,
25823        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
25824            self.call_builder(
25825                &undelegateCall {
25826                    validator,
25827                    amount,
25828                },
25829            )
25830        }
25831        ///Creates a new call builder for the [`undelegations`] function.
25832        pub fn undelegations(
25833            &self,
25834            validator: alloy::sol_types::private::Address,
25835            delegator: alloy::sol_types::private::Address,
25836        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
25837            self.call_builder(
25838                &undelegationsCall {
25839                    validator,
25840                    delegator,
25841                },
25842            )
25843        }
25844        ///Creates a new call builder for the [`unpause`] function.
25845        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
25846            self.call_builder(&unpauseCall)
25847        }
25848        ///Creates a new call builder for the [`updateCommission`] function.
25849        pub fn updateCommission(
25850            &self,
25851            newCommission: u16,
25852        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
25853            self.call_builder(
25854                &updateCommissionCall {
25855                    newCommission,
25856                },
25857            )
25858        }
25859        ///Creates a new call builder for the [`updateConsensusKeys`] function.
25860        pub fn updateConsensusKeys(
25861            &self,
25862            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25863            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25864            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25865        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
25866            self.call_builder(
25867                &updateConsensusKeysCall {
25868                    _0,
25869                    _1,
25870                    _2,
25871                },
25872            )
25873        }
25874        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
25875        pub fn updateConsensusKeysV2(
25876            &self,
25877            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25878            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25879            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25880            schnorrSig: alloy::sol_types::private::Bytes,
25881        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
25882            self.call_builder(
25883                &updateConsensusKeysV2Call {
25884                    blsVK,
25885                    schnorrVK,
25886                    blsSig,
25887                    schnorrSig,
25888                },
25889            )
25890        }
25891        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
25892        pub fn updateExitEscrowPeriod(
25893            &self,
25894            newExitEscrowPeriod: u64,
25895        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
25896            self.call_builder(
25897                &updateExitEscrowPeriodCall {
25898                    newExitEscrowPeriod,
25899                },
25900            )
25901        }
25902        ///Creates a new call builder for the [`updateMetadataUri`] function.
25903        pub fn updateMetadataUri(
25904            &self,
25905            metadataUri: alloy::sol_types::private::String,
25906        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
25907            self.call_builder(
25908                &updateMetadataUriCall {
25909                    metadataUri,
25910                },
25911            )
25912        }
25913        ///Creates a new call builder for the [`upgradeToAndCall`] function.
25914        pub fn upgradeToAndCall(
25915            &self,
25916            newImplementation: alloy::sol_types::private::Address,
25917            data: alloy::sol_types::private::Bytes,
25918        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
25919            self.call_builder(
25920                &upgradeToAndCallCall {
25921                    newImplementation,
25922                    data,
25923                },
25924            )
25925        }
25926        ///Creates a new call builder for the [`validateMetadataUri`] function.
25927        pub fn validateMetadataUri(
25928            &self,
25929            metadataUri: alloy::sol_types::private::String,
25930        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
25931            self.call_builder(
25932                &validateMetadataUriCall {
25933                    metadataUri,
25934                },
25935            )
25936        }
25937        ///Creates a new call builder for the [`validatorExits`] function.
25938        pub fn validatorExits(
25939            &self,
25940            validator: alloy::sol_types::private::Address,
25941        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
25942            self.call_builder(&validatorExitsCall { validator })
25943        }
25944        ///Creates a new call builder for the [`validators`] function.
25945        pub fn validators(
25946            &self,
25947            account: alloy::sol_types::private::Address,
25948        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
25949            self.call_builder(&validatorsCall { account })
25950        }
25951    }
25952    /// Event filters.
25953    impl<
25954        P: alloy_contract::private::Provider<N>,
25955        N: alloy_contract::private::Network,
25956    > StakeTableV2Instance<P, N> {
25957        /// Creates a new event filter using this contract instance's provider and address.
25958        ///
25959        /// Note that the type can be any event, not just those defined in this contract.
25960        /// Prefer using the other methods for building type-safe event filters.
25961        pub fn event_filter<E: alloy_sol_types::SolEvent>(
25962            &self,
25963        ) -> alloy_contract::Event<&P, E, N> {
25964            alloy_contract::Event::new_sol(&self.provider, &self.address)
25965        }
25966        ///Creates a new event filter for the [`CommissionUpdated`] event.
25967        pub fn CommissionUpdated_filter(
25968            &self,
25969        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
25970            self.event_filter::<CommissionUpdated>()
25971        }
25972        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
25973        pub fn ConsensusKeysUpdated_filter(
25974            &self,
25975        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
25976            self.event_filter::<ConsensusKeysUpdated>()
25977        }
25978        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
25979        pub fn ConsensusKeysUpdatedV2_filter(
25980            &self,
25981        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
25982            self.event_filter::<ConsensusKeysUpdatedV2>()
25983        }
25984        ///Creates a new event filter for the [`Delegated`] event.
25985        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
25986            self.event_filter::<Delegated>()
25987        }
25988        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
25989        pub fn ExitEscrowPeriodUpdated_filter(
25990            &self,
25991        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
25992            self.event_filter::<ExitEscrowPeriodUpdated>()
25993        }
25994        ///Creates a new event filter for the [`Initialized`] event.
25995        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
25996            self.event_filter::<Initialized>()
25997        }
25998        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
25999        pub fn MaxCommissionIncreaseUpdated_filter(
26000            &self,
26001        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
26002            self.event_filter::<MaxCommissionIncreaseUpdated>()
26003        }
26004        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
26005        pub fn MetadataUriUpdated_filter(
26006            &self,
26007        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
26008            self.event_filter::<MetadataUriUpdated>()
26009        }
26010        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
26011        pub fn MinCommissionUpdateIntervalUpdated_filter(
26012            &self,
26013        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
26014            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
26015        }
26016        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
26017        pub fn MinDelegateAmountUpdated_filter(
26018            &self,
26019        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
26020            self.event_filter::<MinDelegateAmountUpdated>()
26021        }
26022        ///Creates a new event filter for the [`OwnershipTransferred`] event.
26023        pub fn OwnershipTransferred_filter(
26024            &self,
26025        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
26026            self.event_filter::<OwnershipTransferred>()
26027        }
26028        ///Creates a new event filter for the [`Paused`] event.
26029        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
26030            self.event_filter::<Paused>()
26031        }
26032        ///Creates a new event filter for the [`RoleAdminChanged`] event.
26033        pub fn RoleAdminChanged_filter(
26034            &self,
26035        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
26036            self.event_filter::<RoleAdminChanged>()
26037        }
26038        ///Creates a new event filter for the [`RoleGranted`] event.
26039        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
26040            self.event_filter::<RoleGranted>()
26041        }
26042        ///Creates a new event filter for the [`RoleRevoked`] event.
26043        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
26044            self.event_filter::<RoleRevoked>()
26045        }
26046        ///Creates a new event filter for the [`Undelegated`] event.
26047        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
26048            self.event_filter::<Undelegated>()
26049        }
26050        ///Creates a new event filter for the [`UndelegatedV2`] event.
26051        pub fn UndelegatedV2_filter(
26052            &self,
26053        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
26054            self.event_filter::<UndelegatedV2>()
26055        }
26056        ///Creates a new event filter for the [`Unpaused`] event.
26057        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
26058            self.event_filter::<Unpaused>()
26059        }
26060        ///Creates a new event filter for the [`Upgraded`] event.
26061        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
26062            self.event_filter::<Upgraded>()
26063        }
26064        ///Creates a new event filter for the [`ValidatorExit`] event.
26065        pub fn ValidatorExit_filter(
26066            &self,
26067        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
26068            self.event_filter::<ValidatorExit>()
26069        }
26070        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
26071        pub fn ValidatorExitClaimed_filter(
26072            &self,
26073        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
26074            self.event_filter::<ValidatorExitClaimed>()
26075        }
26076        ///Creates a new event filter for the [`ValidatorExitV2`] event.
26077        pub fn ValidatorExitV2_filter(
26078            &self,
26079        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
26080            self.event_filter::<ValidatorExitV2>()
26081        }
26082        ///Creates a new event filter for the [`ValidatorRegistered`] event.
26083        pub fn ValidatorRegistered_filter(
26084            &self,
26085        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
26086            self.event_filter::<ValidatorRegistered>()
26087        }
26088        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
26089        pub fn ValidatorRegisteredV2_filter(
26090            &self,
26091        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
26092            self.event_filter::<ValidatorRegisteredV2>()
26093        }
26094        ///Creates a new event filter for the [`Withdrawal`] event.
26095        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
26096            self.event_filter::<Withdrawal>()
26097        }
26098        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
26099        pub fn WithdrawalClaimed_filter(
26100            &self,
26101        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
26102            self.event_filter::<WithdrawalClaimed>()
26103        }
26104    }
26105}