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        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    /**```solidity
169struct G1Point { BaseField x; BaseField y; }
170```*/
171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
172    #[derive(Clone)]
173    pub struct G1Point {
174        #[allow(missing_docs)]
175        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
176        #[allow(missing_docs)]
177        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
178    }
179    #[allow(
180        non_camel_case_types,
181        non_snake_case,
182        clippy::pub_underscore_fields,
183        clippy::style
184    )]
185    const _: () = {
186        use alloy::sol_types as alloy_sol_types;
187        #[doc(hidden)]
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        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
395        #[doc(hidden)]
396        type UnderlyingRustTuple<'a> = (
397            <BaseField as alloy::sol_types::SolType>::RustType,
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        );
402        #[cfg(test)]
403        #[allow(dead_code, unreachable_patterns)]
404        fn _type_assertion(
405            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
406        ) {
407            match _t {
408                alloy_sol_types::private::AssertTypeEq::<
409                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
410                >(_) => {}
411            }
412        }
413        #[automatically_derived]
414        #[doc(hidden)]
415        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
416            fn from(value: G2Point) -> Self {
417                (value.x0, value.x1, value.y0, value.y1)
418            }
419        }
420        #[automatically_derived]
421        #[doc(hidden)]
422        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
423            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
424                Self {
425                    x0: tuple.0,
426                    x1: tuple.1,
427                    y0: tuple.2,
428                    y1: tuple.3,
429                }
430            }
431        }
432        #[automatically_derived]
433        impl alloy_sol_types::SolValue for G2Point {
434            type SolType = Self;
435        }
436        #[automatically_derived]
437        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
438            #[inline]
439            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
440                (
441                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
445                )
446            }
447            #[inline]
448            fn stv_abi_encoded_size(&self) -> usize {
449                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
450                    return size;
451                }
452                let tuple = <UnderlyingRustTuple<
453                    '_,
454                > as ::core::convert::From<Self>>::from(self.clone());
455                <UnderlyingSolTuple<
456                    '_,
457                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
458            }
459            #[inline]
460            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
461                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
462            }
463            #[inline]
464            fn stv_abi_encode_packed_to(
465                &self,
466                out: &mut alloy_sol_types::private::Vec<u8>,
467            ) {
468                let tuple = <UnderlyingRustTuple<
469                    '_,
470                > as ::core::convert::From<Self>>::from(self.clone());
471                <UnderlyingSolTuple<
472                    '_,
473                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
474            }
475            #[inline]
476            fn stv_abi_packed_encoded_size(&self) -> usize {
477                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
478                    return size;
479                }
480                let tuple = <UnderlyingRustTuple<
481                    '_,
482                > as ::core::convert::From<Self>>::from(self.clone());
483                <UnderlyingSolTuple<
484                    '_,
485                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
486            }
487        }
488        #[automatically_derived]
489        impl alloy_sol_types::SolType for G2Point {
490            type RustType = Self;
491            type Token<'a> = <UnderlyingSolTuple<
492                'a,
493            > as alloy_sol_types::SolType>::Token<'a>;
494            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
495            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
496                '_,
497            > as alloy_sol_types::SolType>::ENCODED_SIZE;
498            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
499                '_,
500            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
501            #[inline]
502            fn valid_token(token: &Self::Token<'_>) -> bool {
503                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
504            }
505            #[inline]
506            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
507                let tuple = <UnderlyingSolTuple<
508                    '_,
509                > as alloy_sol_types::SolType>::detokenize(token);
510                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
511            }
512        }
513        #[automatically_derived]
514        impl alloy_sol_types::SolStruct for G2Point {
515            const NAME: &'static str = "G2Point";
516            #[inline]
517            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
518                alloy_sol_types::private::Cow::Borrowed(
519                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
520                )
521            }
522            #[inline]
523            fn eip712_components() -> alloy_sol_types::private::Vec<
524                alloy_sol_types::private::Cow<'static, str>,
525            > {
526                alloy_sol_types::private::Vec::new()
527            }
528            #[inline]
529            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
530                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
531            }
532            #[inline]
533            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
534                [
535                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
536                        .0,
537                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
538                        .0,
539                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
540                        .0,
541                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
542                ]
543                    .concat()
544            }
545        }
546        #[automatically_derived]
547        impl alloy_sol_types::EventTopic for G2Point {
548            #[inline]
549            fn topic_preimage_length(rust: &Self::RustType) -> usize {
550                0usize
551                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
552                        &rust.x0,
553                    )
554                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
555                        &rust.x1,
556                    )
557                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
558                        &rust.y0,
559                    )
560                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
561                        &rust.y1,
562                    )
563            }
564            #[inline]
565            fn encode_topic_preimage(
566                rust: &Self::RustType,
567                out: &mut alloy_sol_types::private::Vec<u8>,
568            ) {
569                out.reserve(
570                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
571                );
572                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
573                    &rust.x0,
574                    out,
575                );
576                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
577                    &rust.x1,
578                    out,
579                );
580                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
581                    &rust.y0,
582                    out,
583                );
584                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
585                    &rust.y1,
586                    out,
587                );
588            }
589            #[inline]
590            fn encode_topic(
591                rust: &Self::RustType,
592            ) -> alloy_sol_types::abi::token::WordToken {
593                let mut out = alloy_sol_types::private::Vec::new();
594                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
595                    rust,
596                    &mut out,
597                );
598                alloy_sol_types::abi::token::WordToken(
599                    alloy_sol_types::private::keccak256(out),
600                )
601            }
602        }
603    };
604    use alloy::contract as alloy_contract;
605    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
606
607See the [wrapper's documentation](`BN254Instance`) for more details.*/
608    #[inline]
609    pub const fn new<
610        P: alloy_contract::private::Provider<N>,
611        N: alloy_contract::private::Network,
612    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
613        BN254Instance::<P, N>::new(address, provider)
614    }
615    /**A [`BN254`](self) instance.
616
617Contains type-safe methods for interacting with an on-chain instance of the
618[`BN254`](self) contract located at a given `address`, using a given
619provider `P`.
620
621If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
622documentation on how to provide it), the `deploy` and `deploy_builder` methods can
623be used to deploy a new instance of the contract.
624
625See the [module-level documentation](self) for all the available methods.*/
626    #[derive(Clone)]
627    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
628        address: alloy_sol_types::private::Address,
629        provider: P,
630        _network: ::core::marker::PhantomData<N>,
631    }
632    #[automatically_derived]
633    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
634        #[inline]
635        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
636            f.debug_tuple("BN254Instance").field(&self.address).finish()
637        }
638    }
639    /// Instantiation and getters/setters.
640    #[automatically_derived]
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,
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    #[automatically_derived]
693    impl<
694        P: alloy_contract::private::Provider<N>,
695        N: alloy_contract::private::Network,
696    > BN254Instance<P, N> {
697        /// Creates a new call builder using this contract instance's provider and address.
698        ///
699        /// Note that the call can be any function call, not just those defined in this
700        /// contract. Prefer using the other methods for building type-safe contract calls.
701        pub fn call_builder<C: alloy_sol_types::SolCall>(
702            &self,
703            call: &C,
704        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
705            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
706        }
707    }
708    /// Event filters.
709    #[automatically_derived]
710    impl<
711        P: alloy_contract::private::Provider<N>,
712        N: alloy_contract::private::Network,
713    > BN254Instance<P, N> {
714        /// Creates a new event filter using this contract instance's provider and address.
715        ///
716        /// Note that the type can be any event, not just those defined in this contract.
717        /// Prefer using the other methods for building type-safe event filters.
718        pub fn event_filter<E: alloy_sol_types::SolEvent>(
719            &self,
720        ) -> alloy_contract::Event<&P, E, N> {
721            alloy_contract::Event::new_sol(&self.provider, &self.address)
722        }
723    }
724}
725///Module containing a contract's types and functions.
726/**
727
728```solidity
729library EdOnBN254 {
730    struct EdOnBN254Point { uint256 x; uint256 y; }
731}
732```*/
733#[allow(
734    non_camel_case_types,
735    non_snake_case,
736    clippy::pub_underscore_fields,
737    clippy::style,
738    clippy::empty_structs_with_brackets
739)]
740pub mod EdOnBN254 {
741    use super::*;
742    use alloy::sol_types as alloy_sol_types;
743    #[derive(serde::Serialize, serde::Deserialize)]
744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
745    /**```solidity
746struct EdOnBN254Point { uint256 x; uint256 y; }
747```*/
748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
749    #[derive(Clone)]
750    pub struct EdOnBN254Point {
751        #[allow(missing_docs)]
752        pub x: alloy::sol_types::private::primitives::aliases::U256,
753        #[allow(missing_docs)]
754        pub y: alloy::sol_types::private::primitives::aliases::U256,
755    }
756    #[allow(
757        non_camel_case_types,
758        non_snake_case,
759        clippy::pub_underscore_fields,
760        clippy::style
761    )]
762    const _: () = {
763        use alloy::sol_types as alloy_sol_types;
764        #[doc(hidden)]
765        type UnderlyingSolTuple<'a> = (
766            alloy::sol_types::sol_data::Uint<256>,
767            alloy::sol_types::sol_data::Uint<256>,
768        );
769        #[doc(hidden)]
770        type UnderlyingRustTuple<'a> = (
771            alloy::sol_types::private::primitives::aliases::U256,
772            alloy::sol_types::private::primitives::aliases::U256,
773        );
774        #[cfg(test)]
775        #[allow(dead_code, unreachable_patterns)]
776        fn _type_assertion(
777            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
778        ) {
779            match _t {
780                alloy_sol_types::private::AssertTypeEq::<
781                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
782                >(_) => {}
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
788            fn from(value: EdOnBN254Point) -> Self {
789                (value.x, value.y)
790            }
791        }
792        #[automatically_derived]
793        #[doc(hidden)]
794        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
795            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
796                Self { x: tuple.0, y: tuple.1 }
797            }
798        }
799        #[automatically_derived]
800        impl alloy_sol_types::SolValue for EdOnBN254Point {
801            type SolType = Self;
802        }
803        #[automatically_derived]
804        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
805            #[inline]
806            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
807                (
808                    <alloy::sol_types::sol_data::Uint<
809                        256,
810                    > as alloy_sol_types::SolType>::tokenize(&self.x),
811                    <alloy::sol_types::sol_data::Uint<
812                        256,
813                    > as alloy_sol_types::SolType>::tokenize(&self.y),
814                )
815            }
816            #[inline]
817            fn stv_abi_encoded_size(&self) -> usize {
818                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
819                    return size;
820                }
821                let tuple = <UnderlyingRustTuple<
822                    '_,
823                > as ::core::convert::From<Self>>::from(self.clone());
824                <UnderlyingSolTuple<
825                    '_,
826                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
827            }
828            #[inline]
829            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
830                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
831            }
832            #[inline]
833            fn stv_abi_encode_packed_to(
834                &self,
835                out: &mut alloy_sol_types::private::Vec<u8>,
836            ) {
837                let tuple = <UnderlyingRustTuple<
838                    '_,
839                > as ::core::convert::From<Self>>::from(self.clone());
840                <UnderlyingSolTuple<
841                    '_,
842                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
843            }
844            #[inline]
845            fn stv_abi_packed_encoded_size(&self) -> usize {
846                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
847                    return size;
848                }
849                let tuple = <UnderlyingRustTuple<
850                    '_,
851                > as ::core::convert::From<Self>>::from(self.clone());
852                <UnderlyingSolTuple<
853                    '_,
854                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
855            }
856        }
857        #[automatically_derived]
858        impl alloy_sol_types::SolType for EdOnBN254Point {
859            type RustType = Self;
860            type Token<'a> = <UnderlyingSolTuple<
861                'a,
862            > as alloy_sol_types::SolType>::Token<'a>;
863            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
864            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
865                '_,
866            > as alloy_sol_types::SolType>::ENCODED_SIZE;
867            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
868                '_,
869            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
870            #[inline]
871            fn valid_token(token: &Self::Token<'_>) -> bool {
872                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
873            }
874            #[inline]
875            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
876                let tuple = <UnderlyingSolTuple<
877                    '_,
878                > as alloy_sol_types::SolType>::detokenize(token);
879                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
880            }
881        }
882        #[automatically_derived]
883        impl alloy_sol_types::SolStruct for EdOnBN254Point {
884            const NAME: &'static str = "EdOnBN254Point";
885            #[inline]
886            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
887                alloy_sol_types::private::Cow::Borrowed(
888                    "EdOnBN254Point(uint256 x,uint256 y)",
889                )
890            }
891            #[inline]
892            fn eip712_components() -> alloy_sol_types::private::Vec<
893                alloy_sol_types::private::Cow<'static, str>,
894            > {
895                alloy_sol_types::private::Vec::new()
896            }
897            #[inline]
898            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
899                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <alloy::sol_types::sol_data::Uint<
905                        256,
906                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
907                        .0,
908                    <alloy::sol_types::sol_data::Uint<
909                        256,
910                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
911                        .0,
912                ]
913                    .concat()
914            }
915        }
916        #[automatically_derived]
917        impl alloy_sol_types::EventTopic for EdOnBN254Point {
918            #[inline]
919            fn topic_preimage_length(rust: &Self::RustType) -> usize {
920                0usize
921                    + <alloy::sol_types::sol_data::Uint<
922                        256,
923                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
924                    + <alloy::sol_types::sol_data::Uint<
925                        256,
926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
927            }
928            #[inline]
929            fn encode_topic_preimage(
930                rust: &Self::RustType,
931                out: &mut alloy_sol_types::private::Vec<u8>,
932            ) {
933                out.reserve(
934                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
935                );
936                <alloy::sol_types::sol_data::Uint<
937                    256,
938                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
939                <alloy::sol_types::sol_data::Uint<
940                    256,
941                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
942            }
943            #[inline]
944            fn encode_topic(
945                rust: &Self::RustType,
946            ) -> alloy_sol_types::abi::token::WordToken {
947                let mut out = alloy_sol_types::private::Vec::new();
948                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
949                    rust,
950                    &mut out,
951                );
952                alloy_sol_types::abi::token::WordToken(
953                    alloy_sol_types::private::keccak256(out),
954                )
955            }
956        }
957    };
958    use alloy::contract as alloy_contract;
959    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
960
961See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
962    #[inline]
963    pub const fn new<
964        P: alloy_contract::private::Provider<N>,
965        N: alloy_contract::private::Network,
966    >(
967        address: alloy_sol_types::private::Address,
968        provider: P,
969    ) -> EdOnBN254Instance<P, N> {
970        EdOnBN254Instance::<P, N>::new(address, provider)
971    }
972    /**A [`EdOnBN254`](self) instance.
973
974Contains type-safe methods for interacting with an on-chain instance of the
975[`EdOnBN254`](self) contract located at a given `address`, using a given
976provider `P`.
977
978If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
979documentation on how to provide it), the `deploy` and `deploy_builder` methods can
980be used to deploy a new instance of the contract.
981
982See the [module-level documentation](self) for all the available methods.*/
983    #[derive(Clone)]
984    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
985        address: alloy_sol_types::private::Address,
986        provider: P,
987        _network: ::core::marker::PhantomData<N>,
988    }
989    #[automatically_derived]
990    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
991        #[inline]
992        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
993            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
994        }
995    }
996    /// Instantiation and getters/setters.
997    #[automatically_derived]
998    impl<
999        P: alloy_contract::private::Provider<N>,
1000        N: alloy_contract::private::Network,
1001    > EdOnBN254Instance<P, N> {
1002        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1003
1004See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1005        #[inline]
1006        pub const fn new(
1007            address: alloy_sol_types::private::Address,
1008            provider: P,
1009        ) -> Self {
1010            Self {
1011                address,
1012                provider,
1013                _network: ::core::marker::PhantomData,
1014            }
1015        }
1016        /// Returns a reference to the address.
1017        #[inline]
1018        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1019            &self.address
1020        }
1021        /// Sets the address.
1022        #[inline]
1023        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1024            self.address = address;
1025        }
1026        /// Sets the address and returns `self`.
1027        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1028            self.set_address(address);
1029            self
1030        }
1031        /// Returns a reference to the provider.
1032        #[inline]
1033        pub const fn provider(&self) -> &P {
1034            &self.provider
1035        }
1036    }
1037    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1038        /// Clones the provider and returns a new instance with the cloned provider.
1039        #[inline]
1040        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1041            EdOnBN254Instance {
1042                address: self.address,
1043                provider: ::core::clone::Clone::clone(&self.provider),
1044                _network: ::core::marker::PhantomData,
1045            }
1046        }
1047    }
1048    /// Function calls.
1049    #[automatically_derived]
1050    impl<
1051        P: alloy_contract::private::Provider<N>,
1052        N: alloy_contract::private::Network,
1053    > EdOnBN254Instance<P, N> {
1054        /// Creates a new call builder using this contract instance's provider and address.
1055        ///
1056        /// Note that the call can be any function call, not just those defined in this
1057        /// contract. Prefer using the other methods for building type-safe contract calls.
1058        pub fn call_builder<C: alloy_sol_types::SolCall>(
1059            &self,
1060            call: &C,
1061        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1062            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1063        }
1064    }
1065    /// Event filters.
1066    #[automatically_derived]
1067    impl<
1068        P: alloy_contract::private::Provider<N>,
1069        N: alloy_contract::private::Network,
1070    > EdOnBN254Instance<P, N> {
1071        /// Creates a new event filter using this contract instance's provider and address.
1072        ///
1073        /// Note that the type can be any event, not just those defined in this contract.
1074        /// Prefer using the other methods for building type-safe event filters.
1075        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1076            &self,
1077        ) -> alloy_contract::Event<&P, E, N> {
1078            alloy_contract::Event::new_sol(&self.provider, &self.address)
1079        }
1080    }
1081}
1082///Module containing a contract's types and functions.
1083/**
1084
1085```solidity
1086library StakeTable {
1087    type ValidatorStatus is uint8;
1088}
1089```*/
1090#[allow(
1091    non_camel_case_types,
1092    non_snake_case,
1093    clippy::pub_underscore_fields,
1094    clippy::style,
1095    clippy::empty_structs_with_brackets
1096)]
1097pub mod StakeTable {
1098    use super::*;
1099    use alloy::sol_types as alloy_sol_types;
1100    #[derive(serde::Serialize, serde::Deserialize)]
1101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1103    #[derive(Clone)]
1104    pub struct ValidatorStatus(u8);
1105    const _: () = {
1106        use alloy::sol_types as alloy_sol_types;
1107        #[automatically_derived]
1108        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1109            #[inline]
1110            fn stv_to_tokens(
1111                &self,
1112            ) -> <alloy::sol_types::sol_data::Uint<
1113                8,
1114            > as alloy_sol_types::SolType>::Token<'_> {
1115                alloy_sol_types::private::SolTypeValue::<
1116                    alloy::sol_types::sol_data::Uint<8>,
1117                >::stv_to_tokens(self)
1118            }
1119            #[inline]
1120            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1121                <alloy::sol_types::sol_data::Uint<
1122                    8,
1123                > as alloy_sol_types::SolType>::tokenize(self)
1124                    .0
1125            }
1126            #[inline]
1127            fn stv_abi_encode_packed_to(
1128                &self,
1129                out: &mut alloy_sol_types::private::Vec<u8>,
1130            ) {
1131                <alloy::sol_types::sol_data::Uint<
1132                    8,
1133                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1134            }
1135            #[inline]
1136            fn stv_abi_packed_encoded_size(&self) -> usize {
1137                <alloy::sol_types::sol_data::Uint<
1138                    8,
1139                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1140            }
1141        }
1142        #[automatically_derived]
1143        impl ValidatorStatus {
1144            /// The Solidity type name.
1145            pub const NAME: &'static str = stringify!(@ name);
1146            /// Convert from the underlying value type.
1147            #[inline]
1148            pub const fn from_underlying(value: u8) -> Self {
1149                Self(value)
1150            }
1151            /// Return the underlying value.
1152            #[inline]
1153            pub const fn into_underlying(self) -> u8 {
1154                self.0
1155            }
1156            /// Return the single encoding of this value, delegating to the
1157            /// underlying type.
1158            #[inline]
1159            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1160                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1161            }
1162            /// Return the packed encoding of this value, delegating to the
1163            /// underlying type.
1164            #[inline]
1165            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1166                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1167            }
1168        }
1169        #[automatically_derived]
1170        impl From<u8> for ValidatorStatus {
1171            fn from(value: u8) -> Self {
1172                Self::from_underlying(value)
1173            }
1174        }
1175        #[automatically_derived]
1176        impl From<ValidatorStatus> for u8 {
1177            fn from(value: ValidatorStatus) -> Self {
1178                value.into_underlying()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::SolType for ValidatorStatus {
1183            type RustType = u8;
1184            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1185                8,
1186            > as alloy_sol_types::SolType>::Token<'a>;
1187            const SOL_NAME: &'static str = Self::NAME;
1188            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1189                8,
1190            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1191            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1192                8,
1193            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1194            #[inline]
1195            fn valid_token(token: &Self::Token<'_>) -> bool {
1196                Self::type_check(token).is_ok()
1197            }
1198            #[inline]
1199            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1200                <alloy::sol_types::sol_data::Uint<
1201                    8,
1202                > as alloy_sol_types::SolType>::type_check(token)
1203            }
1204            #[inline]
1205            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1206                <alloy::sol_types::sol_data::Uint<
1207                    8,
1208                > as alloy_sol_types::SolType>::detokenize(token)
1209            }
1210        }
1211        #[automatically_derived]
1212        impl alloy_sol_types::EventTopic for ValidatorStatus {
1213            #[inline]
1214            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1215                <alloy::sol_types::sol_data::Uint<
1216                    8,
1217                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1218            }
1219            #[inline]
1220            fn encode_topic_preimage(
1221                rust: &Self::RustType,
1222                out: &mut alloy_sol_types::private::Vec<u8>,
1223            ) {
1224                <alloy::sol_types::sol_data::Uint<
1225                    8,
1226                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1227            }
1228            #[inline]
1229            fn encode_topic(
1230                rust: &Self::RustType,
1231            ) -> alloy_sol_types::abi::token::WordToken {
1232                <alloy::sol_types::sol_data::Uint<
1233                    8,
1234                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1235            }
1236        }
1237    };
1238    use alloy::contract as alloy_contract;
1239    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1240
1241See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1242    #[inline]
1243    pub const fn new<
1244        P: alloy_contract::private::Provider<N>,
1245        N: alloy_contract::private::Network,
1246    >(
1247        address: alloy_sol_types::private::Address,
1248        provider: P,
1249    ) -> StakeTableInstance<P, N> {
1250        StakeTableInstance::<P, N>::new(address, provider)
1251    }
1252    /**A [`StakeTable`](self) instance.
1253
1254Contains type-safe methods for interacting with an on-chain instance of the
1255[`StakeTable`](self) contract located at a given `address`, using a given
1256provider `P`.
1257
1258If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1259documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1260be used to deploy a new instance of the contract.
1261
1262See the [module-level documentation](self) for all the available methods.*/
1263    #[derive(Clone)]
1264    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1265        address: alloy_sol_types::private::Address,
1266        provider: P,
1267        _network: ::core::marker::PhantomData<N>,
1268    }
1269    #[automatically_derived]
1270    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1271        #[inline]
1272        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1273            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1274        }
1275    }
1276    /// Instantiation and getters/setters.
1277    #[automatically_derived]
1278    impl<
1279        P: alloy_contract::private::Provider<N>,
1280        N: alloy_contract::private::Network,
1281    > StakeTableInstance<P, N> {
1282        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1283
1284See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1285        #[inline]
1286        pub const fn new(
1287            address: alloy_sol_types::private::Address,
1288            provider: P,
1289        ) -> Self {
1290            Self {
1291                address,
1292                provider,
1293                _network: ::core::marker::PhantomData,
1294            }
1295        }
1296        /// Returns a reference to the address.
1297        #[inline]
1298        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1299            &self.address
1300        }
1301        /// Sets the address.
1302        #[inline]
1303        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1304            self.address = address;
1305        }
1306        /// Sets the address and returns `self`.
1307        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1308            self.set_address(address);
1309            self
1310        }
1311        /// Returns a reference to the provider.
1312        #[inline]
1313        pub const fn provider(&self) -> &P {
1314            &self.provider
1315        }
1316    }
1317    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1318        /// Clones the provider and returns a new instance with the cloned provider.
1319        #[inline]
1320        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1321            StakeTableInstance {
1322                address: self.address,
1323                provider: ::core::clone::Clone::clone(&self.provider),
1324                _network: ::core::marker::PhantomData,
1325            }
1326        }
1327    }
1328    /// Function calls.
1329    #[automatically_derived]
1330    impl<
1331        P: alloy_contract::private::Provider<N>,
1332        N: alloy_contract::private::Network,
1333    > StakeTableInstance<P, N> {
1334        /// Creates a new call builder using this contract instance's provider and address.
1335        ///
1336        /// Note that the call can be any function call, not just those defined in this
1337        /// contract. Prefer using the other methods for building type-safe contract calls.
1338        pub fn call_builder<C: alloy_sol_types::SolCall>(
1339            &self,
1340            call: &C,
1341        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1342            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1343        }
1344    }
1345    /// Event filters.
1346    #[automatically_derived]
1347    impl<
1348        P: alloy_contract::private::Provider<N>,
1349        N: alloy_contract::private::Network,
1350    > StakeTableInstance<P, N> {
1351        /// Creates a new event filter using this contract instance's provider and address.
1352        ///
1353        /// Note that the type can be any event, not just those defined in this contract.
1354        /// Prefer using the other methods for building type-safe event filters.
1355        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1356            &self,
1357        ) -> alloy_contract::Event<&P, E, N> {
1358            alloy_contract::Event::new_sol(&self.provider, &self.address)
1359        }
1360    }
1361}
1362/**
1363
1364Generated by the following Solidity interface...
1365```solidity
1366library BN254 {
1367    type BaseField is uint256;
1368    struct G1Point {
1369        BaseField x;
1370        BaseField y;
1371    }
1372    struct G2Point {
1373        BaseField x0;
1374        BaseField x1;
1375        BaseField y0;
1376        BaseField y1;
1377    }
1378}
1379
1380library EdOnBN254 {
1381    struct EdOnBN254Point {
1382        uint256 x;
1383        uint256 y;
1384    }
1385}
1386
1387library StakeTable {
1388    type ValidatorStatus is uint8;
1389}
1390
1391interface StakeTableV2 {
1392    struct InitialCommission {
1393        address validator;
1394        uint16 commission;
1395    }
1396
1397    error AccessControlBadConfirmation();
1398    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1399    error AddressEmptyCode(address target);
1400    error BLSSigVerificationFailed();
1401    error BN254PairingProdFailed();
1402    error BlsKeyAlreadyUsed();
1403    error CommissionAlreadyInitialized(address validator);
1404    error CommissionIncreaseExceedsMax();
1405    error CommissionUnchanged();
1406    error CommissionUpdateTooSoon();
1407    error DefaultAdminCannotBeRenounced();
1408    error DefaultAdminCannotBeRevoked();
1409    error DelegateAmountTooSmall();
1410    error DeprecatedFunction();
1411    error ERC1967InvalidImplementation(address implementation);
1412    error ERC1967NonPayable();
1413    error EnforcedPause();
1414    error ExitEscrowPeriodInvalid();
1415    error ExpectedPause();
1416    error FailedInnerCall();
1417    error InitialActiveStakeExceedsBalance();
1418    error InsufficientAllowance(uint256, uint256);
1419    error InsufficientBalance(uint256);
1420    error InvalidCommission();
1421    error InvalidG1();
1422    error InvalidInitialization();
1423    error InvalidMetadataUriLength();
1424    error InvalidRateLimitParameters();
1425    error InvalidSchnorrSig();
1426    error InvalidSchnorrVK();
1427    error MinDelegateAmountTooSmall();
1428    error NoUndelegationFound();
1429    error NotInitializing();
1430    error NothingToWithdraw();
1431    error OwnableInvalidOwner(address owner);
1432    error OwnableUnauthorizedAccount(address account);
1433    error OwnershipCannotBeRenounced();
1434    error PowPrecompileFailed();
1435    error PrematureWithdrawal();
1436    error SchnorrKeyAlreadyUsed();
1437    error UUPSUnauthorizedCallContext();
1438    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1439    error UndelegationAlreadyExists();
1440    error ValidatorAlreadyExited();
1441    error ValidatorAlreadyRegistered();
1442    error ValidatorInactive();
1443    error ValidatorNotExited();
1444    error ZeroAddress();
1445    error ZeroAmount();
1446
1447    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1448    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1449    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1450    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1451    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1452    event Initialized(uint64 version);
1453    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1454    event MetadataUriUpdated(address indexed validator, string metadataUri);
1455    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1456    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1457    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1458    event Paused(address account);
1459    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1460    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1461    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1462    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1463    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1464    event Unpaused(address account);
1465    event Upgraded(address indexed implementation);
1466    event ValidatorExit(address indexed validator);
1467    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1468    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1469    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1470    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1471    event Withdrawal(address indexed account, uint256 amount);
1472    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1473
1474    constructor();
1475
1476    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1477    function MAX_COMMISSION_BPS() external view returns (uint16);
1478    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1479    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1480    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1481    function PAUSER_ROLE() external view returns (bytes32);
1482    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1483    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1484    function activeStake() external view returns (uint256);
1485    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1486    function claimValidatorExit(address validator) external;
1487    function claimWithdrawal(address validator) external;
1488    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1489    function delegate(address validator, uint256 amount) external;
1490    function delegations(address validator, address delegator) external view returns (uint256 amount);
1491    function deregisterValidator() external;
1492    function exitEscrowPeriod() external view returns (uint256);
1493    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1494    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1495    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1496    function grantRole(bytes32 role, address account) external;
1497    function hasRole(bytes32 role, address account) external view returns (bool);
1498    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1499    function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
1500    function initializedAtBlock() external view returns (uint256);
1501    function lightClient() external view returns (address);
1502    function maxCommissionIncrease() external view returns (uint16);
1503    function minCommissionIncreaseInterval() external view returns (uint256);
1504    function minDelegateAmount() external view returns (uint256);
1505    function owner() external view returns (address);
1506    function pause() external;
1507    function paused() external view returns (bool);
1508    function proxiableUUID() external view returns (bytes32);
1509    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1510    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
1511    function renounceOwnership() external;
1512    function renounceRole(bytes32 role, address callerConfirmation) external;
1513    function revokeRole(bytes32 role, address account) external;
1514    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1515    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1516    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1517    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1518    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1519    function token() external view returns (address);
1520    function transferOwnership(address newOwner) external;
1521    function undelegate(address validator, uint256 amount) external;
1522    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1523    function unpause() external;
1524    function updateCommission(uint16 newCommission) external;
1525    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1526    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1527    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1528    function updateMetadataUri(string memory metadataUri) external;
1529    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1530    function validateMetadataUri(string memory metadataUri) external pure;
1531    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1532    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1533}
1534```
1535
1536...which was generated by the following JSON ABI:
1537```json
1538[
1539  {
1540    "type": "constructor",
1541    "inputs": [],
1542    "stateMutability": "nonpayable"
1543  },
1544  {
1545    "type": "function",
1546    "name": "DEFAULT_ADMIN_ROLE",
1547    "inputs": [],
1548    "outputs": [
1549      {
1550        "name": "",
1551        "type": "bytes32",
1552        "internalType": "bytes32"
1553      }
1554    ],
1555    "stateMutability": "view"
1556  },
1557  {
1558    "type": "function",
1559    "name": "MAX_COMMISSION_BPS",
1560    "inputs": [],
1561    "outputs": [
1562      {
1563        "name": "",
1564        "type": "uint16",
1565        "internalType": "uint16"
1566      }
1567    ],
1568    "stateMutability": "view"
1569  },
1570  {
1571    "type": "function",
1572    "name": "MAX_EXIT_ESCROW_PERIOD",
1573    "inputs": [],
1574    "outputs": [
1575      {
1576        "name": "",
1577        "type": "uint64",
1578        "internalType": "uint64"
1579      }
1580    ],
1581    "stateMutability": "view"
1582  },
1583  {
1584    "type": "function",
1585    "name": "MAX_METADATA_URI_LENGTH",
1586    "inputs": [],
1587    "outputs": [
1588      {
1589        "name": "",
1590        "type": "uint256",
1591        "internalType": "uint256"
1592      }
1593    ],
1594    "stateMutability": "view"
1595  },
1596  {
1597    "type": "function",
1598    "name": "MIN_EXIT_ESCROW_PERIOD",
1599    "inputs": [],
1600    "outputs": [
1601      {
1602        "name": "",
1603        "type": "uint64",
1604        "internalType": "uint64"
1605      }
1606    ],
1607    "stateMutability": "view"
1608  },
1609  {
1610    "type": "function",
1611    "name": "PAUSER_ROLE",
1612    "inputs": [],
1613    "outputs": [
1614      {
1615        "name": "",
1616        "type": "bytes32",
1617        "internalType": "bytes32"
1618      }
1619    ],
1620    "stateMutability": "view"
1621  },
1622  {
1623    "type": "function",
1624    "name": "UPGRADE_INTERFACE_VERSION",
1625    "inputs": [],
1626    "outputs": [
1627      {
1628        "name": "",
1629        "type": "string",
1630        "internalType": "string"
1631      }
1632    ],
1633    "stateMutability": "view"
1634  },
1635  {
1636    "type": "function",
1637    "name": "_hashBlsKey",
1638    "inputs": [
1639      {
1640        "name": "blsVK",
1641        "type": "tuple",
1642        "internalType": "struct BN254.G2Point",
1643        "components": [
1644          {
1645            "name": "x0",
1646            "type": "uint256",
1647            "internalType": "BN254.BaseField"
1648          },
1649          {
1650            "name": "x1",
1651            "type": "uint256",
1652            "internalType": "BN254.BaseField"
1653          },
1654          {
1655            "name": "y0",
1656            "type": "uint256",
1657            "internalType": "BN254.BaseField"
1658          },
1659          {
1660            "name": "y1",
1661            "type": "uint256",
1662            "internalType": "BN254.BaseField"
1663          }
1664        ]
1665      }
1666    ],
1667    "outputs": [
1668      {
1669        "name": "",
1670        "type": "bytes32",
1671        "internalType": "bytes32"
1672      }
1673    ],
1674    "stateMutability": "pure"
1675  },
1676  {
1677    "type": "function",
1678    "name": "activeStake",
1679    "inputs": [],
1680    "outputs": [
1681      {
1682        "name": "",
1683        "type": "uint256",
1684        "internalType": "uint256"
1685      }
1686    ],
1687    "stateMutability": "view"
1688  },
1689  {
1690    "type": "function",
1691    "name": "blsKeys",
1692    "inputs": [
1693      {
1694        "name": "blsKeyHash",
1695        "type": "bytes32",
1696        "internalType": "bytes32"
1697      }
1698    ],
1699    "outputs": [
1700      {
1701        "name": "used",
1702        "type": "bool",
1703        "internalType": "bool"
1704      }
1705    ],
1706    "stateMutability": "view"
1707  },
1708  {
1709    "type": "function",
1710    "name": "claimValidatorExit",
1711    "inputs": [
1712      {
1713        "name": "validator",
1714        "type": "address",
1715        "internalType": "address"
1716      }
1717    ],
1718    "outputs": [],
1719    "stateMutability": "nonpayable"
1720  },
1721  {
1722    "type": "function",
1723    "name": "claimWithdrawal",
1724    "inputs": [
1725      {
1726        "name": "validator",
1727        "type": "address",
1728        "internalType": "address"
1729      }
1730    ],
1731    "outputs": [],
1732    "stateMutability": "nonpayable"
1733  },
1734  {
1735    "type": "function",
1736    "name": "commissionTracking",
1737    "inputs": [
1738      {
1739        "name": "validator",
1740        "type": "address",
1741        "internalType": "address"
1742      }
1743    ],
1744    "outputs": [
1745      {
1746        "name": "commission",
1747        "type": "uint16",
1748        "internalType": "uint16"
1749      },
1750      {
1751        "name": "lastIncreaseTime",
1752        "type": "uint256",
1753        "internalType": "uint256"
1754      }
1755    ],
1756    "stateMutability": "view"
1757  },
1758  {
1759    "type": "function",
1760    "name": "delegate",
1761    "inputs": [
1762      {
1763        "name": "validator",
1764        "type": "address",
1765        "internalType": "address"
1766      },
1767      {
1768        "name": "amount",
1769        "type": "uint256",
1770        "internalType": "uint256"
1771      }
1772    ],
1773    "outputs": [],
1774    "stateMutability": "nonpayable"
1775  },
1776  {
1777    "type": "function",
1778    "name": "delegations",
1779    "inputs": [
1780      {
1781        "name": "validator",
1782        "type": "address",
1783        "internalType": "address"
1784      },
1785      {
1786        "name": "delegator",
1787        "type": "address",
1788        "internalType": "address"
1789      }
1790    ],
1791    "outputs": [
1792      {
1793        "name": "amount",
1794        "type": "uint256",
1795        "internalType": "uint256"
1796      }
1797    ],
1798    "stateMutability": "view"
1799  },
1800  {
1801    "type": "function",
1802    "name": "deregisterValidator",
1803    "inputs": [],
1804    "outputs": [],
1805    "stateMutability": "nonpayable"
1806  },
1807  {
1808    "type": "function",
1809    "name": "exitEscrowPeriod",
1810    "inputs": [],
1811    "outputs": [
1812      {
1813        "name": "",
1814        "type": "uint256",
1815        "internalType": "uint256"
1816      }
1817    ],
1818    "stateMutability": "view"
1819  },
1820  {
1821    "type": "function",
1822    "name": "getRoleAdmin",
1823    "inputs": [
1824      {
1825        "name": "role",
1826        "type": "bytes32",
1827        "internalType": "bytes32"
1828      }
1829    ],
1830    "outputs": [
1831      {
1832        "name": "",
1833        "type": "bytes32",
1834        "internalType": "bytes32"
1835      }
1836    ],
1837    "stateMutability": "view"
1838  },
1839  {
1840    "type": "function",
1841    "name": "getUndelegation",
1842    "inputs": [
1843      {
1844        "name": "validator",
1845        "type": "address",
1846        "internalType": "address"
1847      },
1848      {
1849        "name": "delegator",
1850        "type": "address",
1851        "internalType": "address"
1852      }
1853    ],
1854    "outputs": [
1855      {
1856        "name": "id",
1857        "type": "uint64",
1858        "internalType": "uint64"
1859      },
1860      {
1861        "name": "amount",
1862        "type": "uint256",
1863        "internalType": "uint256"
1864      },
1865      {
1866        "name": "unlocksAt",
1867        "type": "uint256",
1868        "internalType": "uint256"
1869      }
1870    ],
1871    "stateMutability": "view"
1872  },
1873  {
1874    "type": "function",
1875    "name": "getVersion",
1876    "inputs": [],
1877    "outputs": [
1878      {
1879        "name": "majorVersion",
1880        "type": "uint8",
1881        "internalType": "uint8"
1882      },
1883      {
1884        "name": "minorVersion",
1885        "type": "uint8",
1886        "internalType": "uint8"
1887      },
1888      {
1889        "name": "patchVersion",
1890        "type": "uint8",
1891        "internalType": "uint8"
1892      }
1893    ],
1894    "stateMutability": "pure"
1895  },
1896  {
1897    "type": "function",
1898    "name": "grantRole",
1899    "inputs": [
1900      {
1901        "name": "role",
1902        "type": "bytes32",
1903        "internalType": "bytes32"
1904      },
1905      {
1906        "name": "account",
1907        "type": "address",
1908        "internalType": "address"
1909      }
1910    ],
1911    "outputs": [],
1912    "stateMutability": "nonpayable"
1913  },
1914  {
1915    "type": "function",
1916    "name": "hasRole",
1917    "inputs": [
1918      {
1919        "name": "role",
1920        "type": "bytes32",
1921        "internalType": "bytes32"
1922      },
1923      {
1924        "name": "account",
1925        "type": "address",
1926        "internalType": "address"
1927      }
1928    ],
1929    "outputs": [
1930      {
1931        "name": "",
1932        "type": "bool",
1933        "internalType": "bool"
1934      }
1935    ],
1936    "stateMutability": "view"
1937  },
1938  {
1939    "type": "function",
1940    "name": "initialize",
1941    "inputs": [
1942      {
1943        "name": "_tokenAddress",
1944        "type": "address",
1945        "internalType": "address"
1946      },
1947      {
1948        "name": "_lightClientAddress",
1949        "type": "address",
1950        "internalType": "address"
1951      },
1952      {
1953        "name": "_exitEscrowPeriod",
1954        "type": "uint256",
1955        "internalType": "uint256"
1956      },
1957      {
1958        "name": "_timelock",
1959        "type": "address",
1960        "internalType": "address"
1961      }
1962    ],
1963    "outputs": [],
1964    "stateMutability": "nonpayable"
1965  },
1966  {
1967    "type": "function",
1968    "name": "initializeV2",
1969    "inputs": [
1970      {
1971        "name": "pauser",
1972        "type": "address",
1973        "internalType": "address"
1974      },
1975      {
1976        "name": "admin",
1977        "type": "address",
1978        "internalType": "address"
1979      },
1980      {
1981        "name": "initialActiveStake",
1982        "type": "uint256",
1983        "internalType": "uint256"
1984      },
1985      {
1986        "name": "initialCommissions",
1987        "type": "tuple[]",
1988        "internalType": "struct StakeTableV2.InitialCommission[]",
1989        "components": [
1990          {
1991            "name": "validator",
1992            "type": "address",
1993            "internalType": "address"
1994          },
1995          {
1996            "name": "commission",
1997            "type": "uint16",
1998            "internalType": "uint16"
1999          }
2000        ]
2001      }
2002    ],
2003    "outputs": [],
2004    "stateMutability": "nonpayable"
2005  },
2006  {
2007    "type": "function",
2008    "name": "initializedAtBlock",
2009    "inputs": [],
2010    "outputs": [
2011      {
2012        "name": "",
2013        "type": "uint256",
2014        "internalType": "uint256"
2015      }
2016    ],
2017    "stateMutability": "view"
2018  },
2019  {
2020    "type": "function",
2021    "name": "lightClient",
2022    "inputs": [],
2023    "outputs": [
2024      {
2025        "name": "",
2026        "type": "address",
2027        "internalType": "contract ILightClient"
2028      }
2029    ],
2030    "stateMutability": "view"
2031  },
2032  {
2033    "type": "function",
2034    "name": "maxCommissionIncrease",
2035    "inputs": [],
2036    "outputs": [
2037      {
2038        "name": "",
2039        "type": "uint16",
2040        "internalType": "uint16"
2041      }
2042    ],
2043    "stateMutability": "view"
2044  },
2045  {
2046    "type": "function",
2047    "name": "minCommissionIncreaseInterval",
2048    "inputs": [],
2049    "outputs": [
2050      {
2051        "name": "",
2052        "type": "uint256",
2053        "internalType": "uint256"
2054      }
2055    ],
2056    "stateMutability": "view"
2057  },
2058  {
2059    "type": "function",
2060    "name": "minDelegateAmount",
2061    "inputs": [],
2062    "outputs": [
2063      {
2064        "name": "",
2065        "type": "uint256",
2066        "internalType": "uint256"
2067      }
2068    ],
2069    "stateMutability": "view"
2070  },
2071  {
2072    "type": "function",
2073    "name": "owner",
2074    "inputs": [],
2075    "outputs": [
2076      {
2077        "name": "",
2078        "type": "address",
2079        "internalType": "address"
2080      }
2081    ],
2082    "stateMutability": "view"
2083  },
2084  {
2085    "type": "function",
2086    "name": "pause",
2087    "inputs": [],
2088    "outputs": [],
2089    "stateMutability": "nonpayable"
2090  },
2091  {
2092    "type": "function",
2093    "name": "paused",
2094    "inputs": [],
2095    "outputs": [
2096      {
2097        "name": "",
2098        "type": "bool",
2099        "internalType": "bool"
2100      }
2101    ],
2102    "stateMutability": "view"
2103  },
2104  {
2105    "type": "function",
2106    "name": "proxiableUUID",
2107    "inputs": [],
2108    "outputs": [
2109      {
2110        "name": "",
2111        "type": "bytes32",
2112        "internalType": "bytes32"
2113      }
2114    ],
2115    "stateMutability": "view"
2116  },
2117  {
2118    "type": "function",
2119    "name": "registerValidator",
2120    "inputs": [
2121      {
2122        "name": "",
2123        "type": "tuple",
2124        "internalType": "struct BN254.G2Point",
2125        "components": [
2126          {
2127            "name": "x0",
2128            "type": "uint256",
2129            "internalType": "BN254.BaseField"
2130          },
2131          {
2132            "name": "x1",
2133            "type": "uint256",
2134            "internalType": "BN254.BaseField"
2135          },
2136          {
2137            "name": "y0",
2138            "type": "uint256",
2139            "internalType": "BN254.BaseField"
2140          },
2141          {
2142            "name": "y1",
2143            "type": "uint256",
2144            "internalType": "BN254.BaseField"
2145          }
2146        ]
2147      },
2148      {
2149        "name": "",
2150        "type": "tuple",
2151        "internalType": "struct EdOnBN254.EdOnBN254Point",
2152        "components": [
2153          {
2154            "name": "x",
2155            "type": "uint256",
2156            "internalType": "uint256"
2157          },
2158          {
2159            "name": "y",
2160            "type": "uint256",
2161            "internalType": "uint256"
2162          }
2163        ]
2164      },
2165      {
2166        "name": "",
2167        "type": "tuple",
2168        "internalType": "struct BN254.G1Point",
2169        "components": [
2170          {
2171            "name": "x",
2172            "type": "uint256",
2173            "internalType": "BN254.BaseField"
2174          },
2175          {
2176            "name": "y",
2177            "type": "uint256",
2178            "internalType": "BN254.BaseField"
2179          }
2180        ]
2181      },
2182      {
2183        "name": "",
2184        "type": "uint16",
2185        "internalType": "uint16"
2186      }
2187    ],
2188    "outputs": [],
2189    "stateMutability": "pure"
2190  },
2191  {
2192    "type": "function",
2193    "name": "registerValidatorV2",
2194    "inputs": [
2195      {
2196        "name": "blsVK",
2197        "type": "tuple",
2198        "internalType": "struct BN254.G2Point",
2199        "components": [
2200          {
2201            "name": "x0",
2202            "type": "uint256",
2203            "internalType": "BN254.BaseField"
2204          },
2205          {
2206            "name": "x1",
2207            "type": "uint256",
2208            "internalType": "BN254.BaseField"
2209          },
2210          {
2211            "name": "y0",
2212            "type": "uint256",
2213            "internalType": "BN254.BaseField"
2214          },
2215          {
2216            "name": "y1",
2217            "type": "uint256",
2218            "internalType": "BN254.BaseField"
2219          }
2220        ]
2221      },
2222      {
2223        "name": "schnorrVK",
2224        "type": "tuple",
2225        "internalType": "struct EdOnBN254.EdOnBN254Point",
2226        "components": [
2227          {
2228            "name": "x",
2229            "type": "uint256",
2230            "internalType": "uint256"
2231          },
2232          {
2233            "name": "y",
2234            "type": "uint256",
2235            "internalType": "uint256"
2236          }
2237        ]
2238      },
2239      {
2240        "name": "blsSig",
2241        "type": "tuple",
2242        "internalType": "struct BN254.G1Point",
2243        "components": [
2244          {
2245            "name": "x",
2246            "type": "uint256",
2247            "internalType": "BN254.BaseField"
2248          },
2249          {
2250            "name": "y",
2251            "type": "uint256",
2252            "internalType": "BN254.BaseField"
2253          }
2254        ]
2255      },
2256      {
2257        "name": "schnorrSig",
2258        "type": "bytes",
2259        "internalType": "bytes"
2260      },
2261      {
2262        "name": "commission",
2263        "type": "uint16",
2264        "internalType": "uint16"
2265      },
2266      {
2267        "name": "metadataUri",
2268        "type": "string",
2269        "internalType": "string"
2270      }
2271    ],
2272    "outputs": [],
2273    "stateMutability": "nonpayable"
2274  },
2275  {
2276    "type": "function",
2277    "name": "renounceOwnership",
2278    "inputs": [],
2279    "outputs": [],
2280    "stateMutability": "nonpayable"
2281  },
2282  {
2283    "type": "function",
2284    "name": "renounceRole",
2285    "inputs": [
2286      {
2287        "name": "role",
2288        "type": "bytes32",
2289        "internalType": "bytes32"
2290      },
2291      {
2292        "name": "callerConfirmation",
2293        "type": "address",
2294        "internalType": "address"
2295      }
2296    ],
2297    "outputs": [],
2298    "stateMutability": "nonpayable"
2299  },
2300  {
2301    "type": "function",
2302    "name": "revokeRole",
2303    "inputs": [
2304      {
2305        "name": "role",
2306        "type": "bytes32",
2307        "internalType": "bytes32"
2308      },
2309      {
2310        "name": "account",
2311        "type": "address",
2312        "internalType": "address"
2313      }
2314    ],
2315    "outputs": [],
2316    "stateMutability": "nonpayable"
2317  },
2318  {
2319    "type": "function",
2320    "name": "schnorrKeys",
2321    "inputs": [
2322      {
2323        "name": "schnorrKey",
2324        "type": "bytes32",
2325        "internalType": "bytes32"
2326      }
2327    ],
2328    "outputs": [
2329      {
2330        "name": "used",
2331        "type": "bool",
2332        "internalType": "bool"
2333      }
2334    ],
2335    "stateMutability": "view"
2336  },
2337  {
2338    "type": "function",
2339    "name": "setMaxCommissionIncrease",
2340    "inputs": [
2341      {
2342        "name": "newMaxIncrease",
2343        "type": "uint16",
2344        "internalType": "uint16"
2345      }
2346    ],
2347    "outputs": [],
2348    "stateMutability": "nonpayable"
2349  },
2350  {
2351    "type": "function",
2352    "name": "setMinCommissionUpdateInterval",
2353    "inputs": [
2354      {
2355        "name": "newInterval",
2356        "type": "uint256",
2357        "internalType": "uint256"
2358      }
2359    ],
2360    "outputs": [],
2361    "stateMutability": "nonpayable"
2362  },
2363  {
2364    "type": "function",
2365    "name": "setMinDelegateAmount",
2366    "inputs": [
2367      {
2368        "name": "newMinDelegateAmount",
2369        "type": "uint256",
2370        "internalType": "uint256"
2371      }
2372    ],
2373    "outputs": [],
2374    "stateMutability": "nonpayable"
2375  },
2376  {
2377    "type": "function",
2378    "name": "supportsInterface",
2379    "inputs": [
2380      {
2381        "name": "interfaceId",
2382        "type": "bytes4",
2383        "internalType": "bytes4"
2384      }
2385    ],
2386    "outputs": [
2387      {
2388        "name": "",
2389        "type": "bool",
2390        "internalType": "bool"
2391      }
2392    ],
2393    "stateMutability": "view"
2394  },
2395  {
2396    "type": "function",
2397    "name": "token",
2398    "inputs": [],
2399    "outputs": [
2400      {
2401        "name": "",
2402        "type": "address",
2403        "internalType": "contract ERC20"
2404      }
2405    ],
2406    "stateMutability": "view"
2407  },
2408  {
2409    "type": "function",
2410    "name": "transferOwnership",
2411    "inputs": [
2412      {
2413        "name": "newOwner",
2414        "type": "address",
2415        "internalType": "address"
2416      }
2417    ],
2418    "outputs": [],
2419    "stateMutability": "nonpayable"
2420  },
2421  {
2422    "type": "function",
2423    "name": "undelegate",
2424    "inputs": [
2425      {
2426        "name": "validator",
2427        "type": "address",
2428        "internalType": "address"
2429      },
2430      {
2431        "name": "amount",
2432        "type": "uint256",
2433        "internalType": "uint256"
2434      }
2435    ],
2436    "outputs": [],
2437    "stateMutability": "nonpayable"
2438  },
2439  {
2440    "type": "function",
2441    "name": "undelegations",
2442    "inputs": [
2443      {
2444        "name": "validator",
2445        "type": "address",
2446        "internalType": "address"
2447      },
2448      {
2449        "name": "delegator",
2450        "type": "address",
2451        "internalType": "address"
2452      }
2453    ],
2454    "outputs": [
2455      {
2456        "name": "amount",
2457        "type": "uint256",
2458        "internalType": "uint256"
2459      },
2460      {
2461        "name": "unlocksAt",
2462        "type": "uint256",
2463        "internalType": "uint256"
2464      }
2465    ],
2466    "stateMutability": "view"
2467  },
2468  {
2469    "type": "function",
2470    "name": "unpause",
2471    "inputs": [],
2472    "outputs": [],
2473    "stateMutability": "nonpayable"
2474  },
2475  {
2476    "type": "function",
2477    "name": "updateCommission",
2478    "inputs": [
2479      {
2480        "name": "newCommission",
2481        "type": "uint16",
2482        "internalType": "uint16"
2483      }
2484    ],
2485    "outputs": [],
2486    "stateMutability": "nonpayable"
2487  },
2488  {
2489    "type": "function",
2490    "name": "updateConsensusKeys",
2491    "inputs": [
2492      {
2493        "name": "",
2494        "type": "tuple",
2495        "internalType": "struct BN254.G2Point",
2496        "components": [
2497          {
2498            "name": "x0",
2499            "type": "uint256",
2500            "internalType": "BN254.BaseField"
2501          },
2502          {
2503            "name": "x1",
2504            "type": "uint256",
2505            "internalType": "BN254.BaseField"
2506          },
2507          {
2508            "name": "y0",
2509            "type": "uint256",
2510            "internalType": "BN254.BaseField"
2511          },
2512          {
2513            "name": "y1",
2514            "type": "uint256",
2515            "internalType": "BN254.BaseField"
2516          }
2517        ]
2518      },
2519      {
2520        "name": "",
2521        "type": "tuple",
2522        "internalType": "struct EdOnBN254.EdOnBN254Point",
2523        "components": [
2524          {
2525            "name": "x",
2526            "type": "uint256",
2527            "internalType": "uint256"
2528          },
2529          {
2530            "name": "y",
2531            "type": "uint256",
2532            "internalType": "uint256"
2533          }
2534        ]
2535      },
2536      {
2537        "name": "",
2538        "type": "tuple",
2539        "internalType": "struct BN254.G1Point",
2540        "components": [
2541          {
2542            "name": "x",
2543            "type": "uint256",
2544            "internalType": "BN254.BaseField"
2545          },
2546          {
2547            "name": "y",
2548            "type": "uint256",
2549            "internalType": "BN254.BaseField"
2550          }
2551        ]
2552      }
2553    ],
2554    "outputs": [],
2555    "stateMutability": "pure"
2556  },
2557  {
2558    "type": "function",
2559    "name": "updateConsensusKeysV2",
2560    "inputs": [
2561      {
2562        "name": "blsVK",
2563        "type": "tuple",
2564        "internalType": "struct BN254.G2Point",
2565        "components": [
2566          {
2567            "name": "x0",
2568            "type": "uint256",
2569            "internalType": "BN254.BaseField"
2570          },
2571          {
2572            "name": "x1",
2573            "type": "uint256",
2574            "internalType": "BN254.BaseField"
2575          },
2576          {
2577            "name": "y0",
2578            "type": "uint256",
2579            "internalType": "BN254.BaseField"
2580          },
2581          {
2582            "name": "y1",
2583            "type": "uint256",
2584            "internalType": "BN254.BaseField"
2585          }
2586        ]
2587      },
2588      {
2589        "name": "schnorrVK",
2590        "type": "tuple",
2591        "internalType": "struct EdOnBN254.EdOnBN254Point",
2592        "components": [
2593          {
2594            "name": "x",
2595            "type": "uint256",
2596            "internalType": "uint256"
2597          },
2598          {
2599            "name": "y",
2600            "type": "uint256",
2601            "internalType": "uint256"
2602          }
2603        ]
2604      },
2605      {
2606        "name": "blsSig",
2607        "type": "tuple",
2608        "internalType": "struct BN254.G1Point",
2609        "components": [
2610          {
2611            "name": "x",
2612            "type": "uint256",
2613            "internalType": "BN254.BaseField"
2614          },
2615          {
2616            "name": "y",
2617            "type": "uint256",
2618            "internalType": "BN254.BaseField"
2619          }
2620        ]
2621      },
2622      {
2623        "name": "schnorrSig",
2624        "type": "bytes",
2625        "internalType": "bytes"
2626      }
2627    ],
2628    "outputs": [],
2629    "stateMutability": "nonpayable"
2630  },
2631  {
2632    "type": "function",
2633    "name": "updateExitEscrowPeriod",
2634    "inputs": [
2635      {
2636        "name": "newExitEscrowPeriod",
2637        "type": "uint64",
2638        "internalType": "uint64"
2639      }
2640    ],
2641    "outputs": [],
2642    "stateMutability": "nonpayable"
2643  },
2644  {
2645    "type": "function",
2646    "name": "updateMetadataUri",
2647    "inputs": [
2648      {
2649        "name": "metadataUri",
2650        "type": "string",
2651        "internalType": "string"
2652      }
2653    ],
2654    "outputs": [],
2655    "stateMutability": "nonpayable"
2656  },
2657  {
2658    "type": "function",
2659    "name": "upgradeToAndCall",
2660    "inputs": [
2661      {
2662        "name": "newImplementation",
2663        "type": "address",
2664        "internalType": "address"
2665      },
2666      {
2667        "name": "data",
2668        "type": "bytes",
2669        "internalType": "bytes"
2670      }
2671    ],
2672    "outputs": [],
2673    "stateMutability": "payable"
2674  },
2675  {
2676    "type": "function",
2677    "name": "validateMetadataUri",
2678    "inputs": [
2679      {
2680        "name": "metadataUri",
2681        "type": "string",
2682        "internalType": "string"
2683      }
2684    ],
2685    "outputs": [],
2686    "stateMutability": "pure"
2687  },
2688  {
2689    "type": "function",
2690    "name": "validatorExits",
2691    "inputs": [
2692      {
2693        "name": "validator",
2694        "type": "address",
2695        "internalType": "address"
2696      }
2697    ],
2698    "outputs": [
2699      {
2700        "name": "unlocksAt",
2701        "type": "uint256",
2702        "internalType": "uint256"
2703      }
2704    ],
2705    "stateMutability": "view"
2706  },
2707  {
2708    "type": "function",
2709    "name": "validators",
2710    "inputs": [
2711      {
2712        "name": "account",
2713        "type": "address",
2714        "internalType": "address"
2715      }
2716    ],
2717    "outputs": [
2718      {
2719        "name": "delegatedAmount",
2720        "type": "uint256",
2721        "internalType": "uint256"
2722      },
2723      {
2724        "name": "status",
2725        "type": "uint8",
2726        "internalType": "enum StakeTable.ValidatorStatus"
2727      }
2728    ],
2729    "stateMutability": "view"
2730  },
2731  {
2732    "type": "event",
2733    "name": "CommissionUpdated",
2734    "inputs": [
2735      {
2736        "name": "validator",
2737        "type": "address",
2738        "indexed": true,
2739        "internalType": "address"
2740      },
2741      {
2742        "name": "timestamp",
2743        "type": "uint256",
2744        "indexed": false,
2745        "internalType": "uint256"
2746      },
2747      {
2748        "name": "oldCommission",
2749        "type": "uint16",
2750        "indexed": false,
2751        "internalType": "uint16"
2752      },
2753      {
2754        "name": "newCommission",
2755        "type": "uint16",
2756        "indexed": false,
2757        "internalType": "uint16"
2758      }
2759    ],
2760    "anonymous": false
2761  },
2762  {
2763    "type": "event",
2764    "name": "ConsensusKeysUpdated",
2765    "inputs": [
2766      {
2767        "name": "account",
2768        "type": "address",
2769        "indexed": true,
2770        "internalType": "address"
2771      },
2772      {
2773        "name": "blsVK",
2774        "type": "tuple",
2775        "indexed": false,
2776        "internalType": "struct BN254.G2Point",
2777        "components": [
2778          {
2779            "name": "x0",
2780            "type": "uint256",
2781            "internalType": "BN254.BaseField"
2782          },
2783          {
2784            "name": "x1",
2785            "type": "uint256",
2786            "internalType": "BN254.BaseField"
2787          },
2788          {
2789            "name": "y0",
2790            "type": "uint256",
2791            "internalType": "BN254.BaseField"
2792          },
2793          {
2794            "name": "y1",
2795            "type": "uint256",
2796            "internalType": "BN254.BaseField"
2797          }
2798        ]
2799      },
2800      {
2801        "name": "schnorrVK",
2802        "type": "tuple",
2803        "indexed": false,
2804        "internalType": "struct EdOnBN254.EdOnBN254Point",
2805        "components": [
2806          {
2807            "name": "x",
2808            "type": "uint256",
2809            "internalType": "uint256"
2810          },
2811          {
2812            "name": "y",
2813            "type": "uint256",
2814            "internalType": "uint256"
2815          }
2816        ]
2817      }
2818    ],
2819    "anonymous": false
2820  },
2821  {
2822    "type": "event",
2823    "name": "ConsensusKeysUpdatedV2",
2824    "inputs": [
2825      {
2826        "name": "account",
2827        "type": "address",
2828        "indexed": true,
2829        "internalType": "address"
2830      },
2831      {
2832        "name": "blsVK",
2833        "type": "tuple",
2834        "indexed": false,
2835        "internalType": "struct BN254.G2Point",
2836        "components": [
2837          {
2838            "name": "x0",
2839            "type": "uint256",
2840            "internalType": "BN254.BaseField"
2841          },
2842          {
2843            "name": "x1",
2844            "type": "uint256",
2845            "internalType": "BN254.BaseField"
2846          },
2847          {
2848            "name": "y0",
2849            "type": "uint256",
2850            "internalType": "BN254.BaseField"
2851          },
2852          {
2853            "name": "y1",
2854            "type": "uint256",
2855            "internalType": "BN254.BaseField"
2856          }
2857        ]
2858      },
2859      {
2860        "name": "schnorrVK",
2861        "type": "tuple",
2862        "indexed": false,
2863        "internalType": "struct EdOnBN254.EdOnBN254Point",
2864        "components": [
2865          {
2866            "name": "x",
2867            "type": "uint256",
2868            "internalType": "uint256"
2869          },
2870          {
2871            "name": "y",
2872            "type": "uint256",
2873            "internalType": "uint256"
2874          }
2875        ]
2876      },
2877      {
2878        "name": "blsSig",
2879        "type": "tuple",
2880        "indexed": false,
2881        "internalType": "struct BN254.G1Point",
2882        "components": [
2883          {
2884            "name": "x",
2885            "type": "uint256",
2886            "internalType": "BN254.BaseField"
2887          },
2888          {
2889            "name": "y",
2890            "type": "uint256",
2891            "internalType": "BN254.BaseField"
2892          }
2893        ]
2894      },
2895      {
2896        "name": "schnorrSig",
2897        "type": "bytes",
2898        "indexed": false,
2899        "internalType": "bytes"
2900      }
2901    ],
2902    "anonymous": false
2903  },
2904  {
2905    "type": "event",
2906    "name": "Delegated",
2907    "inputs": [
2908      {
2909        "name": "delegator",
2910        "type": "address",
2911        "indexed": true,
2912        "internalType": "address"
2913      },
2914      {
2915        "name": "validator",
2916        "type": "address",
2917        "indexed": true,
2918        "internalType": "address"
2919      },
2920      {
2921        "name": "amount",
2922        "type": "uint256",
2923        "indexed": false,
2924        "internalType": "uint256"
2925      }
2926    ],
2927    "anonymous": false
2928  },
2929  {
2930    "type": "event",
2931    "name": "ExitEscrowPeriodUpdated",
2932    "inputs": [
2933      {
2934        "name": "newExitEscrowPeriod",
2935        "type": "uint64",
2936        "indexed": false,
2937        "internalType": "uint64"
2938      }
2939    ],
2940    "anonymous": false
2941  },
2942  {
2943    "type": "event",
2944    "name": "Initialized",
2945    "inputs": [
2946      {
2947        "name": "version",
2948        "type": "uint64",
2949        "indexed": false,
2950        "internalType": "uint64"
2951      }
2952    ],
2953    "anonymous": false
2954  },
2955  {
2956    "type": "event",
2957    "name": "MaxCommissionIncreaseUpdated",
2958    "inputs": [
2959      {
2960        "name": "newMaxIncrease",
2961        "type": "uint16",
2962        "indexed": false,
2963        "internalType": "uint16"
2964      }
2965    ],
2966    "anonymous": false
2967  },
2968  {
2969    "type": "event",
2970    "name": "MetadataUriUpdated",
2971    "inputs": [
2972      {
2973        "name": "validator",
2974        "type": "address",
2975        "indexed": true,
2976        "internalType": "address"
2977      },
2978      {
2979        "name": "metadataUri",
2980        "type": "string",
2981        "indexed": false,
2982        "internalType": "string"
2983      }
2984    ],
2985    "anonymous": false
2986  },
2987  {
2988    "type": "event",
2989    "name": "MinCommissionUpdateIntervalUpdated",
2990    "inputs": [
2991      {
2992        "name": "newInterval",
2993        "type": "uint256",
2994        "indexed": false,
2995        "internalType": "uint256"
2996      }
2997    ],
2998    "anonymous": false
2999  },
3000  {
3001    "type": "event",
3002    "name": "MinDelegateAmountUpdated",
3003    "inputs": [
3004      {
3005        "name": "newMinDelegateAmount",
3006        "type": "uint256",
3007        "indexed": false,
3008        "internalType": "uint256"
3009      }
3010    ],
3011    "anonymous": false
3012  },
3013  {
3014    "type": "event",
3015    "name": "OwnershipTransferred",
3016    "inputs": [
3017      {
3018        "name": "previousOwner",
3019        "type": "address",
3020        "indexed": true,
3021        "internalType": "address"
3022      },
3023      {
3024        "name": "newOwner",
3025        "type": "address",
3026        "indexed": true,
3027        "internalType": "address"
3028      }
3029    ],
3030    "anonymous": false
3031  },
3032  {
3033    "type": "event",
3034    "name": "Paused",
3035    "inputs": [
3036      {
3037        "name": "account",
3038        "type": "address",
3039        "indexed": false,
3040        "internalType": "address"
3041      }
3042    ],
3043    "anonymous": false
3044  },
3045  {
3046    "type": "event",
3047    "name": "RoleAdminChanged",
3048    "inputs": [
3049      {
3050        "name": "role",
3051        "type": "bytes32",
3052        "indexed": true,
3053        "internalType": "bytes32"
3054      },
3055      {
3056        "name": "previousAdminRole",
3057        "type": "bytes32",
3058        "indexed": true,
3059        "internalType": "bytes32"
3060      },
3061      {
3062        "name": "newAdminRole",
3063        "type": "bytes32",
3064        "indexed": true,
3065        "internalType": "bytes32"
3066      }
3067    ],
3068    "anonymous": false
3069  },
3070  {
3071    "type": "event",
3072    "name": "RoleGranted",
3073    "inputs": [
3074      {
3075        "name": "role",
3076        "type": "bytes32",
3077        "indexed": true,
3078        "internalType": "bytes32"
3079      },
3080      {
3081        "name": "account",
3082        "type": "address",
3083        "indexed": true,
3084        "internalType": "address"
3085      },
3086      {
3087        "name": "sender",
3088        "type": "address",
3089        "indexed": true,
3090        "internalType": "address"
3091      }
3092    ],
3093    "anonymous": false
3094  },
3095  {
3096    "type": "event",
3097    "name": "RoleRevoked",
3098    "inputs": [
3099      {
3100        "name": "role",
3101        "type": "bytes32",
3102        "indexed": true,
3103        "internalType": "bytes32"
3104      },
3105      {
3106        "name": "account",
3107        "type": "address",
3108        "indexed": true,
3109        "internalType": "address"
3110      },
3111      {
3112        "name": "sender",
3113        "type": "address",
3114        "indexed": true,
3115        "internalType": "address"
3116      }
3117    ],
3118    "anonymous": false
3119  },
3120  {
3121    "type": "event",
3122    "name": "Undelegated",
3123    "inputs": [
3124      {
3125        "name": "delegator",
3126        "type": "address",
3127        "indexed": true,
3128        "internalType": "address"
3129      },
3130      {
3131        "name": "validator",
3132        "type": "address",
3133        "indexed": true,
3134        "internalType": "address"
3135      },
3136      {
3137        "name": "amount",
3138        "type": "uint256",
3139        "indexed": false,
3140        "internalType": "uint256"
3141      }
3142    ],
3143    "anonymous": false
3144  },
3145  {
3146    "type": "event",
3147    "name": "UndelegatedV2",
3148    "inputs": [
3149      {
3150        "name": "delegator",
3151        "type": "address",
3152        "indexed": true,
3153        "internalType": "address"
3154      },
3155      {
3156        "name": "validator",
3157        "type": "address",
3158        "indexed": true,
3159        "internalType": "address"
3160      },
3161      {
3162        "name": "undelegationId",
3163        "type": "uint64",
3164        "indexed": true,
3165        "internalType": "uint64"
3166      },
3167      {
3168        "name": "amount",
3169        "type": "uint256",
3170        "indexed": false,
3171        "internalType": "uint256"
3172      },
3173      {
3174        "name": "unlocksAt",
3175        "type": "uint256",
3176        "indexed": false,
3177        "internalType": "uint256"
3178      }
3179    ],
3180    "anonymous": false
3181  },
3182  {
3183    "type": "event",
3184    "name": "Unpaused",
3185    "inputs": [
3186      {
3187        "name": "account",
3188        "type": "address",
3189        "indexed": false,
3190        "internalType": "address"
3191      }
3192    ],
3193    "anonymous": false
3194  },
3195  {
3196    "type": "event",
3197    "name": "Upgraded",
3198    "inputs": [
3199      {
3200        "name": "implementation",
3201        "type": "address",
3202        "indexed": true,
3203        "internalType": "address"
3204      }
3205    ],
3206    "anonymous": false
3207  },
3208  {
3209    "type": "event",
3210    "name": "ValidatorExit",
3211    "inputs": [
3212      {
3213        "name": "validator",
3214        "type": "address",
3215        "indexed": true,
3216        "internalType": "address"
3217      }
3218    ],
3219    "anonymous": false
3220  },
3221  {
3222    "type": "event",
3223    "name": "ValidatorExitClaimed",
3224    "inputs": [
3225      {
3226        "name": "delegator",
3227        "type": "address",
3228        "indexed": true,
3229        "internalType": "address"
3230      },
3231      {
3232        "name": "validator",
3233        "type": "address",
3234        "indexed": true,
3235        "internalType": "address"
3236      },
3237      {
3238        "name": "amount",
3239        "type": "uint256",
3240        "indexed": false,
3241        "internalType": "uint256"
3242      }
3243    ],
3244    "anonymous": false
3245  },
3246  {
3247    "type": "event",
3248    "name": "ValidatorExitV2",
3249    "inputs": [
3250      {
3251        "name": "validator",
3252        "type": "address",
3253        "indexed": true,
3254        "internalType": "address"
3255      },
3256      {
3257        "name": "unlocksAt",
3258        "type": "uint256",
3259        "indexed": false,
3260        "internalType": "uint256"
3261      }
3262    ],
3263    "anonymous": false
3264  },
3265  {
3266    "type": "event",
3267    "name": "ValidatorRegistered",
3268    "inputs": [
3269      {
3270        "name": "account",
3271        "type": "address",
3272        "indexed": true,
3273        "internalType": "address"
3274      },
3275      {
3276        "name": "blsVk",
3277        "type": "tuple",
3278        "indexed": false,
3279        "internalType": "struct BN254.G2Point",
3280        "components": [
3281          {
3282            "name": "x0",
3283            "type": "uint256",
3284            "internalType": "BN254.BaseField"
3285          },
3286          {
3287            "name": "x1",
3288            "type": "uint256",
3289            "internalType": "BN254.BaseField"
3290          },
3291          {
3292            "name": "y0",
3293            "type": "uint256",
3294            "internalType": "BN254.BaseField"
3295          },
3296          {
3297            "name": "y1",
3298            "type": "uint256",
3299            "internalType": "BN254.BaseField"
3300          }
3301        ]
3302      },
3303      {
3304        "name": "schnorrVk",
3305        "type": "tuple",
3306        "indexed": false,
3307        "internalType": "struct EdOnBN254.EdOnBN254Point",
3308        "components": [
3309          {
3310            "name": "x",
3311            "type": "uint256",
3312            "internalType": "uint256"
3313          },
3314          {
3315            "name": "y",
3316            "type": "uint256",
3317            "internalType": "uint256"
3318          }
3319        ]
3320      },
3321      {
3322        "name": "commission",
3323        "type": "uint16",
3324        "indexed": false,
3325        "internalType": "uint16"
3326      }
3327    ],
3328    "anonymous": false
3329  },
3330  {
3331    "type": "event",
3332    "name": "ValidatorRegisteredV2",
3333    "inputs": [
3334      {
3335        "name": "account",
3336        "type": "address",
3337        "indexed": true,
3338        "internalType": "address"
3339      },
3340      {
3341        "name": "blsVK",
3342        "type": "tuple",
3343        "indexed": false,
3344        "internalType": "struct BN254.G2Point",
3345        "components": [
3346          {
3347            "name": "x0",
3348            "type": "uint256",
3349            "internalType": "BN254.BaseField"
3350          },
3351          {
3352            "name": "x1",
3353            "type": "uint256",
3354            "internalType": "BN254.BaseField"
3355          },
3356          {
3357            "name": "y0",
3358            "type": "uint256",
3359            "internalType": "BN254.BaseField"
3360          },
3361          {
3362            "name": "y1",
3363            "type": "uint256",
3364            "internalType": "BN254.BaseField"
3365          }
3366        ]
3367      },
3368      {
3369        "name": "schnorrVK",
3370        "type": "tuple",
3371        "indexed": false,
3372        "internalType": "struct EdOnBN254.EdOnBN254Point",
3373        "components": [
3374          {
3375            "name": "x",
3376            "type": "uint256",
3377            "internalType": "uint256"
3378          },
3379          {
3380            "name": "y",
3381            "type": "uint256",
3382            "internalType": "uint256"
3383          }
3384        ]
3385      },
3386      {
3387        "name": "commission",
3388        "type": "uint16",
3389        "indexed": false,
3390        "internalType": "uint16"
3391      },
3392      {
3393        "name": "blsSig",
3394        "type": "tuple",
3395        "indexed": false,
3396        "internalType": "struct BN254.G1Point",
3397        "components": [
3398          {
3399            "name": "x",
3400            "type": "uint256",
3401            "internalType": "BN254.BaseField"
3402          },
3403          {
3404            "name": "y",
3405            "type": "uint256",
3406            "internalType": "BN254.BaseField"
3407          }
3408        ]
3409      },
3410      {
3411        "name": "schnorrSig",
3412        "type": "bytes",
3413        "indexed": false,
3414        "internalType": "bytes"
3415      },
3416      {
3417        "name": "metadataUri",
3418        "type": "string",
3419        "indexed": false,
3420        "internalType": "string"
3421      }
3422    ],
3423    "anonymous": false
3424  },
3425  {
3426    "type": "event",
3427    "name": "Withdrawal",
3428    "inputs": [
3429      {
3430        "name": "account",
3431        "type": "address",
3432        "indexed": true,
3433        "internalType": "address"
3434      },
3435      {
3436        "name": "amount",
3437        "type": "uint256",
3438        "indexed": false,
3439        "internalType": "uint256"
3440      }
3441    ],
3442    "anonymous": false
3443  },
3444  {
3445    "type": "event",
3446    "name": "WithdrawalClaimed",
3447    "inputs": [
3448      {
3449        "name": "delegator",
3450        "type": "address",
3451        "indexed": true,
3452        "internalType": "address"
3453      },
3454      {
3455        "name": "validator",
3456        "type": "address",
3457        "indexed": true,
3458        "internalType": "address"
3459      },
3460      {
3461        "name": "undelegationId",
3462        "type": "uint64",
3463        "indexed": true,
3464        "internalType": "uint64"
3465      },
3466      {
3467        "name": "amount",
3468        "type": "uint256",
3469        "indexed": false,
3470        "internalType": "uint256"
3471      }
3472    ],
3473    "anonymous": false
3474  },
3475  {
3476    "type": "error",
3477    "name": "AccessControlBadConfirmation",
3478    "inputs": []
3479  },
3480  {
3481    "type": "error",
3482    "name": "AccessControlUnauthorizedAccount",
3483    "inputs": [
3484      {
3485        "name": "account",
3486        "type": "address",
3487        "internalType": "address"
3488      },
3489      {
3490        "name": "neededRole",
3491        "type": "bytes32",
3492        "internalType": "bytes32"
3493      }
3494    ]
3495  },
3496  {
3497    "type": "error",
3498    "name": "AddressEmptyCode",
3499    "inputs": [
3500      {
3501        "name": "target",
3502        "type": "address",
3503        "internalType": "address"
3504      }
3505    ]
3506  },
3507  {
3508    "type": "error",
3509    "name": "BLSSigVerificationFailed",
3510    "inputs": []
3511  },
3512  {
3513    "type": "error",
3514    "name": "BN254PairingProdFailed",
3515    "inputs": []
3516  },
3517  {
3518    "type": "error",
3519    "name": "BlsKeyAlreadyUsed",
3520    "inputs": []
3521  },
3522  {
3523    "type": "error",
3524    "name": "CommissionAlreadyInitialized",
3525    "inputs": [
3526      {
3527        "name": "validator",
3528        "type": "address",
3529        "internalType": "address"
3530      }
3531    ]
3532  },
3533  {
3534    "type": "error",
3535    "name": "CommissionIncreaseExceedsMax",
3536    "inputs": []
3537  },
3538  {
3539    "type": "error",
3540    "name": "CommissionUnchanged",
3541    "inputs": []
3542  },
3543  {
3544    "type": "error",
3545    "name": "CommissionUpdateTooSoon",
3546    "inputs": []
3547  },
3548  {
3549    "type": "error",
3550    "name": "DefaultAdminCannotBeRenounced",
3551    "inputs": []
3552  },
3553  {
3554    "type": "error",
3555    "name": "DefaultAdminCannotBeRevoked",
3556    "inputs": []
3557  },
3558  {
3559    "type": "error",
3560    "name": "DelegateAmountTooSmall",
3561    "inputs": []
3562  },
3563  {
3564    "type": "error",
3565    "name": "DeprecatedFunction",
3566    "inputs": []
3567  },
3568  {
3569    "type": "error",
3570    "name": "ERC1967InvalidImplementation",
3571    "inputs": [
3572      {
3573        "name": "implementation",
3574        "type": "address",
3575        "internalType": "address"
3576      }
3577    ]
3578  },
3579  {
3580    "type": "error",
3581    "name": "ERC1967NonPayable",
3582    "inputs": []
3583  },
3584  {
3585    "type": "error",
3586    "name": "EnforcedPause",
3587    "inputs": []
3588  },
3589  {
3590    "type": "error",
3591    "name": "ExitEscrowPeriodInvalid",
3592    "inputs": []
3593  },
3594  {
3595    "type": "error",
3596    "name": "ExpectedPause",
3597    "inputs": []
3598  },
3599  {
3600    "type": "error",
3601    "name": "FailedInnerCall",
3602    "inputs": []
3603  },
3604  {
3605    "type": "error",
3606    "name": "InitialActiveStakeExceedsBalance",
3607    "inputs": []
3608  },
3609  {
3610    "type": "error",
3611    "name": "InsufficientAllowance",
3612    "inputs": [
3613      {
3614        "name": "",
3615        "type": "uint256",
3616        "internalType": "uint256"
3617      },
3618      {
3619        "name": "",
3620        "type": "uint256",
3621        "internalType": "uint256"
3622      }
3623    ]
3624  },
3625  {
3626    "type": "error",
3627    "name": "InsufficientBalance",
3628    "inputs": [
3629      {
3630        "name": "",
3631        "type": "uint256",
3632        "internalType": "uint256"
3633      }
3634    ]
3635  },
3636  {
3637    "type": "error",
3638    "name": "InvalidCommission",
3639    "inputs": []
3640  },
3641  {
3642    "type": "error",
3643    "name": "InvalidG1",
3644    "inputs": []
3645  },
3646  {
3647    "type": "error",
3648    "name": "InvalidInitialization",
3649    "inputs": []
3650  },
3651  {
3652    "type": "error",
3653    "name": "InvalidMetadataUriLength",
3654    "inputs": []
3655  },
3656  {
3657    "type": "error",
3658    "name": "InvalidRateLimitParameters",
3659    "inputs": []
3660  },
3661  {
3662    "type": "error",
3663    "name": "InvalidSchnorrSig",
3664    "inputs": []
3665  },
3666  {
3667    "type": "error",
3668    "name": "InvalidSchnorrVK",
3669    "inputs": []
3670  },
3671  {
3672    "type": "error",
3673    "name": "MinDelegateAmountTooSmall",
3674    "inputs": []
3675  },
3676  {
3677    "type": "error",
3678    "name": "NoUndelegationFound",
3679    "inputs": []
3680  },
3681  {
3682    "type": "error",
3683    "name": "NotInitializing",
3684    "inputs": []
3685  },
3686  {
3687    "type": "error",
3688    "name": "NothingToWithdraw",
3689    "inputs": []
3690  },
3691  {
3692    "type": "error",
3693    "name": "OwnableInvalidOwner",
3694    "inputs": [
3695      {
3696        "name": "owner",
3697        "type": "address",
3698        "internalType": "address"
3699      }
3700    ]
3701  },
3702  {
3703    "type": "error",
3704    "name": "OwnableUnauthorizedAccount",
3705    "inputs": [
3706      {
3707        "name": "account",
3708        "type": "address",
3709        "internalType": "address"
3710      }
3711    ]
3712  },
3713  {
3714    "type": "error",
3715    "name": "OwnershipCannotBeRenounced",
3716    "inputs": []
3717  },
3718  {
3719    "type": "error",
3720    "name": "PowPrecompileFailed",
3721    "inputs": []
3722  },
3723  {
3724    "type": "error",
3725    "name": "PrematureWithdrawal",
3726    "inputs": []
3727  },
3728  {
3729    "type": "error",
3730    "name": "SchnorrKeyAlreadyUsed",
3731    "inputs": []
3732  },
3733  {
3734    "type": "error",
3735    "name": "UUPSUnauthorizedCallContext",
3736    "inputs": []
3737  },
3738  {
3739    "type": "error",
3740    "name": "UUPSUnsupportedProxiableUUID",
3741    "inputs": [
3742      {
3743        "name": "slot",
3744        "type": "bytes32",
3745        "internalType": "bytes32"
3746      }
3747    ]
3748  },
3749  {
3750    "type": "error",
3751    "name": "UndelegationAlreadyExists",
3752    "inputs": []
3753  },
3754  {
3755    "type": "error",
3756    "name": "ValidatorAlreadyExited",
3757    "inputs": []
3758  },
3759  {
3760    "type": "error",
3761    "name": "ValidatorAlreadyRegistered",
3762    "inputs": []
3763  },
3764  {
3765    "type": "error",
3766    "name": "ValidatorInactive",
3767    "inputs": []
3768  },
3769  {
3770    "type": "error",
3771    "name": "ValidatorNotExited",
3772    "inputs": []
3773  },
3774  {
3775    "type": "error",
3776    "name": "ZeroAddress",
3777    "inputs": []
3778  },
3779  {
3780    "type": "error",
3781    "name": "ZeroAmount",
3782    "inputs": []
3783  }
3784]
3785```*/
3786#[allow(
3787    non_camel_case_types,
3788    non_snake_case,
3789    clippy::pub_underscore_fields,
3790    clippy::style,
3791    clippy::empty_structs_with_brackets
3792)]
3793pub mod StakeTableV2 {
3794    use super::*;
3795    use alloy::sol_types as alloy_sol_types;
3796    /// The creation / init bytecode of the contract.
3797    ///
3798    /// ```text
3799    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516143e46101095f395f818161247e015281816124a7015261296701526143e45ff3fe608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b506103896103843660046138e0565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b8366004613922565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613a26565b610d38565b348015610414575f5ffd5b506103bd610423366004613a7c565b610d51565b348015610433575f5ffd5b506103bd610442366004613aa2565b610de5565b348015610452575f5ffd5b50610466610461366004613abb565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613b61565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613c0a565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613c23565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613c23565b611209565b348015610510575f5ffd5b506103bd61051f366004613abb565b611231565b34801561052f575f5ffd5b506103bd61053e366004613c0a565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613abb565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d1366004613922565b61148f565b6103bd6105e4366004613c4d565b611700565b3480156105f4575f5ffd5b506103bd610603366004613c97565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613d2d565b348015610641575f5ffd5b505f5160206143985f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613abb565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613d71565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613c23565b611a85565b34801561077b575f5ffd5b5061046661078a366004613daa565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613aa2565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613dc4565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613aa2565b611b15565b348015610886575f5ffd5b506103bd610895366004613dec565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613e89565b3480156108e2575f5ffd5b506103896108f1366004613abb565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613aa2565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613dc4565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613e9b565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613dc4565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613c23565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613d71565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f5160206143585f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613aa2565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613aa2565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613eee565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613f1e565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613f49565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613f49565b9250508190555082600b5f828254610cde9190613f49565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490613f5c565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f5160206143785f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a8787612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a61230c565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a6123a1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613eda565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613eda565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90613f6f565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb82826123c5565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826123e1565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613f49565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff1683613ff6565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f5160206143585f395f51905f5261148481612178565b61148c612414565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a83614010565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190613f5c565b90915550506008545f906115f79042613f49565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490613f5c565b9250508190555084600b5f82825461169f9190613f5c565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611708612473565b61171182612517565b6111fb8282612521565b6117236125dd565b5f5160206143b85f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee61260f565b6117f6612617565b61180d5f5160206143585f395f51905f5288612627565b506118185f87612627565b505f611822611a57565b9050806001600160a01b0316876001600160a01b03161461184657611846876126c8565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612738565b61188f866128cd565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e961295c565b505f5160206143385f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613f49565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490613f5c565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6125dd565b6040516317d5c96560e11b815260040160405180910390fd5b5f5160206143585f395f51905f526119fb81612178565b61148c6129a5565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613e89565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f5160206143785f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f8585612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd181858861230c565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d32886123a1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d94949392919061403a565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee0866129ed565b611ee861260f565b611ef06129fe565b611efb898989612aef565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612b9a565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612bb6565b505050565b6120085f846123c5565b61201183612bb6565b61201b5f82612bf0565b50505050565b5f5160206143985f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613eda565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613eda565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612c69565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613eda565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526122758282612ca2565b156111fb576040516306cf438f60e01b815260040160405180910390fd5b60045f61229f84611abb565b815260208101919091526040015f205460ff16156122cf5760405162da8a5760e11b815260040160405180910390fd5b600e5f6122db836123a1565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b61231582612cc3565b5f6040518060600160405280602481526020016142f46024913990505f84826040516020016123459291906140b7565b60405160208183030381529060405290505f61236082612d2a565b905061237d818561237088612e17565b612378612e8e565b612f5b565b6123995760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b6123ce82610f35565b6123d781612178565b61201b8383612627565b6001600160a01b038116331461240a5760405163334bd91960e11b815260040160405180910390fd5b611ff98282612bf0565b61241c61300a565b5f5160206143985f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124ed5f5160206143385f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561257b575060408051601f3d908101601f1916820190925261257891810190613f1e565b60015b6125a357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143385f395f51905f5281146125d357604051632a87526960e21b815260048101829052602401610c43565b611ff98383613039565b336125e6611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b61205161308e565b61261f61308e565b6120516130c4565b5f5f5160206143785f395f51905f526126408484611a85565b6126bf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556126753390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f838383818110612755576127556140cb565b61276b9260206040909202019081019150613aa2565b90505f848484818110612780576127806140cb565b90506040020160200160208101906127989190613c0a565b905061271061ffff821611156127c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156127f2576127f2613eda565b036128105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561285157506001600160a01b0383165f908152600d602052604090205461ffff16155b839061287c5760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff1916921691909117815590516001918201550161273a565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612913573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190613f1e565b81111561295757604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b6129ad612021565b5f5160206143985f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612455565b6129f561308e565b61148c816130e4565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612a2f5750825b90505f826001600160401b03166001148015612a4a5750303b155b905081158015612a58575080155b15612a765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612aa057845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612b165760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612b3d5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612b925760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612ba382610f35565b612bac81612178565b61201b8383612bf0565b612bbe6125dd565b6001600160a01b038116612be757604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c816126c8565b5f5f5160206143785f395f51905f52612c098484611a85565b156126bf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612c738282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805182515f91148015612cbc575081602001518360200151145b9392505050565b805160208201515f915f5160206143185f395f51905f52911590151615612ce957505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612d47836130ec565b90505f5160206143185f395f51905f5260035f8284850990508280612d6e57612d6e6140df565b84820990508280612d8157612d816140df565b82820890505f5f612d91836132f4565b925090505b80612dfa578480612da957612da96140df565b6001870895508480612dbd57612dbd6140df565b86870992508480612dd057612dd06140df565b86840992508480612de357612de36140df565b8484089250612df1836132f4565b92509050612d96565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612e3e575090565b6040518060400160405280835f015181526020015f5160206143185f395f51905f528460200151612e6f91906140f3565b612e86905f5160206143185f395f51905f52613f5c565b905292915050565b612eb560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080612ffe5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f5160206143985f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b613042826133bc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561308657611ff9828261341f565b6111fb613491565b5f5160206143b85f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b6130cc61308e565b5f5160206143985f395f51905f52805460ff19169055565b612bbe61308e565b5f5f6130f7836134b0565b80519091506030811461310c5761310c614112565b5f816001600160401b038111156131255761312561394a565b6040519080825280601f01601f19166020018201604052801561314f576020820181803683370190505b5090505f5b828110156131be578360016131698386613f5c565b6131739190613f5c565b81518110613183576131836140cb565b602001015160f81c60f81b8282815181106131a0576131a06140cb565b60200101906001600160f81b03191690815f1a905350600101613154565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561324e5783816131fa8588613f5c565b6132049190613f49565b81518110613214576132146140cb565b602001015160f81c60f81b60f81c828281518110613234576132346140cb565b60ff909216602092830291909101909101526001016131e6565b505f613259826137fb565b90506101005f5160206143185f395f51905f525f6132778689613f5c565b90505f5b818110156132e4575f8860016132918486613f5c565b61329b9190613f5c565b815181106132ab576132ab6140cb565b016020015160f81c905083806132c3576132c36140df565b858709955083806132d6576132d66140df565b81870895505060010161327b565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143185f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361338257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b111561339b576133988382613f5c565b92505b80806133a9576133a96140df565b8384099690961496919550909350505050565b806001600160a01b03163b5f036133f157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143385f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161343b9190614126565b5f60405180830381855af49150503d805f8114613473576040519150601f19603f3d011682016040523d82523d5f602084013e613478565b606091505b5091509150613488858383613862565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016134f09291906140b7565b6040516020818303038152906040529050808460f81b604051602001613517929190614131565b604051602081830303815290604052905080604051602001613539919061415b565b60408051601f1981840301815290829052915061010160f01b906135639083908390602001614173565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156135d2576135d261394a565b6040519080825280601f01601f1916602001820160405280156135fc576020820181803683370190505b5090505f8260405160200161361391815260200190565b60408051601f1981840301815291905290505f5b815181101561367d57818181518110613642576136426140cb565b602001015160f81c60f81b83828151811061365f5761365f6140cb565b60200101906001600160f81b03191690815f1a905350600101613627565b505f8460405160200161369291815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613724575f8382815181106136cb576136cb6140cb565b602001015160f81c60f81b8383815181106136e8576136e86140cb565b602001015160f81c60f81b1890508881604051602001613709929190614197565b60408051601f198184030181529190529850506001016136b0565b5086888760405160200161373a939291906141bb565b6040516020818303038152906040529650868051906020012093508360405160200161376891815260200190565b60408051601f1981840301815291905291505f5b6137898a60ff8d16613f5c565b8110156137ea578281815181106137a2576137a26140cb565b01602001516001600160f81b031916846137bc838d613f49565b815181106137cc576137cc6140cb565b60200101906001600160f81b03191690815f1a90535060010161377c565b50919b9a5050505050505050505050565b5f80805b835181101561385b5783818151811061381a5761381a6140cb565b602002602001015160ff1681600861383291906141ee565b61383d9060026142e8565b61384791906141ee565b6138519083613f49565b91506001016137ff565b5092915050565b60608261387757613872826138b7565b612cbc565b815115801561388e57506001600160a01b0384163b155b1561385b57604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b8051156138c75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156138f0575f5ffd5b81356001600160e01b031981168114612cbc575f5ffd5b80356001600160a01b038116811461391d575f5ffd5b919050565b5f5f60408385031215613933575f5ffd5b61393c83613907565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156139805761398061394a565b60405290565b5f60808284031215613996575f5ffd5b604051608081016001600160401b03811182821017156139b8576139b861394a565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156139f6575f5ffd5b6139fe61395e565b823581526020928301359281019290925250919050565b803561ffff8116811461391d575f5ffd5b5f5f5f5f6101208587031215613a3a575f5ffd5b613a448686613986565b9350613a5386608087016139e6565b9250613a628660c087016139e6565b9150613a716101008601613a15565b905092959194509250565b5f60208284031215613a8c575f5ffd5b81356001600160401b0381168114612cbc575f5ffd5b5f60208284031215613ab2575f5ffd5b612cbc82613907565b5f60208284031215613acb575f5ffd5b5035919050565b5f82601f830112613ae1575f5ffd5b8135602083015f5f6001600160401b03841115613b0057613b0061394a565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613b2e57613b2e61394a565b604052838152905080828401871015613b45575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613b77575f5ffd5b613b818888613986565b9550613b9088608089016139e6565b9450613b9f8860c089016139e6565b93506101008701356001600160401b03811115613bba575f5ffd5b613bc689828a01613ad2565b935050613bd66101208801613a15565b91506101408701356001600160401b03811115613bf1575f5ffd5b613bfd89828a01613ad2565b9150509295509295509295565b5f60208284031215613c1a575f5ffd5b612cbc82613a15565b5f5f60408385031215613c34575f5ffd5b82359150613c4460208401613907565b90509250929050565b5f5f60408385031215613c5e575f5ffd5b613c6783613907565b915060208301356001600160401b03811115613c81575f5ffd5b613c8d85828601613ad2565b9150509250929050565b5f5f5f5f5f60808688031215613cab575f5ffd5b613cb486613907565b9450613cc260208701613907565b93506040860135925060608601356001600160401b03811115613ce3575f5ffd5b8601601f81018813613cf3575f5ffd5b80356001600160401b03811115613d08575f5ffd5b8860208260061b8401011115613d1c575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613d40575f5ffd5b613d4a8585613986565b9250613d5985608086016139e6565b9150613d688560c086016139e6565b90509250925092565b5f60208284031215613d81575f5ffd5b81356001600160401b03811115613d96575f5ffd5b613da284828501613ad2565b949350505050565b5f60808284031215613dba575f5ffd5b612cbc8383613986565b5f5f60408385031215613dd5575f5ffd5b613dde83613907565b9150613c4460208401613907565b5f5f5f5f6101208587031215613e00575f5ffd5b613e0a8686613986565b9350613e1986608087016139e6565b9250613e288660c087016139e6565b91506101008501356001600160401b03811115613e43575f5ffd5b613e4f87828801613ad2565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612cbc6020830184613e5b565b5f5f5f5f60808587031215613eae575f5ffd5b613eb785613907565b9350613ec560208601613907565b925060408501359150613a7160608601613907565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613f1157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613f2e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613f35565b81810381811115610b4c57610b4c613f35565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f613fd6610160830185613e5b565b828103610140840152613fe98185613e5b565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613f35565b5f6001600160401b0382166001600160401b03810361403157614031613f35565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f614096610120830184613e5b565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613da26140c583866140a0565b846140a0565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261410d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f612cbc82846140a0565b5f61413c82856140a0565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61416682846140a0565b5f81526001019392505050565b5f61417e82856140a0565b6001600160f01b03199390931683525050600201919050565b5f6141a282856140a0565b6001600160f81b03199390931683525050600101919050565b5f6141c682866140a0565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613f35565b6001815b60018411156142405780850481111561422457614224613f35565b600184161561423257908102905b60019390931c928002614209565b935093915050565b5f8261425657506001610b4c565b8161426257505f610b4c565b816001811461427857600281146142825761429e565b6001915050610b4c565b60ff84111561429357614293613f35565b50506001821b610b4c565b5060208310610133831016604e8410600b84101617156142c1575081810a610b4c565b6142cd5f198484614205565b805f19048211156142e0576142e0613f35565b029392505050565b5f612cbc838361424856fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3800    /// ```
3801    #[rustfmt::skip]
3802    #[allow(clippy::all)]
3803    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3804        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[`\x80QaC\xE4a\x01\t_9_\x81\x81a$~\x01R\x81\x81a$\xA7\x01Ra)g\x01RaC\xE4_\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`\x04a8\xE0V[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\"V[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:&V[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a:|V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a:\xA2V[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a:\xBBV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a;aV[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\nV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<#V[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<#V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a:\xBBV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\nV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a:\xBBV[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\"V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a<MV[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a<\x97V[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=-V[4\x80\x15a\x06AW__\xFD[P_Q` aC\x98_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a:\xBBV[`\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=qV[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<#V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a=\xAAV[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:\xA2V[`\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=\xC4V[`\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:\xA2V[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a=\xECV[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>\x89V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a:\xBBV[`\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:\xA2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a=\xC4V[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>\x9BV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a=\xC4V[`\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<#V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a=qV[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` aCX_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a:\xA2V[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a:\xA2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a>\xEEV[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?\x1EV[\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?IV[\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?IV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?IV[\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?\\V[\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` aCx_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\"\x93V[`@\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#\x0CV[\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#\xA1V[\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>\xDAV[\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>\xDAV[\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?oV[`@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#\xC5V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a#\xE1V[_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?IV[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?\xF6V[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` aCX_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\x14V[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@\x10V[\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?\\V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?IV[`@\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?\\V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a?\\V[\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$sV[a\x17\x11\x82a%\x17V[a\x11\xFB\x82\x82a%!V[a\x17#a%\xDDV[_Q` aC\xB8_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&\x0FV[a\x17\xF6a&\x17V[a\x18\r_Q` aCX_9_Q\x90_R\x88a&'V[Pa\x18\x18_\x87a&'V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a&\xC8V[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'8V[a\x18\x8F\x86a(\xCDV[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` aC8_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?IV[`\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?\\V[\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%\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aCX_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca)\xA5V[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>\x89V[\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` aCx_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\"\x93V[`@\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#\x0CV[\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#\xA1V[\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@:V[`@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` aC\xB8_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)\xEDV[a\x1E\xE8a&\x0FV[a\x1E\xF0a)\xFEV[a\x1E\xFB\x89\x89\x89a*\xEFV[\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+\x9AV[\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+\xB6V[PPPV[a \x08_\x84a#\xC5V[a \x11\x83a+\xB6V[a \x1B_\x82a+\xF0V[PPPPV[_Q` aC\x98_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>\xDAV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a>\xDAV[\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,iV[_`@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>\xDAV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\"u\x82\x82a,\xA2V[\x15a\x11\xFBW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\x9F\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\"\xCFW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a\"\xDB\x83a#\xA1V[\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[a#\x15\x82a,\xC3V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aB\xF4`$\x919\x90P_\x84\x82`@Q` \x01a#E\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a#`\x82a-*V[\x90Pa#}\x81\x85a#p\x88a.\x17V[a#xa.\x8EV[a/[V[a#\x99W`@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#\xCE\x82a\x0F5V[a#\xD7\x81a!xV[a \x1B\x83\x83a&'V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\nW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a+\xF0V[a$\x1Ca0\nV[_Q` aC\x98_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$\xF9WP\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$\xED_Q` aC8_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%{WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra%x\x91\x81\x01\x90a?\x1EV[`\x01[a%\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_9_Q\x90_R\x81\x14a%\xD3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a09V[3a%\xE6a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa0\x8EV[a&\x1Fa0\x8EV[a Qa0\xC4V[__Q` aCx_9_Q\x90_Ra&@\x84\x84a\x1A\x85V[a&\xBFW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua&u3\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'UWa'Ua@\xCBV[a'k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa:\xA2V[\x90P_\x84\x84\x84\x81\x81\x10a'\x80Wa'\x80a@\xCBV[\x90P`@\x02\x01` \x01` \x81\x01\x90a'\x98\x91\x90a<\nV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a'\xC1W`@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'\xF2Wa'\xF2a>\xDAV[\x03a(\x10W`@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(QWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a(|W`@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':V[`\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)\x13W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)7\x91\x90a?\x1EV[\x81\x11\x15a)WW`@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)\xADa !V[_Q` aC\x98_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$UV[a)\xF5a0\x8EV[a\x14\x8C\x81a0\xE4V[_Q` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*/WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a*JWP0;\x15[\x90P\x81\x15\x80\x15a*XWP\x80\x15[\x15a*vW`@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*\xA0W\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+\x16W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a+=W`@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+\x92W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a+\xA3\x82a\x0F5V[a+\xAC\x81a!xV[a \x1B\x83\x83a+\xF0V[a+\xBEa%\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xE7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a&\xC8V[__Q` aCx_9_Q\x90_Ra,\t\x84\x84a\x1A\x85V[\x15a&\xBFW_\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,s\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\x82Q_\x91\x14\x80\x15a,\xBCWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` aC\x18_9_Q\x90_R\x91\x15\x90\x15\x16\x15a,\xE9WPPPV[\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-G\x83a0\xECV[\x90P_Q` aC\x18_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a-nWa-na@\xDFV[\x84\x82\t\x90P\x82\x80a-\x81Wa-\x81a@\xDFV[\x82\x82\x08\x90P__a-\x91\x83a2\xF4V[\x92P\x90P[\x80a-\xFAW\x84\x80a-\xA9Wa-\xA9a@\xDFV[`\x01\x87\x08\x95P\x84\x80a-\xBDWa-\xBDa@\xDFV[\x86\x87\t\x92P\x84\x80a-\xD0Wa-\xD0a@\xDFV[\x86\x84\t\x92P\x84\x80a-\xE3Wa-\xE3a@\xDFV[\x84\x84\x08\x92Pa-\xF1\x83a2\xF4V[\x92P\x90Pa-\x96V[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.>WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\x18_9_Q\x90_R\x84` \x01Qa.o\x91\x90a@\xF3V[a.\x86\x90_Q` aC\x18_9_Q\x90_Ra?\\V[\x90R\x92\x91PPV[a.\xB5`@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\x80a/\xFEW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0B\x82a3\xBCV[`@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\x15a0\x86Wa\x1F\xF9\x82\x82a4\x1FV[a\x11\xFBa4\x91V[_Q` aC\xB8_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[a0\xCCa0\x8EV[_Q` aC\x98_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a+\xBEa0\x8EV[__a0\xF7\x83a4\xB0V[\x80Q\x90\x91P`0\x81\x14a1\x0CWa1\x0CaA\x12V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1%Wa1%a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1OW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a1\xBEW\x83`\x01a1i\x83\x86a?\\V[a1s\x91\x90a?\\V[\x81Q\x81\x10a1\x83Wa1\x83a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a1\xA0Wa1\xA0a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1TV[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\x15a2NW\x83\x81a1\xFA\x85\x88a?\\V[a2\x04\x91\x90a?IV[\x81Q\x81\x10a2\x14Wa2\x14a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a24Wa24a@\xCBV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a1\xE6V[P_a2Y\x82a7\xFBV[\x90Pa\x01\0_Q` aC\x18_9_Q\x90_R_a2w\x86\x89a?\\V[\x90P_[\x81\x81\x10\x15a2\xE4W_\x88`\x01a2\x91\x84\x86a?\\V[a2\x9B\x91\x90a?\\V[\x81Q\x81\x10a2\xABWa2\xABa@\xCBV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a2\xC3Wa2\xC3a@\xDFV[\x85\x87\t\x95P\x83\x80a2\xD6Wa2\xD6a@\xDFV[\x81\x87\x08\x95PP`\x01\x01a2{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\x18_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\x83a3\x82W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a3\x9BWa3\x98\x83\x82a?\\V[\x92P[\x80\x80a3\xA9Wa3\xA9a@\xDFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a3\xF1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_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;\x91\x90aA&V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a4sW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a4xV[``\x91P[P\x91P\x91Pa4\x88\x85\x83\x83a8bV[\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` \x01a4\xF0\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\x17\x92\x91\x90aA1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a59\x91\x90aA[V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a5c\x90\x83\x90\x83\x90` \x01aAsV[`@\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\x15a5\xD2Wa5\xD2a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a5\xFCW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a6}W\x81\x81\x81Q\x81\x10a6BWa6Ba@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a6_Wa6_a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6'V[P_\x84`@Q` \x01a6\x92\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$W_\x83\x82\x81Q\x81\x10a6\xCBWa6\xCBa@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a6\xE8Wa6\xE8a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\t\x92\x91\x90aA\x97V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a6\xB0V[P\x86\x88\x87`@Q` \x01a7:\x93\x92\x91\x90aA\xBBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a7h\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a7\x89\x8A`\xFF\x8D\x16a?\\V[\x81\x10\x15a7\xEAW\x82\x81\x81Q\x81\x10a7\xA2Wa7\xA2a@\xCBV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a7\xBC\x83\x8Da?IV[\x81Q\x81\x10a7\xCCWa7\xCCa@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a7|V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a8[W\x83\x81\x81Q\x81\x10a8\x1AWa8\x1Aa@\xCBV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a82\x91\x90aA\xEEV[a8=\x90`\x02aB\xE8V[a8G\x91\x90aA\xEEV[a8Q\x90\x83a?IV[\x91P`\x01\x01a7\xFFV[P\x92\x91PPV[``\x82a8wWa8r\x82a8\xB7V[a,\xBCV[\x81Q\x15\x80\x15a8\x8EWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a8[W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[\x80Q\x15a8\xC7W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a8\xF0W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a,\xBCW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\x1DW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a93W__\xFD[a9<\x83a9\x07V[\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\x15a9\x80Wa9\x80a9JV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a9\x96W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\xB8Wa9\xB8a9JV[`@\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\x15a9\xF6W__\xFD[a9\xFEa9^V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\x1DW__\xFD[____a\x01 \x85\x87\x03\x12\x15a::W__\xFD[a:D\x86\x86a9\x86V[\x93Pa:S\x86`\x80\x87\x01a9\xE6V[\x92Pa:b\x86`\xC0\x87\x01a9\xE6V[\x91Pa:qa\x01\0\x86\x01a:\x15V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a:\x8CW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a,\xBCW__\xFD[_` \x82\x84\x03\x12\x15a:\xB2W__\xFD[a,\xBC\x82a9\x07V[_` \x82\x84\x03\x12\x15a:\xCBW__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a:\xE1W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\0Wa;\0a9JV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;.Wa;.a9JV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;EW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a;wW__\xFD[a;\x81\x88\x88a9\x86V[\x95Pa;\x90\x88`\x80\x89\x01a9\xE6V[\x94Pa;\x9F\x88`\xC0\x89\x01a9\xE6V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xBAW__\xFD[a;\xC6\x89\x82\x8A\x01a:\xD2V[\x93PPa;\xD6a\x01 \x88\x01a:\x15V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xF1W__\xFD[a;\xFD\x89\x82\x8A\x01a:\xD2V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\x1AW__\xFD[a,\xBC\x82a:\x15V[__`@\x83\x85\x03\x12\x15a<4W__\xFD[\x825\x91Pa<D` \x84\x01a9\x07V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a<^W__\xFD[a<g\x83a9\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x81W__\xFD[a<\x8D\x85\x82\x86\x01a:\xD2V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a<\xABW__\xFD[a<\xB4\x86a9\x07V[\x94Pa<\xC2` \x87\x01a9\x07V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xE3W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a<\xF3W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x08W__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\x1CW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=@W__\xFD[a=J\x85\x85a9\x86V[\x92Pa=Y\x85`\x80\x86\x01a9\xE6V[\x91Pa=h\x85`\xC0\x86\x01a9\xE6V[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a=\x81W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x96W__\xFD[a=\xA2\x84\x82\x85\x01a:\xD2V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a=\xBAW__\xFD[a,\xBC\x83\x83a9\x86V[__`@\x83\x85\x03\x12\x15a=\xD5W__\xFD[a=\xDE\x83a9\x07V[\x91Pa<D` \x84\x01a9\x07V[____a\x01 \x85\x87\x03\x12\x15a>\0W__\xFD[a>\n\x86\x86a9\x86V[\x93Pa>\x19\x86`\x80\x87\x01a9\xE6V[\x92Pa>(\x86`\xC0\x87\x01a9\xE6V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>CW__\xFD[a>O\x87\x82\x88\x01a:\xD2V[\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_a,\xBC` \x83\x01\x84a>[V[____`\x80\x85\x87\x03\x12\x15a>\xAEW__\xFD[a>\xB7\x85a9\x07V[\x93Pa>\xC5` \x86\x01a9\x07V[\x92P`@\x85\x015\x91Pa:q``\x86\x01a9\x07V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\x11WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?.W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?5V[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?5V[\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?\xD6a\x01`\x83\x01\x85a>[V[\x82\x81\x03a\x01@\x84\x01Ra?\xE9\x81\x85a>[V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@1Wa@1a?5V[`\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_a@\x96a\x01 \x83\x01\x84a>[V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a=\xA2a@\xC5\x83\x86a@\xA0V[\x84a@\xA0V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\rWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a,\xBC\x82\x84a@\xA0V[_aA<\x82\x85a@\xA0V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aAf\x82\x84a@\xA0V[_\x81R`\x01\x01\x93\x92PPPV[_aA~\x82\x85a@\xA0V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aA\xA2\x82\x85a@\xA0V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aA\xC6\x82\x86a@\xA0V[`\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?5V[`\x01\x81[`\x01\x84\x11\x15aB@W\x80\x85\x04\x81\x11\x15aB$WaB$a?5V[`\x01\x84\x16\x15aB2W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\tV[\x93P\x93\x91PPV[_\x82aBVWP`\x01a\x0BLV[\x81aBbWP_a\x0BLV[\x81`\x01\x81\x14aBxW`\x02\x81\x14aB\x82WaB\x9EV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aB\x93WaB\x93a?5V[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aB\xC1WP\x81\x81\na\x0BLV[aB\xCD_\x19\x84\x84aB\x05V[\x80_\x19\x04\x82\x11\x15aB\xE0WaB\xE0a?5V[\x02\x93\x92PPPV[_a,\xBC\x83\x83aBHV\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\x1C\0\n",
3805    );
3806    /// The runtime bytecode of the contract, as deployed on the network.
3807    ///
3808    /// ```text
3809    ///0x608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b506103896103843660046138e0565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b8366004613922565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613a26565b610d38565b348015610414575f5ffd5b506103bd610423366004613a7c565b610d51565b348015610433575f5ffd5b506103bd610442366004613aa2565b610de5565b348015610452575f5ffd5b50610466610461366004613abb565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613b61565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613c0a565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613c23565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613c23565b611209565b348015610510575f5ffd5b506103bd61051f366004613abb565b611231565b34801561052f575f5ffd5b506103bd61053e366004613c0a565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613abb565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d1366004613922565b61148f565b6103bd6105e4366004613c4d565b611700565b3480156105f4575f5ffd5b506103bd610603366004613c97565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613d2d565b348015610641575f5ffd5b505f5160206143985f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613abb565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613d71565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613c23565b611a85565b34801561077b575f5ffd5b5061046661078a366004613daa565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613aa2565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613dc4565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613aa2565b611b15565b348015610886575f5ffd5b506103bd610895366004613dec565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613e89565b3480156108e2575f5ffd5b506103896108f1366004613abb565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613aa2565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613dc4565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613e9b565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613dc4565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613c23565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613d71565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f5160206143585f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613aa2565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613aa2565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613eee565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613f1e565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613f49565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613f49565b9250508190555082600b5f828254610cde9190613f49565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490613f5c565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f5160206143785f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a8787612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a61230c565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a6123a1565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613eda565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613eda565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90613f6f565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb82826123c5565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826123e1565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613f49565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff1683613ff6565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f5160206143585f395f51905f5261148481612178565b61148c612414565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a83614010565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190613f5c565b90915550506008545f906115f79042613f49565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490613f5c565b9250508190555084600b5f82825461169f9190613f5c565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b611708612473565b61171182612517565b6111fb8282612521565b6117236125dd565b5f5160206143b85f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee61260f565b6117f6612617565b61180d5f5160206143585f395f51905f5288612627565b506118185f87612627565b505f611822611a57565b9050806001600160a01b0316876001600160a01b03161461184657611846876126c8565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612738565b61188f866128cd565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e961295c565b505f5160206143385f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613f49565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490613f5c565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6125dd565b6040516317d5c96560e11b815260040160405180910390fd5b5f5160206143585f395f51905f526119fb81612178565b61148c6129a5565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613e89565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f5160206143785f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f8585612293565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd181858861230c565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d32886123a1565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d94949392919061403a565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee0866129ed565b611ee861260f565b611ef06129fe565b611efb898989612aef565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612b9a565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612bb6565b505050565b6120085f846123c5565b61201183612bb6565b61201b5f82612bf0565b50505050565b5f5160206143985f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613eda565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613eda565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612c69565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613eda565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b604080518082019091525f80825260208201526122758282612ca2565b156111fb576040516306cf438f60e01b815260040160405180910390fd5b60045f61229f84611abb565b815260208101919091526040015f205460ff16156122cf5760405162da8a5760e11b815260040160405180910390fd5b600e5f6122db836123a1565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b61231582612cc3565b5f6040518060600160405280602481526020016142f46024913990505f84826040516020016123459291906140b7565b60405160208183030381529060405290505f61236082612d2a565b905061237d818561237088612e17565b612378612e8e565b612f5b565b6123995760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b6123ce82610f35565b6123d781612178565b61201b8383612627565b6001600160a01b038116331461240a5760405163334bd91960e11b815260040160405180910390fd5b611ff98282612bf0565b61241c61300a565b5f5160206143985f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806124f957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166124ed5f5160206143385f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561257b575060408051601f3d908101601f1916820190925261257891810190613f1e565b60015b6125a357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143385f395f51905f5281146125d357604051632a87526960e21b815260048101829052602401610c43565b611ff98383613039565b336125e6611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b61205161308e565b61261f61308e565b6120516130c4565b5f5f5160206143785f395f51905f526126408484611a85565b6126bf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556126753390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f838383818110612755576127556140cb565b61276b9260206040909202019081019150613aa2565b90505f848484818110612780576127806140cb565b90506040020160200160208101906127989190613c0a565b905061271061ffff821611156127c15760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156127f2576127f2613eda565b036128105760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561285157506001600160a01b0383165f908152600d602052604090205461ffff16155b839061287c5760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff1916921691909117815590516001918201550161273a565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612913573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190613f1e565b81111561295757604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b6129ad612021565b5f5160206143985f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612455565b6129f561308e565b61148c816130e4565b5f5160206143b85f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612a2f5750825b90505f826001600160401b03166001148015612a4a5750303b155b905081158015612a58575080155b15612a765760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612aa057845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612b165760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612b3d5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612b925760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612ba382610f35565b612bac81612178565b61201b8383612bf0565b612bbe6125dd565b6001600160a01b038116612be757604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c816126c8565b5f5f5160206143785f395f51905f52612c098484611a85565b156126bf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612c738282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805182515f91148015612cbc575081602001518360200151145b9392505050565b805160208201515f915f5160206143185f395f51905f52911590151615612ce957505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612d47836130ec565b90505f5160206143185f395f51905f5260035f8284850990508280612d6e57612d6e6140df565b84820990508280612d8157612d816140df565b82820890505f5f612d91836132f4565b925090505b80612dfa578480612da957612da96140df565b6001870895508480612dbd57612dbd6140df565b86870992508480612dd057612dd06140df565b86840992508480612de357612de36140df565b8484089250612df1836132f4565b92509050612d96565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612e3e575090565b6040518060400160405280835f015181526020015f5160206143185f395f51905f528460200151612e6f91906140f3565b612e86905f5160206143185f395f51905f52613f5c565b905292915050565b612eb560405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f51915080612ffe5760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f5160206143985f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b613042826133bc565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561308657611ff9828261341f565b6111fb613491565b5f5160206143b85f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b6130cc61308e565b5f5160206143985f395f51905f52805460ff19169055565b612bbe61308e565b5f5f6130f7836134b0565b80519091506030811461310c5761310c614112565b5f816001600160401b038111156131255761312561394a565b6040519080825280601f01601f19166020018201604052801561314f576020820181803683370190505b5090505f5b828110156131be578360016131698386613f5c565b6131739190613f5c565b81518110613183576131836140cb565b602001015160f81c60f81b8282815181106131a0576131a06140cb565b60200101906001600160f81b03191690815f1a905350600101613154565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b8281101561324e5783816131fa8588613f5c565b6132049190613f49565b81518110613214576132146140cb565b602001015160f81c60f81b60f81c828281518110613234576132346140cb565b60ff909216602092830291909101909101526001016131e6565b505f613259826137fb565b90506101005f5160206143185f395f51905f525f6132778689613f5c565b90505f5b818110156132e4575f8860016132918486613f5c565b61329b9190613f5c565b815181106132ab576132ab6140cb565b016020015160f81c905083806132c3576132c36140df565b858709955083806132d6576132d66140df565b81870895505060010161327b565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143185f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361338257604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b111561339b576133988382613f5c565b92505b80806133a9576133a96140df565b8384099690961496919550909350505050565b806001600160a01b03163b5f036133f157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143385f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161343b9190614126565b5f60405180830381855af49150503d805f8114613473576040519150601f19603f3d011682016040523d82523d5f602084013e613478565b606091505b5091509150613488858383613862565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f908460208201818036833701905050905080866040516020016134f09291906140b7565b6040516020818303038152906040529050808460f81b604051602001613517929190614131565b604051602081830303815290604052905080604051602001613539919061415b565b60408051601f1981840301815290829052915061010160f01b906135639083908390602001614173565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b038111156135d2576135d261394a565b6040519080825280601f01601f1916602001820160405280156135fc576020820181803683370190505b5090505f8260405160200161361391815260200190565b60408051601f1981840301815291905290505f5b815181101561367d57818181518110613642576136426140cb565b602001015160f81c60f81b83828151811061365f5761365f6140cb565b60200101906001600160f81b03191690815f1a905350600101613627565b505f8460405160200161369291815260200190565b60408051601f19818403018152602083019091525f80835291985091505b89811015613724575f8382815181106136cb576136cb6140cb565b602001015160f81c60f81b8383815181106136e8576136e86140cb565b602001015160f81c60f81b1890508881604051602001613709929190614197565b60408051601f198184030181529190529850506001016136b0565b5086888760405160200161373a939291906141bb565b6040516020818303038152906040529650868051906020012093508360405160200161376891815260200190565b60408051601f1981840301815291905291505f5b6137898a60ff8d16613f5c565b8110156137ea578281815181106137a2576137a26140cb565b01602001516001600160f81b031916846137bc838d613f49565b815181106137cc576137cc6140cb565b60200101906001600160f81b03191690815f1a90535060010161377c565b50919b9a5050505050505050505050565b5f80805b835181101561385b5783818151811061381a5761381a6140cb565b602002602001015160ff1681600861383291906141ee565b61383d9060026142e8565b61384791906141ee565b6138519083613f49565b91506001016137ff565b5092915050565b60608261387757613872826138b7565b612cbc565b815115801561388e57506001600160a01b0384163b155b1561385b57604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b8051156138c75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156138f0575f5ffd5b81356001600160e01b031981168114612cbc575f5ffd5b80356001600160a01b038116811461391d575f5ffd5b919050565b5f5f60408385031215613933575f5ffd5b61393c83613907565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156139805761398061394a565b60405290565b5f60808284031215613996575f5ffd5b604051608081016001600160401b03811182821017156139b8576139b861394a565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f604082840312156139f6575f5ffd5b6139fe61395e565b823581526020928301359281019290925250919050565b803561ffff8116811461391d575f5ffd5b5f5f5f5f6101208587031215613a3a575f5ffd5b613a448686613986565b9350613a5386608087016139e6565b9250613a628660c087016139e6565b9150613a716101008601613a15565b905092959194509250565b5f60208284031215613a8c575f5ffd5b81356001600160401b0381168114612cbc575f5ffd5b5f60208284031215613ab2575f5ffd5b612cbc82613907565b5f60208284031215613acb575f5ffd5b5035919050565b5f82601f830112613ae1575f5ffd5b8135602083015f5f6001600160401b03841115613b0057613b0061394a565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613b2e57613b2e61394a565b604052838152905080828401871015613b45575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613b77575f5ffd5b613b818888613986565b9550613b9088608089016139e6565b9450613b9f8860c089016139e6565b93506101008701356001600160401b03811115613bba575f5ffd5b613bc689828a01613ad2565b935050613bd66101208801613a15565b91506101408701356001600160401b03811115613bf1575f5ffd5b613bfd89828a01613ad2565b9150509295509295509295565b5f60208284031215613c1a575f5ffd5b612cbc82613a15565b5f5f60408385031215613c34575f5ffd5b82359150613c4460208401613907565b90509250929050565b5f5f60408385031215613c5e575f5ffd5b613c6783613907565b915060208301356001600160401b03811115613c81575f5ffd5b613c8d85828601613ad2565b9150509250929050565b5f5f5f5f5f60808688031215613cab575f5ffd5b613cb486613907565b9450613cc260208701613907565b93506040860135925060608601356001600160401b03811115613ce3575f5ffd5b8601601f81018813613cf3575f5ffd5b80356001600160401b03811115613d08575f5ffd5b8860208260061b8401011115613d1c575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613d40575f5ffd5b613d4a8585613986565b9250613d5985608086016139e6565b9150613d688560c086016139e6565b90509250925092565b5f60208284031215613d81575f5ffd5b81356001600160401b03811115613d96575f5ffd5b613da284828501613ad2565b949350505050565b5f60808284031215613dba575f5ffd5b612cbc8383613986565b5f5f60408385031215613dd5575f5ffd5b613dde83613907565b9150613c4460208401613907565b5f5f5f5f6101208587031215613e00575f5ffd5b613e0a8686613986565b9350613e1986608087016139e6565b9250613e288660c087016139e6565b91506101008501356001600160401b03811115613e43575f5ffd5b613e4f87828801613ad2565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612cbc6020830184613e5b565b5f5f5f5f60808587031215613eae575f5ffd5b613eb785613907565b9350613ec560208601613907565b925060408501359150613a7160608601613907565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613f1157634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613f2e575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613f35565b81810381811115610b4c57610b4c613f35565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f613fd6610160830185613e5b565b828103610140840152613fe98185613e5b565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613f35565b5f6001600160401b0382166001600160401b03810361403157614031613f35565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f614096610120830184613e5b565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613da26140c583866140a0565b846140a0565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261410d57634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f612cbc82846140a0565b5f61413c82856140a0565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61416682846140a0565b5f81526001019392505050565b5f61417e82856140a0565b6001600160f01b03199390931683525050600201919050565b5f6141a282856140a0565b6001600160f81b03199390931683525050600101919050565b5f6141c682866140a0565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613f35565b6001815b60018411156142405780850481111561422457614224613f35565b600184161561423257908102905b60019390931c928002614209565b935093915050565b5f8261425657506001610b4c565b8161426257505f610b4c565b816001811461427857600281146142825761429e565b6001915050610b4c565b60ff84111561429357614293613f35565b50506001821b610b4c565b5060208310610133831016604e8410600b84101617156142c1575081810a610b4c565b6142cd5f198484614205565b805f19048211156142e0576142e0613f35565b029392505050565b5f612cbc838361424856fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
3810    /// ```
3811    #[rustfmt::skip]
3812    #[allow(clippy::all)]
3813    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3814        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`\x04a8\xE0V[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\"V[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:&V[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a:|V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a:\xA2V[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a:\xBBV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a;aV[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\nV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<#V[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<#V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a:\xBBV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\nV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a:\xBBV[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\"V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a<MV[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a<\x97V[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=-V[4\x80\x15a\x06AW__\xFD[P_Q` aC\x98_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a:\xBBV[`\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=qV[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<#V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a=\xAAV[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:\xA2V[`\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=\xC4V[`\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:\xA2V[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a=\xECV[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>\x89V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a:\xBBV[`\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:\xA2V[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a=\xC4V[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>\x9BV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a=\xC4V[`\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<#V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a=qV[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` aCX_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a:\xA2V[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a:\xA2V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a>\xEEV[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?\x1EV[\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?IV[\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?IV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?IV[\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?\\V[\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` aCx_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\"\x93V[`@\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#\x0CV[\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#\xA1V[\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>\xDAV[\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>\xDAV[\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?oV[`@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#\xC5V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a#\xE1V[_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?IV[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?\xF6V[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` aCX_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\x14V[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@\x10V[\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?\\V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?IV[`@\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?\\V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a?\\V[\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$sV[a\x17\x11\x82a%\x17V[a\x11\xFB\x82\x82a%!V[a\x17#a%\xDDV[_Q` aC\xB8_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&\x0FV[a\x17\xF6a&\x17V[a\x18\r_Q` aCX_9_Q\x90_R\x88a&'V[Pa\x18\x18_\x87a&'V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a&\xC8V[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'8V[a\x18\x8F\x86a(\xCDV[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` aC8_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?IV[`\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?\\V[\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%\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aCX_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca)\xA5V[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>\x89V[\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` aCx_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\"\x93V[`@\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#\x0CV[\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#\xA1V[\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@:V[`@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` aC\xB8_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)\xEDV[a\x1E\xE8a&\x0FV[a\x1E\xF0a)\xFEV[a\x1E\xFB\x89\x89\x89a*\xEFV[\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+\x9AV[\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+\xB6V[PPPV[a \x08_\x84a#\xC5V[a \x11\x83a+\xB6V[a \x1B_\x82a+\xF0V[PPPPV[_Q` aC\x98_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>\xDAV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a>\xDAV[\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,iV[_`@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>\xDAV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\"u\x82\x82a,\xA2V[\x15a\x11\xFBW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\x9F\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\"\xCFW`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a\"\xDB\x83a#\xA1V[\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[a#\x15\x82a,\xC3V[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aB\xF4`$\x919\x90P_\x84\x82`@Q` \x01a#E\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a#`\x82a-*V[\x90Pa#}\x81\x85a#p\x88a.\x17V[a#xa.\x8EV[a/[V[a#\x99W`@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#\xCE\x82a\x0F5V[a#\xD7\x81a!xV[a \x1B\x83\x83a&'V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\nW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a+\xF0V[a$\x1Ca0\nV[_Q` aC\x98_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$\xF9WP\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$\xED_Q` aC8_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%{WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra%x\x91\x81\x01\x90a?\x1EV[`\x01[a%\xA3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_9_Q\x90_R\x81\x14a%\xD3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a09V[3a%\xE6a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa0\x8EV[a&\x1Fa0\x8EV[a Qa0\xC4V[__Q` aCx_9_Q\x90_Ra&@\x84\x84a\x1A\x85V[a&\xBFW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua&u3\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'UWa'Ua@\xCBV[a'k\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa:\xA2V[\x90P_\x84\x84\x84\x81\x81\x10a'\x80Wa'\x80a@\xCBV[\x90P`@\x02\x01` \x01` \x81\x01\x90a'\x98\x91\x90a<\nV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a'\xC1W`@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'\xF2Wa'\xF2a>\xDAV[\x03a(\x10W`@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(QWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a(|W`@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':V[`\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)\x13W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a)7\x91\x90a?\x1EV[\x81\x11\x15a)WW`@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)\xADa !V[_Q` aC\x98_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$UV[a)\xF5a0\x8EV[a\x14\x8C\x81a0\xE4V[_Q` aC\xB8_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*/WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a*JWP0;\x15[\x90P\x81\x15\x80\x15a*XWP\x80\x15[\x15a*vW`@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*\xA0W\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+\x16W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a+=W`@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+\x92W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a+\xA3\x82a\x0F5V[a+\xAC\x81a!xV[a \x1B\x83\x83a+\xF0V[a+\xBEa%\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a+\xE7W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a&\xC8V[__Q` aCx_9_Q\x90_Ra,\t\x84\x84a\x1A\x85V[\x15a&\xBFW_\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,s\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\x82Q_\x91\x14\x80\x15a,\xBCWP\x81` \x01Q\x83` \x01Q\x14[\x93\x92PPPV[\x80Q` \x82\x01Q_\x91_Q` aC\x18_9_Q\x90_R\x91\x15\x90\x15\x16\x15a,\xE9WPPPV[\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-G\x83a0\xECV[\x90P_Q` aC\x18_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a-nWa-na@\xDFV[\x84\x82\t\x90P\x82\x80a-\x81Wa-\x81a@\xDFV[\x82\x82\x08\x90P__a-\x91\x83a2\xF4V[\x92P\x90P[\x80a-\xFAW\x84\x80a-\xA9Wa-\xA9a@\xDFV[`\x01\x87\x08\x95P\x84\x80a-\xBDWa-\xBDa@\xDFV[\x86\x87\t\x92P\x84\x80a-\xD0Wa-\xD0a@\xDFV[\x86\x84\t\x92P\x84\x80a-\xE3Wa-\xE3a@\xDFV[\x84\x84\x08\x92Pa-\xF1\x83a2\xF4V[\x92P\x90Pa-\x96V[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.>WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\x18_9_Q\x90_R\x84` \x01Qa.o\x91\x90a@\xF3V[a.\x86\x90_Q` aC\x18_9_Q\x90_Ra?\\V[\x90R\x92\x91PPV[a.\xB5`@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\x80a/\xFEW`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aC\x98_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0B\x82a3\xBCV[`@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\x15a0\x86Wa\x1F\xF9\x82\x82a4\x1FV[a\x11\xFBa4\x91V[_Q` aC\xB8_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[a0\xCCa0\x8EV[_Q` aC\x98_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a+\xBEa0\x8EV[__a0\xF7\x83a4\xB0V[\x80Q\x90\x91P`0\x81\x14a1\x0CWa1\x0CaA\x12V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1%Wa1%a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1OW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a1\xBEW\x83`\x01a1i\x83\x86a?\\V[a1s\x91\x90a?\\V[\x81Q\x81\x10a1\x83Wa1\x83a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a1\xA0Wa1\xA0a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1TV[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\x15a2NW\x83\x81a1\xFA\x85\x88a?\\V[a2\x04\x91\x90a?IV[\x81Q\x81\x10a2\x14Wa2\x14a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a24Wa24a@\xCBV[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a1\xE6V[P_a2Y\x82a7\xFBV[\x90Pa\x01\0_Q` aC\x18_9_Q\x90_R_a2w\x86\x89a?\\V[\x90P_[\x81\x81\x10\x15a2\xE4W_\x88`\x01a2\x91\x84\x86a?\\V[a2\x9B\x91\x90a?\\V[\x81Q\x81\x10a2\xABWa2\xABa@\xCBV[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a2\xC3Wa2\xC3a@\xDFV[\x85\x87\t\x95P\x83\x80a2\xD6Wa2\xD6a@\xDFV[\x81\x87\x08\x95PP`\x01\x01a2{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\x18_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\x83a3\x82W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a3\x9BWa3\x98\x83\x82a?\\V[\x92P[\x80\x80a3\xA9Wa3\xA9a@\xDFV[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a3\xF1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC8_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;\x91\x90aA&V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a4sW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a4xV[``\x91P[P\x91P\x91Pa4\x88\x85\x83\x83a8bV[\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` \x01a4\xF0\x92\x91\x90a@\xB7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\x17\x92\x91\x90aA1V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a59\x91\x90aA[V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a5c\x90\x83\x90\x83\x90` \x01aAsV[`@\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\x15a5\xD2Wa5\xD2a9JV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a5\xFCW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a6}W\x81\x81\x81Q\x81\x10a6BWa6Ba@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a6_Wa6_a@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6'V[P_\x84`@Q` \x01a6\x92\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$W_\x83\x82\x81Q\x81\x10a6\xCBWa6\xCBa@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a6\xE8Wa6\xE8a@\xCBV[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\t\x92\x91\x90aA\x97V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a6\xB0V[P\x86\x88\x87`@Q` \x01a7:\x93\x92\x91\x90aA\xBBV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a7h\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a7\x89\x8A`\xFF\x8D\x16a?\\V[\x81\x10\x15a7\xEAW\x82\x81\x81Q\x81\x10a7\xA2Wa7\xA2a@\xCBV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a7\xBC\x83\x8Da?IV[\x81Q\x81\x10a7\xCCWa7\xCCa@\xCBV[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a7|V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a8[W\x83\x81\x81Q\x81\x10a8\x1AWa8\x1Aa@\xCBV[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a82\x91\x90aA\xEEV[a8=\x90`\x02aB\xE8V[a8G\x91\x90aA\xEEV[a8Q\x90\x83a?IV[\x91P`\x01\x01a7\xFFV[P\x92\x91PPV[``\x82a8wWa8r\x82a8\xB7V[a,\xBCV[\x81Q\x15\x80\x15a8\x8EWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a8[W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[\x80Q\x15a8\xC7W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a8\xF0W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a,\xBCW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\x1DW__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a93W__\xFD[a9<\x83a9\x07V[\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\x15a9\x80Wa9\x80a9JV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a9\x96W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a9\xB8Wa9\xB8a9JV[`@\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\x15a9\xF6W__\xFD[a9\xFEa9^V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\x1DW__\xFD[____a\x01 \x85\x87\x03\x12\x15a::W__\xFD[a:D\x86\x86a9\x86V[\x93Pa:S\x86`\x80\x87\x01a9\xE6V[\x92Pa:b\x86`\xC0\x87\x01a9\xE6V[\x91Pa:qa\x01\0\x86\x01a:\x15V[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a:\x8CW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a,\xBCW__\xFD[_` \x82\x84\x03\x12\x15a:\xB2W__\xFD[a,\xBC\x82a9\x07V[_` \x82\x84\x03\x12\x15a:\xCBW__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a:\xE1W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\0Wa;\0a9JV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;.Wa;.a9JV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;EW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a;wW__\xFD[a;\x81\x88\x88a9\x86V[\x95Pa;\x90\x88`\x80\x89\x01a9\xE6V[\x94Pa;\x9F\x88`\xC0\x89\x01a9\xE6V[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xBAW__\xFD[a;\xC6\x89\x82\x8A\x01a:\xD2V[\x93PPa;\xD6a\x01 \x88\x01a:\x15V[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a;\xF1W__\xFD[a;\xFD\x89\x82\x8A\x01a:\xD2V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\x1AW__\xFD[a,\xBC\x82a:\x15V[__`@\x83\x85\x03\x12\x15a<4W__\xFD[\x825\x91Pa<D` \x84\x01a9\x07V[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a<^W__\xFD[a<g\x83a9\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\x81W__\xFD[a<\x8D\x85\x82\x86\x01a:\xD2V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a<\xABW__\xFD[a<\xB4\x86a9\x07V[\x94Pa<\xC2` \x87\x01a9\x07V[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xE3W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a<\xF3W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x08W__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\x1CW__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=@W__\xFD[a=J\x85\x85a9\x86V[\x92Pa=Y\x85`\x80\x86\x01a9\xE6V[\x91Pa=h\x85`\xC0\x86\x01a9\xE6V[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a=\x81W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x96W__\xFD[a=\xA2\x84\x82\x85\x01a:\xD2V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a=\xBAW__\xFD[a,\xBC\x83\x83a9\x86V[__`@\x83\x85\x03\x12\x15a=\xD5W__\xFD[a=\xDE\x83a9\x07V[\x91Pa<D` \x84\x01a9\x07V[____a\x01 \x85\x87\x03\x12\x15a>\0W__\xFD[a>\n\x86\x86a9\x86V[\x93Pa>\x19\x86`\x80\x87\x01a9\xE6V[\x92Pa>(\x86`\xC0\x87\x01a9\xE6V[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>CW__\xFD[a>O\x87\x82\x88\x01a:\xD2V[\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_a,\xBC` \x83\x01\x84a>[V[____`\x80\x85\x87\x03\x12\x15a>\xAEW__\xFD[a>\xB7\x85a9\x07V[\x93Pa>\xC5` \x86\x01a9\x07V[\x92P`@\x85\x015\x91Pa:q``\x86\x01a9\x07V[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\x11WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?.W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?5V[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?5V[\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?\xD6a\x01`\x83\x01\x85a>[V[\x82\x81\x03a\x01@\x84\x01Ra?\xE9\x81\x85a>[V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@1Wa@1a?5V[`\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_a@\x96a\x01 \x83\x01\x84a>[V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a=\xA2a@\xC5\x83\x86a@\xA0V[\x84a@\xA0V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\rWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a,\xBC\x82\x84a@\xA0V[_aA<\x82\x85a@\xA0V[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aAf\x82\x84a@\xA0V[_\x81R`\x01\x01\x93\x92PPPV[_aA~\x82\x85a@\xA0V[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aA\xA2\x82\x85a@\xA0V[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aA\xC6\x82\x86a@\xA0V[`\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?5V[`\x01\x81[`\x01\x84\x11\x15aB@W\x80\x85\x04\x81\x11\x15aB$WaB$a?5V[`\x01\x84\x16\x15aB2W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\tV[\x93P\x93\x91PPV[_\x82aBVWP`\x01a\x0BLV[\x81aBbWP_a\x0BLV[\x81`\x01\x81\x14aBxW`\x02\x81\x14aB\x82WaB\x9EV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aB\x93WaB\x93a?5V[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aB\xC1WP\x81\x81\na\x0BLV[aB\xCD_\x19\x84\x84aB\x05V[\x80_\x19\x04\x82\x11\x15aB\xE0WaB\xE0a?5V[\x02\x93\x92PPPV[_a,\xBC\x83\x83aBHV\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\x1C\0\n",
3815    );
3816    #[derive(serde::Serialize, serde::Deserialize)]
3817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3818    /**```solidity
3819struct InitialCommission { address validator; uint16 commission; }
3820```*/
3821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3822    #[derive(Clone)]
3823    pub struct InitialCommission {
3824        #[allow(missing_docs)]
3825        pub validator: alloy::sol_types::private::Address,
3826        #[allow(missing_docs)]
3827        pub commission: u16,
3828    }
3829    #[allow(
3830        non_camel_case_types,
3831        non_snake_case,
3832        clippy::pub_underscore_fields,
3833        clippy::style
3834    )]
3835    const _: () = {
3836        use alloy::sol_types as alloy_sol_types;
3837        #[doc(hidden)]
3838        type UnderlyingSolTuple<'a> = (
3839            alloy::sol_types::sol_data::Address,
3840            alloy::sol_types::sol_data::Uint<16>,
3841        );
3842        #[doc(hidden)]
3843        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
3844        #[cfg(test)]
3845        #[allow(dead_code, unreachable_patterns)]
3846        fn _type_assertion(
3847            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3848        ) {
3849            match _t {
3850                alloy_sol_types::private::AssertTypeEq::<
3851                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3852                >(_) => {}
3853            }
3854        }
3855        #[automatically_derived]
3856        #[doc(hidden)]
3857        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
3858            fn from(value: InitialCommission) -> Self {
3859                (value.validator, value.commission)
3860            }
3861        }
3862        #[automatically_derived]
3863        #[doc(hidden)]
3864        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
3865            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3866                Self {
3867                    validator: tuple.0,
3868                    commission: tuple.1,
3869                }
3870            }
3871        }
3872        #[automatically_derived]
3873        impl alloy_sol_types::SolValue for InitialCommission {
3874            type SolType = Self;
3875        }
3876        #[automatically_derived]
3877        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
3878            #[inline]
3879            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3880                (
3881                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3882                        &self.validator,
3883                    ),
3884                    <alloy::sol_types::sol_data::Uint<
3885                        16,
3886                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
3887                )
3888            }
3889            #[inline]
3890            fn stv_abi_encoded_size(&self) -> usize {
3891                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3892                    return size;
3893                }
3894                let tuple = <UnderlyingRustTuple<
3895                    '_,
3896                > as ::core::convert::From<Self>>::from(self.clone());
3897                <UnderlyingSolTuple<
3898                    '_,
3899                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3900            }
3901            #[inline]
3902            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3903                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3904            }
3905            #[inline]
3906            fn stv_abi_encode_packed_to(
3907                &self,
3908                out: &mut alloy_sol_types::private::Vec<u8>,
3909            ) {
3910                let tuple = <UnderlyingRustTuple<
3911                    '_,
3912                > as ::core::convert::From<Self>>::from(self.clone());
3913                <UnderlyingSolTuple<
3914                    '_,
3915                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3916            }
3917            #[inline]
3918            fn stv_abi_packed_encoded_size(&self) -> usize {
3919                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3920                    return size;
3921                }
3922                let tuple = <UnderlyingRustTuple<
3923                    '_,
3924                > as ::core::convert::From<Self>>::from(self.clone());
3925                <UnderlyingSolTuple<
3926                    '_,
3927                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3928            }
3929        }
3930        #[automatically_derived]
3931        impl alloy_sol_types::SolType for InitialCommission {
3932            type RustType = Self;
3933            type Token<'a> = <UnderlyingSolTuple<
3934                'a,
3935            > as alloy_sol_types::SolType>::Token<'a>;
3936            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3937            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3938                '_,
3939            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3940            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3941                '_,
3942            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3943            #[inline]
3944            fn valid_token(token: &Self::Token<'_>) -> bool {
3945                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3946            }
3947            #[inline]
3948            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3949                let tuple = <UnderlyingSolTuple<
3950                    '_,
3951                > as alloy_sol_types::SolType>::detokenize(token);
3952                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3953            }
3954        }
3955        #[automatically_derived]
3956        impl alloy_sol_types::SolStruct for InitialCommission {
3957            const NAME: &'static str = "InitialCommission";
3958            #[inline]
3959            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3960                alloy_sol_types::private::Cow::Borrowed(
3961                    "InitialCommission(address validator,uint16 commission)",
3962                )
3963            }
3964            #[inline]
3965            fn eip712_components() -> alloy_sol_types::private::Vec<
3966                alloy_sol_types::private::Cow<'static, str>,
3967            > {
3968                alloy_sol_types::private::Vec::new()
3969            }
3970            #[inline]
3971            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3972                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3973            }
3974            #[inline]
3975            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3976                [
3977                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
3978                            &self.validator,
3979                        )
3980                        .0,
3981                    <alloy::sol_types::sol_data::Uint<
3982                        16,
3983                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
3984                        .0,
3985                ]
3986                    .concat()
3987            }
3988        }
3989        #[automatically_derived]
3990        impl alloy_sol_types::EventTopic for InitialCommission {
3991            #[inline]
3992            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3993                0usize
3994                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
3995                        &rust.validator,
3996                    )
3997                    + <alloy::sol_types::sol_data::Uint<
3998                        16,
3999                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4000                        &rust.commission,
4001                    )
4002            }
4003            #[inline]
4004            fn encode_topic_preimage(
4005                rust: &Self::RustType,
4006                out: &mut alloy_sol_types::private::Vec<u8>,
4007            ) {
4008                out.reserve(
4009                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4010                );
4011                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
4012                    &rust.validator,
4013                    out,
4014                );
4015                <alloy::sol_types::sol_data::Uint<
4016                    16,
4017                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4018                    &rust.commission,
4019                    out,
4020                );
4021            }
4022            #[inline]
4023            fn encode_topic(
4024                rust: &Self::RustType,
4025            ) -> alloy_sol_types::abi::token::WordToken {
4026                let mut out = alloy_sol_types::private::Vec::new();
4027                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4028                    rust,
4029                    &mut out,
4030                );
4031                alloy_sol_types::abi::token::WordToken(
4032                    alloy_sol_types::private::keccak256(out),
4033                )
4034            }
4035        }
4036    };
4037    #[derive(serde::Serialize, serde::Deserialize)]
4038    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4039    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4040```solidity
4041error AccessControlBadConfirmation();
4042```*/
4043    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4044    #[derive(Clone)]
4045    pub struct AccessControlBadConfirmation;
4046    #[allow(
4047        non_camel_case_types,
4048        non_snake_case,
4049        clippy::pub_underscore_fields,
4050        clippy::style
4051    )]
4052    const _: () = {
4053        use alloy::sol_types as alloy_sol_types;
4054        #[doc(hidden)]
4055        type UnderlyingSolTuple<'a> = ();
4056        #[doc(hidden)]
4057        type UnderlyingRustTuple<'a> = ();
4058        #[cfg(test)]
4059        #[allow(dead_code, unreachable_patterns)]
4060        fn _type_assertion(
4061            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4062        ) {
4063            match _t {
4064                alloy_sol_types::private::AssertTypeEq::<
4065                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4066                >(_) => {}
4067            }
4068        }
4069        #[automatically_derived]
4070        #[doc(hidden)]
4071        impl ::core::convert::From<AccessControlBadConfirmation>
4072        for UnderlyingRustTuple<'_> {
4073            fn from(value: AccessControlBadConfirmation) -> Self {
4074                ()
4075            }
4076        }
4077        #[automatically_derived]
4078        #[doc(hidden)]
4079        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4080        for AccessControlBadConfirmation {
4081            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4082                Self
4083            }
4084        }
4085        #[automatically_derived]
4086        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4087            type Parameters<'a> = UnderlyingSolTuple<'a>;
4088            type Token<'a> = <Self::Parameters<
4089                'a,
4090            > as alloy_sol_types::SolType>::Token<'a>;
4091            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4092            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4093            #[inline]
4094            fn new<'a>(
4095                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4096            ) -> Self {
4097                tuple.into()
4098            }
4099            #[inline]
4100            fn tokenize(&self) -> Self::Token<'_> {
4101                ()
4102            }
4103            #[inline]
4104            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4105                <Self::Parameters<
4106                    '_,
4107                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4108                    .map(Self::new)
4109            }
4110        }
4111    };
4112    #[derive(serde::Serialize, serde::Deserialize)]
4113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4114    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4115```solidity
4116error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4117```*/
4118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4119    #[derive(Clone)]
4120    pub struct AccessControlUnauthorizedAccount {
4121        #[allow(missing_docs)]
4122        pub account: alloy::sol_types::private::Address,
4123        #[allow(missing_docs)]
4124        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4125    }
4126    #[allow(
4127        non_camel_case_types,
4128        non_snake_case,
4129        clippy::pub_underscore_fields,
4130        clippy::style
4131    )]
4132    const _: () = {
4133        use alloy::sol_types as alloy_sol_types;
4134        #[doc(hidden)]
4135        type UnderlyingSolTuple<'a> = (
4136            alloy::sol_types::sol_data::Address,
4137            alloy::sol_types::sol_data::FixedBytes<32>,
4138        );
4139        #[doc(hidden)]
4140        type UnderlyingRustTuple<'a> = (
4141            alloy::sol_types::private::Address,
4142            alloy::sol_types::private::FixedBytes<32>,
4143        );
4144        #[cfg(test)]
4145        #[allow(dead_code, unreachable_patterns)]
4146        fn _type_assertion(
4147            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4148        ) {
4149            match _t {
4150                alloy_sol_types::private::AssertTypeEq::<
4151                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4152                >(_) => {}
4153            }
4154        }
4155        #[automatically_derived]
4156        #[doc(hidden)]
4157        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4158        for UnderlyingRustTuple<'_> {
4159            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4160                (value.account, value.neededRole)
4161            }
4162        }
4163        #[automatically_derived]
4164        #[doc(hidden)]
4165        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4166        for AccessControlUnauthorizedAccount {
4167            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4168                Self {
4169                    account: tuple.0,
4170                    neededRole: tuple.1,
4171                }
4172            }
4173        }
4174        #[automatically_derived]
4175        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4176            type Parameters<'a> = UnderlyingSolTuple<'a>;
4177            type Token<'a> = <Self::Parameters<
4178                'a,
4179            > as alloy_sol_types::SolType>::Token<'a>;
4180            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4181            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4182            #[inline]
4183            fn new<'a>(
4184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4185            ) -> Self {
4186                tuple.into()
4187            }
4188            #[inline]
4189            fn tokenize(&self) -> Self::Token<'_> {
4190                (
4191                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4192                        &self.account,
4193                    ),
4194                    <alloy::sol_types::sol_data::FixedBytes<
4195                        32,
4196                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4197                )
4198            }
4199            #[inline]
4200            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4201                <Self::Parameters<
4202                    '_,
4203                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4204                    .map(Self::new)
4205            }
4206        }
4207    };
4208    #[derive(serde::Serialize, serde::Deserialize)]
4209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4210    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4211```solidity
4212error AddressEmptyCode(address target);
4213```*/
4214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4215    #[derive(Clone)]
4216    pub struct AddressEmptyCode {
4217        #[allow(missing_docs)]
4218        pub target: alloy::sol_types::private::Address,
4219    }
4220    #[allow(
4221        non_camel_case_types,
4222        non_snake_case,
4223        clippy::pub_underscore_fields,
4224        clippy::style
4225    )]
4226    const _: () = {
4227        use alloy::sol_types as alloy_sol_types;
4228        #[doc(hidden)]
4229        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4230        #[doc(hidden)]
4231        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4232        #[cfg(test)]
4233        #[allow(dead_code, unreachable_patterns)]
4234        fn _type_assertion(
4235            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4236        ) {
4237            match _t {
4238                alloy_sol_types::private::AssertTypeEq::<
4239                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4240                >(_) => {}
4241            }
4242        }
4243        #[automatically_derived]
4244        #[doc(hidden)]
4245        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4246            fn from(value: AddressEmptyCode) -> Self {
4247                (value.target,)
4248            }
4249        }
4250        #[automatically_derived]
4251        #[doc(hidden)]
4252        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4253            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4254                Self { target: tuple.0 }
4255            }
4256        }
4257        #[automatically_derived]
4258        impl alloy_sol_types::SolError for AddressEmptyCode {
4259            type Parameters<'a> = UnderlyingSolTuple<'a>;
4260            type Token<'a> = <Self::Parameters<
4261                'a,
4262            > as alloy_sol_types::SolType>::Token<'a>;
4263            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4264            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4265            #[inline]
4266            fn new<'a>(
4267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4268            ) -> Self {
4269                tuple.into()
4270            }
4271            #[inline]
4272            fn tokenize(&self) -> Self::Token<'_> {
4273                (
4274                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4275                        &self.target,
4276                    ),
4277                )
4278            }
4279            #[inline]
4280            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4281                <Self::Parameters<
4282                    '_,
4283                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4284                    .map(Self::new)
4285            }
4286        }
4287    };
4288    #[derive(serde::Serialize, serde::Deserialize)]
4289    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4290    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4291```solidity
4292error BLSSigVerificationFailed();
4293```*/
4294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4295    #[derive(Clone)]
4296    pub struct BLSSigVerificationFailed;
4297    #[allow(
4298        non_camel_case_types,
4299        non_snake_case,
4300        clippy::pub_underscore_fields,
4301        clippy::style
4302    )]
4303    const _: () = {
4304        use alloy::sol_types as alloy_sol_types;
4305        #[doc(hidden)]
4306        type UnderlyingSolTuple<'a> = ();
4307        #[doc(hidden)]
4308        type UnderlyingRustTuple<'a> = ();
4309        #[cfg(test)]
4310        #[allow(dead_code, unreachable_patterns)]
4311        fn _type_assertion(
4312            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4313        ) {
4314            match _t {
4315                alloy_sol_types::private::AssertTypeEq::<
4316                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4317                >(_) => {}
4318            }
4319        }
4320        #[automatically_derived]
4321        #[doc(hidden)]
4322        impl ::core::convert::From<BLSSigVerificationFailed>
4323        for UnderlyingRustTuple<'_> {
4324            fn from(value: BLSSigVerificationFailed) -> Self {
4325                ()
4326            }
4327        }
4328        #[automatically_derived]
4329        #[doc(hidden)]
4330        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4331        for BLSSigVerificationFailed {
4332            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4333                Self
4334            }
4335        }
4336        #[automatically_derived]
4337        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4338            type Parameters<'a> = UnderlyingSolTuple<'a>;
4339            type Token<'a> = <Self::Parameters<
4340                'a,
4341            > as alloy_sol_types::SolType>::Token<'a>;
4342            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4343            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4344            #[inline]
4345            fn new<'a>(
4346                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4347            ) -> Self {
4348                tuple.into()
4349            }
4350            #[inline]
4351            fn tokenize(&self) -> Self::Token<'_> {
4352                ()
4353            }
4354            #[inline]
4355            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4356                <Self::Parameters<
4357                    '_,
4358                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4359                    .map(Self::new)
4360            }
4361        }
4362    };
4363    #[derive(serde::Serialize, serde::Deserialize)]
4364    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4365    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
4366```solidity
4367error BN254PairingProdFailed();
4368```*/
4369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4370    #[derive(Clone)]
4371    pub struct BN254PairingProdFailed;
4372    #[allow(
4373        non_camel_case_types,
4374        non_snake_case,
4375        clippy::pub_underscore_fields,
4376        clippy::style
4377    )]
4378    const _: () = {
4379        use alloy::sol_types as alloy_sol_types;
4380        #[doc(hidden)]
4381        type UnderlyingSolTuple<'a> = ();
4382        #[doc(hidden)]
4383        type UnderlyingRustTuple<'a> = ();
4384        #[cfg(test)]
4385        #[allow(dead_code, unreachable_patterns)]
4386        fn _type_assertion(
4387            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4388        ) {
4389            match _t {
4390                alloy_sol_types::private::AssertTypeEq::<
4391                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4392                >(_) => {}
4393            }
4394        }
4395        #[automatically_derived]
4396        #[doc(hidden)]
4397        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4398            fn from(value: BN254PairingProdFailed) -> Self {
4399                ()
4400            }
4401        }
4402        #[automatically_derived]
4403        #[doc(hidden)]
4404        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4405            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4406                Self
4407            }
4408        }
4409        #[automatically_derived]
4410        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4411            type Parameters<'a> = UnderlyingSolTuple<'a>;
4412            type Token<'a> = <Self::Parameters<
4413                'a,
4414            > as alloy_sol_types::SolType>::Token<'a>;
4415            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4416            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4417            #[inline]
4418            fn new<'a>(
4419                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4420            ) -> Self {
4421                tuple.into()
4422            }
4423            #[inline]
4424            fn tokenize(&self) -> Self::Token<'_> {
4425                ()
4426            }
4427            #[inline]
4428            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4429                <Self::Parameters<
4430                    '_,
4431                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4432                    .map(Self::new)
4433            }
4434        }
4435    };
4436    #[derive(serde::Serialize, serde::Deserialize)]
4437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4438    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4439```solidity
4440error BlsKeyAlreadyUsed();
4441```*/
4442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4443    #[derive(Clone)]
4444    pub struct BlsKeyAlreadyUsed;
4445    #[allow(
4446        non_camel_case_types,
4447        non_snake_case,
4448        clippy::pub_underscore_fields,
4449        clippy::style
4450    )]
4451    const _: () = {
4452        use alloy::sol_types as alloy_sol_types;
4453        #[doc(hidden)]
4454        type UnderlyingSolTuple<'a> = ();
4455        #[doc(hidden)]
4456        type UnderlyingRustTuple<'a> = ();
4457        #[cfg(test)]
4458        #[allow(dead_code, unreachable_patterns)]
4459        fn _type_assertion(
4460            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4461        ) {
4462            match _t {
4463                alloy_sol_types::private::AssertTypeEq::<
4464                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4465                >(_) => {}
4466            }
4467        }
4468        #[automatically_derived]
4469        #[doc(hidden)]
4470        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4471            fn from(value: BlsKeyAlreadyUsed) -> Self {
4472                ()
4473            }
4474        }
4475        #[automatically_derived]
4476        #[doc(hidden)]
4477        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4478            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4479                Self
4480            }
4481        }
4482        #[automatically_derived]
4483        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4484            type Parameters<'a> = UnderlyingSolTuple<'a>;
4485            type Token<'a> = <Self::Parameters<
4486                'a,
4487            > as alloy_sol_types::SolType>::Token<'a>;
4488            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4489            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4490            #[inline]
4491            fn new<'a>(
4492                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4493            ) -> Self {
4494                tuple.into()
4495            }
4496            #[inline]
4497            fn tokenize(&self) -> Self::Token<'_> {
4498                ()
4499            }
4500            #[inline]
4501            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4502                <Self::Parameters<
4503                    '_,
4504                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4505                    .map(Self::new)
4506            }
4507        }
4508    };
4509    #[derive(serde::Serialize, serde::Deserialize)]
4510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4511    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
4512```solidity
4513error CommissionAlreadyInitialized(address validator);
4514```*/
4515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4516    #[derive(Clone)]
4517    pub struct CommissionAlreadyInitialized {
4518        #[allow(missing_docs)]
4519        pub validator: alloy::sol_types::private::Address,
4520    }
4521    #[allow(
4522        non_camel_case_types,
4523        non_snake_case,
4524        clippy::pub_underscore_fields,
4525        clippy::style
4526    )]
4527    const _: () = {
4528        use alloy::sol_types as alloy_sol_types;
4529        #[doc(hidden)]
4530        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4531        #[doc(hidden)]
4532        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4533        #[cfg(test)]
4534        #[allow(dead_code, unreachable_patterns)]
4535        fn _type_assertion(
4536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4537        ) {
4538            match _t {
4539                alloy_sol_types::private::AssertTypeEq::<
4540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4541                >(_) => {}
4542            }
4543        }
4544        #[automatically_derived]
4545        #[doc(hidden)]
4546        impl ::core::convert::From<CommissionAlreadyInitialized>
4547        for UnderlyingRustTuple<'_> {
4548            fn from(value: CommissionAlreadyInitialized) -> Self {
4549                (value.validator,)
4550            }
4551        }
4552        #[automatically_derived]
4553        #[doc(hidden)]
4554        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4555        for CommissionAlreadyInitialized {
4556            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4557                Self { validator: tuple.0 }
4558            }
4559        }
4560        #[automatically_derived]
4561        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
4562            type Parameters<'a> = UnderlyingSolTuple<'a>;
4563            type Token<'a> = <Self::Parameters<
4564                'a,
4565            > as alloy_sol_types::SolType>::Token<'a>;
4566            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
4567            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
4568            #[inline]
4569            fn new<'a>(
4570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4571            ) -> Self {
4572                tuple.into()
4573            }
4574            #[inline]
4575            fn tokenize(&self) -> Self::Token<'_> {
4576                (
4577                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4578                        &self.validator,
4579                    ),
4580                )
4581            }
4582            #[inline]
4583            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4584                <Self::Parameters<
4585                    '_,
4586                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4587                    .map(Self::new)
4588            }
4589        }
4590    };
4591    #[derive(serde::Serialize, serde::Deserialize)]
4592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4593    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
4594```solidity
4595error CommissionIncreaseExceedsMax();
4596```*/
4597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4598    #[derive(Clone)]
4599    pub struct CommissionIncreaseExceedsMax;
4600    #[allow(
4601        non_camel_case_types,
4602        non_snake_case,
4603        clippy::pub_underscore_fields,
4604        clippy::style
4605    )]
4606    const _: () = {
4607        use alloy::sol_types as alloy_sol_types;
4608        #[doc(hidden)]
4609        type UnderlyingSolTuple<'a> = ();
4610        #[doc(hidden)]
4611        type UnderlyingRustTuple<'a> = ();
4612        #[cfg(test)]
4613        #[allow(dead_code, unreachable_patterns)]
4614        fn _type_assertion(
4615            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4616        ) {
4617            match _t {
4618                alloy_sol_types::private::AssertTypeEq::<
4619                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4620                >(_) => {}
4621            }
4622        }
4623        #[automatically_derived]
4624        #[doc(hidden)]
4625        impl ::core::convert::From<CommissionIncreaseExceedsMax>
4626        for UnderlyingRustTuple<'_> {
4627            fn from(value: CommissionIncreaseExceedsMax) -> Self {
4628                ()
4629            }
4630        }
4631        #[automatically_derived]
4632        #[doc(hidden)]
4633        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4634        for CommissionIncreaseExceedsMax {
4635            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4636                Self
4637            }
4638        }
4639        #[automatically_derived]
4640        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
4641            type Parameters<'a> = UnderlyingSolTuple<'a>;
4642            type Token<'a> = <Self::Parameters<
4643                'a,
4644            > as alloy_sol_types::SolType>::Token<'a>;
4645            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
4646            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
4647            #[inline]
4648            fn new<'a>(
4649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4650            ) -> Self {
4651                tuple.into()
4652            }
4653            #[inline]
4654            fn tokenize(&self) -> Self::Token<'_> {
4655                ()
4656            }
4657            #[inline]
4658            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4659                <Self::Parameters<
4660                    '_,
4661                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4662                    .map(Self::new)
4663            }
4664        }
4665    };
4666    #[derive(serde::Serialize, serde::Deserialize)]
4667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4668    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
4669```solidity
4670error CommissionUnchanged();
4671```*/
4672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4673    #[derive(Clone)]
4674    pub struct CommissionUnchanged;
4675    #[allow(
4676        non_camel_case_types,
4677        non_snake_case,
4678        clippy::pub_underscore_fields,
4679        clippy::style
4680    )]
4681    const _: () = {
4682        use alloy::sol_types as alloy_sol_types;
4683        #[doc(hidden)]
4684        type UnderlyingSolTuple<'a> = ();
4685        #[doc(hidden)]
4686        type UnderlyingRustTuple<'a> = ();
4687        #[cfg(test)]
4688        #[allow(dead_code, unreachable_patterns)]
4689        fn _type_assertion(
4690            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4691        ) {
4692            match _t {
4693                alloy_sol_types::private::AssertTypeEq::<
4694                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4695                >(_) => {}
4696            }
4697        }
4698        #[automatically_derived]
4699        #[doc(hidden)]
4700        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
4701            fn from(value: CommissionUnchanged) -> Self {
4702                ()
4703            }
4704        }
4705        #[automatically_derived]
4706        #[doc(hidden)]
4707        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
4708            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4709                Self
4710            }
4711        }
4712        #[automatically_derived]
4713        impl alloy_sol_types::SolError for CommissionUnchanged {
4714            type Parameters<'a> = UnderlyingSolTuple<'a>;
4715            type Token<'a> = <Self::Parameters<
4716                'a,
4717            > as alloy_sol_types::SolType>::Token<'a>;
4718            const SIGNATURE: &'static str = "CommissionUnchanged()";
4719            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
4720            #[inline]
4721            fn new<'a>(
4722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4723            ) -> Self {
4724                tuple.into()
4725            }
4726            #[inline]
4727            fn tokenize(&self) -> Self::Token<'_> {
4728                ()
4729            }
4730            #[inline]
4731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4732                <Self::Parameters<
4733                    '_,
4734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4735                    .map(Self::new)
4736            }
4737        }
4738    };
4739    #[derive(serde::Serialize, serde::Deserialize)]
4740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4741    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
4742```solidity
4743error CommissionUpdateTooSoon();
4744```*/
4745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4746    #[derive(Clone)]
4747    pub struct CommissionUpdateTooSoon;
4748    #[allow(
4749        non_camel_case_types,
4750        non_snake_case,
4751        clippy::pub_underscore_fields,
4752        clippy::style
4753    )]
4754    const _: () = {
4755        use alloy::sol_types as alloy_sol_types;
4756        #[doc(hidden)]
4757        type UnderlyingSolTuple<'a> = ();
4758        #[doc(hidden)]
4759        type UnderlyingRustTuple<'a> = ();
4760        #[cfg(test)]
4761        #[allow(dead_code, unreachable_patterns)]
4762        fn _type_assertion(
4763            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4764        ) {
4765            match _t {
4766                alloy_sol_types::private::AssertTypeEq::<
4767                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4768                >(_) => {}
4769            }
4770        }
4771        #[automatically_derived]
4772        #[doc(hidden)]
4773        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
4774            fn from(value: CommissionUpdateTooSoon) -> Self {
4775                ()
4776            }
4777        }
4778        #[automatically_derived]
4779        #[doc(hidden)]
4780        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
4781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4782                Self
4783            }
4784        }
4785        #[automatically_derived]
4786        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
4787            type Parameters<'a> = UnderlyingSolTuple<'a>;
4788            type Token<'a> = <Self::Parameters<
4789                'a,
4790            > as alloy_sol_types::SolType>::Token<'a>;
4791            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
4792            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
4793            #[inline]
4794            fn new<'a>(
4795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4796            ) -> Self {
4797                tuple.into()
4798            }
4799            #[inline]
4800            fn tokenize(&self) -> Self::Token<'_> {
4801                ()
4802            }
4803            #[inline]
4804            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4805                <Self::Parameters<
4806                    '_,
4807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4808                    .map(Self::new)
4809            }
4810        }
4811    };
4812    #[derive(serde::Serialize, serde::Deserialize)]
4813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4814    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
4815```solidity
4816error DefaultAdminCannotBeRenounced();
4817```*/
4818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4819    #[derive(Clone)]
4820    pub struct DefaultAdminCannotBeRenounced;
4821    #[allow(
4822        non_camel_case_types,
4823        non_snake_case,
4824        clippy::pub_underscore_fields,
4825        clippy::style
4826    )]
4827    const _: () = {
4828        use alloy::sol_types as alloy_sol_types;
4829        #[doc(hidden)]
4830        type UnderlyingSolTuple<'a> = ();
4831        #[doc(hidden)]
4832        type UnderlyingRustTuple<'a> = ();
4833        #[cfg(test)]
4834        #[allow(dead_code, unreachable_patterns)]
4835        fn _type_assertion(
4836            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4837        ) {
4838            match _t {
4839                alloy_sol_types::private::AssertTypeEq::<
4840                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4841                >(_) => {}
4842            }
4843        }
4844        #[automatically_derived]
4845        #[doc(hidden)]
4846        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
4847        for UnderlyingRustTuple<'_> {
4848            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
4849                ()
4850            }
4851        }
4852        #[automatically_derived]
4853        #[doc(hidden)]
4854        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4855        for DefaultAdminCannotBeRenounced {
4856            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4857                Self
4858            }
4859        }
4860        #[automatically_derived]
4861        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
4862            type Parameters<'a> = UnderlyingSolTuple<'a>;
4863            type Token<'a> = <Self::Parameters<
4864                'a,
4865            > as alloy_sol_types::SolType>::Token<'a>;
4866            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
4867            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
4868            #[inline]
4869            fn new<'a>(
4870                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4871            ) -> Self {
4872                tuple.into()
4873            }
4874            #[inline]
4875            fn tokenize(&self) -> Self::Token<'_> {
4876                ()
4877            }
4878            #[inline]
4879            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4880                <Self::Parameters<
4881                    '_,
4882                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4883                    .map(Self::new)
4884            }
4885        }
4886    };
4887    #[derive(serde::Serialize, serde::Deserialize)]
4888    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4889    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
4890```solidity
4891error DefaultAdminCannotBeRevoked();
4892```*/
4893    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4894    #[derive(Clone)]
4895    pub struct DefaultAdminCannotBeRevoked;
4896    #[allow(
4897        non_camel_case_types,
4898        non_snake_case,
4899        clippy::pub_underscore_fields,
4900        clippy::style
4901    )]
4902    const _: () = {
4903        use alloy::sol_types as alloy_sol_types;
4904        #[doc(hidden)]
4905        type UnderlyingSolTuple<'a> = ();
4906        #[doc(hidden)]
4907        type UnderlyingRustTuple<'a> = ();
4908        #[cfg(test)]
4909        #[allow(dead_code, unreachable_patterns)]
4910        fn _type_assertion(
4911            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4912        ) {
4913            match _t {
4914                alloy_sol_types::private::AssertTypeEq::<
4915                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4916                >(_) => {}
4917            }
4918        }
4919        #[automatically_derived]
4920        #[doc(hidden)]
4921        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
4922        for UnderlyingRustTuple<'_> {
4923            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
4924                ()
4925            }
4926        }
4927        #[automatically_derived]
4928        #[doc(hidden)]
4929        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4930        for DefaultAdminCannotBeRevoked {
4931            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4932                Self
4933            }
4934        }
4935        #[automatically_derived]
4936        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
4937            type Parameters<'a> = UnderlyingSolTuple<'a>;
4938            type Token<'a> = <Self::Parameters<
4939                'a,
4940            > as alloy_sol_types::SolType>::Token<'a>;
4941            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
4942            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
4943            #[inline]
4944            fn new<'a>(
4945                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4946            ) -> Self {
4947                tuple.into()
4948            }
4949            #[inline]
4950            fn tokenize(&self) -> Self::Token<'_> {
4951                ()
4952            }
4953            #[inline]
4954            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4955                <Self::Parameters<
4956                    '_,
4957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4958                    .map(Self::new)
4959            }
4960        }
4961    };
4962    #[derive(serde::Serialize, serde::Deserialize)]
4963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4964    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
4965```solidity
4966error DelegateAmountTooSmall();
4967```*/
4968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4969    #[derive(Clone)]
4970    pub struct DelegateAmountTooSmall;
4971    #[allow(
4972        non_camel_case_types,
4973        non_snake_case,
4974        clippy::pub_underscore_fields,
4975        clippy::style
4976    )]
4977    const _: () = {
4978        use alloy::sol_types as alloy_sol_types;
4979        #[doc(hidden)]
4980        type UnderlyingSolTuple<'a> = ();
4981        #[doc(hidden)]
4982        type UnderlyingRustTuple<'a> = ();
4983        #[cfg(test)]
4984        #[allow(dead_code, unreachable_patterns)]
4985        fn _type_assertion(
4986            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4987        ) {
4988            match _t {
4989                alloy_sol_types::private::AssertTypeEq::<
4990                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4991                >(_) => {}
4992            }
4993        }
4994        #[automatically_derived]
4995        #[doc(hidden)]
4996        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
4997            fn from(value: DelegateAmountTooSmall) -> Self {
4998                ()
4999            }
5000        }
5001        #[automatically_derived]
5002        #[doc(hidden)]
5003        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5004            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5005                Self
5006            }
5007        }
5008        #[automatically_derived]
5009        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5010            type Parameters<'a> = UnderlyingSolTuple<'a>;
5011            type Token<'a> = <Self::Parameters<
5012                'a,
5013            > as alloy_sol_types::SolType>::Token<'a>;
5014            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5015            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5016            #[inline]
5017            fn new<'a>(
5018                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5019            ) -> Self {
5020                tuple.into()
5021            }
5022            #[inline]
5023            fn tokenize(&self) -> Self::Token<'_> {
5024                ()
5025            }
5026            #[inline]
5027            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5028                <Self::Parameters<
5029                    '_,
5030                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5031                    .map(Self::new)
5032            }
5033        }
5034    };
5035    #[derive(serde::Serialize, serde::Deserialize)]
5036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5037    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5038```solidity
5039error DeprecatedFunction();
5040```*/
5041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5042    #[derive(Clone)]
5043    pub struct DeprecatedFunction;
5044    #[allow(
5045        non_camel_case_types,
5046        non_snake_case,
5047        clippy::pub_underscore_fields,
5048        clippy::style
5049    )]
5050    const _: () = {
5051        use alloy::sol_types as alloy_sol_types;
5052        #[doc(hidden)]
5053        type UnderlyingSolTuple<'a> = ();
5054        #[doc(hidden)]
5055        type UnderlyingRustTuple<'a> = ();
5056        #[cfg(test)]
5057        #[allow(dead_code, unreachable_patterns)]
5058        fn _type_assertion(
5059            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5060        ) {
5061            match _t {
5062                alloy_sol_types::private::AssertTypeEq::<
5063                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5064                >(_) => {}
5065            }
5066        }
5067        #[automatically_derived]
5068        #[doc(hidden)]
5069        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5070            fn from(value: DeprecatedFunction) -> Self {
5071                ()
5072            }
5073        }
5074        #[automatically_derived]
5075        #[doc(hidden)]
5076        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5077            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5078                Self
5079            }
5080        }
5081        #[automatically_derived]
5082        impl alloy_sol_types::SolError for DeprecatedFunction {
5083            type Parameters<'a> = UnderlyingSolTuple<'a>;
5084            type Token<'a> = <Self::Parameters<
5085                'a,
5086            > as alloy_sol_types::SolType>::Token<'a>;
5087            const SIGNATURE: &'static str = "DeprecatedFunction()";
5088            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5089            #[inline]
5090            fn new<'a>(
5091                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5092            ) -> Self {
5093                tuple.into()
5094            }
5095            #[inline]
5096            fn tokenize(&self) -> Self::Token<'_> {
5097                ()
5098            }
5099            #[inline]
5100            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5101                <Self::Parameters<
5102                    '_,
5103                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5104                    .map(Self::new)
5105            }
5106        }
5107    };
5108    #[derive(serde::Serialize, serde::Deserialize)]
5109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5110    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5111```solidity
5112error ERC1967InvalidImplementation(address implementation);
5113```*/
5114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5115    #[derive(Clone)]
5116    pub struct ERC1967InvalidImplementation {
5117        #[allow(missing_docs)]
5118        pub implementation: alloy::sol_types::private::Address,
5119    }
5120    #[allow(
5121        non_camel_case_types,
5122        non_snake_case,
5123        clippy::pub_underscore_fields,
5124        clippy::style
5125    )]
5126    const _: () = {
5127        use alloy::sol_types as alloy_sol_types;
5128        #[doc(hidden)]
5129        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5130        #[doc(hidden)]
5131        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5132        #[cfg(test)]
5133        #[allow(dead_code, unreachable_patterns)]
5134        fn _type_assertion(
5135            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5136        ) {
5137            match _t {
5138                alloy_sol_types::private::AssertTypeEq::<
5139                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5140                >(_) => {}
5141            }
5142        }
5143        #[automatically_derived]
5144        #[doc(hidden)]
5145        impl ::core::convert::From<ERC1967InvalidImplementation>
5146        for UnderlyingRustTuple<'_> {
5147            fn from(value: ERC1967InvalidImplementation) -> Self {
5148                (value.implementation,)
5149            }
5150        }
5151        #[automatically_derived]
5152        #[doc(hidden)]
5153        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5154        for ERC1967InvalidImplementation {
5155            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5156                Self { implementation: tuple.0 }
5157            }
5158        }
5159        #[automatically_derived]
5160        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5161            type Parameters<'a> = UnderlyingSolTuple<'a>;
5162            type Token<'a> = <Self::Parameters<
5163                'a,
5164            > as alloy_sol_types::SolType>::Token<'a>;
5165            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5166            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5167            #[inline]
5168            fn new<'a>(
5169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5170            ) -> Self {
5171                tuple.into()
5172            }
5173            #[inline]
5174            fn tokenize(&self) -> Self::Token<'_> {
5175                (
5176                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5177                        &self.implementation,
5178                    ),
5179                )
5180            }
5181            #[inline]
5182            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5183                <Self::Parameters<
5184                    '_,
5185                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5186                    .map(Self::new)
5187            }
5188        }
5189    };
5190    #[derive(serde::Serialize, serde::Deserialize)]
5191    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5192    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5193```solidity
5194error ERC1967NonPayable();
5195```*/
5196    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5197    #[derive(Clone)]
5198    pub struct ERC1967NonPayable;
5199    #[allow(
5200        non_camel_case_types,
5201        non_snake_case,
5202        clippy::pub_underscore_fields,
5203        clippy::style
5204    )]
5205    const _: () = {
5206        use alloy::sol_types as alloy_sol_types;
5207        #[doc(hidden)]
5208        type UnderlyingSolTuple<'a> = ();
5209        #[doc(hidden)]
5210        type UnderlyingRustTuple<'a> = ();
5211        #[cfg(test)]
5212        #[allow(dead_code, unreachable_patterns)]
5213        fn _type_assertion(
5214            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5215        ) {
5216            match _t {
5217                alloy_sol_types::private::AssertTypeEq::<
5218                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5219                >(_) => {}
5220            }
5221        }
5222        #[automatically_derived]
5223        #[doc(hidden)]
5224        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5225            fn from(value: ERC1967NonPayable) -> Self {
5226                ()
5227            }
5228        }
5229        #[automatically_derived]
5230        #[doc(hidden)]
5231        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5232            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5233                Self
5234            }
5235        }
5236        #[automatically_derived]
5237        impl alloy_sol_types::SolError for ERC1967NonPayable {
5238            type Parameters<'a> = UnderlyingSolTuple<'a>;
5239            type Token<'a> = <Self::Parameters<
5240                'a,
5241            > as alloy_sol_types::SolType>::Token<'a>;
5242            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5243            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5244            #[inline]
5245            fn new<'a>(
5246                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5247            ) -> Self {
5248                tuple.into()
5249            }
5250            #[inline]
5251            fn tokenize(&self) -> Self::Token<'_> {
5252                ()
5253            }
5254            #[inline]
5255            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5256                <Self::Parameters<
5257                    '_,
5258                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5259                    .map(Self::new)
5260            }
5261        }
5262    };
5263    #[derive(serde::Serialize, serde::Deserialize)]
5264    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5265    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5266```solidity
5267error EnforcedPause();
5268```*/
5269    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5270    #[derive(Clone)]
5271    pub struct EnforcedPause;
5272    #[allow(
5273        non_camel_case_types,
5274        non_snake_case,
5275        clippy::pub_underscore_fields,
5276        clippy::style
5277    )]
5278    const _: () = {
5279        use alloy::sol_types as alloy_sol_types;
5280        #[doc(hidden)]
5281        type UnderlyingSolTuple<'a> = ();
5282        #[doc(hidden)]
5283        type UnderlyingRustTuple<'a> = ();
5284        #[cfg(test)]
5285        #[allow(dead_code, unreachable_patterns)]
5286        fn _type_assertion(
5287            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5288        ) {
5289            match _t {
5290                alloy_sol_types::private::AssertTypeEq::<
5291                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5292                >(_) => {}
5293            }
5294        }
5295        #[automatically_derived]
5296        #[doc(hidden)]
5297        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5298            fn from(value: EnforcedPause) -> Self {
5299                ()
5300            }
5301        }
5302        #[automatically_derived]
5303        #[doc(hidden)]
5304        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5305            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5306                Self
5307            }
5308        }
5309        #[automatically_derived]
5310        impl alloy_sol_types::SolError for EnforcedPause {
5311            type Parameters<'a> = UnderlyingSolTuple<'a>;
5312            type Token<'a> = <Self::Parameters<
5313                'a,
5314            > as alloy_sol_types::SolType>::Token<'a>;
5315            const SIGNATURE: &'static str = "EnforcedPause()";
5316            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
5317            #[inline]
5318            fn new<'a>(
5319                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5320            ) -> Self {
5321                tuple.into()
5322            }
5323            #[inline]
5324            fn tokenize(&self) -> Self::Token<'_> {
5325                ()
5326            }
5327            #[inline]
5328            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5329                <Self::Parameters<
5330                    '_,
5331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5332                    .map(Self::new)
5333            }
5334        }
5335    };
5336    #[derive(serde::Serialize, serde::Deserialize)]
5337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5338    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
5339```solidity
5340error ExitEscrowPeriodInvalid();
5341```*/
5342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5343    #[derive(Clone)]
5344    pub struct ExitEscrowPeriodInvalid;
5345    #[allow(
5346        non_camel_case_types,
5347        non_snake_case,
5348        clippy::pub_underscore_fields,
5349        clippy::style
5350    )]
5351    const _: () = {
5352        use alloy::sol_types as alloy_sol_types;
5353        #[doc(hidden)]
5354        type UnderlyingSolTuple<'a> = ();
5355        #[doc(hidden)]
5356        type UnderlyingRustTuple<'a> = ();
5357        #[cfg(test)]
5358        #[allow(dead_code, unreachable_patterns)]
5359        fn _type_assertion(
5360            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5361        ) {
5362            match _t {
5363                alloy_sol_types::private::AssertTypeEq::<
5364                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5365                >(_) => {}
5366            }
5367        }
5368        #[automatically_derived]
5369        #[doc(hidden)]
5370        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
5371            fn from(value: ExitEscrowPeriodInvalid) -> Self {
5372                ()
5373            }
5374        }
5375        #[automatically_derived]
5376        #[doc(hidden)]
5377        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
5378            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5379                Self
5380            }
5381        }
5382        #[automatically_derived]
5383        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
5384            type Parameters<'a> = UnderlyingSolTuple<'a>;
5385            type Token<'a> = <Self::Parameters<
5386                'a,
5387            > as alloy_sol_types::SolType>::Token<'a>;
5388            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
5389            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
5390            #[inline]
5391            fn new<'a>(
5392                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5393            ) -> Self {
5394                tuple.into()
5395            }
5396            #[inline]
5397            fn tokenize(&self) -> Self::Token<'_> {
5398                ()
5399            }
5400            #[inline]
5401            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5402                <Self::Parameters<
5403                    '_,
5404                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5405                    .map(Self::new)
5406            }
5407        }
5408    };
5409    #[derive(serde::Serialize, serde::Deserialize)]
5410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5411    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
5412```solidity
5413error ExpectedPause();
5414```*/
5415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5416    #[derive(Clone)]
5417    pub struct ExpectedPause;
5418    #[allow(
5419        non_camel_case_types,
5420        non_snake_case,
5421        clippy::pub_underscore_fields,
5422        clippy::style
5423    )]
5424    const _: () = {
5425        use alloy::sol_types as alloy_sol_types;
5426        #[doc(hidden)]
5427        type UnderlyingSolTuple<'a> = ();
5428        #[doc(hidden)]
5429        type UnderlyingRustTuple<'a> = ();
5430        #[cfg(test)]
5431        #[allow(dead_code, unreachable_patterns)]
5432        fn _type_assertion(
5433            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5434        ) {
5435            match _t {
5436                alloy_sol_types::private::AssertTypeEq::<
5437                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5438                >(_) => {}
5439            }
5440        }
5441        #[automatically_derived]
5442        #[doc(hidden)]
5443        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
5444            fn from(value: ExpectedPause) -> Self {
5445                ()
5446            }
5447        }
5448        #[automatically_derived]
5449        #[doc(hidden)]
5450        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
5451            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5452                Self
5453            }
5454        }
5455        #[automatically_derived]
5456        impl alloy_sol_types::SolError for ExpectedPause {
5457            type Parameters<'a> = UnderlyingSolTuple<'a>;
5458            type Token<'a> = <Self::Parameters<
5459                'a,
5460            > as alloy_sol_types::SolType>::Token<'a>;
5461            const SIGNATURE: &'static str = "ExpectedPause()";
5462            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
5463            #[inline]
5464            fn new<'a>(
5465                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5466            ) -> Self {
5467                tuple.into()
5468            }
5469            #[inline]
5470            fn tokenize(&self) -> Self::Token<'_> {
5471                ()
5472            }
5473            #[inline]
5474            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5475                <Self::Parameters<
5476                    '_,
5477                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5478                    .map(Self::new)
5479            }
5480        }
5481    };
5482    #[derive(serde::Serialize, serde::Deserialize)]
5483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5484    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5485```solidity
5486error FailedInnerCall();
5487```*/
5488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5489    #[derive(Clone)]
5490    pub struct FailedInnerCall;
5491    #[allow(
5492        non_camel_case_types,
5493        non_snake_case,
5494        clippy::pub_underscore_fields,
5495        clippy::style
5496    )]
5497    const _: () = {
5498        use alloy::sol_types as alloy_sol_types;
5499        #[doc(hidden)]
5500        type UnderlyingSolTuple<'a> = ();
5501        #[doc(hidden)]
5502        type UnderlyingRustTuple<'a> = ();
5503        #[cfg(test)]
5504        #[allow(dead_code, unreachable_patterns)]
5505        fn _type_assertion(
5506            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5507        ) {
5508            match _t {
5509                alloy_sol_types::private::AssertTypeEq::<
5510                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5511                >(_) => {}
5512            }
5513        }
5514        #[automatically_derived]
5515        #[doc(hidden)]
5516        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5517            fn from(value: FailedInnerCall) -> Self {
5518                ()
5519            }
5520        }
5521        #[automatically_derived]
5522        #[doc(hidden)]
5523        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5524            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5525                Self
5526            }
5527        }
5528        #[automatically_derived]
5529        impl alloy_sol_types::SolError for FailedInnerCall {
5530            type Parameters<'a> = UnderlyingSolTuple<'a>;
5531            type Token<'a> = <Self::Parameters<
5532                'a,
5533            > as alloy_sol_types::SolType>::Token<'a>;
5534            const SIGNATURE: &'static str = "FailedInnerCall()";
5535            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5536            #[inline]
5537            fn new<'a>(
5538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5539            ) -> Self {
5540                tuple.into()
5541            }
5542            #[inline]
5543            fn tokenize(&self) -> Self::Token<'_> {
5544                ()
5545            }
5546            #[inline]
5547            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5548                <Self::Parameters<
5549                    '_,
5550                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5551                    .map(Self::new)
5552            }
5553        }
5554    };
5555    #[derive(serde::Serialize, serde::Deserialize)]
5556    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5557    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
5558```solidity
5559error InitialActiveStakeExceedsBalance();
5560```*/
5561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5562    #[derive(Clone)]
5563    pub struct InitialActiveStakeExceedsBalance;
5564    #[allow(
5565        non_camel_case_types,
5566        non_snake_case,
5567        clippy::pub_underscore_fields,
5568        clippy::style
5569    )]
5570    const _: () = {
5571        use alloy::sol_types as alloy_sol_types;
5572        #[doc(hidden)]
5573        type UnderlyingSolTuple<'a> = ();
5574        #[doc(hidden)]
5575        type UnderlyingRustTuple<'a> = ();
5576        #[cfg(test)]
5577        #[allow(dead_code, unreachable_patterns)]
5578        fn _type_assertion(
5579            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5580        ) {
5581            match _t {
5582                alloy_sol_types::private::AssertTypeEq::<
5583                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5584                >(_) => {}
5585            }
5586        }
5587        #[automatically_derived]
5588        #[doc(hidden)]
5589        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
5590        for UnderlyingRustTuple<'_> {
5591            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
5592                ()
5593            }
5594        }
5595        #[automatically_derived]
5596        #[doc(hidden)]
5597        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5598        for InitialActiveStakeExceedsBalance {
5599            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5600                Self
5601            }
5602        }
5603        #[automatically_derived]
5604        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
5605            type Parameters<'a> = UnderlyingSolTuple<'a>;
5606            type Token<'a> = <Self::Parameters<
5607                'a,
5608            > as alloy_sol_types::SolType>::Token<'a>;
5609            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
5610            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
5611            #[inline]
5612            fn new<'a>(
5613                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5614            ) -> Self {
5615                tuple.into()
5616            }
5617            #[inline]
5618            fn tokenize(&self) -> Self::Token<'_> {
5619                ()
5620            }
5621            #[inline]
5622            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5623                <Self::Parameters<
5624                    '_,
5625                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5626                    .map(Self::new)
5627            }
5628        }
5629    };
5630    #[derive(serde::Serialize, serde::Deserialize)]
5631    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5632    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
5633```solidity
5634error InsufficientAllowance(uint256, uint256);
5635```*/
5636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5637    #[derive(Clone)]
5638    pub struct InsufficientAllowance {
5639        #[allow(missing_docs)]
5640        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5641        #[allow(missing_docs)]
5642        pub _1: alloy::sol_types::private::primitives::aliases::U256,
5643    }
5644    #[allow(
5645        non_camel_case_types,
5646        non_snake_case,
5647        clippy::pub_underscore_fields,
5648        clippy::style
5649    )]
5650    const _: () = {
5651        use alloy::sol_types as alloy_sol_types;
5652        #[doc(hidden)]
5653        type UnderlyingSolTuple<'a> = (
5654            alloy::sol_types::sol_data::Uint<256>,
5655            alloy::sol_types::sol_data::Uint<256>,
5656        );
5657        #[doc(hidden)]
5658        type UnderlyingRustTuple<'a> = (
5659            alloy::sol_types::private::primitives::aliases::U256,
5660            alloy::sol_types::private::primitives::aliases::U256,
5661        );
5662        #[cfg(test)]
5663        #[allow(dead_code, unreachable_patterns)]
5664        fn _type_assertion(
5665            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5666        ) {
5667            match _t {
5668                alloy_sol_types::private::AssertTypeEq::<
5669                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5670                >(_) => {}
5671            }
5672        }
5673        #[automatically_derived]
5674        #[doc(hidden)]
5675        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
5676            fn from(value: InsufficientAllowance) -> Self {
5677                (value._0, value._1)
5678            }
5679        }
5680        #[automatically_derived]
5681        #[doc(hidden)]
5682        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
5683            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5684                Self { _0: tuple.0, _1: tuple.1 }
5685            }
5686        }
5687        #[automatically_derived]
5688        impl alloy_sol_types::SolError for InsufficientAllowance {
5689            type Parameters<'a> = UnderlyingSolTuple<'a>;
5690            type Token<'a> = <Self::Parameters<
5691                'a,
5692            > as alloy_sol_types::SolType>::Token<'a>;
5693            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
5694            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
5695            #[inline]
5696            fn new<'a>(
5697                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5698            ) -> Self {
5699                tuple.into()
5700            }
5701            #[inline]
5702            fn tokenize(&self) -> Self::Token<'_> {
5703                (
5704                    <alloy::sol_types::sol_data::Uint<
5705                        256,
5706                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5707                    <alloy::sol_types::sol_data::Uint<
5708                        256,
5709                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5710                )
5711            }
5712            #[inline]
5713            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5714                <Self::Parameters<
5715                    '_,
5716                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5717                    .map(Self::new)
5718            }
5719        }
5720    };
5721    #[derive(serde::Serialize, serde::Deserialize)]
5722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5723    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
5724```solidity
5725error InsufficientBalance(uint256);
5726```*/
5727    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5728    #[derive(Clone)]
5729    pub struct InsufficientBalance(
5730        pub alloy::sol_types::private::primitives::aliases::U256,
5731    );
5732    #[allow(
5733        non_camel_case_types,
5734        non_snake_case,
5735        clippy::pub_underscore_fields,
5736        clippy::style
5737    )]
5738    const _: () = {
5739        use alloy::sol_types as alloy_sol_types;
5740        #[doc(hidden)]
5741        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5742        #[doc(hidden)]
5743        type UnderlyingRustTuple<'a> = (
5744            alloy::sol_types::private::primitives::aliases::U256,
5745        );
5746        #[cfg(test)]
5747        #[allow(dead_code, unreachable_patterns)]
5748        fn _type_assertion(
5749            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5750        ) {
5751            match _t {
5752                alloy_sol_types::private::AssertTypeEq::<
5753                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5754                >(_) => {}
5755            }
5756        }
5757        #[automatically_derived]
5758        #[doc(hidden)]
5759        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
5760            fn from(value: InsufficientBalance) -> Self {
5761                (value.0,)
5762            }
5763        }
5764        #[automatically_derived]
5765        #[doc(hidden)]
5766        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
5767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5768                Self(tuple.0)
5769            }
5770        }
5771        #[automatically_derived]
5772        impl alloy_sol_types::SolError for InsufficientBalance {
5773            type Parameters<'a> = UnderlyingSolTuple<'a>;
5774            type Token<'a> = <Self::Parameters<
5775                'a,
5776            > as alloy_sol_types::SolType>::Token<'a>;
5777            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
5778            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
5779            #[inline]
5780            fn new<'a>(
5781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5782            ) -> Self {
5783                tuple.into()
5784            }
5785            #[inline]
5786            fn tokenize(&self) -> Self::Token<'_> {
5787                (
5788                    <alloy::sol_types::sol_data::Uint<
5789                        256,
5790                    > as alloy_sol_types::SolType>::tokenize(&self.0),
5791                )
5792            }
5793            #[inline]
5794            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5795                <Self::Parameters<
5796                    '_,
5797                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5798                    .map(Self::new)
5799            }
5800        }
5801    };
5802    #[derive(serde::Serialize, serde::Deserialize)]
5803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5804    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
5805```solidity
5806error InvalidCommission();
5807```*/
5808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5809    #[derive(Clone)]
5810    pub struct InvalidCommission;
5811    #[allow(
5812        non_camel_case_types,
5813        non_snake_case,
5814        clippy::pub_underscore_fields,
5815        clippy::style
5816    )]
5817    const _: () = {
5818        use alloy::sol_types as alloy_sol_types;
5819        #[doc(hidden)]
5820        type UnderlyingSolTuple<'a> = ();
5821        #[doc(hidden)]
5822        type UnderlyingRustTuple<'a> = ();
5823        #[cfg(test)]
5824        #[allow(dead_code, unreachable_patterns)]
5825        fn _type_assertion(
5826            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5827        ) {
5828            match _t {
5829                alloy_sol_types::private::AssertTypeEq::<
5830                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5831                >(_) => {}
5832            }
5833        }
5834        #[automatically_derived]
5835        #[doc(hidden)]
5836        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
5837            fn from(value: InvalidCommission) -> Self {
5838                ()
5839            }
5840        }
5841        #[automatically_derived]
5842        #[doc(hidden)]
5843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
5844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5845                Self
5846            }
5847        }
5848        #[automatically_derived]
5849        impl alloy_sol_types::SolError for InvalidCommission {
5850            type Parameters<'a> = UnderlyingSolTuple<'a>;
5851            type Token<'a> = <Self::Parameters<
5852                'a,
5853            > as alloy_sol_types::SolType>::Token<'a>;
5854            const SIGNATURE: &'static str = "InvalidCommission()";
5855            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
5856            #[inline]
5857            fn new<'a>(
5858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5859            ) -> Self {
5860                tuple.into()
5861            }
5862            #[inline]
5863            fn tokenize(&self) -> Self::Token<'_> {
5864                ()
5865            }
5866            #[inline]
5867            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5868                <Self::Parameters<
5869                    '_,
5870                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5871                    .map(Self::new)
5872            }
5873        }
5874    };
5875    #[derive(serde::Serialize, serde::Deserialize)]
5876    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5877    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
5878```solidity
5879error InvalidG1();
5880```*/
5881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5882    #[derive(Clone)]
5883    pub struct InvalidG1;
5884    #[allow(
5885        non_camel_case_types,
5886        non_snake_case,
5887        clippy::pub_underscore_fields,
5888        clippy::style
5889    )]
5890    const _: () = {
5891        use alloy::sol_types as alloy_sol_types;
5892        #[doc(hidden)]
5893        type UnderlyingSolTuple<'a> = ();
5894        #[doc(hidden)]
5895        type UnderlyingRustTuple<'a> = ();
5896        #[cfg(test)]
5897        #[allow(dead_code, unreachable_patterns)]
5898        fn _type_assertion(
5899            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5900        ) {
5901            match _t {
5902                alloy_sol_types::private::AssertTypeEq::<
5903                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5904                >(_) => {}
5905            }
5906        }
5907        #[automatically_derived]
5908        #[doc(hidden)]
5909        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
5910            fn from(value: InvalidG1) -> Self {
5911                ()
5912            }
5913        }
5914        #[automatically_derived]
5915        #[doc(hidden)]
5916        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
5917            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5918                Self
5919            }
5920        }
5921        #[automatically_derived]
5922        impl alloy_sol_types::SolError for InvalidG1 {
5923            type Parameters<'a> = UnderlyingSolTuple<'a>;
5924            type Token<'a> = <Self::Parameters<
5925                'a,
5926            > as alloy_sol_types::SolType>::Token<'a>;
5927            const SIGNATURE: &'static str = "InvalidG1()";
5928            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
5929            #[inline]
5930            fn new<'a>(
5931                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5932            ) -> Self {
5933                tuple.into()
5934            }
5935            #[inline]
5936            fn tokenize(&self) -> Self::Token<'_> {
5937                ()
5938            }
5939            #[inline]
5940            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5941                <Self::Parameters<
5942                    '_,
5943                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5944                    .map(Self::new)
5945            }
5946        }
5947    };
5948    #[derive(serde::Serialize, serde::Deserialize)]
5949    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5950    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5951```solidity
5952error InvalidInitialization();
5953```*/
5954    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5955    #[derive(Clone)]
5956    pub struct InvalidInitialization;
5957    #[allow(
5958        non_camel_case_types,
5959        non_snake_case,
5960        clippy::pub_underscore_fields,
5961        clippy::style
5962    )]
5963    const _: () = {
5964        use alloy::sol_types as alloy_sol_types;
5965        #[doc(hidden)]
5966        type UnderlyingSolTuple<'a> = ();
5967        #[doc(hidden)]
5968        type UnderlyingRustTuple<'a> = ();
5969        #[cfg(test)]
5970        #[allow(dead_code, unreachable_patterns)]
5971        fn _type_assertion(
5972            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5973        ) {
5974            match _t {
5975                alloy_sol_types::private::AssertTypeEq::<
5976                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5977                >(_) => {}
5978            }
5979        }
5980        #[automatically_derived]
5981        #[doc(hidden)]
5982        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5983            fn from(value: InvalidInitialization) -> Self {
5984                ()
5985            }
5986        }
5987        #[automatically_derived]
5988        #[doc(hidden)]
5989        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5990            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5991                Self
5992            }
5993        }
5994        #[automatically_derived]
5995        impl alloy_sol_types::SolError for InvalidInitialization {
5996            type Parameters<'a> = UnderlyingSolTuple<'a>;
5997            type Token<'a> = <Self::Parameters<
5998                'a,
5999            > as alloy_sol_types::SolType>::Token<'a>;
6000            const SIGNATURE: &'static str = "InvalidInitialization()";
6001            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6002            #[inline]
6003            fn new<'a>(
6004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6005            ) -> Self {
6006                tuple.into()
6007            }
6008            #[inline]
6009            fn tokenize(&self) -> Self::Token<'_> {
6010                ()
6011            }
6012            #[inline]
6013            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6014                <Self::Parameters<
6015                    '_,
6016                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6017                    .map(Self::new)
6018            }
6019        }
6020    };
6021    #[derive(serde::Serialize, serde::Deserialize)]
6022    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6023    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6024```solidity
6025error InvalidMetadataUriLength();
6026```*/
6027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6028    #[derive(Clone)]
6029    pub struct InvalidMetadataUriLength;
6030    #[allow(
6031        non_camel_case_types,
6032        non_snake_case,
6033        clippy::pub_underscore_fields,
6034        clippy::style
6035    )]
6036    const _: () = {
6037        use alloy::sol_types as alloy_sol_types;
6038        #[doc(hidden)]
6039        type UnderlyingSolTuple<'a> = ();
6040        #[doc(hidden)]
6041        type UnderlyingRustTuple<'a> = ();
6042        #[cfg(test)]
6043        #[allow(dead_code, unreachable_patterns)]
6044        fn _type_assertion(
6045            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6046        ) {
6047            match _t {
6048                alloy_sol_types::private::AssertTypeEq::<
6049                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6050                >(_) => {}
6051            }
6052        }
6053        #[automatically_derived]
6054        #[doc(hidden)]
6055        impl ::core::convert::From<InvalidMetadataUriLength>
6056        for UnderlyingRustTuple<'_> {
6057            fn from(value: InvalidMetadataUriLength) -> Self {
6058                ()
6059            }
6060        }
6061        #[automatically_derived]
6062        #[doc(hidden)]
6063        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6064        for InvalidMetadataUriLength {
6065            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6066                Self
6067            }
6068        }
6069        #[automatically_derived]
6070        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6071            type Parameters<'a> = UnderlyingSolTuple<'a>;
6072            type Token<'a> = <Self::Parameters<
6073                'a,
6074            > as alloy_sol_types::SolType>::Token<'a>;
6075            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6076            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6077            #[inline]
6078            fn new<'a>(
6079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6080            ) -> Self {
6081                tuple.into()
6082            }
6083            #[inline]
6084            fn tokenize(&self) -> Self::Token<'_> {
6085                ()
6086            }
6087            #[inline]
6088            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6089                <Self::Parameters<
6090                    '_,
6091                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6092                    .map(Self::new)
6093            }
6094        }
6095    };
6096    #[derive(serde::Serialize, serde::Deserialize)]
6097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6098    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6099```solidity
6100error InvalidRateLimitParameters();
6101```*/
6102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6103    #[derive(Clone)]
6104    pub struct InvalidRateLimitParameters;
6105    #[allow(
6106        non_camel_case_types,
6107        non_snake_case,
6108        clippy::pub_underscore_fields,
6109        clippy::style
6110    )]
6111    const _: () = {
6112        use alloy::sol_types as alloy_sol_types;
6113        #[doc(hidden)]
6114        type UnderlyingSolTuple<'a> = ();
6115        #[doc(hidden)]
6116        type UnderlyingRustTuple<'a> = ();
6117        #[cfg(test)]
6118        #[allow(dead_code, unreachable_patterns)]
6119        fn _type_assertion(
6120            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6121        ) {
6122            match _t {
6123                alloy_sol_types::private::AssertTypeEq::<
6124                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6125                >(_) => {}
6126            }
6127        }
6128        #[automatically_derived]
6129        #[doc(hidden)]
6130        impl ::core::convert::From<InvalidRateLimitParameters>
6131        for UnderlyingRustTuple<'_> {
6132            fn from(value: InvalidRateLimitParameters) -> Self {
6133                ()
6134            }
6135        }
6136        #[automatically_derived]
6137        #[doc(hidden)]
6138        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6139        for InvalidRateLimitParameters {
6140            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6141                Self
6142            }
6143        }
6144        #[automatically_derived]
6145        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6146            type Parameters<'a> = UnderlyingSolTuple<'a>;
6147            type Token<'a> = <Self::Parameters<
6148                'a,
6149            > as alloy_sol_types::SolType>::Token<'a>;
6150            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6151            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6152            #[inline]
6153            fn new<'a>(
6154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6155            ) -> Self {
6156                tuple.into()
6157            }
6158            #[inline]
6159            fn tokenize(&self) -> Self::Token<'_> {
6160                ()
6161            }
6162            #[inline]
6163            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6164                <Self::Parameters<
6165                    '_,
6166                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6167                    .map(Self::new)
6168            }
6169        }
6170    };
6171    #[derive(serde::Serialize, serde::Deserialize)]
6172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6173    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6174```solidity
6175error InvalidSchnorrSig();
6176```*/
6177    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6178    #[derive(Clone)]
6179    pub struct InvalidSchnorrSig;
6180    #[allow(
6181        non_camel_case_types,
6182        non_snake_case,
6183        clippy::pub_underscore_fields,
6184        clippy::style
6185    )]
6186    const _: () = {
6187        use alloy::sol_types as alloy_sol_types;
6188        #[doc(hidden)]
6189        type UnderlyingSolTuple<'a> = ();
6190        #[doc(hidden)]
6191        type UnderlyingRustTuple<'a> = ();
6192        #[cfg(test)]
6193        #[allow(dead_code, unreachable_patterns)]
6194        fn _type_assertion(
6195            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6196        ) {
6197            match _t {
6198                alloy_sol_types::private::AssertTypeEq::<
6199                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6200                >(_) => {}
6201            }
6202        }
6203        #[automatically_derived]
6204        #[doc(hidden)]
6205        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6206            fn from(value: InvalidSchnorrSig) -> Self {
6207                ()
6208            }
6209        }
6210        #[automatically_derived]
6211        #[doc(hidden)]
6212        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6213            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6214                Self
6215            }
6216        }
6217        #[automatically_derived]
6218        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6219            type Parameters<'a> = UnderlyingSolTuple<'a>;
6220            type Token<'a> = <Self::Parameters<
6221                'a,
6222            > as alloy_sol_types::SolType>::Token<'a>;
6223            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6224            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
6225            #[inline]
6226            fn new<'a>(
6227                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6228            ) -> Self {
6229                tuple.into()
6230            }
6231            #[inline]
6232            fn tokenize(&self) -> Self::Token<'_> {
6233                ()
6234            }
6235            #[inline]
6236            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6237                <Self::Parameters<
6238                    '_,
6239                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6240                    .map(Self::new)
6241            }
6242        }
6243    };
6244    #[derive(serde::Serialize, serde::Deserialize)]
6245    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6246    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
6247```solidity
6248error InvalidSchnorrVK();
6249```*/
6250    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6251    #[derive(Clone)]
6252    pub struct InvalidSchnorrVK;
6253    #[allow(
6254        non_camel_case_types,
6255        non_snake_case,
6256        clippy::pub_underscore_fields,
6257        clippy::style
6258    )]
6259    const _: () = {
6260        use alloy::sol_types as alloy_sol_types;
6261        #[doc(hidden)]
6262        type UnderlyingSolTuple<'a> = ();
6263        #[doc(hidden)]
6264        type UnderlyingRustTuple<'a> = ();
6265        #[cfg(test)]
6266        #[allow(dead_code, unreachable_patterns)]
6267        fn _type_assertion(
6268            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6269        ) {
6270            match _t {
6271                alloy_sol_types::private::AssertTypeEq::<
6272                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6273                >(_) => {}
6274            }
6275        }
6276        #[automatically_derived]
6277        #[doc(hidden)]
6278        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
6279            fn from(value: InvalidSchnorrVK) -> Self {
6280                ()
6281            }
6282        }
6283        #[automatically_derived]
6284        #[doc(hidden)]
6285        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
6286            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6287                Self
6288            }
6289        }
6290        #[automatically_derived]
6291        impl alloy_sol_types::SolError for InvalidSchnorrVK {
6292            type Parameters<'a> = UnderlyingSolTuple<'a>;
6293            type Token<'a> = <Self::Parameters<
6294                'a,
6295            > as alloy_sol_types::SolType>::Token<'a>;
6296            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
6297            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
6298            #[inline]
6299            fn new<'a>(
6300                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6301            ) -> Self {
6302                tuple.into()
6303            }
6304            #[inline]
6305            fn tokenize(&self) -> Self::Token<'_> {
6306                ()
6307            }
6308            #[inline]
6309            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6310                <Self::Parameters<
6311                    '_,
6312                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6313                    .map(Self::new)
6314            }
6315        }
6316    };
6317    #[derive(serde::Serialize, serde::Deserialize)]
6318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6319    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
6320```solidity
6321error MinDelegateAmountTooSmall();
6322```*/
6323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6324    #[derive(Clone)]
6325    pub struct MinDelegateAmountTooSmall;
6326    #[allow(
6327        non_camel_case_types,
6328        non_snake_case,
6329        clippy::pub_underscore_fields,
6330        clippy::style
6331    )]
6332    const _: () = {
6333        use alloy::sol_types as alloy_sol_types;
6334        #[doc(hidden)]
6335        type UnderlyingSolTuple<'a> = ();
6336        #[doc(hidden)]
6337        type UnderlyingRustTuple<'a> = ();
6338        #[cfg(test)]
6339        #[allow(dead_code, unreachable_patterns)]
6340        fn _type_assertion(
6341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6342        ) {
6343            match _t {
6344                alloy_sol_types::private::AssertTypeEq::<
6345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6346                >(_) => {}
6347            }
6348        }
6349        #[automatically_derived]
6350        #[doc(hidden)]
6351        impl ::core::convert::From<MinDelegateAmountTooSmall>
6352        for UnderlyingRustTuple<'_> {
6353            fn from(value: MinDelegateAmountTooSmall) -> Self {
6354                ()
6355            }
6356        }
6357        #[automatically_derived]
6358        #[doc(hidden)]
6359        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6360        for MinDelegateAmountTooSmall {
6361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6362                Self
6363            }
6364        }
6365        #[automatically_derived]
6366        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
6367            type Parameters<'a> = UnderlyingSolTuple<'a>;
6368            type Token<'a> = <Self::Parameters<
6369                'a,
6370            > as alloy_sol_types::SolType>::Token<'a>;
6371            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
6372            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
6373            #[inline]
6374            fn new<'a>(
6375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6376            ) -> Self {
6377                tuple.into()
6378            }
6379            #[inline]
6380            fn tokenize(&self) -> Self::Token<'_> {
6381                ()
6382            }
6383            #[inline]
6384            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6385                <Self::Parameters<
6386                    '_,
6387                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6388                    .map(Self::new)
6389            }
6390        }
6391    };
6392    #[derive(serde::Serialize, serde::Deserialize)]
6393    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6394    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
6395```solidity
6396error NoUndelegationFound();
6397```*/
6398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6399    #[derive(Clone)]
6400    pub struct NoUndelegationFound;
6401    #[allow(
6402        non_camel_case_types,
6403        non_snake_case,
6404        clippy::pub_underscore_fields,
6405        clippy::style
6406    )]
6407    const _: () = {
6408        use alloy::sol_types as alloy_sol_types;
6409        #[doc(hidden)]
6410        type UnderlyingSolTuple<'a> = ();
6411        #[doc(hidden)]
6412        type UnderlyingRustTuple<'a> = ();
6413        #[cfg(test)]
6414        #[allow(dead_code, unreachable_patterns)]
6415        fn _type_assertion(
6416            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6417        ) {
6418            match _t {
6419                alloy_sol_types::private::AssertTypeEq::<
6420                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6421                >(_) => {}
6422            }
6423        }
6424        #[automatically_derived]
6425        #[doc(hidden)]
6426        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
6427            fn from(value: NoUndelegationFound) -> Self {
6428                ()
6429            }
6430        }
6431        #[automatically_derived]
6432        #[doc(hidden)]
6433        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
6434            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6435                Self
6436            }
6437        }
6438        #[automatically_derived]
6439        impl alloy_sol_types::SolError for NoUndelegationFound {
6440            type Parameters<'a> = UnderlyingSolTuple<'a>;
6441            type Token<'a> = <Self::Parameters<
6442                'a,
6443            > as alloy_sol_types::SolType>::Token<'a>;
6444            const SIGNATURE: &'static str = "NoUndelegationFound()";
6445            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
6446            #[inline]
6447            fn new<'a>(
6448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6449            ) -> Self {
6450                tuple.into()
6451            }
6452            #[inline]
6453            fn tokenize(&self) -> Self::Token<'_> {
6454                ()
6455            }
6456            #[inline]
6457            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6458                <Self::Parameters<
6459                    '_,
6460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6461                    .map(Self::new)
6462            }
6463        }
6464    };
6465    #[derive(serde::Serialize, serde::Deserialize)]
6466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6467    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6468```solidity
6469error NotInitializing();
6470```*/
6471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6472    #[derive(Clone)]
6473    pub struct NotInitializing;
6474    #[allow(
6475        non_camel_case_types,
6476        non_snake_case,
6477        clippy::pub_underscore_fields,
6478        clippy::style
6479    )]
6480    const _: () = {
6481        use alloy::sol_types as alloy_sol_types;
6482        #[doc(hidden)]
6483        type UnderlyingSolTuple<'a> = ();
6484        #[doc(hidden)]
6485        type UnderlyingRustTuple<'a> = ();
6486        #[cfg(test)]
6487        #[allow(dead_code, unreachable_patterns)]
6488        fn _type_assertion(
6489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6490        ) {
6491            match _t {
6492                alloy_sol_types::private::AssertTypeEq::<
6493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6494                >(_) => {}
6495            }
6496        }
6497        #[automatically_derived]
6498        #[doc(hidden)]
6499        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6500            fn from(value: NotInitializing) -> Self {
6501                ()
6502            }
6503        }
6504        #[automatically_derived]
6505        #[doc(hidden)]
6506        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6507            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6508                Self
6509            }
6510        }
6511        #[automatically_derived]
6512        impl alloy_sol_types::SolError for NotInitializing {
6513            type Parameters<'a> = UnderlyingSolTuple<'a>;
6514            type Token<'a> = <Self::Parameters<
6515                'a,
6516            > as alloy_sol_types::SolType>::Token<'a>;
6517            const SIGNATURE: &'static str = "NotInitializing()";
6518            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6519            #[inline]
6520            fn new<'a>(
6521                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6522            ) -> Self {
6523                tuple.into()
6524            }
6525            #[inline]
6526            fn tokenize(&self) -> Self::Token<'_> {
6527                ()
6528            }
6529            #[inline]
6530            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6531                <Self::Parameters<
6532                    '_,
6533                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6534                    .map(Self::new)
6535            }
6536        }
6537    };
6538    #[derive(serde::Serialize, serde::Deserialize)]
6539    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6540    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
6541```solidity
6542error NothingToWithdraw();
6543```*/
6544    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6545    #[derive(Clone)]
6546    pub struct NothingToWithdraw;
6547    #[allow(
6548        non_camel_case_types,
6549        non_snake_case,
6550        clippy::pub_underscore_fields,
6551        clippy::style
6552    )]
6553    const _: () = {
6554        use alloy::sol_types as alloy_sol_types;
6555        #[doc(hidden)]
6556        type UnderlyingSolTuple<'a> = ();
6557        #[doc(hidden)]
6558        type UnderlyingRustTuple<'a> = ();
6559        #[cfg(test)]
6560        #[allow(dead_code, unreachable_patterns)]
6561        fn _type_assertion(
6562            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6563        ) {
6564            match _t {
6565                alloy_sol_types::private::AssertTypeEq::<
6566                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6567                >(_) => {}
6568            }
6569        }
6570        #[automatically_derived]
6571        #[doc(hidden)]
6572        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
6573            fn from(value: NothingToWithdraw) -> Self {
6574                ()
6575            }
6576        }
6577        #[automatically_derived]
6578        #[doc(hidden)]
6579        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
6580            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6581                Self
6582            }
6583        }
6584        #[automatically_derived]
6585        impl alloy_sol_types::SolError for NothingToWithdraw {
6586            type Parameters<'a> = UnderlyingSolTuple<'a>;
6587            type Token<'a> = <Self::Parameters<
6588                'a,
6589            > as alloy_sol_types::SolType>::Token<'a>;
6590            const SIGNATURE: &'static str = "NothingToWithdraw()";
6591            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
6592            #[inline]
6593            fn new<'a>(
6594                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6595            ) -> Self {
6596                tuple.into()
6597            }
6598            #[inline]
6599            fn tokenize(&self) -> Self::Token<'_> {
6600                ()
6601            }
6602            #[inline]
6603            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6604                <Self::Parameters<
6605                    '_,
6606                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6607                    .map(Self::new)
6608            }
6609        }
6610    };
6611    #[derive(serde::Serialize, serde::Deserialize)]
6612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6613    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6614```solidity
6615error OwnableInvalidOwner(address owner);
6616```*/
6617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6618    #[derive(Clone)]
6619    pub struct OwnableInvalidOwner {
6620        #[allow(missing_docs)]
6621        pub owner: alloy::sol_types::private::Address,
6622    }
6623    #[allow(
6624        non_camel_case_types,
6625        non_snake_case,
6626        clippy::pub_underscore_fields,
6627        clippy::style
6628    )]
6629    const _: () = {
6630        use alloy::sol_types as alloy_sol_types;
6631        #[doc(hidden)]
6632        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6633        #[doc(hidden)]
6634        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6635        #[cfg(test)]
6636        #[allow(dead_code, unreachable_patterns)]
6637        fn _type_assertion(
6638            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6639        ) {
6640            match _t {
6641                alloy_sol_types::private::AssertTypeEq::<
6642                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6643                >(_) => {}
6644            }
6645        }
6646        #[automatically_derived]
6647        #[doc(hidden)]
6648        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6649            fn from(value: OwnableInvalidOwner) -> Self {
6650                (value.owner,)
6651            }
6652        }
6653        #[automatically_derived]
6654        #[doc(hidden)]
6655        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6656            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6657                Self { owner: tuple.0 }
6658            }
6659        }
6660        #[automatically_derived]
6661        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6662            type Parameters<'a> = UnderlyingSolTuple<'a>;
6663            type Token<'a> = <Self::Parameters<
6664                'a,
6665            > as alloy_sol_types::SolType>::Token<'a>;
6666            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6667            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6668            #[inline]
6669            fn new<'a>(
6670                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6671            ) -> Self {
6672                tuple.into()
6673            }
6674            #[inline]
6675            fn tokenize(&self) -> Self::Token<'_> {
6676                (
6677                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6678                        &self.owner,
6679                    ),
6680                )
6681            }
6682            #[inline]
6683            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6684                <Self::Parameters<
6685                    '_,
6686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6687                    .map(Self::new)
6688            }
6689        }
6690    };
6691    #[derive(serde::Serialize, serde::Deserialize)]
6692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6693    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6694```solidity
6695error OwnableUnauthorizedAccount(address account);
6696```*/
6697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6698    #[derive(Clone)]
6699    pub struct OwnableUnauthorizedAccount {
6700        #[allow(missing_docs)]
6701        pub account: alloy::sol_types::private::Address,
6702    }
6703    #[allow(
6704        non_camel_case_types,
6705        non_snake_case,
6706        clippy::pub_underscore_fields,
6707        clippy::style
6708    )]
6709    const _: () = {
6710        use alloy::sol_types as alloy_sol_types;
6711        #[doc(hidden)]
6712        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6713        #[doc(hidden)]
6714        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6715        #[cfg(test)]
6716        #[allow(dead_code, unreachable_patterns)]
6717        fn _type_assertion(
6718            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6719        ) {
6720            match _t {
6721                alloy_sol_types::private::AssertTypeEq::<
6722                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6723                >(_) => {}
6724            }
6725        }
6726        #[automatically_derived]
6727        #[doc(hidden)]
6728        impl ::core::convert::From<OwnableUnauthorizedAccount>
6729        for UnderlyingRustTuple<'_> {
6730            fn from(value: OwnableUnauthorizedAccount) -> Self {
6731                (value.account,)
6732            }
6733        }
6734        #[automatically_derived]
6735        #[doc(hidden)]
6736        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6737        for OwnableUnauthorizedAccount {
6738            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6739                Self { account: tuple.0 }
6740            }
6741        }
6742        #[automatically_derived]
6743        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6744            type Parameters<'a> = UnderlyingSolTuple<'a>;
6745            type Token<'a> = <Self::Parameters<
6746                'a,
6747            > as alloy_sol_types::SolType>::Token<'a>;
6748            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6749            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6750            #[inline]
6751            fn new<'a>(
6752                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6753            ) -> Self {
6754                tuple.into()
6755            }
6756            #[inline]
6757            fn tokenize(&self) -> Self::Token<'_> {
6758                (
6759                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6760                        &self.account,
6761                    ),
6762                )
6763            }
6764            #[inline]
6765            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6766                <Self::Parameters<
6767                    '_,
6768                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6769                    .map(Self::new)
6770            }
6771        }
6772    };
6773    #[derive(serde::Serialize, serde::Deserialize)]
6774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6775    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6776```solidity
6777error OwnershipCannotBeRenounced();
6778```*/
6779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6780    #[derive(Clone)]
6781    pub struct OwnershipCannotBeRenounced;
6782    #[allow(
6783        non_camel_case_types,
6784        non_snake_case,
6785        clippy::pub_underscore_fields,
6786        clippy::style
6787    )]
6788    const _: () = {
6789        use alloy::sol_types as alloy_sol_types;
6790        #[doc(hidden)]
6791        type UnderlyingSolTuple<'a> = ();
6792        #[doc(hidden)]
6793        type UnderlyingRustTuple<'a> = ();
6794        #[cfg(test)]
6795        #[allow(dead_code, unreachable_patterns)]
6796        fn _type_assertion(
6797            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6798        ) {
6799            match _t {
6800                alloy_sol_types::private::AssertTypeEq::<
6801                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6802                >(_) => {}
6803            }
6804        }
6805        #[automatically_derived]
6806        #[doc(hidden)]
6807        impl ::core::convert::From<OwnershipCannotBeRenounced>
6808        for UnderlyingRustTuple<'_> {
6809            fn from(value: OwnershipCannotBeRenounced) -> Self {
6810                ()
6811            }
6812        }
6813        #[automatically_derived]
6814        #[doc(hidden)]
6815        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6816        for OwnershipCannotBeRenounced {
6817            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6818                Self
6819            }
6820        }
6821        #[automatically_derived]
6822        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6823            type Parameters<'a> = UnderlyingSolTuple<'a>;
6824            type Token<'a> = <Self::Parameters<
6825                'a,
6826            > as alloy_sol_types::SolType>::Token<'a>;
6827            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6828            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6829            #[inline]
6830            fn new<'a>(
6831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6832            ) -> Self {
6833                tuple.into()
6834            }
6835            #[inline]
6836            fn tokenize(&self) -> Self::Token<'_> {
6837                ()
6838            }
6839            #[inline]
6840            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6841                <Self::Parameters<
6842                    '_,
6843                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6844                    .map(Self::new)
6845            }
6846        }
6847    };
6848    #[derive(serde::Serialize, serde::Deserialize)]
6849    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6850    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
6851```solidity
6852error PowPrecompileFailed();
6853```*/
6854    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6855    #[derive(Clone)]
6856    pub struct PowPrecompileFailed;
6857    #[allow(
6858        non_camel_case_types,
6859        non_snake_case,
6860        clippy::pub_underscore_fields,
6861        clippy::style
6862    )]
6863    const _: () = {
6864        use alloy::sol_types as alloy_sol_types;
6865        #[doc(hidden)]
6866        type UnderlyingSolTuple<'a> = ();
6867        #[doc(hidden)]
6868        type UnderlyingRustTuple<'a> = ();
6869        #[cfg(test)]
6870        #[allow(dead_code, unreachable_patterns)]
6871        fn _type_assertion(
6872            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6873        ) {
6874            match _t {
6875                alloy_sol_types::private::AssertTypeEq::<
6876                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6877                >(_) => {}
6878            }
6879        }
6880        #[automatically_derived]
6881        #[doc(hidden)]
6882        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
6883            fn from(value: PowPrecompileFailed) -> Self {
6884                ()
6885            }
6886        }
6887        #[automatically_derived]
6888        #[doc(hidden)]
6889        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
6890            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6891                Self
6892            }
6893        }
6894        #[automatically_derived]
6895        impl alloy_sol_types::SolError for PowPrecompileFailed {
6896            type Parameters<'a> = UnderlyingSolTuple<'a>;
6897            type Token<'a> = <Self::Parameters<
6898                'a,
6899            > as alloy_sol_types::SolType>::Token<'a>;
6900            const SIGNATURE: &'static str = "PowPrecompileFailed()";
6901            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
6902            #[inline]
6903            fn new<'a>(
6904                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6905            ) -> Self {
6906                tuple.into()
6907            }
6908            #[inline]
6909            fn tokenize(&self) -> Self::Token<'_> {
6910                ()
6911            }
6912            #[inline]
6913            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6914                <Self::Parameters<
6915                    '_,
6916                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6917                    .map(Self::new)
6918            }
6919        }
6920    };
6921    #[derive(serde::Serialize, serde::Deserialize)]
6922    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6923    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
6924```solidity
6925error PrematureWithdrawal();
6926```*/
6927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6928    #[derive(Clone)]
6929    pub struct PrematureWithdrawal;
6930    #[allow(
6931        non_camel_case_types,
6932        non_snake_case,
6933        clippy::pub_underscore_fields,
6934        clippy::style
6935    )]
6936    const _: () = {
6937        use alloy::sol_types as alloy_sol_types;
6938        #[doc(hidden)]
6939        type UnderlyingSolTuple<'a> = ();
6940        #[doc(hidden)]
6941        type UnderlyingRustTuple<'a> = ();
6942        #[cfg(test)]
6943        #[allow(dead_code, unreachable_patterns)]
6944        fn _type_assertion(
6945            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6946        ) {
6947            match _t {
6948                alloy_sol_types::private::AssertTypeEq::<
6949                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6950                >(_) => {}
6951            }
6952        }
6953        #[automatically_derived]
6954        #[doc(hidden)]
6955        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
6956            fn from(value: PrematureWithdrawal) -> Self {
6957                ()
6958            }
6959        }
6960        #[automatically_derived]
6961        #[doc(hidden)]
6962        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
6963            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6964                Self
6965            }
6966        }
6967        #[automatically_derived]
6968        impl alloy_sol_types::SolError for PrematureWithdrawal {
6969            type Parameters<'a> = UnderlyingSolTuple<'a>;
6970            type Token<'a> = <Self::Parameters<
6971                'a,
6972            > as alloy_sol_types::SolType>::Token<'a>;
6973            const SIGNATURE: &'static str = "PrematureWithdrawal()";
6974            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
6975            #[inline]
6976            fn new<'a>(
6977                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6978            ) -> Self {
6979                tuple.into()
6980            }
6981            #[inline]
6982            fn tokenize(&self) -> Self::Token<'_> {
6983                ()
6984            }
6985            #[inline]
6986            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6987                <Self::Parameters<
6988                    '_,
6989                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6990                    .map(Self::new)
6991            }
6992        }
6993    };
6994    #[derive(serde::Serialize, serde::Deserialize)]
6995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6996    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
6997```solidity
6998error SchnorrKeyAlreadyUsed();
6999```*/
7000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7001    #[derive(Clone)]
7002    pub struct SchnorrKeyAlreadyUsed;
7003    #[allow(
7004        non_camel_case_types,
7005        non_snake_case,
7006        clippy::pub_underscore_fields,
7007        clippy::style
7008    )]
7009    const _: () = {
7010        use alloy::sol_types as alloy_sol_types;
7011        #[doc(hidden)]
7012        type UnderlyingSolTuple<'a> = ();
7013        #[doc(hidden)]
7014        type UnderlyingRustTuple<'a> = ();
7015        #[cfg(test)]
7016        #[allow(dead_code, unreachable_patterns)]
7017        fn _type_assertion(
7018            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7019        ) {
7020            match _t {
7021                alloy_sol_types::private::AssertTypeEq::<
7022                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7023                >(_) => {}
7024            }
7025        }
7026        #[automatically_derived]
7027        #[doc(hidden)]
7028        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7029            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7030                ()
7031            }
7032        }
7033        #[automatically_derived]
7034        #[doc(hidden)]
7035        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7036            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7037                Self
7038            }
7039        }
7040        #[automatically_derived]
7041        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7042            type Parameters<'a> = UnderlyingSolTuple<'a>;
7043            type Token<'a> = <Self::Parameters<
7044                'a,
7045            > as alloy_sol_types::SolType>::Token<'a>;
7046            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7047            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7048            #[inline]
7049            fn new<'a>(
7050                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7051            ) -> Self {
7052                tuple.into()
7053            }
7054            #[inline]
7055            fn tokenize(&self) -> Self::Token<'_> {
7056                ()
7057            }
7058            #[inline]
7059            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7060                <Self::Parameters<
7061                    '_,
7062                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7063                    .map(Self::new)
7064            }
7065        }
7066    };
7067    #[derive(serde::Serialize, serde::Deserialize)]
7068    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7069    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7070```solidity
7071error UUPSUnauthorizedCallContext();
7072```*/
7073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7074    #[derive(Clone)]
7075    pub struct UUPSUnauthorizedCallContext;
7076    #[allow(
7077        non_camel_case_types,
7078        non_snake_case,
7079        clippy::pub_underscore_fields,
7080        clippy::style
7081    )]
7082    const _: () = {
7083        use alloy::sol_types as alloy_sol_types;
7084        #[doc(hidden)]
7085        type UnderlyingSolTuple<'a> = ();
7086        #[doc(hidden)]
7087        type UnderlyingRustTuple<'a> = ();
7088        #[cfg(test)]
7089        #[allow(dead_code, unreachable_patterns)]
7090        fn _type_assertion(
7091            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7092        ) {
7093            match _t {
7094                alloy_sol_types::private::AssertTypeEq::<
7095                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7096                >(_) => {}
7097            }
7098        }
7099        #[automatically_derived]
7100        #[doc(hidden)]
7101        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7102        for UnderlyingRustTuple<'_> {
7103            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7104                ()
7105            }
7106        }
7107        #[automatically_derived]
7108        #[doc(hidden)]
7109        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7110        for UUPSUnauthorizedCallContext {
7111            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7112                Self
7113            }
7114        }
7115        #[automatically_derived]
7116        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7117            type Parameters<'a> = UnderlyingSolTuple<'a>;
7118            type Token<'a> = <Self::Parameters<
7119                'a,
7120            > as alloy_sol_types::SolType>::Token<'a>;
7121            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7122            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7123            #[inline]
7124            fn new<'a>(
7125                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7126            ) -> Self {
7127                tuple.into()
7128            }
7129            #[inline]
7130            fn tokenize(&self) -> Self::Token<'_> {
7131                ()
7132            }
7133            #[inline]
7134            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7135                <Self::Parameters<
7136                    '_,
7137                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7138                    .map(Self::new)
7139            }
7140        }
7141    };
7142    #[derive(serde::Serialize, serde::Deserialize)]
7143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7144    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7145```solidity
7146error UUPSUnsupportedProxiableUUID(bytes32 slot);
7147```*/
7148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7149    #[derive(Clone)]
7150    pub struct UUPSUnsupportedProxiableUUID {
7151        #[allow(missing_docs)]
7152        pub slot: alloy::sol_types::private::FixedBytes<32>,
7153    }
7154    #[allow(
7155        non_camel_case_types,
7156        non_snake_case,
7157        clippy::pub_underscore_fields,
7158        clippy::style
7159    )]
7160    const _: () = {
7161        use alloy::sol_types as alloy_sol_types;
7162        #[doc(hidden)]
7163        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7164        #[doc(hidden)]
7165        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7166        #[cfg(test)]
7167        #[allow(dead_code, unreachable_patterns)]
7168        fn _type_assertion(
7169            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7170        ) {
7171            match _t {
7172                alloy_sol_types::private::AssertTypeEq::<
7173                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7174                >(_) => {}
7175            }
7176        }
7177        #[automatically_derived]
7178        #[doc(hidden)]
7179        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7180        for UnderlyingRustTuple<'_> {
7181            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7182                (value.slot,)
7183            }
7184        }
7185        #[automatically_derived]
7186        #[doc(hidden)]
7187        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7188        for UUPSUnsupportedProxiableUUID {
7189            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7190                Self { slot: tuple.0 }
7191            }
7192        }
7193        #[automatically_derived]
7194        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7195            type Parameters<'a> = UnderlyingSolTuple<'a>;
7196            type Token<'a> = <Self::Parameters<
7197                'a,
7198            > as alloy_sol_types::SolType>::Token<'a>;
7199            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7200            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7201            #[inline]
7202            fn new<'a>(
7203                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7204            ) -> Self {
7205                tuple.into()
7206            }
7207            #[inline]
7208            fn tokenize(&self) -> Self::Token<'_> {
7209                (
7210                    <alloy::sol_types::sol_data::FixedBytes<
7211                        32,
7212                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7213                )
7214            }
7215            #[inline]
7216            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7217                <Self::Parameters<
7218                    '_,
7219                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7220                    .map(Self::new)
7221            }
7222        }
7223    };
7224    #[derive(serde::Serialize, serde::Deserialize)]
7225    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7226    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
7227```solidity
7228error UndelegationAlreadyExists();
7229```*/
7230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7231    #[derive(Clone)]
7232    pub struct UndelegationAlreadyExists;
7233    #[allow(
7234        non_camel_case_types,
7235        non_snake_case,
7236        clippy::pub_underscore_fields,
7237        clippy::style
7238    )]
7239    const _: () = {
7240        use alloy::sol_types as alloy_sol_types;
7241        #[doc(hidden)]
7242        type UnderlyingSolTuple<'a> = ();
7243        #[doc(hidden)]
7244        type UnderlyingRustTuple<'a> = ();
7245        #[cfg(test)]
7246        #[allow(dead_code, unreachable_patterns)]
7247        fn _type_assertion(
7248            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7249        ) {
7250            match _t {
7251                alloy_sol_types::private::AssertTypeEq::<
7252                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7253                >(_) => {}
7254            }
7255        }
7256        #[automatically_derived]
7257        #[doc(hidden)]
7258        impl ::core::convert::From<UndelegationAlreadyExists>
7259        for UnderlyingRustTuple<'_> {
7260            fn from(value: UndelegationAlreadyExists) -> Self {
7261                ()
7262            }
7263        }
7264        #[automatically_derived]
7265        #[doc(hidden)]
7266        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7267        for UndelegationAlreadyExists {
7268            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7269                Self
7270            }
7271        }
7272        #[automatically_derived]
7273        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
7274            type Parameters<'a> = UnderlyingSolTuple<'a>;
7275            type Token<'a> = <Self::Parameters<
7276                'a,
7277            > as alloy_sol_types::SolType>::Token<'a>;
7278            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
7279            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
7280            #[inline]
7281            fn new<'a>(
7282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7283            ) -> Self {
7284                tuple.into()
7285            }
7286            #[inline]
7287            fn tokenize(&self) -> Self::Token<'_> {
7288                ()
7289            }
7290            #[inline]
7291            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7292                <Self::Parameters<
7293                    '_,
7294                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7295                    .map(Self::new)
7296            }
7297        }
7298    };
7299    #[derive(serde::Serialize, serde::Deserialize)]
7300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7301    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
7302```solidity
7303error ValidatorAlreadyExited();
7304```*/
7305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7306    #[derive(Clone)]
7307    pub struct ValidatorAlreadyExited;
7308    #[allow(
7309        non_camel_case_types,
7310        non_snake_case,
7311        clippy::pub_underscore_fields,
7312        clippy::style
7313    )]
7314    const _: () = {
7315        use alloy::sol_types as alloy_sol_types;
7316        #[doc(hidden)]
7317        type UnderlyingSolTuple<'a> = ();
7318        #[doc(hidden)]
7319        type UnderlyingRustTuple<'a> = ();
7320        #[cfg(test)]
7321        #[allow(dead_code, unreachable_patterns)]
7322        fn _type_assertion(
7323            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7324        ) {
7325            match _t {
7326                alloy_sol_types::private::AssertTypeEq::<
7327                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7328                >(_) => {}
7329            }
7330        }
7331        #[automatically_derived]
7332        #[doc(hidden)]
7333        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
7334            fn from(value: ValidatorAlreadyExited) -> Self {
7335                ()
7336            }
7337        }
7338        #[automatically_derived]
7339        #[doc(hidden)]
7340        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
7341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7342                Self
7343            }
7344        }
7345        #[automatically_derived]
7346        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
7347            type Parameters<'a> = UnderlyingSolTuple<'a>;
7348            type Token<'a> = <Self::Parameters<
7349                'a,
7350            > as alloy_sol_types::SolType>::Token<'a>;
7351            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
7352            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
7353            #[inline]
7354            fn new<'a>(
7355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7356            ) -> Self {
7357                tuple.into()
7358            }
7359            #[inline]
7360            fn tokenize(&self) -> Self::Token<'_> {
7361                ()
7362            }
7363            #[inline]
7364            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7365                <Self::Parameters<
7366                    '_,
7367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7368                    .map(Self::new)
7369            }
7370        }
7371    };
7372    #[derive(serde::Serialize, serde::Deserialize)]
7373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7374    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
7375```solidity
7376error ValidatorAlreadyRegistered();
7377```*/
7378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7379    #[derive(Clone)]
7380    pub struct ValidatorAlreadyRegistered;
7381    #[allow(
7382        non_camel_case_types,
7383        non_snake_case,
7384        clippy::pub_underscore_fields,
7385        clippy::style
7386    )]
7387    const _: () = {
7388        use alloy::sol_types as alloy_sol_types;
7389        #[doc(hidden)]
7390        type UnderlyingSolTuple<'a> = ();
7391        #[doc(hidden)]
7392        type UnderlyingRustTuple<'a> = ();
7393        #[cfg(test)]
7394        #[allow(dead_code, unreachable_patterns)]
7395        fn _type_assertion(
7396            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7397        ) {
7398            match _t {
7399                alloy_sol_types::private::AssertTypeEq::<
7400                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7401                >(_) => {}
7402            }
7403        }
7404        #[automatically_derived]
7405        #[doc(hidden)]
7406        impl ::core::convert::From<ValidatorAlreadyRegistered>
7407        for UnderlyingRustTuple<'_> {
7408            fn from(value: ValidatorAlreadyRegistered) -> Self {
7409                ()
7410            }
7411        }
7412        #[automatically_derived]
7413        #[doc(hidden)]
7414        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7415        for ValidatorAlreadyRegistered {
7416            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7417                Self
7418            }
7419        }
7420        #[automatically_derived]
7421        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
7422            type Parameters<'a> = UnderlyingSolTuple<'a>;
7423            type Token<'a> = <Self::Parameters<
7424                'a,
7425            > as alloy_sol_types::SolType>::Token<'a>;
7426            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
7427            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
7428            #[inline]
7429            fn new<'a>(
7430                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7431            ) -> Self {
7432                tuple.into()
7433            }
7434            #[inline]
7435            fn tokenize(&self) -> Self::Token<'_> {
7436                ()
7437            }
7438            #[inline]
7439            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7440                <Self::Parameters<
7441                    '_,
7442                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7443                    .map(Self::new)
7444            }
7445        }
7446    };
7447    #[derive(serde::Serialize, serde::Deserialize)]
7448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7449    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
7450```solidity
7451error ValidatorInactive();
7452```*/
7453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7454    #[derive(Clone)]
7455    pub struct ValidatorInactive;
7456    #[allow(
7457        non_camel_case_types,
7458        non_snake_case,
7459        clippy::pub_underscore_fields,
7460        clippy::style
7461    )]
7462    const _: () = {
7463        use alloy::sol_types as alloy_sol_types;
7464        #[doc(hidden)]
7465        type UnderlyingSolTuple<'a> = ();
7466        #[doc(hidden)]
7467        type UnderlyingRustTuple<'a> = ();
7468        #[cfg(test)]
7469        #[allow(dead_code, unreachable_patterns)]
7470        fn _type_assertion(
7471            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7472        ) {
7473            match _t {
7474                alloy_sol_types::private::AssertTypeEq::<
7475                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7476                >(_) => {}
7477            }
7478        }
7479        #[automatically_derived]
7480        #[doc(hidden)]
7481        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
7482            fn from(value: ValidatorInactive) -> Self {
7483                ()
7484            }
7485        }
7486        #[automatically_derived]
7487        #[doc(hidden)]
7488        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
7489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7490                Self
7491            }
7492        }
7493        #[automatically_derived]
7494        impl alloy_sol_types::SolError for ValidatorInactive {
7495            type Parameters<'a> = UnderlyingSolTuple<'a>;
7496            type Token<'a> = <Self::Parameters<
7497                'a,
7498            > as alloy_sol_types::SolType>::Token<'a>;
7499            const SIGNATURE: &'static str = "ValidatorInactive()";
7500            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
7501            #[inline]
7502            fn new<'a>(
7503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7504            ) -> Self {
7505                tuple.into()
7506            }
7507            #[inline]
7508            fn tokenize(&self) -> Self::Token<'_> {
7509                ()
7510            }
7511            #[inline]
7512            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7513                <Self::Parameters<
7514                    '_,
7515                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7516                    .map(Self::new)
7517            }
7518        }
7519    };
7520    #[derive(serde::Serialize, serde::Deserialize)]
7521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7522    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
7523```solidity
7524error ValidatorNotExited();
7525```*/
7526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7527    #[derive(Clone)]
7528    pub struct ValidatorNotExited;
7529    #[allow(
7530        non_camel_case_types,
7531        non_snake_case,
7532        clippy::pub_underscore_fields,
7533        clippy::style
7534    )]
7535    const _: () = {
7536        use alloy::sol_types as alloy_sol_types;
7537        #[doc(hidden)]
7538        type UnderlyingSolTuple<'a> = ();
7539        #[doc(hidden)]
7540        type UnderlyingRustTuple<'a> = ();
7541        #[cfg(test)]
7542        #[allow(dead_code, unreachable_patterns)]
7543        fn _type_assertion(
7544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7545        ) {
7546            match _t {
7547                alloy_sol_types::private::AssertTypeEq::<
7548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7549                >(_) => {}
7550            }
7551        }
7552        #[automatically_derived]
7553        #[doc(hidden)]
7554        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
7555            fn from(value: ValidatorNotExited) -> Self {
7556                ()
7557            }
7558        }
7559        #[automatically_derived]
7560        #[doc(hidden)]
7561        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
7562            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7563                Self
7564            }
7565        }
7566        #[automatically_derived]
7567        impl alloy_sol_types::SolError for ValidatorNotExited {
7568            type Parameters<'a> = UnderlyingSolTuple<'a>;
7569            type Token<'a> = <Self::Parameters<
7570                'a,
7571            > as alloy_sol_types::SolType>::Token<'a>;
7572            const SIGNATURE: &'static str = "ValidatorNotExited()";
7573            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
7574            #[inline]
7575            fn new<'a>(
7576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7577            ) -> Self {
7578                tuple.into()
7579            }
7580            #[inline]
7581            fn tokenize(&self) -> Self::Token<'_> {
7582                ()
7583            }
7584            #[inline]
7585            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7586                <Self::Parameters<
7587                    '_,
7588                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7589                    .map(Self::new)
7590            }
7591        }
7592    };
7593    #[derive(serde::Serialize, serde::Deserialize)]
7594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7595    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
7596```solidity
7597error ZeroAddress();
7598```*/
7599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7600    #[derive(Clone)]
7601    pub struct ZeroAddress;
7602    #[allow(
7603        non_camel_case_types,
7604        non_snake_case,
7605        clippy::pub_underscore_fields,
7606        clippy::style
7607    )]
7608    const _: () = {
7609        use alloy::sol_types as alloy_sol_types;
7610        #[doc(hidden)]
7611        type UnderlyingSolTuple<'a> = ();
7612        #[doc(hidden)]
7613        type UnderlyingRustTuple<'a> = ();
7614        #[cfg(test)]
7615        #[allow(dead_code, unreachable_patterns)]
7616        fn _type_assertion(
7617            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7618        ) {
7619            match _t {
7620                alloy_sol_types::private::AssertTypeEq::<
7621                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7622                >(_) => {}
7623            }
7624        }
7625        #[automatically_derived]
7626        #[doc(hidden)]
7627        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
7628            fn from(value: ZeroAddress) -> Self {
7629                ()
7630            }
7631        }
7632        #[automatically_derived]
7633        #[doc(hidden)]
7634        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
7635            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7636                Self
7637            }
7638        }
7639        #[automatically_derived]
7640        impl alloy_sol_types::SolError for ZeroAddress {
7641            type Parameters<'a> = UnderlyingSolTuple<'a>;
7642            type Token<'a> = <Self::Parameters<
7643                'a,
7644            > as alloy_sol_types::SolType>::Token<'a>;
7645            const SIGNATURE: &'static str = "ZeroAddress()";
7646            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
7647            #[inline]
7648            fn new<'a>(
7649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7650            ) -> Self {
7651                tuple.into()
7652            }
7653            #[inline]
7654            fn tokenize(&self) -> Self::Token<'_> {
7655                ()
7656            }
7657            #[inline]
7658            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7659                <Self::Parameters<
7660                    '_,
7661                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7662                    .map(Self::new)
7663            }
7664        }
7665    };
7666    #[derive(serde::Serialize, serde::Deserialize)]
7667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7668    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
7669```solidity
7670error ZeroAmount();
7671```*/
7672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7673    #[derive(Clone)]
7674    pub struct ZeroAmount;
7675    #[allow(
7676        non_camel_case_types,
7677        non_snake_case,
7678        clippy::pub_underscore_fields,
7679        clippy::style
7680    )]
7681    const _: () = {
7682        use alloy::sol_types as alloy_sol_types;
7683        #[doc(hidden)]
7684        type UnderlyingSolTuple<'a> = ();
7685        #[doc(hidden)]
7686        type UnderlyingRustTuple<'a> = ();
7687        #[cfg(test)]
7688        #[allow(dead_code, unreachable_patterns)]
7689        fn _type_assertion(
7690            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7691        ) {
7692            match _t {
7693                alloy_sol_types::private::AssertTypeEq::<
7694                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7695                >(_) => {}
7696            }
7697        }
7698        #[automatically_derived]
7699        #[doc(hidden)]
7700        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
7701            fn from(value: ZeroAmount) -> Self {
7702                ()
7703            }
7704        }
7705        #[automatically_derived]
7706        #[doc(hidden)]
7707        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
7708            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7709                Self
7710            }
7711        }
7712        #[automatically_derived]
7713        impl alloy_sol_types::SolError for ZeroAmount {
7714            type Parameters<'a> = UnderlyingSolTuple<'a>;
7715            type Token<'a> = <Self::Parameters<
7716                'a,
7717            > as alloy_sol_types::SolType>::Token<'a>;
7718            const SIGNATURE: &'static str = "ZeroAmount()";
7719            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
7720            #[inline]
7721            fn new<'a>(
7722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7723            ) -> Self {
7724                tuple.into()
7725            }
7726            #[inline]
7727            fn tokenize(&self) -> Self::Token<'_> {
7728                ()
7729            }
7730            #[inline]
7731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7732                <Self::Parameters<
7733                    '_,
7734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7735                    .map(Self::new)
7736            }
7737        }
7738    };
7739    #[derive(serde::Serialize, serde::Deserialize)]
7740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7741    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
7742```solidity
7743event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
7744```*/
7745    #[allow(
7746        non_camel_case_types,
7747        non_snake_case,
7748        clippy::pub_underscore_fields,
7749        clippy::style
7750    )]
7751    #[derive(Clone)]
7752    pub struct CommissionUpdated {
7753        #[allow(missing_docs)]
7754        pub validator: alloy::sol_types::private::Address,
7755        #[allow(missing_docs)]
7756        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
7757        #[allow(missing_docs)]
7758        pub oldCommission: u16,
7759        #[allow(missing_docs)]
7760        pub newCommission: u16,
7761    }
7762    #[allow(
7763        non_camel_case_types,
7764        non_snake_case,
7765        clippy::pub_underscore_fields,
7766        clippy::style
7767    )]
7768    const _: () = {
7769        use alloy::sol_types as alloy_sol_types;
7770        #[automatically_derived]
7771        impl alloy_sol_types::SolEvent for CommissionUpdated {
7772            type DataTuple<'a> = (
7773                alloy::sol_types::sol_data::Uint<256>,
7774                alloy::sol_types::sol_data::Uint<16>,
7775                alloy::sol_types::sol_data::Uint<16>,
7776            );
7777            type DataToken<'a> = <Self::DataTuple<
7778                'a,
7779            > as alloy_sol_types::SolType>::Token<'a>;
7780            type TopicList = (
7781                alloy_sol_types::sol_data::FixedBytes<32>,
7782                alloy::sol_types::sol_data::Address,
7783            );
7784            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
7785            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7786                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
7787                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
7788                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
7789            ]);
7790            const ANONYMOUS: bool = false;
7791            #[allow(unused_variables)]
7792            #[inline]
7793            fn new(
7794                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7795                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7796            ) -> Self {
7797                Self {
7798                    validator: topics.1,
7799                    timestamp: data.0,
7800                    oldCommission: data.1,
7801                    newCommission: data.2,
7802                }
7803            }
7804            #[inline]
7805            fn check_signature(
7806                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7807            ) -> alloy_sol_types::Result<()> {
7808                if topics.0 != Self::SIGNATURE_HASH {
7809                    return Err(
7810                        alloy_sol_types::Error::invalid_event_signature_hash(
7811                            Self::SIGNATURE,
7812                            topics.0,
7813                            Self::SIGNATURE_HASH,
7814                        ),
7815                    );
7816                }
7817                Ok(())
7818            }
7819            #[inline]
7820            fn tokenize_body(&self) -> Self::DataToken<'_> {
7821                (
7822                    <alloy::sol_types::sol_data::Uint<
7823                        256,
7824                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
7825                    <alloy::sol_types::sol_data::Uint<
7826                        16,
7827                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
7828                    <alloy::sol_types::sol_data::Uint<
7829                        16,
7830                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
7831                )
7832            }
7833            #[inline]
7834            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7835                (Self::SIGNATURE_HASH.into(), self.validator.clone())
7836            }
7837            #[inline]
7838            fn encode_topics_raw(
7839                &self,
7840                out: &mut [alloy_sol_types::abi::token::WordToken],
7841            ) -> alloy_sol_types::Result<()> {
7842                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7843                    return Err(alloy_sol_types::Error::Overrun);
7844                }
7845                out[0usize] = alloy_sol_types::abi::token::WordToken(
7846                    Self::SIGNATURE_HASH,
7847                );
7848                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7849                    &self.validator,
7850                );
7851                Ok(())
7852            }
7853        }
7854        #[automatically_derived]
7855        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
7856            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7857                From::from(self)
7858            }
7859            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7860                From::from(&self)
7861            }
7862        }
7863        #[automatically_derived]
7864        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
7865            #[inline]
7866            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
7867                alloy_sol_types::SolEvent::encode_log_data(this)
7868            }
7869        }
7870    };
7871    #[derive(serde::Serialize, serde::Deserialize)]
7872    #[derive()]
7873    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
7874```solidity
7875event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
7876```*/
7877    #[allow(
7878        non_camel_case_types,
7879        non_snake_case,
7880        clippy::pub_underscore_fields,
7881        clippy::style
7882    )]
7883    #[derive(Clone)]
7884    pub struct ConsensusKeysUpdated {
7885        #[allow(missing_docs)]
7886        pub account: alloy::sol_types::private::Address,
7887        #[allow(missing_docs)]
7888        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
7889        #[allow(missing_docs)]
7890        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
7891    }
7892    #[allow(
7893        non_camel_case_types,
7894        non_snake_case,
7895        clippy::pub_underscore_fields,
7896        clippy::style
7897    )]
7898    const _: () = {
7899        use alloy::sol_types as alloy_sol_types;
7900        #[automatically_derived]
7901        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
7902            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
7903            type DataToken<'a> = <Self::DataTuple<
7904                'a,
7905            > as alloy_sol_types::SolType>::Token<'a>;
7906            type TopicList = (
7907                alloy_sol_types::sol_data::FixedBytes<32>,
7908                alloy::sol_types::sol_data::Address,
7909            );
7910            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
7911            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7912                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
7913                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
7914                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
7915            ]);
7916            const ANONYMOUS: bool = false;
7917            #[allow(unused_variables)]
7918            #[inline]
7919            fn new(
7920                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7921                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7922            ) -> Self {
7923                Self {
7924                    account: topics.1,
7925                    blsVK: data.0,
7926                    schnorrVK: data.1,
7927                }
7928            }
7929            #[inline]
7930            fn check_signature(
7931                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7932            ) -> alloy_sol_types::Result<()> {
7933                if topics.0 != Self::SIGNATURE_HASH {
7934                    return Err(
7935                        alloy_sol_types::Error::invalid_event_signature_hash(
7936                            Self::SIGNATURE,
7937                            topics.0,
7938                            Self::SIGNATURE_HASH,
7939                        ),
7940                    );
7941                }
7942                Ok(())
7943            }
7944            #[inline]
7945            fn tokenize_body(&self) -> Self::DataToken<'_> {
7946                (
7947                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
7948                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
7949                        &self.schnorrVK,
7950                    ),
7951                )
7952            }
7953            #[inline]
7954            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7955                (Self::SIGNATURE_HASH.into(), self.account.clone())
7956            }
7957            #[inline]
7958            fn encode_topics_raw(
7959                &self,
7960                out: &mut [alloy_sol_types::abi::token::WordToken],
7961            ) -> alloy_sol_types::Result<()> {
7962                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7963                    return Err(alloy_sol_types::Error::Overrun);
7964                }
7965                out[0usize] = alloy_sol_types::abi::token::WordToken(
7966                    Self::SIGNATURE_HASH,
7967                );
7968                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7969                    &self.account,
7970                );
7971                Ok(())
7972            }
7973        }
7974        #[automatically_derived]
7975        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
7976            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7977                From::from(self)
7978            }
7979            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7980                From::from(&self)
7981            }
7982        }
7983        #[automatically_derived]
7984        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
7985            #[inline]
7986            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
7987                alloy_sol_types::SolEvent::encode_log_data(this)
7988            }
7989        }
7990    };
7991    #[derive(serde::Serialize, serde::Deserialize)]
7992    #[derive()]
7993    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
7994```solidity
7995event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
7996```*/
7997    #[allow(
7998        non_camel_case_types,
7999        non_snake_case,
8000        clippy::pub_underscore_fields,
8001        clippy::style
8002    )]
8003    #[derive(Clone)]
8004    pub struct ConsensusKeysUpdatedV2 {
8005        #[allow(missing_docs)]
8006        pub account: alloy::sol_types::private::Address,
8007        #[allow(missing_docs)]
8008        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8009        #[allow(missing_docs)]
8010        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8011        #[allow(missing_docs)]
8012        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8013        #[allow(missing_docs)]
8014        pub schnorrSig: alloy::sol_types::private::Bytes,
8015    }
8016    #[allow(
8017        non_camel_case_types,
8018        non_snake_case,
8019        clippy::pub_underscore_fields,
8020        clippy::style
8021    )]
8022    const _: () = {
8023        use alloy::sol_types as alloy_sol_types;
8024        #[automatically_derived]
8025        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8026            type DataTuple<'a> = (
8027                BN254::G2Point,
8028                EdOnBN254::EdOnBN254Point,
8029                BN254::G1Point,
8030                alloy::sol_types::sol_data::Bytes,
8031            );
8032            type DataToken<'a> = <Self::DataTuple<
8033                'a,
8034            > as alloy_sol_types::SolType>::Token<'a>;
8035            type TopicList = (
8036                alloy_sol_types::sol_data::FixedBytes<32>,
8037                alloy::sol_types::sol_data::Address,
8038            );
8039            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8040            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8041                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8042                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8043                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8044            ]);
8045            const ANONYMOUS: bool = false;
8046            #[allow(unused_variables)]
8047            #[inline]
8048            fn new(
8049                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8050                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8051            ) -> Self {
8052                Self {
8053                    account: topics.1,
8054                    blsVK: data.0,
8055                    schnorrVK: data.1,
8056                    blsSig: data.2,
8057                    schnorrSig: data.3,
8058                }
8059            }
8060            #[inline]
8061            fn check_signature(
8062                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8063            ) -> alloy_sol_types::Result<()> {
8064                if topics.0 != Self::SIGNATURE_HASH {
8065                    return Err(
8066                        alloy_sol_types::Error::invalid_event_signature_hash(
8067                            Self::SIGNATURE,
8068                            topics.0,
8069                            Self::SIGNATURE_HASH,
8070                        ),
8071                    );
8072                }
8073                Ok(())
8074            }
8075            #[inline]
8076            fn tokenize_body(&self) -> Self::DataToken<'_> {
8077                (
8078                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8079                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8080                        &self.schnorrVK,
8081                    ),
8082                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8083                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8084                        &self.schnorrSig,
8085                    ),
8086                )
8087            }
8088            #[inline]
8089            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8090                (Self::SIGNATURE_HASH.into(), self.account.clone())
8091            }
8092            #[inline]
8093            fn encode_topics_raw(
8094                &self,
8095                out: &mut [alloy_sol_types::abi::token::WordToken],
8096            ) -> alloy_sol_types::Result<()> {
8097                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8098                    return Err(alloy_sol_types::Error::Overrun);
8099                }
8100                out[0usize] = alloy_sol_types::abi::token::WordToken(
8101                    Self::SIGNATURE_HASH,
8102                );
8103                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8104                    &self.account,
8105                );
8106                Ok(())
8107            }
8108        }
8109        #[automatically_derived]
8110        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
8111            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8112                From::from(self)
8113            }
8114            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8115                From::from(&self)
8116            }
8117        }
8118        #[automatically_derived]
8119        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
8120            #[inline]
8121            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
8122                alloy_sol_types::SolEvent::encode_log_data(this)
8123            }
8124        }
8125    };
8126    #[derive(serde::Serialize, serde::Deserialize)]
8127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8128    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
8129```solidity
8130event Delegated(address indexed delegator, address indexed validator, uint256 amount);
8131```*/
8132    #[allow(
8133        non_camel_case_types,
8134        non_snake_case,
8135        clippy::pub_underscore_fields,
8136        clippy::style
8137    )]
8138    #[derive(Clone)]
8139    pub struct Delegated {
8140        #[allow(missing_docs)]
8141        pub delegator: alloy::sol_types::private::Address,
8142        #[allow(missing_docs)]
8143        pub validator: alloy::sol_types::private::Address,
8144        #[allow(missing_docs)]
8145        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8146    }
8147    #[allow(
8148        non_camel_case_types,
8149        non_snake_case,
8150        clippy::pub_underscore_fields,
8151        clippy::style
8152    )]
8153    const _: () = {
8154        use alloy::sol_types as alloy_sol_types;
8155        #[automatically_derived]
8156        impl alloy_sol_types::SolEvent for Delegated {
8157            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8158            type DataToken<'a> = <Self::DataTuple<
8159                'a,
8160            > as alloy_sol_types::SolType>::Token<'a>;
8161            type TopicList = (
8162                alloy_sol_types::sol_data::FixedBytes<32>,
8163                alloy::sol_types::sol_data::Address,
8164                alloy::sol_types::sol_data::Address,
8165            );
8166            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
8167            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8168                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
8169                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
8170                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
8171            ]);
8172            const ANONYMOUS: bool = false;
8173            #[allow(unused_variables)]
8174            #[inline]
8175            fn new(
8176                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8177                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8178            ) -> Self {
8179                Self {
8180                    delegator: topics.1,
8181                    validator: topics.2,
8182                    amount: data.0,
8183                }
8184            }
8185            #[inline]
8186            fn check_signature(
8187                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8188            ) -> alloy_sol_types::Result<()> {
8189                if topics.0 != Self::SIGNATURE_HASH {
8190                    return Err(
8191                        alloy_sol_types::Error::invalid_event_signature_hash(
8192                            Self::SIGNATURE,
8193                            topics.0,
8194                            Self::SIGNATURE_HASH,
8195                        ),
8196                    );
8197                }
8198                Ok(())
8199            }
8200            #[inline]
8201            fn tokenize_body(&self) -> Self::DataToken<'_> {
8202                (
8203                    <alloy::sol_types::sol_data::Uint<
8204                        256,
8205                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8206                )
8207            }
8208            #[inline]
8209            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8210                (
8211                    Self::SIGNATURE_HASH.into(),
8212                    self.delegator.clone(),
8213                    self.validator.clone(),
8214                )
8215            }
8216            #[inline]
8217            fn encode_topics_raw(
8218                &self,
8219                out: &mut [alloy_sol_types::abi::token::WordToken],
8220            ) -> alloy_sol_types::Result<()> {
8221                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8222                    return Err(alloy_sol_types::Error::Overrun);
8223                }
8224                out[0usize] = alloy_sol_types::abi::token::WordToken(
8225                    Self::SIGNATURE_HASH,
8226                );
8227                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8228                    &self.delegator,
8229                );
8230                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8231                    &self.validator,
8232                );
8233                Ok(())
8234            }
8235        }
8236        #[automatically_derived]
8237        impl alloy_sol_types::private::IntoLogData for Delegated {
8238            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8239                From::from(self)
8240            }
8241            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8242                From::from(&self)
8243            }
8244        }
8245        #[automatically_derived]
8246        impl From<&Delegated> for alloy_sol_types::private::LogData {
8247            #[inline]
8248            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
8249                alloy_sol_types::SolEvent::encode_log_data(this)
8250            }
8251        }
8252    };
8253    #[derive(serde::Serialize, serde::Deserialize)]
8254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8255    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
8256```solidity
8257event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
8258```*/
8259    #[allow(
8260        non_camel_case_types,
8261        non_snake_case,
8262        clippy::pub_underscore_fields,
8263        clippy::style
8264    )]
8265    #[derive(Clone)]
8266    pub struct ExitEscrowPeriodUpdated {
8267        #[allow(missing_docs)]
8268        pub newExitEscrowPeriod: u64,
8269    }
8270    #[allow(
8271        non_camel_case_types,
8272        non_snake_case,
8273        clippy::pub_underscore_fields,
8274        clippy::style
8275    )]
8276    const _: () = {
8277        use alloy::sol_types as alloy_sol_types;
8278        #[automatically_derived]
8279        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
8280            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8281            type DataToken<'a> = <Self::DataTuple<
8282                'a,
8283            > as alloy_sol_types::SolType>::Token<'a>;
8284            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8285            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
8286            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8287                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
8288                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
8289                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
8290            ]);
8291            const ANONYMOUS: bool = false;
8292            #[allow(unused_variables)]
8293            #[inline]
8294            fn new(
8295                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8296                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8297            ) -> Self {
8298                Self {
8299                    newExitEscrowPeriod: data.0,
8300                }
8301            }
8302            #[inline]
8303            fn check_signature(
8304                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8305            ) -> alloy_sol_types::Result<()> {
8306                if topics.0 != Self::SIGNATURE_HASH {
8307                    return Err(
8308                        alloy_sol_types::Error::invalid_event_signature_hash(
8309                            Self::SIGNATURE,
8310                            topics.0,
8311                            Self::SIGNATURE_HASH,
8312                        ),
8313                    );
8314                }
8315                Ok(())
8316            }
8317            #[inline]
8318            fn tokenize_body(&self) -> Self::DataToken<'_> {
8319                (
8320                    <alloy::sol_types::sol_data::Uint<
8321                        64,
8322                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
8323                )
8324            }
8325            #[inline]
8326            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8327                (Self::SIGNATURE_HASH.into(),)
8328            }
8329            #[inline]
8330            fn encode_topics_raw(
8331                &self,
8332                out: &mut [alloy_sol_types::abi::token::WordToken],
8333            ) -> alloy_sol_types::Result<()> {
8334                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8335                    return Err(alloy_sol_types::Error::Overrun);
8336                }
8337                out[0usize] = alloy_sol_types::abi::token::WordToken(
8338                    Self::SIGNATURE_HASH,
8339                );
8340                Ok(())
8341            }
8342        }
8343        #[automatically_derived]
8344        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
8345            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8346                From::from(self)
8347            }
8348            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8349                From::from(&self)
8350            }
8351        }
8352        #[automatically_derived]
8353        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
8354            #[inline]
8355            fn from(
8356                this: &ExitEscrowPeriodUpdated,
8357            ) -> alloy_sol_types::private::LogData {
8358                alloy_sol_types::SolEvent::encode_log_data(this)
8359            }
8360        }
8361    };
8362    #[derive(serde::Serialize, serde::Deserialize)]
8363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8364    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
8365```solidity
8366event Initialized(uint64 version);
8367```*/
8368    #[allow(
8369        non_camel_case_types,
8370        non_snake_case,
8371        clippy::pub_underscore_fields,
8372        clippy::style
8373    )]
8374    #[derive(Clone)]
8375    pub struct Initialized {
8376        #[allow(missing_docs)]
8377        pub version: u64,
8378    }
8379    #[allow(
8380        non_camel_case_types,
8381        non_snake_case,
8382        clippy::pub_underscore_fields,
8383        clippy::style
8384    )]
8385    const _: () = {
8386        use alloy::sol_types as alloy_sol_types;
8387        #[automatically_derived]
8388        impl alloy_sol_types::SolEvent for Initialized {
8389            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8390            type DataToken<'a> = <Self::DataTuple<
8391                'a,
8392            > as alloy_sol_types::SolType>::Token<'a>;
8393            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8394            const SIGNATURE: &'static str = "Initialized(uint64)";
8395            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8396                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
8397                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
8398                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
8399            ]);
8400            const ANONYMOUS: bool = false;
8401            #[allow(unused_variables)]
8402            #[inline]
8403            fn new(
8404                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8405                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8406            ) -> Self {
8407                Self { version: data.0 }
8408            }
8409            #[inline]
8410            fn check_signature(
8411                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8412            ) -> alloy_sol_types::Result<()> {
8413                if topics.0 != Self::SIGNATURE_HASH {
8414                    return Err(
8415                        alloy_sol_types::Error::invalid_event_signature_hash(
8416                            Self::SIGNATURE,
8417                            topics.0,
8418                            Self::SIGNATURE_HASH,
8419                        ),
8420                    );
8421                }
8422                Ok(())
8423            }
8424            #[inline]
8425            fn tokenize_body(&self) -> Self::DataToken<'_> {
8426                (
8427                    <alloy::sol_types::sol_data::Uint<
8428                        64,
8429                    > as alloy_sol_types::SolType>::tokenize(&self.version),
8430                )
8431            }
8432            #[inline]
8433            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8434                (Self::SIGNATURE_HASH.into(),)
8435            }
8436            #[inline]
8437            fn encode_topics_raw(
8438                &self,
8439                out: &mut [alloy_sol_types::abi::token::WordToken],
8440            ) -> alloy_sol_types::Result<()> {
8441                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8442                    return Err(alloy_sol_types::Error::Overrun);
8443                }
8444                out[0usize] = alloy_sol_types::abi::token::WordToken(
8445                    Self::SIGNATURE_HASH,
8446                );
8447                Ok(())
8448            }
8449        }
8450        #[automatically_derived]
8451        impl alloy_sol_types::private::IntoLogData for Initialized {
8452            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8453                From::from(self)
8454            }
8455            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8456                From::from(&self)
8457            }
8458        }
8459        #[automatically_derived]
8460        impl From<&Initialized> for alloy_sol_types::private::LogData {
8461            #[inline]
8462            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
8463                alloy_sol_types::SolEvent::encode_log_data(this)
8464            }
8465        }
8466    };
8467    #[derive(serde::Serialize, serde::Deserialize)]
8468    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8469    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
8470```solidity
8471event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
8472```*/
8473    #[allow(
8474        non_camel_case_types,
8475        non_snake_case,
8476        clippy::pub_underscore_fields,
8477        clippy::style
8478    )]
8479    #[derive(Clone)]
8480    pub struct MaxCommissionIncreaseUpdated {
8481        #[allow(missing_docs)]
8482        pub newMaxIncrease: u16,
8483    }
8484    #[allow(
8485        non_camel_case_types,
8486        non_snake_case,
8487        clippy::pub_underscore_fields,
8488        clippy::style
8489    )]
8490    const _: () = {
8491        use alloy::sol_types as alloy_sol_types;
8492        #[automatically_derived]
8493        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
8494            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
8495            type DataToken<'a> = <Self::DataTuple<
8496                'a,
8497            > as alloy_sol_types::SolType>::Token<'a>;
8498            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8499            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
8500            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8501                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
8502                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
8503                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
8504            ]);
8505            const ANONYMOUS: bool = false;
8506            #[allow(unused_variables)]
8507            #[inline]
8508            fn new(
8509                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8510                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8511            ) -> Self {
8512                Self { newMaxIncrease: data.0 }
8513            }
8514            #[inline]
8515            fn check_signature(
8516                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8517            ) -> alloy_sol_types::Result<()> {
8518                if topics.0 != Self::SIGNATURE_HASH {
8519                    return Err(
8520                        alloy_sol_types::Error::invalid_event_signature_hash(
8521                            Self::SIGNATURE,
8522                            topics.0,
8523                            Self::SIGNATURE_HASH,
8524                        ),
8525                    );
8526                }
8527                Ok(())
8528            }
8529            #[inline]
8530            fn tokenize_body(&self) -> Self::DataToken<'_> {
8531                (
8532                    <alloy::sol_types::sol_data::Uint<
8533                        16,
8534                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
8535                )
8536            }
8537            #[inline]
8538            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8539                (Self::SIGNATURE_HASH.into(),)
8540            }
8541            #[inline]
8542            fn encode_topics_raw(
8543                &self,
8544                out: &mut [alloy_sol_types::abi::token::WordToken],
8545            ) -> alloy_sol_types::Result<()> {
8546                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8547                    return Err(alloy_sol_types::Error::Overrun);
8548                }
8549                out[0usize] = alloy_sol_types::abi::token::WordToken(
8550                    Self::SIGNATURE_HASH,
8551                );
8552                Ok(())
8553            }
8554        }
8555        #[automatically_derived]
8556        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
8557            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8558                From::from(self)
8559            }
8560            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8561                From::from(&self)
8562            }
8563        }
8564        #[automatically_derived]
8565        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
8566            #[inline]
8567            fn from(
8568                this: &MaxCommissionIncreaseUpdated,
8569            ) -> alloy_sol_types::private::LogData {
8570                alloy_sol_types::SolEvent::encode_log_data(this)
8571            }
8572        }
8573    };
8574    #[derive(serde::Serialize, serde::Deserialize)]
8575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8576    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
8577```solidity
8578event MetadataUriUpdated(address indexed validator, string metadataUri);
8579```*/
8580    #[allow(
8581        non_camel_case_types,
8582        non_snake_case,
8583        clippy::pub_underscore_fields,
8584        clippy::style
8585    )]
8586    #[derive(Clone)]
8587    pub struct MetadataUriUpdated {
8588        #[allow(missing_docs)]
8589        pub validator: alloy::sol_types::private::Address,
8590        #[allow(missing_docs)]
8591        pub metadataUri: alloy::sol_types::private::String,
8592    }
8593    #[allow(
8594        non_camel_case_types,
8595        non_snake_case,
8596        clippy::pub_underscore_fields,
8597        clippy::style
8598    )]
8599    const _: () = {
8600        use alloy::sol_types as alloy_sol_types;
8601        #[automatically_derived]
8602        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
8603            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
8604            type DataToken<'a> = <Self::DataTuple<
8605                'a,
8606            > as alloy_sol_types::SolType>::Token<'a>;
8607            type TopicList = (
8608                alloy_sol_types::sol_data::FixedBytes<32>,
8609                alloy::sol_types::sol_data::Address,
8610            );
8611            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
8612            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8613                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
8614                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
8615                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
8616            ]);
8617            const ANONYMOUS: bool = false;
8618            #[allow(unused_variables)]
8619            #[inline]
8620            fn new(
8621                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8622                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8623            ) -> Self {
8624                Self {
8625                    validator: topics.1,
8626                    metadataUri: data.0,
8627                }
8628            }
8629            #[inline]
8630            fn check_signature(
8631                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8632            ) -> alloy_sol_types::Result<()> {
8633                if topics.0 != Self::SIGNATURE_HASH {
8634                    return Err(
8635                        alloy_sol_types::Error::invalid_event_signature_hash(
8636                            Self::SIGNATURE,
8637                            topics.0,
8638                            Self::SIGNATURE_HASH,
8639                        ),
8640                    );
8641                }
8642                Ok(())
8643            }
8644            #[inline]
8645            fn tokenize_body(&self) -> Self::DataToken<'_> {
8646                (
8647                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8648                        &self.metadataUri,
8649                    ),
8650                )
8651            }
8652            #[inline]
8653            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8654                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8655            }
8656            #[inline]
8657            fn encode_topics_raw(
8658                &self,
8659                out: &mut [alloy_sol_types::abi::token::WordToken],
8660            ) -> alloy_sol_types::Result<()> {
8661                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8662                    return Err(alloy_sol_types::Error::Overrun);
8663                }
8664                out[0usize] = alloy_sol_types::abi::token::WordToken(
8665                    Self::SIGNATURE_HASH,
8666                );
8667                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8668                    &self.validator,
8669                );
8670                Ok(())
8671            }
8672        }
8673        #[automatically_derived]
8674        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
8675            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8676                From::from(self)
8677            }
8678            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8679                From::from(&self)
8680            }
8681        }
8682        #[automatically_derived]
8683        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
8684            #[inline]
8685            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
8686                alloy_sol_types::SolEvent::encode_log_data(this)
8687            }
8688        }
8689    };
8690    #[derive(serde::Serialize, serde::Deserialize)]
8691    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8692    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
8693```solidity
8694event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
8695```*/
8696    #[allow(
8697        non_camel_case_types,
8698        non_snake_case,
8699        clippy::pub_underscore_fields,
8700        clippy::style
8701    )]
8702    #[derive(Clone)]
8703    pub struct MinCommissionUpdateIntervalUpdated {
8704        #[allow(missing_docs)]
8705        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
8706    }
8707    #[allow(
8708        non_camel_case_types,
8709        non_snake_case,
8710        clippy::pub_underscore_fields,
8711        clippy::style
8712    )]
8713    const _: () = {
8714        use alloy::sol_types as alloy_sol_types;
8715        #[automatically_derived]
8716        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
8717            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8718            type DataToken<'a> = <Self::DataTuple<
8719                'a,
8720            > as alloy_sol_types::SolType>::Token<'a>;
8721            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8722            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
8723            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8724                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
8725                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
8726                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
8727            ]);
8728            const ANONYMOUS: bool = false;
8729            #[allow(unused_variables)]
8730            #[inline]
8731            fn new(
8732                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8733                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8734            ) -> Self {
8735                Self { newInterval: data.0 }
8736            }
8737            #[inline]
8738            fn check_signature(
8739                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8740            ) -> alloy_sol_types::Result<()> {
8741                if topics.0 != Self::SIGNATURE_HASH {
8742                    return Err(
8743                        alloy_sol_types::Error::invalid_event_signature_hash(
8744                            Self::SIGNATURE,
8745                            topics.0,
8746                            Self::SIGNATURE_HASH,
8747                        ),
8748                    );
8749                }
8750                Ok(())
8751            }
8752            #[inline]
8753            fn tokenize_body(&self) -> Self::DataToken<'_> {
8754                (
8755                    <alloy::sol_types::sol_data::Uint<
8756                        256,
8757                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
8758                )
8759            }
8760            #[inline]
8761            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8762                (Self::SIGNATURE_HASH.into(),)
8763            }
8764            #[inline]
8765            fn encode_topics_raw(
8766                &self,
8767                out: &mut [alloy_sol_types::abi::token::WordToken],
8768            ) -> alloy_sol_types::Result<()> {
8769                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8770                    return Err(alloy_sol_types::Error::Overrun);
8771                }
8772                out[0usize] = alloy_sol_types::abi::token::WordToken(
8773                    Self::SIGNATURE_HASH,
8774                );
8775                Ok(())
8776            }
8777        }
8778        #[automatically_derived]
8779        impl alloy_sol_types::private::IntoLogData
8780        for MinCommissionUpdateIntervalUpdated {
8781            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8782                From::from(self)
8783            }
8784            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8785                From::from(&self)
8786            }
8787        }
8788        #[automatically_derived]
8789        impl From<&MinCommissionUpdateIntervalUpdated>
8790        for alloy_sol_types::private::LogData {
8791            #[inline]
8792            fn from(
8793                this: &MinCommissionUpdateIntervalUpdated,
8794            ) -> alloy_sol_types::private::LogData {
8795                alloy_sol_types::SolEvent::encode_log_data(this)
8796            }
8797        }
8798    };
8799    #[derive(serde::Serialize, serde::Deserialize)]
8800    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8801    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
8802```solidity
8803event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
8804```*/
8805    #[allow(
8806        non_camel_case_types,
8807        non_snake_case,
8808        clippy::pub_underscore_fields,
8809        clippy::style
8810    )]
8811    #[derive(Clone)]
8812    pub struct MinDelegateAmountUpdated {
8813        #[allow(missing_docs)]
8814        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
8815    }
8816    #[allow(
8817        non_camel_case_types,
8818        non_snake_case,
8819        clippy::pub_underscore_fields,
8820        clippy::style
8821    )]
8822    const _: () = {
8823        use alloy::sol_types as alloy_sol_types;
8824        #[automatically_derived]
8825        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
8826            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8827            type DataToken<'a> = <Self::DataTuple<
8828                'a,
8829            > as alloy_sol_types::SolType>::Token<'a>;
8830            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8831            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
8832            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8833                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
8834                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
8835                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
8836            ]);
8837            const ANONYMOUS: bool = false;
8838            #[allow(unused_variables)]
8839            #[inline]
8840            fn new(
8841                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8842                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8843            ) -> Self {
8844                Self {
8845                    newMinDelegateAmount: data.0,
8846                }
8847            }
8848            #[inline]
8849            fn check_signature(
8850                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8851            ) -> alloy_sol_types::Result<()> {
8852                if topics.0 != Self::SIGNATURE_HASH {
8853                    return Err(
8854                        alloy_sol_types::Error::invalid_event_signature_hash(
8855                            Self::SIGNATURE,
8856                            topics.0,
8857                            Self::SIGNATURE_HASH,
8858                        ),
8859                    );
8860                }
8861                Ok(())
8862            }
8863            #[inline]
8864            fn tokenize_body(&self) -> Self::DataToken<'_> {
8865                (
8866                    <alloy::sol_types::sol_data::Uint<
8867                        256,
8868                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
8869                )
8870            }
8871            #[inline]
8872            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8873                (Self::SIGNATURE_HASH.into(),)
8874            }
8875            #[inline]
8876            fn encode_topics_raw(
8877                &self,
8878                out: &mut [alloy_sol_types::abi::token::WordToken],
8879            ) -> alloy_sol_types::Result<()> {
8880                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8881                    return Err(alloy_sol_types::Error::Overrun);
8882                }
8883                out[0usize] = alloy_sol_types::abi::token::WordToken(
8884                    Self::SIGNATURE_HASH,
8885                );
8886                Ok(())
8887            }
8888        }
8889        #[automatically_derived]
8890        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
8891            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8892                From::from(self)
8893            }
8894            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8895                From::from(&self)
8896            }
8897        }
8898        #[automatically_derived]
8899        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
8900            #[inline]
8901            fn from(
8902                this: &MinDelegateAmountUpdated,
8903            ) -> alloy_sol_types::private::LogData {
8904                alloy_sol_types::SolEvent::encode_log_data(this)
8905            }
8906        }
8907    };
8908    #[derive(serde::Serialize, serde::Deserialize)]
8909    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8910    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
8911```solidity
8912event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
8913```*/
8914    #[allow(
8915        non_camel_case_types,
8916        non_snake_case,
8917        clippy::pub_underscore_fields,
8918        clippy::style
8919    )]
8920    #[derive(Clone)]
8921    pub struct OwnershipTransferred {
8922        #[allow(missing_docs)]
8923        pub previousOwner: alloy::sol_types::private::Address,
8924        #[allow(missing_docs)]
8925        pub newOwner: alloy::sol_types::private::Address,
8926    }
8927    #[allow(
8928        non_camel_case_types,
8929        non_snake_case,
8930        clippy::pub_underscore_fields,
8931        clippy::style
8932    )]
8933    const _: () = {
8934        use alloy::sol_types as alloy_sol_types;
8935        #[automatically_derived]
8936        impl alloy_sol_types::SolEvent for OwnershipTransferred {
8937            type DataTuple<'a> = ();
8938            type DataToken<'a> = <Self::DataTuple<
8939                'a,
8940            > as alloy_sol_types::SolType>::Token<'a>;
8941            type TopicList = (
8942                alloy_sol_types::sol_data::FixedBytes<32>,
8943                alloy::sol_types::sol_data::Address,
8944                alloy::sol_types::sol_data::Address,
8945            );
8946            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
8947            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8948                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
8949                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
8950                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
8951            ]);
8952            const ANONYMOUS: bool = false;
8953            #[allow(unused_variables)]
8954            #[inline]
8955            fn new(
8956                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8957                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8958            ) -> Self {
8959                Self {
8960                    previousOwner: topics.1,
8961                    newOwner: topics.2,
8962                }
8963            }
8964            #[inline]
8965            fn check_signature(
8966                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8967            ) -> alloy_sol_types::Result<()> {
8968                if topics.0 != Self::SIGNATURE_HASH {
8969                    return Err(
8970                        alloy_sol_types::Error::invalid_event_signature_hash(
8971                            Self::SIGNATURE,
8972                            topics.0,
8973                            Self::SIGNATURE_HASH,
8974                        ),
8975                    );
8976                }
8977                Ok(())
8978            }
8979            #[inline]
8980            fn tokenize_body(&self) -> Self::DataToken<'_> {
8981                ()
8982            }
8983            #[inline]
8984            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8985                (
8986                    Self::SIGNATURE_HASH.into(),
8987                    self.previousOwner.clone(),
8988                    self.newOwner.clone(),
8989                )
8990            }
8991            #[inline]
8992            fn encode_topics_raw(
8993                &self,
8994                out: &mut [alloy_sol_types::abi::token::WordToken],
8995            ) -> alloy_sol_types::Result<()> {
8996                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8997                    return Err(alloy_sol_types::Error::Overrun);
8998                }
8999                out[0usize] = alloy_sol_types::abi::token::WordToken(
9000                    Self::SIGNATURE_HASH,
9001                );
9002                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9003                    &self.previousOwner,
9004                );
9005                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9006                    &self.newOwner,
9007                );
9008                Ok(())
9009            }
9010        }
9011        #[automatically_derived]
9012        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9013            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9014                From::from(self)
9015            }
9016            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9017                From::from(&self)
9018            }
9019        }
9020        #[automatically_derived]
9021        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9022            #[inline]
9023            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9024                alloy_sol_types::SolEvent::encode_log_data(this)
9025            }
9026        }
9027    };
9028    #[derive(serde::Serialize, serde::Deserialize)]
9029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9030    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
9031```solidity
9032event Paused(address account);
9033```*/
9034    #[allow(
9035        non_camel_case_types,
9036        non_snake_case,
9037        clippy::pub_underscore_fields,
9038        clippy::style
9039    )]
9040    #[derive(Clone)]
9041    pub struct Paused {
9042        #[allow(missing_docs)]
9043        pub account: alloy::sol_types::private::Address,
9044    }
9045    #[allow(
9046        non_camel_case_types,
9047        non_snake_case,
9048        clippy::pub_underscore_fields,
9049        clippy::style
9050    )]
9051    const _: () = {
9052        use alloy::sol_types as alloy_sol_types;
9053        #[automatically_derived]
9054        impl alloy_sol_types::SolEvent for Paused {
9055            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9056            type DataToken<'a> = <Self::DataTuple<
9057                'a,
9058            > as alloy_sol_types::SolType>::Token<'a>;
9059            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9060            const SIGNATURE: &'static str = "Paused(address)";
9061            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9062                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9063                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9064                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9065            ]);
9066            const ANONYMOUS: bool = false;
9067            #[allow(unused_variables)]
9068            #[inline]
9069            fn new(
9070                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9071                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9072            ) -> Self {
9073                Self { account: data.0 }
9074            }
9075            #[inline]
9076            fn check_signature(
9077                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9078            ) -> alloy_sol_types::Result<()> {
9079                if topics.0 != Self::SIGNATURE_HASH {
9080                    return Err(
9081                        alloy_sol_types::Error::invalid_event_signature_hash(
9082                            Self::SIGNATURE,
9083                            topics.0,
9084                            Self::SIGNATURE_HASH,
9085                        ),
9086                    );
9087                }
9088                Ok(())
9089            }
9090            #[inline]
9091            fn tokenize_body(&self) -> Self::DataToken<'_> {
9092                (
9093                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9094                        &self.account,
9095                    ),
9096                )
9097            }
9098            #[inline]
9099            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9100                (Self::SIGNATURE_HASH.into(),)
9101            }
9102            #[inline]
9103            fn encode_topics_raw(
9104                &self,
9105                out: &mut [alloy_sol_types::abi::token::WordToken],
9106            ) -> alloy_sol_types::Result<()> {
9107                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9108                    return Err(alloy_sol_types::Error::Overrun);
9109                }
9110                out[0usize] = alloy_sol_types::abi::token::WordToken(
9111                    Self::SIGNATURE_HASH,
9112                );
9113                Ok(())
9114            }
9115        }
9116        #[automatically_derived]
9117        impl alloy_sol_types::private::IntoLogData for Paused {
9118            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9119                From::from(self)
9120            }
9121            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9122                From::from(&self)
9123            }
9124        }
9125        #[automatically_derived]
9126        impl From<&Paused> for alloy_sol_types::private::LogData {
9127            #[inline]
9128            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
9129                alloy_sol_types::SolEvent::encode_log_data(this)
9130            }
9131        }
9132    };
9133    #[derive(serde::Serialize, serde::Deserialize)]
9134    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9135    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
9136```solidity
9137event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
9138```*/
9139    #[allow(
9140        non_camel_case_types,
9141        non_snake_case,
9142        clippy::pub_underscore_fields,
9143        clippy::style
9144    )]
9145    #[derive(Clone)]
9146    pub struct RoleAdminChanged {
9147        #[allow(missing_docs)]
9148        pub role: alloy::sol_types::private::FixedBytes<32>,
9149        #[allow(missing_docs)]
9150        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
9151        #[allow(missing_docs)]
9152        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
9153    }
9154    #[allow(
9155        non_camel_case_types,
9156        non_snake_case,
9157        clippy::pub_underscore_fields,
9158        clippy::style
9159    )]
9160    const _: () = {
9161        use alloy::sol_types as alloy_sol_types;
9162        #[automatically_derived]
9163        impl alloy_sol_types::SolEvent for RoleAdminChanged {
9164            type DataTuple<'a> = ();
9165            type DataToken<'a> = <Self::DataTuple<
9166                'a,
9167            > as alloy_sol_types::SolType>::Token<'a>;
9168            type TopicList = (
9169                alloy_sol_types::sol_data::FixedBytes<32>,
9170                alloy::sol_types::sol_data::FixedBytes<32>,
9171                alloy::sol_types::sol_data::FixedBytes<32>,
9172                alloy::sol_types::sol_data::FixedBytes<32>,
9173            );
9174            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
9175            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9176                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9177                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9178                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9179            ]);
9180            const ANONYMOUS: bool = false;
9181            #[allow(unused_variables)]
9182            #[inline]
9183            fn new(
9184                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9185                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9186            ) -> Self {
9187                Self {
9188                    role: topics.1,
9189                    previousAdminRole: topics.2,
9190                    newAdminRole: topics.3,
9191                }
9192            }
9193            #[inline]
9194            fn check_signature(
9195                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9196            ) -> alloy_sol_types::Result<()> {
9197                if topics.0 != Self::SIGNATURE_HASH {
9198                    return Err(
9199                        alloy_sol_types::Error::invalid_event_signature_hash(
9200                            Self::SIGNATURE,
9201                            topics.0,
9202                            Self::SIGNATURE_HASH,
9203                        ),
9204                    );
9205                }
9206                Ok(())
9207            }
9208            #[inline]
9209            fn tokenize_body(&self) -> Self::DataToken<'_> {
9210                ()
9211            }
9212            #[inline]
9213            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9214                (
9215                    Self::SIGNATURE_HASH.into(),
9216                    self.role.clone(),
9217                    self.previousAdminRole.clone(),
9218                    self.newAdminRole.clone(),
9219                )
9220            }
9221            #[inline]
9222            fn encode_topics_raw(
9223                &self,
9224                out: &mut [alloy_sol_types::abi::token::WordToken],
9225            ) -> alloy_sol_types::Result<()> {
9226                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9227                    return Err(alloy_sol_types::Error::Overrun);
9228                }
9229                out[0usize] = alloy_sol_types::abi::token::WordToken(
9230                    Self::SIGNATURE_HASH,
9231                );
9232                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9233                    32,
9234                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9235                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
9236                    32,
9237                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
9238                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
9239                    32,
9240                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
9241                Ok(())
9242            }
9243        }
9244        #[automatically_derived]
9245        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
9246            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9247                From::from(self)
9248            }
9249            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9250                From::from(&self)
9251            }
9252        }
9253        #[automatically_derived]
9254        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
9255            #[inline]
9256            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
9257                alloy_sol_types::SolEvent::encode_log_data(this)
9258            }
9259        }
9260    };
9261    #[derive(serde::Serialize, serde::Deserialize)]
9262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9263    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
9264```solidity
9265event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
9266```*/
9267    #[allow(
9268        non_camel_case_types,
9269        non_snake_case,
9270        clippy::pub_underscore_fields,
9271        clippy::style
9272    )]
9273    #[derive(Clone)]
9274    pub struct RoleGranted {
9275        #[allow(missing_docs)]
9276        pub role: alloy::sol_types::private::FixedBytes<32>,
9277        #[allow(missing_docs)]
9278        pub account: alloy::sol_types::private::Address,
9279        #[allow(missing_docs)]
9280        pub sender: alloy::sol_types::private::Address,
9281    }
9282    #[allow(
9283        non_camel_case_types,
9284        non_snake_case,
9285        clippy::pub_underscore_fields,
9286        clippy::style
9287    )]
9288    const _: () = {
9289        use alloy::sol_types as alloy_sol_types;
9290        #[automatically_derived]
9291        impl alloy_sol_types::SolEvent for RoleGranted {
9292            type DataTuple<'a> = ();
9293            type DataToken<'a> = <Self::DataTuple<
9294                'a,
9295            > as alloy_sol_types::SolType>::Token<'a>;
9296            type TopicList = (
9297                alloy_sol_types::sol_data::FixedBytes<32>,
9298                alloy::sol_types::sol_data::FixedBytes<32>,
9299                alloy::sol_types::sol_data::Address,
9300                alloy::sol_types::sol_data::Address,
9301            );
9302            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
9303            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9304                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9305                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9306                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9307            ]);
9308            const ANONYMOUS: bool = false;
9309            #[allow(unused_variables)]
9310            #[inline]
9311            fn new(
9312                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9313                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9314            ) -> Self {
9315                Self {
9316                    role: topics.1,
9317                    account: topics.2,
9318                    sender: topics.3,
9319                }
9320            }
9321            #[inline]
9322            fn check_signature(
9323                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9324            ) -> alloy_sol_types::Result<()> {
9325                if topics.0 != Self::SIGNATURE_HASH {
9326                    return Err(
9327                        alloy_sol_types::Error::invalid_event_signature_hash(
9328                            Self::SIGNATURE,
9329                            topics.0,
9330                            Self::SIGNATURE_HASH,
9331                        ),
9332                    );
9333                }
9334                Ok(())
9335            }
9336            #[inline]
9337            fn tokenize_body(&self) -> Self::DataToken<'_> {
9338                ()
9339            }
9340            #[inline]
9341            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9342                (
9343                    Self::SIGNATURE_HASH.into(),
9344                    self.role.clone(),
9345                    self.account.clone(),
9346                    self.sender.clone(),
9347                )
9348            }
9349            #[inline]
9350            fn encode_topics_raw(
9351                &self,
9352                out: &mut [alloy_sol_types::abi::token::WordToken],
9353            ) -> alloy_sol_types::Result<()> {
9354                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9355                    return Err(alloy_sol_types::Error::Overrun);
9356                }
9357                out[0usize] = alloy_sol_types::abi::token::WordToken(
9358                    Self::SIGNATURE_HASH,
9359                );
9360                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9361                    32,
9362                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9363                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9364                    &self.account,
9365                );
9366                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9367                    &self.sender,
9368                );
9369                Ok(())
9370            }
9371        }
9372        #[automatically_derived]
9373        impl alloy_sol_types::private::IntoLogData for RoleGranted {
9374            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9375                From::from(self)
9376            }
9377            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9378                From::from(&self)
9379            }
9380        }
9381        #[automatically_derived]
9382        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
9383            #[inline]
9384            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
9385                alloy_sol_types::SolEvent::encode_log_data(this)
9386            }
9387        }
9388    };
9389    #[derive(serde::Serialize, serde::Deserialize)]
9390    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9391    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
9392```solidity
9393event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
9394```*/
9395    #[allow(
9396        non_camel_case_types,
9397        non_snake_case,
9398        clippy::pub_underscore_fields,
9399        clippy::style
9400    )]
9401    #[derive(Clone)]
9402    pub struct RoleRevoked {
9403        #[allow(missing_docs)]
9404        pub role: alloy::sol_types::private::FixedBytes<32>,
9405        #[allow(missing_docs)]
9406        pub account: alloy::sol_types::private::Address,
9407        #[allow(missing_docs)]
9408        pub sender: alloy::sol_types::private::Address,
9409    }
9410    #[allow(
9411        non_camel_case_types,
9412        non_snake_case,
9413        clippy::pub_underscore_fields,
9414        clippy::style
9415    )]
9416    const _: () = {
9417        use alloy::sol_types as alloy_sol_types;
9418        #[automatically_derived]
9419        impl alloy_sol_types::SolEvent for RoleRevoked {
9420            type DataTuple<'a> = ();
9421            type DataToken<'a> = <Self::DataTuple<
9422                'a,
9423            > as alloy_sol_types::SolType>::Token<'a>;
9424            type TopicList = (
9425                alloy_sol_types::sol_data::FixedBytes<32>,
9426                alloy::sol_types::sol_data::FixedBytes<32>,
9427                alloy::sol_types::sol_data::Address,
9428                alloy::sol_types::sol_data::Address,
9429            );
9430            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
9431            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9432                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9433                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9434                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9435            ]);
9436            const ANONYMOUS: bool = false;
9437            #[allow(unused_variables)]
9438            #[inline]
9439            fn new(
9440                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9441                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9442            ) -> Self {
9443                Self {
9444                    role: topics.1,
9445                    account: topics.2,
9446                    sender: topics.3,
9447                }
9448            }
9449            #[inline]
9450            fn check_signature(
9451                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9452            ) -> alloy_sol_types::Result<()> {
9453                if topics.0 != Self::SIGNATURE_HASH {
9454                    return Err(
9455                        alloy_sol_types::Error::invalid_event_signature_hash(
9456                            Self::SIGNATURE,
9457                            topics.0,
9458                            Self::SIGNATURE_HASH,
9459                        ),
9460                    );
9461                }
9462                Ok(())
9463            }
9464            #[inline]
9465            fn tokenize_body(&self) -> Self::DataToken<'_> {
9466                ()
9467            }
9468            #[inline]
9469            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9470                (
9471                    Self::SIGNATURE_HASH.into(),
9472                    self.role.clone(),
9473                    self.account.clone(),
9474                    self.sender.clone(),
9475                )
9476            }
9477            #[inline]
9478            fn encode_topics_raw(
9479                &self,
9480                out: &mut [alloy_sol_types::abi::token::WordToken],
9481            ) -> alloy_sol_types::Result<()> {
9482                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9483                    return Err(alloy_sol_types::Error::Overrun);
9484                }
9485                out[0usize] = alloy_sol_types::abi::token::WordToken(
9486                    Self::SIGNATURE_HASH,
9487                );
9488                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9489                    32,
9490                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9491                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9492                    &self.account,
9493                );
9494                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9495                    &self.sender,
9496                );
9497                Ok(())
9498            }
9499        }
9500        #[automatically_derived]
9501        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
9502            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9503                From::from(self)
9504            }
9505            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9506                From::from(&self)
9507            }
9508        }
9509        #[automatically_derived]
9510        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
9511            #[inline]
9512            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
9513                alloy_sol_types::SolEvent::encode_log_data(this)
9514            }
9515        }
9516    };
9517    #[derive(serde::Serialize, serde::Deserialize)]
9518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9519    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
9520```solidity
9521event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
9522```*/
9523    #[allow(
9524        non_camel_case_types,
9525        non_snake_case,
9526        clippy::pub_underscore_fields,
9527        clippy::style
9528    )]
9529    #[derive(Clone)]
9530    pub struct Undelegated {
9531        #[allow(missing_docs)]
9532        pub delegator: alloy::sol_types::private::Address,
9533        #[allow(missing_docs)]
9534        pub validator: alloy::sol_types::private::Address,
9535        #[allow(missing_docs)]
9536        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9537    }
9538    #[allow(
9539        non_camel_case_types,
9540        non_snake_case,
9541        clippy::pub_underscore_fields,
9542        clippy::style
9543    )]
9544    const _: () = {
9545        use alloy::sol_types as alloy_sol_types;
9546        #[automatically_derived]
9547        impl alloy_sol_types::SolEvent for Undelegated {
9548            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9549            type DataToken<'a> = <Self::DataTuple<
9550                'a,
9551            > as alloy_sol_types::SolType>::Token<'a>;
9552            type TopicList = (
9553                alloy_sol_types::sol_data::FixedBytes<32>,
9554                alloy::sol_types::sol_data::Address,
9555                alloy::sol_types::sol_data::Address,
9556            );
9557            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
9558            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9559                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
9560                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
9561                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
9562            ]);
9563            const ANONYMOUS: bool = false;
9564            #[allow(unused_variables)]
9565            #[inline]
9566            fn new(
9567                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9568                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9569            ) -> Self {
9570                Self {
9571                    delegator: topics.1,
9572                    validator: topics.2,
9573                    amount: data.0,
9574                }
9575            }
9576            #[inline]
9577            fn check_signature(
9578                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9579            ) -> alloy_sol_types::Result<()> {
9580                if topics.0 != Self::SIGNATURE_HASH {
9581                    return Err(
9582                        alloy_sol_types::Error::invalid_event_signature_hash(
9583                            Self::SIGNATURE,
9584                            topics.0,
9585                            Self::SIGNATURE_HASH,
9586                        ),
9587                    );
9588                }
9589                Ok(())
9590            }
9591            #[inline]
9592            fn tokenize_body(&self) -> Self::DataToken<'_> {
9593                (
9594                    <alloy::sol_types::sol_data::Uint<
9595                        256,
9596                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9597                )
9598            }
9599            #[inline]
9600            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9601                (
9602                    Self::SIGNATURE_HASH.into(),
9603                    self.delegator.clone(),
9604                    self.validator.clone(),
9605                )
9606            }
9607            #[inline]
9608            fn encode_topics_raw(
9609                &self,
9610                out: &mut [alloy_sol_types::abi::token::WordToken],
9611            ) -> alloy_sol_types::Result<()> {
9612                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9613                    return Err(alloy_sol_types::Error::Overrun);
9614                }
9615                out[0usize] = alloy_sol_types::abi::token::WordToken(
9616                    Self::SIGNATURE_HASH,
9617                );
9618                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9619                    &self.delegator,
9620                );
9621                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9622                    &self.validator,
9623                );
9624                Ok(())
9625            }
9626        }
9627        #[automatically_derived]
9628        impl alloy_sol_types::private::IntoLogData for Undelegated {
9629            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9630                From::from(self)
9631            }
9632            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9633                From::from(&self)
9634            }
9635        }
9636        #[automatically_derived]
9637        impl From<&Undelegated> for alloy_sol_types::private::LogData {
9638            #[inline]
9639            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
9640                alloy_sol_types::SolEvent::encode_log_data(this)
9641            }
9642        }
9643    };
9644    #[derive(serde::Serialize, serde::Deserialize)]
9645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9646    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
9647```solidity
9648event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
9649```*/
9650    #[allow(
9651        non_camel_case_types,
9652        non_snake_case,
9653        clippy::pub_underscore_fields,
9654        clippy::style
9655    )]
9656    #[derive(Clone)]
9657    pub struct UndelegatedV2 {
9658        #[allow(missing_docs)]
9659        pub delegator: alloy::sol_types::private::Address,
9660        #[allow(missing_docs)]
9661        pub validator: alloy::sol_types::private::Address,
9662        #[allow(missing_docs)]
9663        pub undelegationId: u64,
9664        #[allow(missing_docs)]
9665        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9666        #[allow(missing_docs)]
9667        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9668    }
9669    #[allow(
9670        non_camel_case_types,
9671        non_snake_case,
9672        clippy::pub_underscore_fields,
9673        clippy::style
9674    )]
9675    const _: () = {
9676        use alloy::sol_types as alloy_sol_types;
9677        #[automatically_derived]
9678        impl alloy_sol_types::SolEvent for UndelegatedV2 {
9679            type DataTuple<'a> = (
9680                alloy::sol_types::sol_data::Uint<256>,
9681                alloy::sol_types::sol_data::Uint<256>,
9682            );
9683            type DataToken<'a> = <Self::DataTuple<
9684                'a,
9685            > as alloy_sol_types::SolType>::Token<'a>;
9686            type TopicList = (
9687                alloy_sol_types::sol_data::FixedBytes<32>,
9688                alloy::sol_types::sol_data::Address,
9689                alloy::sol_types::sol_data::Address,
9690                alloy::sol_types::sol_data::Uint<64>,
9691            );
9692            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
9693            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9694                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
9695                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
9696                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
9697            ]);
9698            const ANONYMOUS: bool = false;
9699            #[allow(unused_variables)]
9700            #[inline]
9701            fn new(
9702                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9703                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9704            ) -> Self {
9705                Self {
9706                    delegator: topics.1,
9707                    validator: topics.2,
9708                    undelegationId: topics.3,
9709                    amount: data.0,
9710                    unlocksAt: data.1,
9711                }
9712            }
9713            #[inline]
9714            fn check_signature(
9715                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9716            ) -> alloy_sol_types::Result<()> {
9717                if topics.0 != Self::SIGNATURE_HASH {
9718                    return Err(
9719                        alloy_sol_types::Error::invalid_event_signature_hash(
9720                            Self::SIGNATURE,
9721                            topics.0,
9722                            Self::SIGNATURE_HASH,
9723                        ),
9724                    );
9725                }
9726                Ok(())
9727            }
9728            #[inline]
9729            fn tokenize_body(&self) -> Self::DataToken<'_> {
9730                (
9731                    <alloy::sol_types::sol_data::Uint<
9732                        256,
9733                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9734                    <alloy::sol_types::sol_data::Uint<
9735                        256,
9736                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
9737                )
9738            }
9739            #[inline]
9740            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9741                (
9742                    Self::SIGNATURE_HASH.into(),
9743                    self.delegator.clone(),
9744                    self.validator.clone(),
9745                    self.undelegationId.clone(),
9746                )
9747            }
9748            #[inline]
9749            fn encode_topics_raw(
9750                &self,
9751                out: &mut [alloy_sol_types::abi::token::WordToken],
9752            ) -> alloy_sol_types::Result<()> {
9753                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9754                    return Err(alloy_sol_types::Error::Overrun);
9755                }
9756                out[0usize] = alloy_sol_types::abi::token::WordToken(
9757                    Self::SIGNATURE_HASH,
9758                );
9759                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9760                    &self.delegator,
9761                );
9762                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9763                    &self.validator,
9764                );
9765                out[3usize] = <alloy::sol_types::sol_data::Uint<
9766                    64,
9767                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
9768                Ok(())
9769            }
9770        }
9771        #[automatically_derived]
9772        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
9773            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9774                From::from(self)
9775            }
9776            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9777                From::from(&self)
9778            }
9779        }
9780        #[automatically_derived]
9781        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
9782            #[inline]
9783            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
9784                alloy_sol_types::SolEvent::encode_log_data(this)
9785            }
9786        }
9787    };
9788    #[derive(serde::Serialize, serde::Deserialize)]
9789    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9790    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
9791```solidity
9792event Unpaused(address account);
9793```*/
9794    #[allow(
9795        non_camel_case_types,
9796        non_snake_case,
9797        clippy::pub_underscore_fields,
9798        clippy::style
9799    )]
9800    #[derive(Clone)]
9801    pub struct Unpaused {
9802        #[allow(missing_docs)]
9803        pub account: alloy::sol_types::private::Address,
9804    }
9805    #[allow(
9806        non_camel_case_types,
9807        non_snake_case,
9808        clippy::pub_underscore_fields,
9809        clippy::style
9810    )]
9811    const _: () = {
9812        use alloy::sol_types as alloy_sol_types;
9813        #[automatically_derived]
9814        impl alloy_sol_types::SolEvent for Unpaused {
9815            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9816            type DataToken<'a> = <Self::DataTuple<
9817                'a,
9818            > as alloy_sol_types::SolType>::Token<'a>;
9819            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9820            const SIGNATURE: &'static str = "Unpaused(address)";
9821            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9822                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
9823                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
9824                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
9825            ]);
9826            const ANONYMOUS: bool = false;
9827            #[allow(unused_variables)]
9828            #[inline]
9829            fn new(
9830                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9831                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9832            ) -> Self {
9833                Self { account: data.0 }
9834            }
9835            #[inline]
9836            fn check_signature(
9837                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9838            ) -> alloy_sol_types::Result<()> {
9839                if topics.0 != Self::SIGNATURE_HASH {
9840                    return Err(
9841                        alloy_sol_types::Error::invalid_event_signature_hash(
9842                            Self::SIGNATURE,
9843                            topics.0,
9844                            Self::SIGNATURE_HASH,
9845                        ),
9846                    );
9847                }
9848                Ok(())
9849            }
9850            #[inline]
9851            fn tokenize_body(&self) -> Self::DataToken<'_> {
9852                (
9853                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9854                        &self.account,
9855                    ),
9856                )
9857            }
9858            #[inline]
9859            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9860                (Self::SIGNATURE_HASH.into(),)
9861            }
9862            #[inline]
9863            fn encode_topics_raw(
9864                &self,
9865                out: &mut [alloy_sol_types::abi::token::WordToken],
9866            ) -> alloy_sol_types::Result<()> {
9867                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9868                    return Err(alloy_sol_types::Error::Overrun);
9869                }
9870                out[0usize] = alloy_sol_types::abi::token::WordToken(
9871                    Self::SIGNATURE_HASH,
9872                );
9873                Ok(())
9874            }
9875        }
9876        #[automatically_derived]
9877        impl alloy_sol_types::private::IntoLogData for Unpaused {
9878            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9879                From::from(self)
9880            }
9881            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9882                From::from(&self)
9883            }
9884        }
9885        #[automatically_derived]
9886        impl From<&Unpaused> for alloy_sol_types::private::LogData {
9887            #[inline]
9888            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
9889                alloy_sol_types::SolEvent::encode_log_data(this)
9890            }
9891        }
9892    };
9893    #[derive(serde::Serialize, serde::Deserialize)]
9894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9895    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
9896```solidity
9897event Upgraded(address indexed implementation);
9898```*/
9899    #[allow(
9900        non_camel_case_types,
9901        non_snake_case,
9902        clippy::pub_underscore_fields,
9903        clippy::style
9904    )]
9905    #[derive(Clone)]
9906    pub struct Upgraded {
9907        #[allow(missing_docs)]
9908        pub implementation: alloy::sol_types::private::Address,
9909    }
9910    #[allow(
9911        non_camel_case_types,
9912        non_snake_case,
9913        clippy::pub_underscore_fields,
9914        clippy::style
9915    )]
9916    const _: () = {
9917        use alloy::sol_types as alloy_sol_types;
9918        #[automatically_derived]
9919        impl alloy_sol_types::SolEvent for Upgraded {
9920            type DataTuple<'a> = ();
9921            type DataToken<'a> = <Self::DataTuple<
9922                'a,
9923            > as alloy_sol_types::SolType>::Token<'a>;
9924            type TopicList = (
9925                alloy_sol_types::sol_data::FixedBytes<32>,
9926                alloy::sol_types::sol_data::Address,
9927            );
9928            const SIGNATURE: &'static str = "Upgraded(address)";
9929            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9930                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
9931                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
9932                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
9933            ]);
9934            const ANONYMOUS: bool = false;
9935            #[allow(unused_variables)]
9936            #[inline]
9937            fn new(
9938                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9939                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9940            ) -> Self {
9941                Self { implementation: topics.1 }
9942            }
9943            #[inline]
9944            fn check_signature(
9945                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9946            ) -> alloy_sol_types::Result<()> {
9947                if topics.0 != Self::SIGNATURE_HASH {
9948                    return Err(
9949                        alloy_sol_types::Error::invalid_event_signature_hash(
9950                            Self::SIGNATURE,
9951                            topics.0,
9952                            Self::SIGNATURE_HASH,
9953                        ),
9954                    );
9955                }
9956                Ok(())
9957            }
9958            #[inline]
9959            fn tokenize_body(&self) -> Self::DataToken<'_> {
9960                ()
9961            }
9962            #[inline]
9963            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9964                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
9965            }
9966            #[inline]
9967            fn encode_topics_raw(
9968                &self,
9969                out: &mut [alloy_sol_types::abi::token::WordToken],
9970            ) -> alloy_sol_types::Result<()> {
9971                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9972                    return Err(alloy_sol_types::Error::Overrun);
9973                }
9974                out[0usize] = alloy_sol_types::abi::token::WordToken(
9975                    Self::SIGNATURE_HASH,
9976                );
9977                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9978                    &self.implementation,
9979                );
9980                Ok(())
9981            }
9982        }
9983        #[automatically_derived]
9984        impl alloy_sol_types::private::IntoLogData for Upgraded {
9985            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9986                From::from(self)
9987            }
9988            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9989                From::from(&self)
9990            }
9991        }
9992        #[automatically_derived]
9993        impl From<&Upgraded> for alloy_sol_types::private::LogData {
9994            #[inline]
9995            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
9996                alloy_sol_types::SolEvent::encode_log_data(this)
9997            }
9998        }
9999    };
10000    #[derive(serde::Serialize, serde::Deserialize)]
10001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10002    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
10003```solidity
10004event ValidatorExit(address indexed validator);
10005```*/
10006    #[allow(
10007        non_camel_case_types,
10008        non_snake_case,
10009        clippy::pub_underscore_fields,
10010        clippy::style
10011    )]
10012    #[derive(Clone)]
10013    pub struct ValidatorExit {
10014        #[allow(missing_docs)]
10015        pub validator: alloy::sol_types::private::Address,
10016    }
10017    #[allow(
10018        non_camel_case_types,
10019        non_snake_case,
10020        clippy::pub_underscore_fields,
10021        clippy::style
10022    )]
10023    const _: () = {
10024        use alloy::sol_types as alloy_sol_types;
10025        #[automatically_derived]
10026        impl alloy_sol_types::SolEvent for ValidatorExit {
10027            type DataTuple<'a> = ();
10028            type DataToken<'a> = <Self::DataTuple<
10029                'a,
10030            > as alloy_sol_types::SolType>::Token<'a>;
10031            type TopicList = (
10032                alloy_sol_types::sol_data::FixedBytes<32>,
10033                alloy::sol_types::sol_data::Address,
10034            );
10035            const SIGNATURE: &'static str = "ValidatorExit(address)";
10036            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10037                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10038                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10039                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10040            ]);
10041            const ANONYMOUS: bool = false;
10042            #[allow(unused_variables)]
10043            #[inline]
10044            fn new(
10045                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10046                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10047            ) -> Self {
10048                Self { validator: topics.1 }
10049            }
10050            #[inline]
10051            fn check_signature(
10052                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10053            ) -> alloy_sol_types::Result<()> {
10054                if topics.0 != Self::SIGNATURE_HASH {
10055                    return Err(
10056                        alloy_sol_types::Error::invalid_event_signature_hash(
10057                            Self::SIGNATURE,
10058                            topics.0,
10059                            Self::SIGNATURE_HASH,
10060                        ),
10061                    );
10062                }
10063                Ok(())
10064            }
10065            #[inline]
10066            fn tokenize_body(&self) -> Self::DataToken<'_> {
10067                ()
10068            }
10069            #[inline]
10070            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10071                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10072            }
10073            #[inline]
10074            fn encode_topics_raw(
10075                &self,
10076                out: &mut [alloy_sol_types::abi::token::WordToken],
10077            ) -> alloy_sol_types::Result<()> {
10078                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10079                    return Err(alloy_sol_types::Error::Overrun);
10080                }
10081                out[0usize] = alloy_sol_types::abi::token::WordToken(
10082                    Self::SIGNATURE_HASH,
10083                );
10084                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10085                    &self.validator,
10086                );
10087                Ok(())
10088            }
10089        }
10090        #[automatically_derived]
10091        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
10092            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10093                From::from(self)
10094            }
10095            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10096                From::from(&self)
10097            }
10098        }
10099        #[automatically_derived]
10100        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
10101            #[inline]
10102            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
10103                alloy_sol_types::SolEvent::encode_log_data(this)
10104            }
10105        }
10106    };
10107    #[derive(serde::Serialize, serde::Deserialize)]
10108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10109    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
10110```solidity
10111event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
10112```*/
10113    #[allow(
10114        non_camel_case_types,
10115        non_snake_case,
10116        clippy::pub_underscore_fields,
10117        clippy::style
10118    )]
10119    #[derive(Clone)]
10120    pub struct ValidatorExitClaimed {
10121        #[allow(missing_docs)]
10122        pub delegator: alloy::sol_types::private::Address,
10123        #[allow(missing_docs)]
10124        pub validator: alloy::sol_types::private::Address,
10125        #[allow(missing_docs)]
10126        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10127    }
10128    #[allow(
10129        non_camel_case_types,
10130        non_snake_case,
10131        clippy::pub_underscore_fields,
10132        clippy::style
10133    )]
10134    const _: () = {
10135        use alloy::sol_types as alloy_sol_types;
10136        #[automatically_derived]
10137        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
10138            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10139            type DataToken<'a> = <Self::DataTuple<
10140                'a,
10141            > as alloy_sol_types::SolType>::Token<'a>;
10142            type TopicList = (
10143                alloy_sol_types::sol_data::FixedBytes<32>,
10144                alloy::sol_types::sol_data::Address,
10145                alloy::sol_types::sol_data::Address,
10146            );
10147            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
10148            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10149                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
10150                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
10151                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
10152            ]);
10153            const ANONYMOUS: bool = false;
10154            #[allow(unused_variables)]
10155            #[inline]
10156            fn new(
10157                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10158                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10159            ) -> Self {
10160                Self {
10161                    delegator: topics.1,
10162                    validator: topics.2,
10163                    amount: data.0,
10164                }
10165            }
10166            #[inline]
10167            fn check_signature(
10168                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10169            ) -> alloy_sol_types::Result<()> {
10170                if topics.0 != Self::SIGNATURE_HASH {
10171                    return Err(
10172                        alloy_sol_types::Error::invalid_event_signature_hash(
10173                            Self::SIGNATURE,
10174                            topics.0,
10175                            Self::SIGNATURE_HASH,
10176                        ),
10177                    );
10178                }
10179                Ok(())
10180            }
10181            #[inline]
10182            fn tokenize_body(&self) -> Self::DataToken<'_> {
10183                (
10184                    <alloy::sol_types::sol_data::Uint<
10185                        256,
10186                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10187                )
10188            }
10189            #[inline]
10190            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10191                (
10192                    Self::SIGNATURE_HASH.into(),
10193                    self.delegator.clone(),
10194                    self.validator.clone(),
10195                )
10196            }
10197            #[inline]
10198            fn encode_topics_raw(
10199                &self,
10200                out: &mut [alloy_sol_types::abi::token::WordToken],
10201            ) -> alloy_sol_types::Result<()> {
10202                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10203                    return Err(alloy_sol_types::Error::Overrun);
10204                }
10205                out[0usize] = alloy_sol_types::abi::token::WordToken(
10206                    Self::SIGNATURE_HASH,
10207                );
10208                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10209                    &self.delegator,
10210                );
10211                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10212                    &self.validator,
10213                );
10214                Ok(())
10215            }
10216        }
10217        #[automatically_derived]
10218        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
10219            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10220                From::from(self)
10221            }
10222            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10223                From::from(&self)
10224            }
10225        }
10226        #[automatically_derived]
10227        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
10228            #[inline]
10229            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
10230                alloy_sol_types::SolEvent::encode_log_data(this)
10231            }
10232        }
10233    };
10234    #[derive(serde::Serialize, serde::Deserialize)]
10235    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10236    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
10237```solidity
10238event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
10239```*/
10240    #[allow(
10241        non_camel_case_types,
10242        non_snake_case,
10243        clippy::pub_underscore_fields,
10244        clippy::style
10245    )]
10246    #[derive(Clone)]
10247    pub struct ValidatorExitV2 {
10248        #[allow(missing_docs)]
10249        pub validator: alloy::sol_types::private::Address,
10250        #[allow(missing_docs)]
10251        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10252    }
10253    #[allow(
10254        non_camel_case_types,
10255        non_snake_case,
10256        clippy::pub_underscore_fields,
10257        clippy::style
10258    )]
10259    const _: () = {
10260        use alloy::sol_types as alloy_sol_types;
10261        #[automatically_derived]
10262        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
10263            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10264            type DataToken<'a> = <Self::DataTuple<
10265                'a,
10266            > as alloy_sol_types::SolType>::Token<'a>;
10267            type TopicList = (
10268                alloy_sol_types::sol_data::FixedBytes<32>,
10269                alloy::sol_types::sol_data::Address,
10270            );
10271            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
10272            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10273                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
10274                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
10275                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
10276            ]);
10277            const ANONYMOUS: bool = false;
10278            #[allow(unused_variables)]
10279            #[inline]
10280            fn new(
10281                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10282                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10283            ) -> Self {
10284                Self {
10285                    validator: topics.1,
10286                    unlocksAt: data.0,
10287                }
10288            }
10289            #[inline]
10290            fn check_signature(
10291                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10292            ) -> alloy_sol_types::Result<()> {
10293                if topics.0 != Self::SIGNATURE_HASH {
10294                    return Err(
10295                        alloy_sol_types::Error::invalid_event_signature_hash(
10296                            Self::SIGNATURE,
10297                            topics.0,
10298                            Self::SIGNATURE_HASH,
10299                        ),
10300                    );
10301                }
10302                Ok(())
10303            }
10304            #[inline]
10305            fn tokenize_body(&self) -> Self::DataToken<'_> {
10306                (
10307                    <alloy::sol_types::sol_data::Uint<
10308                        256,
10309                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10310                )
10311            }
10312            #[inline]
10313            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10314                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10315            }
10316            #[inline]
10317            fn encode_topics_raw(
10318                &self,
10319                out: &mut [alloy_sol_types::abi::token::WordToken],
10320            ) -> alloy_sol_types::Result<()> {
10321                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10322                    return Err(alloy_sol_types::Error::Overrun);
10323                }
10324                out[0usize] = alloy_sol_types::abi::token::WordToken(
10325                    Self::SIGNATURE_HASH,
10326                );
10327                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10328                    &self.validator,
10329                );
10330                Ok(())
10331            }
10332        }
10333        #[automatically_derived]
10334        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
10335            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10336                From::from(self)
10337            }
10338            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10339                From::from(&self)
10340            }
10341        }
10342        #[automatically_derived]
10343        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
10344            #[inline]
10345            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
10346                alloy_sol_types::SolEvent::encode_log_data(this)
10347            }
10348        }
10349    };
10350    #[derive(serde::Serialize, serde::Deserialize)]
10351    #[derive()]
10352    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
10353```solidity
10354event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
10355```*/
10356    #[allow(
10357        non_camel_case_types,
10358        non_snake_case,
10359        clippy::pub_underscore_fields,
10360        clippy::style
10361    )]
10362    #[derive(Clone)]
10363    pub struct ValidatorRegistered {
10364        #[allow(missing_docs)]
10365        pub account: alloy::sol_types::private::Address,
10366        #[allow(missing_docs)]
10367        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10368        #[allow(missing_docs)]
10369        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10370        #[allow(missing_docs)]
10371        pub commission: u16,
10372    }
10373    #[allow(
10374        non_camel_case_types,
10375        non_snake_case,
10376        clippy::pub_underscore_fields,
10377        clippy::style
10378    )]
10379    const _: () = {
10380        use alloy::sol_types as alloy_sol_types;
10381        #[automatically_derived]
10382        impl alloy_sol_types::SolEvent for ValidatorRegistered {
10383            type DataTuple<'a> = (
10384                BN254::G2Point,
10385                EdOnBN254::EdOnBN254Point,
10386                alloy::sol_types::sol_data::Uint<16>,
10387            );
10388            type DataToken<'a> = <Self::DataTuple<
10389                'a,
10390            > as alloy_sol_types::SolType>::Token<'a>;
10391            type TopicList = (
10392                alloy_sol_types::sol_data::FixedBytes<32>,
10393                alloy::sol_types::sol_data::Address,
10394            );
10395            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
10396            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10397                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
10398                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
10399                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
10400            ]);
10401            const ANONYMOUS: bool = false;
10402            #[allow(unused_variables)]
10403            #[inline]
10404            fn new(
10405                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10406                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10407            ) -> Self {
10408                Self {
10409                    account: topics.1,
10410                    blsVk: data.0,
10411                    schnorrVk: data.1,
10412                    commission: data.2,
10413                }
10414            }
10415            #[inline]
10416            fn check_signature(
10417                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10418            ) -> alloy_sol_types::Result<()> {
10419                if topics.0 != Self::SIGNATURE_HASH {
10420                    return Err(
10421                        alloy_sol_types::Error::invalid_event_signature_hash(
10422                            Self::SIGNATURE,
10423                            topics.0,
10424                            Self::SIGNATURE_HASH,
10425                        ),
10426                    );
10427                }
10428                Ok(())
10429            }
10430            #[inline]
10431            fn tokenize_body(&self) -> Self::DataToken<'_> {
10432                (
10433                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
10434                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10435                        &self.schnorrVk,
10436                    ),
10437                    <alloy::sol_types::sol_data::Uint<
10438                        16,
10439                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10440                )
10441            }
10442            #[inline]
10443            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10444                (Self::SIGNATURE_HASH.into(), self.account.clone())
10445            }
10446            #[inline]
10447            fn encode_topics_raw(
10448                &self,
10449                out: &mut [alloy_sol_types::abi::token::WordToken],
10450            ) -> alloy_sol_types::Result<()> {
10451                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10452                    return Err(alloy_sol_types::Error::Overrun);
10453                }
10454                out[0usize] = alloy_sol_types::abi::token::WordToken(
10455                    Self::SIGNATURE_HASH,
10456                );
10457                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10458                    &self.account,
10459                );
10460                Ok(())
10461            }
10462        }
10463        #[automatically_derived]
10464        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
10465            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10466                From::from(self)
10467            }
10468            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10469                From::from(&self)
10470            }
10471        }
10472        #[automatically_derived]
10473        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
10474            #[inline]
10475            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
10476                alloy_sol_types::SolEvent::encode_log_data(this)
10477            }
10478        }
10479    };
10480    #[derive(serde::Serialize, serde::Deserialize)]
10481    #[derive()]
10482    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
10483```solidity
10484event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
10485```*/
10486    #[allow(
10487        non_camel_case_types,
10488        non_snake_case,
10489        clippy::pub_underscore_fields,
10490        clippy::style
10491    )]
10492    #[derive(Clone)]
10493    pub struct ValidatorRegisteredV2 {
10494        #[allow(missing_docs)]
10495        pub account: alloy::sol_types::private::Address,
10496        #[allow(missing_docs)]
10497        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10498        #[allow(missing_docs)]
10499        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10500        #[allow(missing_docs)]
10501        pub commission: u16,
10502        #[allow(missing_docs)]
10503        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10504        #[allow(missing_docs)]
10505        pub schnorrSig: alloy::sol_types::private::Bytes,
10506        #[allow(missing_docs)]
10507        pub metadataUri: alloy::sol_types::private::String,
10508    }
10509    #[allow(
10510        non_camel_case_types,
10511        non_snake_case,
10512        clippy::pub_underscore_fields,
10513        clippy::style
10514    )]
10515    const _: () = {
10516        use alloy::sol_types as alloy_sol_types;
10517        #[automatically_derived]
10518        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
10519            type DataTuple<'a> = (
10520                BN254::G2Point,
10521                EdOnBN254::EdOnBN254Point,
10522                alloy::sol_types::sol_data::Uint<16>,
10523                BN254::G1Point,
10524                alloy::sol_types::sol_data::Bytes,
10525                alloy::sol_types::sol_data::String,
10526            );
10527            type DataToken<'a> = <Self::DataTuple<
10528                'a,
10529            > as alloy_sol_types::SolType>::Token<'a>;
10530            type TopicList = (
10531                alloy_sol_types::sol_data::FixedBytes<32>,
10532                alloy::sol_types::sol_data::Address,
10533            );
10534            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
10535            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10536                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
10537                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
10538                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
10539            ]);
10540            const ANONYMOUS: bool = false;
10541            #[allow(unused_variables)]
10542            #[inline]
10543            fn new(
10544                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10545                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10546            ) -> Self {
10547                Self {
10548                    account: topics.1,
10549                    blsVK: data.0,
10550                    schnorrVK: data.1,
10551                    commission: data.2,
10552                    blsSig: data.3,
10553                    schnorrSig: data.4,
10554                    metadataUri: data.5,
10555                }
10556            }
10557            #[inline]
10558            fn check_signature(
10559                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10560            ) -> alloy_sol_types::Result<()> {
10561                if topics.0 != Self::SIGNATURE_HASH {
10562                    return Err(
10563                        alloy_sol_types::Error::invalid_event_signature_hash(
10564                            Self::SIGNATURE,
10565                            topics.0,
10566                            Self::SIGNATURE_HASH,
10567                        ),
10568                    );
10569                }
10570                Ok(())
10571            }
10572            #[inline]
10573            fn tokenize_body(&self) -> Self::DataToken<'_> {
10574                (
10575                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10576                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10577                        &self.schnorrVK,
10578                    ),
10579                    <alloy::sol_types::sol_data::Uint<
10580                        16,
10581                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10583                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10584                        &self.schnorrSig,
10585                    ),
10586                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10587                        &self.metadataUri,
10588                    ),
10589                )
10590            }
10591            #[inline]
10592            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10593                (Self::SIGNATURE_HASH.into(), self.account.clone())
10594            }
10595            #[inline]
10596            fn encode_topics_raw(
10597                &self,
10598                out: &mut [alloy_sol_types::abi::token::WordToken],
10599            ) -> alloy_sol_types::Result<()> {
10600                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10601                    return Err(alloy_sol_types::Error::Overrun);
10602                }
10603                out[0usize] = alloy_sol_types::abi::token::WordToken(
10604                    Self::SIGNATURE_HASH,
10605                );
10606                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10607                    &self.account,
10608                );
10609                Ok(())
10610            }
10611        }
10612        #[automatically_derived]
10613        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
10614            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10615                From::from(self)
10616            }
10617            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10618                From::from(&self)
10619            }
10620        }
10621        #[automatically_derived]
10622        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
10623            #[inline]
10624            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
10625                alloy_sol_types::SolEvent::encode_log_data(this)
10626            }
10627        }
10628    };
10629    #[derive(serde::Serialize, serde::Deserialize)]
10630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10631    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
10632```solidity
10633event Withdrawal(address indexed account, uint256 amount);
10634```*/
10635    #[allow(
10636        non_camel_case_types,
10637        non_snake_case,
10638        clippy::pub_underscore_fields,
10639        clippy::style
10640    )]
10641    #[derive(Clone)]
10642    pub struct Withdrawal {
10643        #[allow(missing_docs)]
10644        pub account: alloy::sol_types::private::Address,
10645        #[allow(missing_docs)]
10646        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10647    }
10648    #[allow(
10649        non_camel_case_types,
10650        non_snake_case,
10651        clippy::pub_underscore_fields,
10652        clippy::style
10653    )]
10654    const _: () = {
10655        use alloy::sol_types as alloy_sol_types;
10656        #[automatically_derived]
10657        impl alloy_sol_types::SolEvent for Withdrawal {
10658            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10659            type DataToken<'a> = <Self::DataTuple<
10660                'a,
10661            > as alloy_sol_types::SolType>::Token<'a>;
10662            type TopicList = (
10663                alloy_sol_types::sol_data::FixedBytes<32>,
10664                alloy::sol_types::sol_data::Address,
10665            );
10666            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
10667            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10668                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
10669                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
10670                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
10671            ]);
10672            const ANONYMOUS: bool = false;
10673            #[allow(unused_variables)]
10674            #[inline]
10675            fn new(
10676                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10677                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10678            ) -> Self {
10679                Self {
10680                    account: topics.1,
10681                    amount: data.0,
10682                }
10683            }
10684            #[inline]
10685            fn check_signature(
10686                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10687            ) -> alloy_sol_types::Result<()> {
10688                if topics.0 != Self::SIGNATURE_HASH {
10689                    return Err(
10690                        alloy_sol_types::Error::invalid_event_signature_hash(
10691                            Self::SIGNATURE,
10692                            topics.0,
10693                            Self::SIGNATURE_HASH,
10694                        ),
10695                    );
10696                }
10697                Ok(())
10698            }
10699            #[inline]
10700            fn tokenize_body(&self) -> Self::DataToken<'_> {
10701                (
10702                    <alloy::sol_types::sol_data::Uint<
10703                        256,
10704                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10705                )
10706            }
10707            #[inline]
10708            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10709                (Self::SIGNATURE_HASH.into(), self.account.clone())
10710            }
10711            #[inline]
10712            fn encode_topics_raw(
10713                &self,
10714                out: &mut [alloy_sol_types::abi::token::WordToken],
10715            ) -> alloy_sol_types::Result<()> {
10716                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10717                    return Err(alloy_sol_types::Error::Overrun);
10718                }
10719                out[0usize] = alloy_sol_types::abi::token::WordToken(
10720                    Self::SIGNATURE_HASH,
10721                );
10722                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10723                    &self.account,
10724                );
10725                Ok(())
10726            }
10727        }
10728        #[automatically_derived]
10729        impl alloy_sol_types::private::IntoLogData for Withdrawal {
10730            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10731                From::from(self)
10732            }
10733            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10734                From::from(&self)
10735            }
10736        }
10737        #[automatically_derived]
10738        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
10739            #[inline]
10740            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
10741                alloy_sol_types::SolEvent::encode_log_data(this)
10742            }
10743        }
10744    };
10745    #[derive(serde::Serialize, serde::Deserialize)]
10746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10747    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
10748```solidity
10749event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
10750```*/
10751    #[allow(
10752        non_camel_case_types,
10753        non_snake_case,
10754        clippy::pub_underscore_fields,
10755        clippy::style
10756    )]
10757    #[derive(Clone)]
10758    pub struct WithdrawalClaimed {
10759        #[allow(missing_docs)]
10760        pub delegator: alloy::sol_types::private::Address,
10761        #[allow(missing_docs)]
10762        pub validator: alloy::sol_types::private::Address,
10763        #[allow(missing_docs)]
10764        pub undelegationId: u64,
10765        #[allow(missing_docs)]
10766        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10767    }
10768    #[allow(
10769        non_camel_case_types,
10770        non_snake_case,
10771        clippy::pub_underscore_fields,
10772        clippy::style
10773    )]
10774    const _: () = {
10775        use alloy::sol_types as alloy_sol_types;
10776        #[automatically_derived]
10777        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
10778            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10779            type DataToken<'a> = <Self::DataTuple<
10780                'a,
10781            > as alloy_sol_types::SolType>::Token<'a>;
10782            type TopicList = (
10783                alloy_sol_types::sol_data::FixedBytes<32>,
10784                alloy::sol_types::sol_data::Address,
10785                alloy::sol_types::sol_data::Address,
10786                alloy::sol_types::sol_data::Uint<64>,
10787            );
10788            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
10789            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10790                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
10791                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
10792                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
10793            ]);
10794            const ANONYMOUS: bool = false;
10795            #[allow(unused_variables)]
10796            #[inline]
10797            fn new(
10798                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10799                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10800            ) -> Self {
10801                Self {
10802                    delegator: topics.1,
10803                    validator: topics.2,
10804                    undelegationId: topics.3,
10805                    amount: data.0,
10806                }
10807            }
10808            #[inline]
10809            fn check_signature(
10810                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10811            ) -> alloy_sol_types::Result<()> {
10812                if topics.0 != Self::SIGNATURE_HASH {
10813                    return Err(
10814                        alloy_sol_types::Error::invalid_event_signature_hash(
10815                            Self::SIGNATURE,
10816                            topics.0,
10817                            Self::SIGNATURE_HASH,
10818                        ),
10819                    );
10820                }
10821                Ok(())
10822            }
10823            #[inline]
10824            fn tokenize_body(&self) -> Self::DataToken<'_> {
10825                (
10826                    <alloy::sol_types::sol_data::Uint<
10827                        256,
10828                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10829                )
10830            }
10831            #[inline]
10832            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10833                (
10834                    Self::SIGNATURE_HASH.into(),
10835                    self.delegator.clone(),
10836                    self.validator.clone(),
10837                    self.undelegationId.clone(),
10838                )
10839            }
10840            #[inline]
10841            fn encode_topics_raw(
10842                &self,
10843                out: &mut [alloy_sol_types::abi::token::WordToken],
10844            ) -> alloy_sol_types::Result<()> {
10845                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10846                    return Err(alloy_sol_types::Error::Overrun);
10847                }
10848                out[0usize] = alloy_sol_types::abi::token::WordToken(
10849                    Self::SIGNATURE_HASH,
10850                );
10851                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10852                    &self.delegator,
10853                );
10854                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10855                    &self.validator,
10856                );
10857                out[3usize] = <alloy::sol_types::sol_data::Uint<
10858                    64,
10859                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
10860                Ok(())
10861            }
10862        }
10863        #[automatically_derived]
10864        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
10865            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10866                From::from(self)
10867            }
10868            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10869                From::from(&self)
10870            }
10871        }
10872        #[automatically_derived]
10873        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
10874            #[inline]
10875            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
10876                alloy_sol_types::SolEvent::encode_log_data(this)
10877            }
10878        }
10879    };
10880    /**Constructor`.
10881```solidity
10882constructor();
10883```*/
10884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10885    #[derive(Clone)]
10886    pub struct constructorCall {}
10887    const _: () = {
10888        use alloy::sol_types as alloy_sol_types;
10889        {
10890            #[doc(hidden)]
10891            type UnderlyingSolTuple<'a> = ();
10892            #[doc(hidden)]
10893            type UnderlyingRustTuple<'a> = ();
10894            #[cfg(test)]
10895            #[allow(dead_code, unreachable_patterns)]
10896            fn _type_assertion(
10897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10898            ) {
10899                match _t {
10900                    alloy_sol_types::private::AssertTypeEq::<
10901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10902                    >(_) => {}
10903                }
10904            }
10905            #[automatically_derived]
10906            #[doc(hidden)]
10907            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
10908                fn from(value: constructorCall) -> Self {
10909                    ()
10910                }
10911            }
10912            #[automatically_derived]
10913            #[doc(hidden)]
10914            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
10915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10916                    Self {}
10917                }
10918            }
10919        }
10920        #[automatically_derived]
10921        impl alloy_sol_types::SolConstructor for constructorCall {
10922            type Parameters<'a> = ();
10923            type Token<'a> = <Self::Parameters<
10924                'a,
10925            > as alloy_sol_types::SolType>::Token<'a>;
10926            #[inline]
10927            fn new<'a>(
10928                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10929            ) -> Self {
10930                tuple.into()
10931            }
10932            #[inline]
10933            fn tokenize(&self) -> Self::Token<'_> {
10934                ()
10935            }
10936        }
10937    };
10938    #[derive(serde::Serialize, serde::Deserialize)]
10939    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10940    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
10941```solidity
10942function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
10943```*/
10944    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10945    #[derive(Clone)]
10946    pub struct DEFAULT_ADMIN_ROLECall;
10947    #[derive(serde::Serialize, serde::Deserialize)]
10948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10949    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
10950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10951    #[derive(Clone)]
10952    pub struct DEFAULT_ADMIN_ROLEReturn {
10953        #[allow(missing_docs)]
10954        pub _0: alloy::sol_types::private::FixedBytes<32>,
10955    }
10956    #[allow(
10957        non_camel_case_types,
10958        non_snake_case,
10959        clippy::pub_underscore_fields,
10960        clippy::style
10961    )]
10962    const _: () = {
10963        use alloy::sol_types as alloy_sol_types;
10964        {
10965            #[doc(hidden)]
10966            type UnderlyingSolTuple<'a> = ();
10967            #[doc(hidden)]
10968            type UnderlyingRustTuple<'a> = ();
10969            #[cfg(test)]
10970            #[allow(dead_code, unreachable_patterns)]
10971            fn _type_assertion(
10972                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10973            ) {
10974                match _t {
10975                    alloy_sol_types::private::AssertTypeEq::<
10976                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10977                    >(_) => {}
10978                }
10979            }
10980            #[automatically_derived]
10981            #[doc(hidden)]
10982            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
10983            for UnderlyingRustTuple<'_> {
10984                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
10985                    ()
10986                }
10987            }
10988            #[automatically_derived]
10989            #[doc(hidden)]
10990            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10991            for DEFAULT_ADMIN_ROLECall {
10992                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10993                    Self
10994                }
10995            }
10996        }
10997        {
10998            #[doc(hidden)]
10999            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11000            #[doc(hidden)]
11001            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11002            #[cfg(test)]
11003            #[allow(dead_code, unreachable_patterns)]
11004            fn _type_assertion(
11005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11006            ) {
11007                match _t {
11008                    alloy_sol_types::private::AssertTypeEq::<
11009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11010                    >(_) => {}
11011                }
11012            }
11013            #[automatically_derived]
11014            #[doc(hidden)]
11015            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
11016            for UnderlyingRustTuple<'_> {
11017                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
11018                    (value._0,)
11019                }
11020            }
11021            #[automatically_derived]
11022            #[doc(hidden)]
11023            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11024            for DEFAULT_ADMIN_ROLEReturn {
11025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11026                    Self { _0: tuple.0 }
11027                }
11028            }
11029        }
11030        #[automatically_derived]
11031        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
11032            type Parameters<'a> = ();
11033            type Token<'a> = <Self::Parameters<
11034                'a,
11035            > as alloy_sol_types::SolType>::Token<'a>;
11036            type Return = alloy::sol_types::private::FixedBytes<32>;
11037            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11038            type ReturnToken<'a> = <Self::ReturnTuple<
11039                'a,
11040            > as alloy_sol_types::SolType>::Token<'a>;
11041            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
11042            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
11043            #[inline]
11044            fn new<'a>(
11045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11046            ) -> Self {
11047                tuple.into()
11048            }
11049            #[inline]
11050            fn tokenize(&self) -> Self::Token<'_> {
11051                ()
11052            }
11053            #[inline]
11054            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11055                (
11056                    <alloy::sol_types::sol_data::FixedBytes<
11057                        32,
11058                    > as alloy_sol_types::SolType>::tokenize(ret),
11059                )
11060            }
11061            #[inline]
11062            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11063                <Self::ReturnTuple<
11064                    '_,
11065                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11066                    .map(|r| {
11067                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11068                        r._0
11069                    })
11070            }
11071            #[inline]
11072            fn abi_decode_returns_validate(
11073                data: &[u8],
11074            ) -> alloy_sol_types::Result<Self::Return> {
11075                <Self::ReturnTuple<
11076                    '_,
11077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11078                    .map(|r| {
11079                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11080                        r._0
11081                    })
11082            }
11083        }
11084    };
11085    #[derive(serde::Serialize, serde::Deserialize)]
11086    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11087    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
11088```solidity
11089function MAX_COMMISSION_BPS() external view returns (uint16);
11090```*/
11091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11092    #[derive(Clone)]
11093    pub struct MAX_COMMISSION_BPSCall;
11094    #[derive(serde::Serialize, serde::Deserialize)]
11095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11096    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
11097    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11098    #[derive(Clone)]
11099    pub struct MAX_COMMISSION_BPSReturn {
11100        #[allow(missing_docs)]
11101        pub _0: u16,
11102    }
11103    #[allow(
11104        non_camel_case_types,
11105        non_snake_case,
11106        clippy::pub_underscore_fields,
11107        clippy::style
11108    )]
11109    const _: () = {
11110        use alloy::sol_types as alloy_sol_types;
11111        {
11112            #[doc(hidden)]
11113            type UnderlyingSolTuple<'a> = ();
11114            #[doc(hidden)]
11115            type UnderlyingRustTuple<'a> = ();
11116            #[cfg(test)]
11117            #[allow(dead_code, unreachable_patterns)]
11118            fn _type_assertion(
11119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11120            ) {
11121                match _t {
11122                    alloy_sol_types::private::AssertTypeEq::<
11123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11124                    >(_) => {}
11125                }
11126            }
11127            #[automatically_derived]
11128            #[doc(hidden)]
11129            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
11130            for UnderlyingRustTuple<'_> {
11131                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
11132                    ()
11133                }
11134            }
11135            #[automatically_derived]
11136            #[doc(hidden)]
11137            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11138            for MAX_COMMISSION_BPSCall {
11139                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11140                    Self
11141                }
11142            }
11143        }
11144        {
11145            #[doc(hidden)]
11146            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11147            #[doc(hidden)]
11148            type UnderlyingRustTuple<'a> = (u16,);
11149            #[cfg(test)]
11150            #[allow(dead_code, unreachable_patterns)]
11151            fn _type_assertion(
11152                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11153            ) {
11154                match _t {
11155                    alloy_sol_types::private::AssertTypeEq::<
11156                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11157                    >(_) => {}
11158                }
11159            }
11160            #[automatically_derived]
11161            #[doc(hidden)]
11162            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
11163            for UnderlyingRustTuple<'_> {
11164                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
11165                    (value._0,)
11166                }
11167            }
11168            #[automatically_derived]
11169            #[doc(hidden)]
11170            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11171            for MAX_COMMISSION_BPSReturn {
11172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11173                    Self { _0: tuple.0 }
11174                }
11175            }
11176        }
11177        #[automatically_derived]
11178        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
11179            type Parameters<'a> = ();
11180            type Token<'a> = <Self::Parameters<
11181                'a,
11182            > as alloy_sol_types::SolType>::Token<'a>;
11183            type Return = u16;
11184            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11185            type ReturnToken<'a> = <Self::ReturnTuple<
11186                'a,
11187            > as alloy_sol_types::SolType>::Token<'a>;
11188            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
11189            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
11190            #[inline]
11191            fn new<'a>(
11192                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11193            ) -> Self {
11194                tuple.into()
11195            }
11196            #[inline]
11197            fn tokenize(&self) -> Self::Token<'_> {
11198                ()
11199            }
11200            #[inline]
11201            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11202                (
11203                    <alloy::sol_types::sol_data::Uint<
11204                        16,
11205                    > as alloy_sol_types::SolType>::tokenize(ret),
11206                )
11207            }
11208            #[inline]
11209            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11210                <Self::ReturnTuple<
11211                    '_,
11212                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11213                    .map(|r| {
11214                        let r: MAX_COMMISSION_BPSReturn = r.into();
11215                        r._0
11216                    })
11217            }
11218            #[inline]
11219            fn abi_decode_returns_validate(
11220                data: &[u8],
11221            ) -> alloy_sol_types::Result<Self::Return> {
11222                <Self::ReturnTuple<
11223                    '_,
11224                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11225                    .map(|r| {
11226                        let r: MAX_COMMISSION_BPSReturn = r.into();
11227                        r._0
11228                    })
11229            }
11230        }
11231    };
11232    #[derive(serde::Serialize, serde::Deserialize)]
11233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11234    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
11235```solidity
11236function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
11237```*/
11238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11239    #[derive(Clone)]
11240    pub struct MAX_EXIT_ESCROW_PERIODCall;
11241    #[derive(serde::Serialize, serde::Deserialize)]
11242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11243    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
11244    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11245    #[derive(Clone)]
11246    pub struct MAX_EXIT_ESCROW_PERIODReturn {
11247        #[allow(missing_docs)]
11248        pub _0: u64,
11249    }
11250    #[allow(
11251        non_camel_case_types,
11252        non_snake_case,
11253        clippy::pub_underscore_fields,
11254        clippy::style
11255    )]
11256    const _: () = {
11257        use alloy::sol_types as alloy_sol_types;
11258        {
11259            #[doc(hidden)]
11260            type UnderlyingSolTuple<'a> = ();
11261            #[doc(hidden)]
11262            type UnderlyingRustTuple<'a> = ();
11263            #[cfg(test)]
11264            #[allow(dead_code, unreachable_patterns)]
11265            fn _type_assertion(
11266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11267            ) {
11268                match _t {
11269                    alloy_sol_types::private::AssertTypeEq::<
11270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11271                    >(_) => {}
11272                }
11273            }
11274            #[automatically_derived]
11275            #[doc(hidden)]
11276            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
11277            for UnderlyingRustTuple<'_> {
11278                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
11279                    ()
11280                }
11281            }
11282            #[automatically_derived]
11283            #[doc(hidden)]
11284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11285            for MAX_EXIT_ESCROW_PERIODCall {
11286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11287                    Self
11288                }
11289            }
11290        }
11291        {
11292            #[doc(hidden)]
11293            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11294            #[doc(hidden)]
11295            type UnderlyingRustTuple<'a> = (u64,);
11296            #[cfg(test)]
11297            #[allow(dead_code, unreachable_patterns)]
11298            fn _type_assertion(
11299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11300            ) {
11301                match _t {
11302                    alloy_sol_types::private::AssertTypeEq::<
11303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11304                    >(_) => {}
11305                }
11306            }
11307            #[automatically_derived]
11308            #[doc(hidden)]
11309            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
11310            for UnderlyingRustTuple<'_> {
11311                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
11312                    (value._0,)
11313                }
11314            }
11315            #[automatically_derived]
11316            #[doc(hidden)]
11317            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11318            for MAX_EXIT_ESCROW_PERIODReturn {
11319                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11320                    Self { _0: tuple.0 }
11321                }
11322            }
11323        }
11324        #[automatically_derived]
11325        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
11326            type Parameters<'a> = ();
11327            type Token<'a> = <Self::Parameters<
11328                'a,
11329            > as alloy_sol_types::SolType>::Token<'a>;
11330            type Return = u64;
11331            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11332            type ReturnToken<'a> = <Self::ReturnTuple<
11333                'a,
11334            > as alloy_sol_types::SolType>::Token<'a>;
11335            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
11336            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
11337            #[inline]
11338            fn new<'a>(
11339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11340            ) -> Self {
11341                tuple.into()
11342            }
11343            #[inline]
11344            fn tokenize(&self) -> Self::Token<'_> {
11345                ()
11346            }
11347            #[inline]
11348            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11349                (
11350                    <alloy::sol_types::sol_data::Uint<
11351                        64,
11352                    > as alloy_sol_types::SolType>::tokenize(ret),
11353                )
11354            }
11355            #[inline]
11356            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11357                <Self::ReturnTuple<
11358                    '_,
11359                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11360                    .map(|r| {
11361                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11362                        r._0
11363                    })
11364            }
11365            #[inline]
11366            fn abi_decode_returns_validate(
11367                data: &[u8],
11368            ) -> alloy_sol_types::Result<Self::Return> {
11369                <Self::ReturnTuple<
11370                    '_,
11371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11372                    .map(|r| {
11373                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11374                        r._0
11375                    })
11376            }
11377        }
11378    };
11379    #[derive(serde::Serialize, serde::Deserialize)]
11380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11381    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
11382```solidity
11383function MAX_METADATA_URI_LENGTH() external view returns (uint256);
11384```*/
11385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11386    #[derive(Clone)]
11387    pub struct MAX_METADATA_URI_LENGTHCall;
11388    #[derive(serde::Serialize, serde::Deserialize)]
11389    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11390    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
11391    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11392    #[derive(Clone)]
11393    pub struct MAX_METADATA_URI_LENGTHReturn {
11394        #[allow(missing_docs)]
11395        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11396    }
11397    #[allow(
11398        non_camel_case_types,
11399        non_snake_case,
11400        clippy::pub_underscore_fields,
11401        clippy::style
11402    )]
11403    const _: () = {
11404        use alloy::sol_types as alloy_sol_types;
11405        {
11406            #[doc(hidden)]
11407            type UnderlyingSolTuple<'a> = ();
11408            #[doc(hidden)]
11409            type UnderlyingRustTuple<'a> = ();
11410            #[cfg(test)]
11411            #[allow(dead_code, unreachable_patterns)]
11412            fn _type_assertion(
11413                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11414            ) {
11415                match _t {
11416                    alloy_sol_types::private::AssertTypeEq::<
11417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11418                    >(_) => {}
11419                }
11420            }
11421            #[automatically_derived]
11422            #[doc(hidden)]
11423            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
11424            for UnderlyingRustTuple<'_> {
11425                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
11426                    ()
11427                }
11428            }
11429            #[automatically_derived]
11430            #[doc(hidden)]
11431            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11432            for MAX_METADATA_URI_LENGTHCall {
11433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11434                    Self
11435                }
11436            }
11437        }
11438        {
11439            #[doc(hidden)]
11440            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11441            #[doc(hidden)]
11442            type UnderlyingRustTuple<'a> = (
11443                alloy::sol_types::private::primitives::aliases::U256,
11444            );
11445            #[cfg(test)]
11446            #[allow(dead_code, unreachable_patterns)]
11447            fn _type_assertion(
11448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11449            ) {
11450                match _t {
11451                    alloy_sol_types::private::AssertTypeEq::<
11452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11453                    >(_) => {}
11454                }
11455            }
11456            #[automatically_derived]
11457            #[doc(hidden)]
11458            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
11459            for UnderlyingRustTuple<'_> {
11460                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
11461                    (value._0,)
11462                }
11463            }
11464            #[automatically_derived]
11465            #[doc(hidden)]
11466            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11467            for MAX_METADATA_URI_LENGTHReturn {
11468                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11469                    Self { _0: tuple.0 }
11470                }
11471            }
11472        }
11473        #[automatically_derived]
11474        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
11475            type Parameters<'a> = ();
11476            type Token<'a> = <Self::Parameters<
11477                'a,
11478            > as alloy_sol_types::SolType>::Token<'a>;
11479            type Return = alloy::sol_types::private::primitives::aliases::U256;
11480            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11481            type ReturnToken<'a> = <Self::ReturnTuple<
11482                'a,
11483            > as alloy_sol_types::SolType>::Token<'a>;
11484            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
11485            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
11486            #[inline]
11487            fn new<'a>(
11488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11489            ) -> Self {
11490                tuple.into()
11491            }
11492            #[inline]
11493            fn tokenize(&self) -> Self::Token<'_> {
11494                ()
11495            }
11496            #[inline]
11497            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11498                (
11499                    <alloy::sol_types::sol_data::Uint<
11500                        256,
11501                    > as alloy_sol_types::SolType>::tokenize(ret),
11502                )
11503            }
11504            #[inline]
11505            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11506                <Self::ReturnTuple<
11507                    '_,
11508                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11509                    .map(|r| {
11510                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11511                        r._0
11512                    })
11513            }
11514            #[inline]
11515            fn abi_decode_returns_validate(
11516                data: &[u8],
11517            ) -> alloy_sol_types::Result<Self::Return> {
11518                <Self::ReturnTuple<
11519                    '_,
11520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11521                    .map(|r| {
11522                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11523                        r._0
11524                    })
11525            }
11526        }
11527    };
11528    #[derive(serde::Serialize, serde::Deserialize)]
11529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11530    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
11531```solidity
11532function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
11533```*/
11534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11535    #[derive(Clone)]
11536    pub struct MIN_EXIT_ESCROW_PERIODCall;
11537    #[derive(serde::Serialize, serde::Deserialize)]
11538    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11539    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
11540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11541    #[derive(Clone)]
11542    pub struct MIN_EXIT_ESCROW_PERIODReturn {
11543        #[allow(missing_docs)]
11544        pub _0: u64,
11545    }
11546    #[allow(
11547        non_camel_case_types,
11548        non_snake_case,
11549        clippy::pub_underscore_fields,
11550        clippy::style
11551    )]
11552    const _: () = {
11553        use alloy::sol_types as alloy_sol_types;
11554        {
11555            #[doc(hidden)]
11556            type UnderlyingSolTuple<'a> = ();
11557            #[doc(hidden)]
11558            type UnderlyingRustTuple<'a> = ();
11559            #[cfg(test)]
11560            #[allow(dead_code, unreachable_patterns)]
11561            fn _type_assertion(
11562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11563            ) {
11564                match _t {
11565                    alloy_sol_types::private::AssertTypeEq::<
11566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11567                    >(_) => {}
11568                }
11569            }
11570            #[automatically_derived]
11571            #[doc(hidden)]
11572            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
11573            for UnderlyingRustTuple<'_> {
11574                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
11575                    ()
11576                }
11577            }
11578            #[automatically_derived]
11579            #[doc(hidden)]
11580            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11581            for MIN_EXIT_ESCROW_PERIODCall {
11582                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11583                    Self
11584                }
11585            }
11586        }
11587        {
11588            #[doc(hidden)]
11589            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11590            #[doc(hidden)]
11591            type UnderlyingRustTuple<'a> = (u64,);
11592            #[cfg(test)]
11593            #[allow(dead_code, unreachable_patterns)]
11594            fn _type_assertion(
11595                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11596            ) {
11597                match _t {
11598                    alloy_sol_types::private::AssertTypeEq::<
11599                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11600                    >(_) => {}
11601                }
11602            }
11603            #[automatically_derived]
11604            #[doc(hidden)]
11605            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
11606            for UnderlyingRustTuple<'_> {
11607                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
11608                    (value._0,)
11609                }
11610            }
11611            #[automatically_derived]
11612            #[doc(hidden)]
11613            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11614            for MIN_EXIT_ESCROW_PERIODReturn {
11615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11616                    Self { _0: tuple.0 }
11617                }
11618            }
11619        }
11620        #[automatically_derived]
11621        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
11622            type Parameters<'a> = ();
11623            type Token<'a> = <Self::Parameters<
11624                'a,
11625            > as alloy_sol_types::SolType>::Token<'a>;
11626            type Return = u64;
11627            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11628            type ReturnToken<'a> = <Self::ReturnTuple<
11629                'a,
11630            > as alloy_sol_types::SolType>::Token<'a>;
11631            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
11632            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
11633            #[inline]
11634            fn new<'a>(
11635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11636            ) -> Self {
11637                tuple.into()
11638            }
11639            #[inline]
11640            fn tokenize(&self) -> Self::Token<'_> {
11641                ()
11642            }
11643            #[inline]
11644            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11645                (
11646                    <alloy::sol_types::sol_data::Uint<
11647                        64,
11648                    > as alloy_sol_types::SolType>::tokenize(ret),
11649                )
11650            }
11651            #[inline]
11652            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11653                <Self::ReturnTuple<
11654                    '_,
11655                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11656                    .map(|r| {
11657                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11658                        r._0
11659                    })
11660            }
11661            #[inline]
11662            fn abi_decode_returns_validate(
11663                data: &[u8],
11664            ) -> alloy_sol_types::Result<Self::Return> {
11665                <Self::ReturnTuple<
11666                    '_,
11667                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11668                    .map(|r| {
11669                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11670                        r._0
11671                    })
11672            }
11673        }
11674    };
11675    #[derive(serde::Serialize, serde::Deserialize)]
11676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11677    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
11678```solidity
11679function PAUSER_ROLE() external view returns (bytes32);
11680```*/
11681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11682    #[derive(Clone)]
11683    pub struct PAUSER_ROLECall;
11684    #[derive(serde::Serialize, serde::Deserialize)]
11685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11686    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
11687    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11688    #[derive(Clone)]
11689    pub struct PAUSER_ROLEReturn {
11690        #[allow(missing_docs)]
11691        pub _0: alloy::sol_types::private::FixedBytes<32>,
11692    }
11693    #[allow(
11694        non_camel_case_types,
11695        non_snake_case,
11696        clippy::pub_underscore_fields,
11697        clippy::style
11698    )]
11699    const _: () = {
11700        use alloy::sol_types as alloy_sol_types;
11701        {
11702            #[doc(hidden)]
11703            type UnderlyingSolTuple<'a> = ();
11704            #[doc(hidden)]
11705            type UnderlyingRustTuple<'a> = ();
11706            #[cfg(test)]
11707            #[allow(dead_code, unreachable_patterns)]
11708            fn _type_assertion(
11709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11710            ) {
11711                match _t {
11712                    alloy_sol_types::private::AssertTypeEq::<
11713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11714                    >(_) => {}
11715                }
11716            }
11717            #[automatically_derived]
11718            #[doc(hidden)]
11719            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
11720                fn from(value: PAUSER_ROLECall) -> Self {
11721                    ()
11722                }
11723            }
11724            #[automatically_derived]
11725            #[doc(hidden)]
11726            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
11727                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11728                    Self
11729                }
11730            }
11731        }
11732        {
11733            #[doc(hidden)]
11734            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11735            #[doc(hidden)]
11736            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11737            #[cfg(test)]
11738            #[allow(dead_code, unreachable_patterns)]
11739            fn _type_assertion(
11740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11741            ) {
11742                match _t {
11743                    alloy_sol_types::private::AssertTypeEq::<
11744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11745                    >(_) => {}
11746                }
11747            }
11748            #[automatically_derived]
11749            #[doc(hidden)]
11750            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
11751                fn from(value: PAUSER_ROLEReturn) -> Self {
11752                    (value._0,)
11753                }
11754            }
11755            #[automatically_derived]
11756            #[doc(hidden)]
11757            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
11758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11759                    Self { _0: tuple.0 }
11760                }
11761            }
11762        }
11763        #[automatically_derived]
11764        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
11765            type Parameters<'a> = ();
11766            type Token<'a> = <Self::Parameters<
11767                'a,
11768            > as alloy_sol_types::SolType>::Token<'a>;
11769            type Return = alloy::sol_types::private::FixedBytes<32>;
11770            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11771            type ReturnToken<'a> = <Self::ReturnTuple<
11772                'a,
11773            > as alloy_sol_types::SolType>::Token<'a>;
11774            const SIGNATURE: &'static str = "PAUSER_ROLE()";
11775            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
11776            #[inline]
11777            fn new<'a>(
11778                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11779            ) -> Self {
11780                tuple.into()
11781            }
11782            #[inline]
11783            fn tokenize(&self) -> Self::Token<'_> {
11784                ()
11785            }
11786            #[inline]
11787            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11788                (
11789                    <alloy::sol_types::sol_data::FixedBytes<
11790                        32,
11791                    > as alloy_sol_types::SolType>::tokenize(ret),
11792                )
11793            }
11794            #[inline]
11795            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11796                <Self::ReturnTuple<
11797                    '_,
11798                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11799                    .map(|r| {
11800                        let r: PAUSER_ROLEReturn = r.into();
11801                        r._0
11802                    })
11803            }
11804            #[inline]
11805            fn abi_decode_returns_validate(
11806                data: &[u8],
11807            ) -> alloy_sol_types::Result<Self::Return> {
11808                <Self::ReturnTuple<
11809                    '_,
11810                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11811                    .map(|r| {
11812                        let r: PAUSER_ROLEReturn = r.into();
11813                        r._0
11814                    })
11815            }
11816        }
11817    };
11818    #[derive(serde::Serialize, serde::Deserialize)]
11819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11820    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
11821```solidity
11822function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
11823```*/
11824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11825    #[derive(Clone)]
11826    pub struct UPGRADE_INTERFACE_VERSIONCall;
11827    #[derive(serde::Serialize, serde::Deserialize)]
11828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11829    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
11830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11831    #[derive(Clone)]
11832    pub struct UPGRADE_INTERFACE_VERSIONReturn {
11833        #[allow(missing_docs)]
11834        pub _0: alloy::sol_types::private::String,
11835    }
11836    #[allow(
11837        non_camel_case_types,
11838        non_snake_case,
11839        clippy::pub_underscore_fields,
11840        clippy::style
11841    )]
11842    const _: () = {
11843        use alloy::sol_types as alloy_sol_types;
11844        {
11845            #[doc(hidden)]
11846            type UnderlyingSolTuple<'a> = ();
11847            #[doc(hidden)]
11848            type UnderlyingRustTuple<'a> = ();
11849            #[cfg(test)]
11850            #[allow(dead_code, unreachable_patterns)]
11851            fn _type_assertion(
11852                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11853            ) {
11854                match _t {
11855                    alloy_sol_types::private::AssertTypeEq::<
11856                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11857                    >(_) => {}
11858                }
11859            }
11860            #[automatically_derived]
11861            #[doc(hidden)]
11862            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
11863            for UnderlyingRustTuple<'_> {
11864                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
11865                    ()
11866                }
11867            }
11868            #[automatically_derived]
11869            #[doc(hidden)]
11870            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11871            for UPGRADE_INTERFACE_VERSIONCall {
11872                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11873                    Self
11874                }
11875            }
11876        }
11877        {
11878            #[doc(hidden)]
11879            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
11880            #[doc(hidden)]
11881            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
11882            #[cfg(test)]
11883            #[allow(dead_code, unreachable_patterns)]
11884            fn _type_assertion(
11885                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11886            ) {
11887                match _t {
11888                    alloy_sol_types::private::AssertTypeEq::<
11889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11890                    >(_) => {}
11891                }
11892            }
11893            #[automatically_derived]
11894            #[doc(hidden)]
11895            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
11896            for UnderlyingRustTuple<'_> {
11897                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
11898                    (value._0,)
11899                }
11900            }
11901            #[automatically_derived]
11902            #[doc(hidden)]
11903            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11904            for UPGRADE_INTERFACE_VERSIONReturn {
11905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11906                    Self { _0: tuple.0 }
11907                }
11908            }
11909        }
11910        #[automatically_derived]
11911        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
11912            type Parameters<'a> = ();
11913            type Token<'a> = <Self::Parameters<
11914                'a,
11915            > as alloy_sol_types::SolType>::Token<'a>;
11916            type Return = alloy::sol_types::private::String;
11917            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
11918            type ReturnToken<'a> = <Self::ReturnTuple<
11919                'a,
11920            > as alloy_sol_types::SolType>::Token<'a>;
11921            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
11922            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
11923            #[inline]
11924            fn new<'a>(
11925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11926            ) -> Self {
11927                tuple.into()
11928            }
11929            #[inline]
11930            fn tokenize(&self) -> Self::Token<'_> {
11931                ()
11932            }
11933            #[inline]
11934            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11935                (
11936                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
11937                        ret,
11938                    ),
11939                )
11940            }
11941            #[inline]
11942            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11943                <Self::ReturnTuple<
11944                    '_,
11945                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11946                    .map(|r| {
11947                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
11948                        r._0
11949                    })
11950            }
11951            #[inline]
11952            fn abi_decode_returns_validate(
11953                data: &[u8],
11954            ) -> alloy_sol_types::Result<Self::Return> {
11955                <Self::ReturnTuple<
11956                    '_,
11957                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11958                    .map(|r| {
11959                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
11960                        r._0
11961                    })
11962            }
11963        }
11964    };
11965    #[derive(serde::Serialize, serde::Deserialize)]
11966    #[derive()]
11967    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
11968```solidity
11969function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
11970```*/
11971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11972    #[derive(Clone)]
11973    pub struct _hashBlsKeyCall {
11974        #[allow(missing_docs)]
11975        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
11976    }
11977    #[derive(serde::Serialize, serde::Deserialize)]
11978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11979    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
11980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11981    #[derive(Clone)]
11982    pub struct _hashBlsKeyReturn {
11983        #[allow(missing_docs)]
11984        pub _0: alloy::sol_types::private::FixedBytes<32>,
11985    }
11986    #[allow(
11987        non_camel_case_types,
11988        non_snake_case,
11989        clippy::pub_underscore_fields,
11990        clippy::style
11991    )]
11992    const _: () = {
11993        use alloy::sol_types as alloy_sol_types;
11994        {
11995            #[doc(hidden)]
11996            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
11997            #[doc(hidden)]
11998            type UnderlyingRustTuple<'a> = (
11999                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12000            );
12001            #[cfg(test)]
12002            #[allow(dead_code, unreachable_patterns)]
12003            fn _type_assertion(
12004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12005            ) {
12006                match _t {
12007                    alloy_sol_types::private::AssertTypeEq::<
12008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12009                    >(_) => {}
12010                }
12011            }
12012            #[automatically_derived]
12013            #[doc(hidden)]
12014            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
12015                fn from(value: _hashBlsKeyCall) -> Self {
12016                    (value.blsVK,)
12017                }
12018            }
12019            #[automatically_derived]
12020            #[doc(hidden)]
12021            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
12022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12023                    Self { blsVK: tuple.0 }
12024                }
12025            }
12026        }
12027        {
12028            #[doc(hidden)]
12029            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12030            #[doc(hidden)]
12031            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12032            #[cfg(test)]
12033            #[allow(dead_code, unreachable_patterns)]
12034            fn _type_assertion(
12035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12036            ) {
12037                match _t {
12038                    alloy_sol_types::private::AssertTypeEq::<
12039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12040                    >(_) => {}
12041                }
12042            }
12043            #[automatically_derived]
12044            #[doc(hidden)]
12045            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
12046                fn from(value: _hashBlsKeyReturn) -> Self {
12047                    (value._0,)
12048                }
12049            }
12050            #[automatically_derived]
12051            #[doc(hidden)]
12052            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
12053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12054                    Self { _0: tuple.0 }
12055                }
12056            }
12057        }
12058        #[automatically_derived]
12059        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
12060            type Parameters<'a> = (BN254::G2Point,);
12061            type Token<'a> = <Self::Parameters<
12062                'a,
12063            > as alloy_sol_types::SolType>::Token<'a>;
12064            type Return = alloy::sol_types::private::FixedBytes<32>;
12065            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12066            type ReturnToken<'a> = <Self::ReturnTuple<
12067                'a,
12068            > as alloy_sol_types::SolType>::Token<'a>;
12069            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
12070            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
12071            #[inline]
12072            fn new<'a>(
12073                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12074            ) -> Self {
12075                tuple.into()
12076            }
12077            #[inline]
12078            fn tokenize(&self) -> Self::Token<'_> {
12079                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
12080            }
12081            #[inline]
12082            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12083                (
12084                    <alloy::sol_types::sol_data::FixedBytes<
12085                        32,
12086                    > as alloy_sol_types::SolType>::tokenize(ret),
12087                )
12088            }
12089            #[inline]
12090            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12091                <Self::ReturnTuple<
12092                    '_,
12093                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12094                    .map(|r| {
12095                        let r: _hashBlsKeyReturn = r.into();
12096                        r._0
12097                    })
12098            }
12099            #[inline]
12100            fn abi_decode_returns_validate(
12101                data: &[u8],
12102            ) -> alloy_sol_types::Result<Self::Return> {
12103                <Self::ReturnTuple<
12104                    '_,
12105                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12106                    .map(|r| {
12107                        let r: _hashBlsKeyReturn = r.into();
12108                        r._0
12109                    })
12110            }
12111        }
12112    };
12113    #[derive(serde::Serialize, serde::Deserialize)]
12114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12115    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
12116```solidity
12117function activeStake() external view returns (uint256);
12118```*/
12119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12120    #[derive(Clone)]
12121    pub struct activeStakeCall;
12122    #[derive(serde::Serialize, serde::Deserialize)]
12123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12124    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
12125    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12126    #[derive(Clone)]
12127    pub struct activeStakeReturn {
12128        #[allow(missing_docs)]
12129        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12130    }
12131    #[allow(
12132        non_camel_case_types,
12133        non_snake_case,
12134        clippy::pub_underscore_fields,
12135        clippy::style
12136    )]
12137    const _: () = {
12138        use alloy::sol_types as alloy_sol_types;
12139        {
12140            #[doc(hidden)]
12141            type UnderlyingSolTuple<'a> = ();
12142            #[doc(hidden)]
12143            type UnderlyingRustTuple<'a> = ();
12144            #[cfg(test)]
12145            #[allow(dead_code, unreachable_patterns)]
12146            fn _type_assertion(
12147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12148            ) {
12149                match _t {
12150                    alloy_sol_types::private::AssertTypeEq::<
12151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12152                    >(_) => {}
12153                }
12154            }
12155            #[automatically_derived]
12156            #[doc(hidden)]
12157            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
12158                fn from(value: activeStakeCall) -> Self {
12159                    ()
12160                }
12161            }
12162            #[automatically_derived]
12163            #[doc(hidden)]
12164            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
12165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12166                    Self
12167                }
12168            }
12169        }
12170        {
12171            #[doc(hidden)]
12172            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12173            #[doc(hidden)]
12174            type UnderlyingRustTuple<'a> = (
12175                alloy::sol_types::private::primitives::aliases::U256,
12176            );
12177            #[cfg(test)]
12178            #[allow(dead_code, unreachable_patterns)]
12179            fn _type_assertion(
12180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12181            ) {
12182                match _t {
12183                    alloy_sol_types::private::AssertTypeEq::<
12184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12185                    >(_) => {}
12186                }
12187            }
12188            #[automatically_derived]
12189            #[doc(hidden)]
12190            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
12191                fn from(value: activeStakeReturn) -> Self {
12192                    (value._0,)
12193                }
12194            }
12195            #[automatically_derived]
12196            #[doc(hidden)]
12197            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
12198                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12199                    Self { _0: tuple.0 }
12200                }
12201            }
12202        }
12203        #[automatically_derived]
12204        impl alloy_sol_types::SolCall for activeStakeCall {
12205            type Parameters<'a> = ();
12206            type Token<'a> = <Self::Parameters<
12207                'a,
12208            > as alloy_sol_types::SolType>::Token<'a>;
12209            type Return = alloy::sol_types::private::primitives::aliases::U256;
12210            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12211            type ReturnToken<'a> = <Self::ReturnTuple<
12212                'a,
12213            > as alloy_sol_types::SolType>::Token<'a>;
12214            const SIGNATURE: &'static str = "activeStake()";
12215            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
12216            #[inline]
12217            fn new<'a>(
12218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12219            ) -> Self {
12220                tuple.into()
12221            }
12222            #[inline]
12223            fn tokenize(&self) -> Self::Token<'_> {
12224                ()
12225            }
12226            #[inline]
12227            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12228                (
12229                    <alloy::sol_types::sol_data::Uint<
12230                        256,
12231                    > as alloy_sol_types::SolType>::tokenize(ret),
12232                )
12233            }
12234            #[inline]
12235            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12236                <Self::ReturnTuple<
12237                    '_,
12238                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12239                    .map(|r| {
12240                        let r: activeStakeReturn = r.into();
12241                        r._0
12242                    })
12243            }
12244            #[inline]
12245            fn abi_decode_returns_validate(
12246                data: &[u8],
12247            ) -> alloy_sol_types::Result<Self::Return> {
12248                <Self::ReturnTuple<
12249                    '_,
12250                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12251                    .map(|r| {
12252                        let r: activeStakeReturn = r.into();
12253                        r._0
12254                    })
12255            }
12256        }
12257    };
12258    #[derive(serde::Serialize, serde::Deserialize)]
12259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12260    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
12261```solidity
12262function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
12263```*/
12264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12265    #[derive(Clone)]
12266    pub struct blsKeysCall {
12267        #[allow(missing_docs)]
12268        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12269    }
12270    #[derive(serde::Serialize, serde::Deserialize)]
12271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12272    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
12273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12274    #[derive(Clone)]
12275    pub struct blsKeysReturn {
12276        #[allow(missing_docs)]
12277        pub used: bool,
12278    }
12279    #[allow(
12280        non_camel_case_types,
12281        non_snake_case,
12282        clippy::pub_underscore_fields,
12283        clippy::style
12284    )]
12285    const _: () = {
12286        use alloy::sol_types as alloy_sol_types;
12287        {
12288            #[doc(hidden)]
12289            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12290            #[doc(hidden)]
12291            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12292            #[cfg(test)]
12293            #[allow(dead_code, unreachable_patterns)]
12294            fn _type_assertion(
12295                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12296            ) {
12297                match _t {
12298                    alloy_sol_types::private::AssertTypeEq::<
12299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12300                    >(_) => {}
12301                }
12302            }
12303            #[automatically_derived]
12304            #[doc(hidden)]
12305            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
12306                fn from(value: blsKeysCall) -> Self {
12307                    (value.blsKeyHash,)
12308                }
12309            }
12310            #[automatically_derived]
12311            #[doc(hidden)]
12312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
12313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12314                    Self { blsKeyHash: tuple.0 }
12315                }
12316            }
12317        }
12318        {
12319            #[doc(hidden)]
12320            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12321            #[doc(hidden)]
12322            type UnderlyingRustTuple<'a> = (bool,);
12323            #[cfg(test)]
12324            #[allow(dead_code, unreachable_patterns)]
12325            fn _type_assertion(
12326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12327            ) {
12328                match _t {
12329                    alloy_sol_types::private::AssertTypeEq::<
12330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12331                    >(_) => {}
12332                }
12333            }
12334            #[automatically_derived]
12335            #[doc(hidden)]
12336            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
12337                fn from(value: blsKeysReturn) -> Self {
12338                    (value.used,)
12339                }
12340            }
12341            #[automatically_derived]
12342            #[doc(hidden)]
12343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
12344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12345                    Self { used: tuple.0 }
12346                }
12347            }
12348        }
12349        #[automatically_derived]
12350        impl alloy_sol_types::SolCall for blsKeysCall {
12351            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12352            type Token<'a> = <Self::Parameters<
12353                'a,
12354            > as alloy_sol_types::SolType>::Token<'a>;
12355            type Return = bool;
12356            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12357            type ReturnToken<'a> = <Self::ReturnTuple<
12358                'a,
12359            > as alloy_sol_types::SolType>::Token<'a>;
12360            const SIGNATURE: &'static str = "blsKeys(bytes32)";
12361            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
12362            #[inline]
12363            fn new<'a>(
12364                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12365            ) -> Self {
12366                tuple.into()
12367            }
12368            #[inline]
12369            fn tokenize(&self) -> Self::Token<'_> {
12370                (
12371                    <alloy::sol_types::sol_data::FixedBytes<
12372                        32,
12373                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
12374                )
12375            }
12376            #[inline]
12377            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12378                (
12379                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12380                        ret,
12381                    ),
12382                )
12383            }
12384            #[inline]
12385            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12386                <Self::ReturnTuple<
12387                    '_,
12388                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12389                    .map(|r| {
12390                        let r: blsKeysReturn = r.into();
12391                        r.used
12392                    })
12393            }
12394            #[inline]
12395            fn abi_decode_returns_validate(
12396                data: &[u8],
12397            ) -> alloy_sol_types::Result<Self::Return> {
12398                <Self::ReturnTuple<
12399                    '_,
12400                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12401                    .map(|r| {
12402                        let r: blsKeysReturn = r.into();
12403                        r.used
12404                    })
12405            }
12406        }
12407    };
12408    #[derive(serde::Serialize, serde::Deserialize)]
12409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12410    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
12411```solidity
12412function claimValidatorExit(address validator) external;
12413```*/
12414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12415    #[derive(Clone)]
12416    pub struct claimValidatorExitCall {
12417        #[allow(missing_docs)]
12418        pub validator: alloy::sol_types::private::Address,
12419    }
12420    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
12421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12422    #[derive(Clone)]
12423    pub struct claimValidatorExitReturn {}
12424    #[allow(
12425        non_camel_case_types,
12426        non_snake_case,
12427        clippy::pub_underscore_fields,
12428        clippy::style
12429    )]
12430    const _: () = {
12431        use alloy::sol_types as alloy_sol_types;
12432        {
12433            #[doc(hidden)]
12434            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12435            #[doc(hidden)]
12436            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12437            #[cfg(test)]
12438            #[allow(dead_code, unreachable_patterns)]
12439            fn _type_assertion(
12440                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12441            ) {
12442                match _t {
12443                    alloy_sol_types::private::AssertTypeEq::<
12444                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12445                    >(_) => {}
12446                }
12447            }
12448            #[automatically_derived]
12449            #[doc(hidden)]
12450            impl ::core::convert::From<claimValidatorExitCall>
12451            for UnderlyingRustTuple<'_> {
12452                fn from(value: claimValidatorExitCall) -> Self {
12453                    (value.validator,)
12454                }
12455            }
12456            #[automatically_derived]
12457            #[doc(hidden)]
12458            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12459            for claimValidatorExitCall {
12460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12461                    Self { validator: tuple.0 }
12462                }
12463            }
12464        }
12465        {
12466            #[doc(hidden)]
12467            type UnderlyingSolTuple<'a> = ();
12468            #[doc(hidden)]
12469            type UnderlyingRustTuple<'a> = ();
12470            #[cfg(test)]
12471            #[allow(dead_code, unreachable_patterns)]
12472            fn _type_assertion(
12473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12474            ) {
12475                match _t {
12476                    alloy_sol_types::private::AssertTypeEq::<
12477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12478                    >(_) => {}
12479                }
12480            }
12481            #[automatically_derived]
12482            #[doc(hidden)]
12483            impl ::core::convert::From<claimValidatorExitReturn>
12484            for UnderlyingRustTuple<'_> {
12485                fn from(value: claimValidatorExitReturn) -> Self {
12486                    ()
12487                }
12488            }
12489            #[automatically_derived]
12490            #[doc(hidden)]
12491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12492            for claimValidatorExitReturn {
12493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12494                    Self {}
12495                }
12496            }
12497        }
12498        impl claimValidatorExitReturn {
12499            fn _tokenize(
12500                &self,
12501            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12502                ()
12503            }
12504        }
12505        #[automatically_derived]
12506        impl alloy_sol_types::SolCall for claimValidatorExitCall {
12507            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12508            type Token<'a> = <Self::Parameters<
12509                'a,
12510            > as alloy_sol_types::SolType>::Token<'a>;
12511            type Return = claimValidatorExitReturn;
12512            type ReturnTuple<'a> = ();
12513            type ReturnToken<'a> = <Self::ReturnTuple<
12514                'a,
12515            > as alloy_sol_types::SolType>::Token<'a>;
12516            const SIGNATURE: &'static str = "claimValidatorExit(address)";
12517            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
12518            #[inline]
12519            fn new<'a>(
12520                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12521            ) -> Self {
12522                tuple.into()
12523            }
12524            #[inline]
12525            fn tokenize(&self) -> Self::Token<'_> {
12526                (
12527                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12528                        &self.validator,
12529                    ),
12530                )
12531            }
12532            #[inline]
12533            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12534                claimValidatorExitReturn::_tokenize(ret)
12535            }
12536            #[inline]
12537            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12538                <Self::ReturnTuple<
12539                    '_,
12540                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12541                    .map(Into::into)
12542            }
12543            #[inline]
12544            fn abi_decode_returns_validate(
12545                data: &[u8],
12546            ) -> alloy_sol_types::Result<Self::Return> {
12547                <Self::ReturnTuple<
12548                    '_,
12549                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12550                    .map(Into::into)
12551            }
12552        }
12553    };
12554    #[derive(serde::Serialize, serde::Deserialize)]
12555    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12556    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
12557```solidity
12558function claimWithdrawal(address validator) external;
12559```*/
12560    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12561    #[derive(Clone)]
12562    pub struct claimWithdrawalCall {
12563        #[allow(missing_docs)]
12564        pub validator: alloy::sol_types::private::Address,
12565    }
12566    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
12567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12568    #[derive(Clone)]
12569    pub struct claimWithdrawalReturn {}
12570    #[allow(
12571        non_camel_case_types,
12572        non_snake_case,
12573        clippy::pub_underscore_fields,
12574        clippy::style
12575    )]
12576    const _: () = {
12577        use alloy::sol_types as alloy_sol_types;
12578        {
12579            #[doc(hidden)]
12580            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12581            #[doc(hidden)]
12582            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12583            #[cfg(test)]
12584            #[allow(dead_code, unreachable_patterns)]
12585            fn _type_assertion(
12586                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12587            ) {
12588                match _t {
12589                    alloy_sol_types::private::AssertTypeEq::<
12590                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12591                    >(_) => {}
12592                }
12593            }
12594            #[automatically_derived]
12595            #[doc(hidden)]
12596            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
12597                fn from(value: claimWithdrawalCall) -> Self {
12598                    (value.validator,)
12599                }
12600            }
12601            #[automatically_derived]
12602            #[doc(hidden)]
12603            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
12604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12605                    Self { validator: tuple.0 }
12606                }
12607            }
12608        }
12609        {
12610            #[doc(hidden)]
12611            type UnderlyingSolTuple<'a> = ();
12612            #[doc(hidden)]
12613            type UnderlyingRustTuple<'a> = ();
12614            #[cfg(test)]
12615            #[allow(dead_code, unreachable_patterns)]
12616            fn _type_assertion(
12617                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12618            ) {
12619                match _t {
12620                    alloy_sol_types::private::AssertTypeEq::<
12621                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12622                    >(_) => {}
12623                }
12624            }
12625            #[automatically_derived]
12626            #[doc(hidden)]
12627            impl ::core::convert::From<claimWithdrawalReturn>
12628            for UnderlyingRustTuple<'_> {
12629                fn from(value: claimWithdrawalReturn) -> Self {
12630                    ()
12631                }
12632            }
12633            #[automatically_derived]
12634            #[doc(hidden)]
12635            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12636            for claimWithdrawalReturn {
12637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12638                    Self {}
12639                }
12640            }
12641        }
12642        impl claimWithdrawalReturn {
12643            fn _tokenize(
12644                &self,
12645            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12646                ()
12647            }
12648        }
12649        #[automatically_derived]
12650        impl alloy_sol_types::SolCall for claimWithdrawalCall {
12651            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12652            type Token<'a> = <Self::Parameters<
12653                'a,
12654            > as alloy_sol_types::SolType>::Token<'a>;
12655            type Return = claimWithdrawalReturn;
12656            type ReturnTuple<'a> = ();
12657            type ReturnToken<'a> = <Self::ReturnTuple<
12658                'a,
12659            > as alloy_sol_types::SolType>::Token<'a>;
12660            const SIGNATURE: &'static str = "claimWithdrawal(address)";
12661            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
12662            #[inline]
12663            fn new<'a>(
12664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12665            ) -> Self {
12666                tuple.into()
12667            }
12668            #[inline]
12669            fn tokenize(&self) -> Self::Token<'_> {
12670                (
12671                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12672                        &self.validator,
12673                    ),
12674                )
12675            }
12676            #[inline]
12677            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12678                claimWithdrawalReturn::_tokenize(ret)
12679            }
12680            #[inline]
12681            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12682                <Self::ReturnTuple<
12683                    '_,
12684                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12685                    .map(Into::into)
12686            }
12687            #[inline]
12688            fn abi_decode_returns_validate(
12689                data: &[u8],
12690            ) -> alloy_sol_types::Result<Self::Return> {
12691                <Self::ReturnTuple<
12692                    '_,
12693                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12694                    .map(Into::into)
12695            }
12696        }
12697    };
12698    #[derive(serde::Serialize, serde::Deserialize)]
12699    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12700    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
12701```solidity
12702function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
12703```*/
12704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12705    #[derive(Clone)]
12706    pub struct commissionTrackingCall {
12707        #[allow(missing_docs)]
12708        pub validator: alloy::sol_types::private::Address,
12709    }
12710    #[derive(serde::Serialize, serde::Deserialize)]
12711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12712    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
12713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12714    #[derive(Clone)]
12715    pub struct commissionTrackingReturn {
12716        #[allow(missing_docs)]
12717        pub commission: u16,
12718        #[allow(missing_docs)]
12719        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
12720    }
12721    #[allow(
12722        non_camel_case_types,
12723        non_snake_case,
12724        clippy::pub_underscore_fields,
12725        clippy::style
12726    )]
12727    const _: () = {
12728        use alloy::sol_types as alloy_sol_types;
12729        {
12730            #[doc(hidden)]
12731            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12732            #[doc(hidden)]
12733            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12734            #[cfg(test)]
12735            #[allow(dead_code, unreachable_patterns)]
12736            fn _type_assertion(
12737                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12738            ) {
12739                match _t {
12740                    alloy_sol_types::private::AssertTypeEq::<
12741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12742                    >(_) => {}
12743                }
12744            }
12745            #[automatically_derived]
12746            #[doc(hidden)]
12747            impl ::core::convert::From<commissionTrackingCall>
12748            for UnderlyingRustTuple<'_> {
12749                fn from(value: commissionTrackingCall) -> Self {
12750                    (value.validator,)
12751                }
12752            }
12753            #[automatically_derived]
12754            #[doc(hidden)]
12755            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12756            for commissionTrackingCall {
12757                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12758                    Self { validator: tuple.0 }
12759                }
12760            }
12761        }
12762        {
12763            #[doc(hidden)]
12764            type UnderlyingSolTuple<'a> = (
12765                alloy::sol_types::sol_data::Uint<16>,
12766                alloy::sol_types::sol_data::Uint<256>,
12767            );
12768            #[doc(hidden)]
12769            type UnderlyingRustTuple<'a> = (
12770                u16,
12771                alloy::sol_types::private::primitives::aliases::U256,
12772            );
12773            #[cfg(test)]
12774            #[allow(dead_code, unreachable_patterns)]
12775            fn _type_assertion(
12776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12777            ) {
12778                match _t {
12779                    alloy_sol_types::private::AssertTypeEq::<
12780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12781                    >(_) => {}
12782                }
12783            }
12784            #[automatically_derived]
12785            #[doc(hidden)]
12786            impl ::core::convert::From<commissionTrackingReturn>
12787            for UnderlyingRustTuple<'_> {
12788                fn from(value: commissionTrackingReturn) -> Self {
12789                    (value.commission, value.lastIncreaseTime)
12790                }
12791            }
12792            #[automatically_derived]
12793            #[doc(hidden)]
12794            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12795            for commissionTrackingReturn {
12796                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12797                    Self {
12798                        commission: tuple.0,
12799                        lastIncreaseTime: tuple.1,
12800                    }
12801                }
12802            }
12803        }
12804        impl commissionTrackingReturn {
12805            fn _tokenize(
12806                &self,
12807            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12808                (
12809                    <alloy::sol_types::sol_data::Uint<
12810                        16,
12811                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
12812                    <alloy::sol_types::sol_data::Uint<
12813                        256,
12814                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
12815                )
12816            }
12817        }
12818        #[automatically_derived]
12819        impl alloy_sol_types::SolCall for commissionTrackingCall {
12820            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12821            type Token<'a> = <Self::Parameters<
12822                'a,
12823            > as alloy_sol_types::SolType>::Token<'a>;
12824            type Return = commissionTrackingReturn;
12825            type ReturnTuple<'a> = (
12826                alloy::sol_types::sol_data::Uint<16>,
12827                alloy::sol_types::sol_data::Uint<256>,
12828            );
12829            type ReturnToken<'a> = <Self::ReturnTuple<
12830                'a,
12831            > as alloy_sol_types::SolType>::Token<'a>;
12832            const SIGNATURE: &'static str = "commissionTracking(address)";
12833            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
12834            #[inline]
12835            fn new<'a>(
12836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12837            ) -> Self {
12838                tuple.into()
12839            }
12840            #[inline]
12841            fn tokenize(&self) -> Self::Token<'_> {
12842                (
12843                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12844                        &self.validator,
12845                    ),
12846                )
12847            }
12848            #[inline]
12849            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12850                commissionTrackingReturn::_tokenize(ret)
12851            }
12852            #[inline]
12853            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12854                <Self::ReturnTuple<
12855                    '_,
12856                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12857                    .map(Into::into)
12858            }
12859            #[inline]
12860            fn abi_decode_returns_validate(
12861                data: &[u8],
12862            ) -> alloy_sol_types::Result<Self::Return> {
12863                <Self::ReturnTuple<
12864                    '_,
12865                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12866                    .map(Into::into)
12867            }
12868        }
12869    };
12870    #[derive(serde::Serialize, serde::Deserialize)]
12871    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12872    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
12873```solidity
12874function delegate(address validator, uint256 amount) external;
12875```*/
12876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12877    #[derive(Clone)]
12878    pub struct delegateCall {
12879        #[allow(missing_docs)]
12880        pub validator: alloy::sol_types::private::Address,
12881        #[allow(missing_docs)]
12882        pub amount: alloy::sol_types::private::primitives::aliases::U256,
12883    }
12884    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
12885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12886    #[derive(Clone)]
12887    pub struct delegateReturn {}
12888    #[allow(
12889        non_camel_case_types,
12890        non_snake_case,
12891        clippy::pub_underscore_fields,
12892        clippy::style
12893    )]
12894    const _: () = {
12895        use alloy::sol_types as alloy_sol_types;
12896        {
12897            #[doc(hidden)]
12898            type UnderlyingSolTuple<'a> = (
12899                alloy::sol_types::sol_data::Address,
12900                alloy::sol_types::sol_data::Uint<256>,
12901            );
12902            #[doc(hidden)]
12903            type UnderlyingRustTuple<'a> = (
12904                alloy::sol_types::private::Address,
12905                alloy::sol_types::private::primitives::aliases::U256,
12906            );
12907            #[cfg(test)]
12908            #[allow(dead_code, unreachable_patterns)]
12909            fn _type_assertion(
12910                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12911            ) {
12912                match _t {
12913                    alloy_sol_types::private::AssertTypeEq::<
12914                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12915                    >(_) => {}
12916                }
12917            }
12918            #[automatically_derived]
12919            #[doc(hidden)]
12920            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
12921                fn from(value: delegateCall) -> Self {
12922                    (value.validator, value.amount)
12923                }
12924            }
12925            #[automatically_derived]
12926            #[doc(hidden)]
12927            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
12928                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12929                    Self {
12930                        validator: tuple.0,
12931                        amount: tuple.1,
12932                    }
12933                }
12934            }
12935        }
12936        {
12937            #[doc(hidden)]
12938            type UnderlyingSolTuple<'a> = ();
12939            #[doc(hidden)]
12940            type UnderlyingRustTuple<'a> = ();
12941            #[cfg(test)]
12942            #[allow(dead_code, unreachable_patterns)]
12943            fn _type_assertion(
12944                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12945            ) {
12946                match _t {
12947                    alloy_sol_types::private::AssertTypeEq::<
12948                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12949                    >(_) => {}
12950                }
12951            }
12952            #[automatically_derived]
12953            #[doc(hidden)]
12954            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
12955                fn from(value: delegateReturn) -> Self {
12956                    ()
12957                }
12958            }
12959            #[automatically_derived]
12960            #[doc(hidden)]
12961            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
12962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12963                    Self {}
12964                }
12965            }
12966        }
12967        impl delegateReturn {
12968            fn _tokenize(
12969                &self,
12970            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12971                ()
12972            }
12973        }
12974        #[automatically_derived]
12975        impl alloy_sol_types::SolCall for delegateCall {
12976            type Parameters<'a> = (
12977                alloy::sol_types::sol_data::Address,
12978                alloy::sol_types::sol_data::Uint<256>,
12979            );
12980            type Token<'a> = <Self::Parameters<
12981                'a,
12982            > as alloy_sol_types::SolType>::Token<'a>;
12983            type Return = delegateReturn;
12984            type ReturnTuple<'a> = ();
12985            type ReturnToken<'a> = <Self::ReturnTuple<
12986                'a,
12987            > as alloy_sol_types::SolType>::Token<'a>;
12988            const SIGNATURE: &'static str = "delegate(address,uint256)";
12989            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
12990            #[inline]
12991            fn new<'a>(
12992                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12993            ) -> Self {
12994                tuple.into()
12995            }
12996            #[inline]
12997            fn tokenize(&self) -> Self::Token<'_> {
12998                (
12999                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13000                        &self.validator,
13001                    ),
13002                    <alloy::sol_types::sol_data::Uint<
13003                        256,
13004                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13005                )
13006            }
13007            #[inline]
13008            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13009                delegateReturn::_tokenize(ret)
13010            }
13011            #[inline]
13012            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13013                <Self::ReturnTuple<
13014                    '_,
13015                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13016                    .map(Into::into)
13017            }
13018            #[inline]
13019            fn abi_decode_returns_validate(
13020                data: &[u8],
13021            ) -> alloy_sol_types::Result<Self::Return> {
13022                <Self::ReturnTuple<
13023                    '_,
13024                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13025                    .map(Into::into)
13026            }
13027        }
13028    };
13029    #[derive(serde::Serialize, serde::Deserialize)]
13030    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13031    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
13032```solidity
13033function delegations(address validator, address delegator) external view returns (uint256 amount);
13034```*/
13035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13036    #[derive(Clone)]
13037    pub struct delegationsCall {
13038        #[allow(missing_docs)]
13039        pub validator: alloy::sol_types::private::Address,
13040        #[allow(missing_docs)]
13041        pub delegator: alloy::sol_types::private::Address,
13042    }
13043    #[derive(serde::Serialize, serde::Deserialize)]
13044    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13045    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
13046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13047    #[derive(Clone)]
13048    pub struct delegationsReturn {
13049        #[allow(missing_docs)]
13050        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13051    }
13052    #[allow(
13053        non_camel_case_types,
13054        non_snake_case,
13055        clippy::pub_underscore_fields,
13056        clippy::style
13057    )]
13058    const _: () = {
13059        use alloy::sol_types as alloy_sol_types;
13060        {
13061            #[doc(hidden)]
13062            type UnderlyingSolTuple<'a> = (
13063                alloy::sol_types::sol_data::Address,
13064                alloy::sol_types::sol_data::Address,
13065            );
13066            #[doc(hidden)]
13067            type UnderlyingRustTuple<'a> = (
13068                alloy::sol_types::private::Address,
13069                alloy::sol_types::private::Address,
13070            );
13071            #[cfg(test)]
13072            #[allow(dead_code, unreachable_patterns)]
13073            fn _type_assertion(
13074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13075            ) {
13076                match _t {
13077                    alloy_sol_types::private::AssertTypeEq::<
13078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13079                    >(_) => {}
13080                }
13081            }
13082            #[automatically_derived]
13083            #[doc(hidden)]
13084            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
13085                fn from(value: delegationsCall) -> Self {
13086                    (value.validator, value.delegator)
13087                }
13088            }
13089            #[automatically_derived]
13090            #[doc(hidden)]
13091            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
13092                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13093                    Self {
13094                        validator: tuple.0,
13095                        delegator: tuple.1,
13096                    }
13097                }
13098            }
13099        }
13100        {
13101            #[doc(hidden)]
13102            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13103            #[doc(hidden)]
13104            type UnderlyingRustTuple<'a> = (
13105                alloy::sol_types::private::primitives::aliases::U256,
13106            );
13107            #[cfg(test)]
13108            #[allow(dead_code, unreachable_patterns)]
13109            fn _type_assertion(
13110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13111            ) {
13112                match _t {
13113                    alloy_sol_types::private::AssertTypeEq::<
13114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13115                    >(_) => {}
13116                }
13117            }
13118            #[automatically_derived]
13119            #[doc(hidden)]
13120            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
13121                fn from(value: delegationsReturn) -> Self {
13122                    (value.amount,)
13123                }
13124            }
13125            #[automatically_derived]
13126            #[doc(hidden)]
13127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
13128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13129                    Self { amount: tuple.0 }
13130                }
13131            }
13132        }
13133        #[automatically_derived]
13134        impl alloy_sol_types::SolCall for delegationsCall {
13135            type Parameters<'a> = (
13136                alloy::sol_types::sol_data::Address,
13137                alloy::sol_types::sol_data::Address,
13138            );
13139            type Token<'a> = <Self::Parameters<
13140                'a,
13141            > as alloy_sol_types::SolType>::Token<'a>;
13142            type Return = alloy::sol_types::private::primitives::aliases::U256;
13143            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13144            type ReturnToken<'a> = <Self::ReturnTuple<
13145                'a,
13146            > as alloy_sol_types::SolType>::Token<'a>;
13147            const SIGNATURE: &'static str = "delegations(address,address)";
13148            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
13149            #[inline]
13150            fn new<'a>(
13151                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13152            ) -> Self {
13153                tuple.into()
13154            }
13155            #[inline]
13156            fn tokenize(&self) -> Self::Token<'_> {
13157                (
13158                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13159                        &self.validator,
13160                    ),
13161                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13162                        &self.delegator,
13163                    ),
13164                )
13165            }
13166            #[inline]
13167            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13168                (
13169                    <alloy::sol_types::sol_data::Uint<
13170                        256,
13171                    > as alloy_sol_types::SolType>::tokenize(ret),
13172                )
13173            }
13174            #[inline]
13175            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13176                <Self::ReturnTuple<
13177                    '_,
13178                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13179                    .map(|r| {
13180                        let r: delegationsReturn = r.into();
13181                        r.amount
13182                    })
13183            }
13184            #[inline]
13185            fn abi_decode_returns_validate(
13186                data: &[u8],
13187            ) -> alloy_sol_types::Result<Self::Return> {
13188                <Self::ReturnTuple<
13189                    '_,
13190                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13191                    .map(|r| {
13192                        let r: delegationsReturn = r.into();
13193                        r.amount
13194                    })
13195            }
13196        }
13197    };
13198    #[derive(serde::Serialize, serde::Deserialize)]
13199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13200    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
13201```solidity
13202function deregisterValidator() external;
13203```*/
13204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13205    #[derive(Clone)]
13206    pub struct deregisterValidatorCall;
13207    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
13208    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13209    #[derive(Clone)]
13210    pub struct deregisterValidatorReturn {}
13211    #[allow(
13212        non_camel_case_types,
13213        non_snake_case,
13214        clippy::pub_underscore_fields,
13215        clippy::style
13216    )]
13217    const _: () = {
13218        use alloy::sol_types as alloy_sol_types;
13219        {
13220            #[doc(hidden)]
13221            type UnderlyingSolTuple<'a> = ();
13222            #[doc(hidden)]
13223            type UnderlyingRustTuple<'a> = ();
13224            #[cfg(test)]
13225            #[allow(dead_code, unreachable_patterns)]
13226            fn _type_assertion(
13227                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13228            ) {
13229                match _t {
13230                    alloy_sol_types::private::AssertTypeEq::<
13231                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13232                    >(_) => {}
13233                }
13234            }
13235            #[automatically_derived]
13236            #[doc(hidden)]
13237            impl ::core::convert::From<deregisterValidatorCall>
13238            for UnderlyingRustTuple<'_> {
13239                fn from(value: deregisterValidatorCall) -> Self {
13240                    ()
13241                }
13242            }
13243            #[automatically_derived]
13244            #[doc(hidden)]
13245            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13246            for deregisterValidatorCall {
13247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13248                    Self
13249                }
13250            }
13251        }
13252        {
13253            #[doc(hidden)]
13254            type UnderlyingSolTuple<'a> = ();
13255            #[doc(hidden)]
13256            type UnderlyingRustTuple<'a> = ();
13257            #[cfg(test)]
13258            #[allow(dead_code, unreachable_patterns)]
13259            fn _type_assertion(
13260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13261            ) {
13262                match _t {
13263                    alloy_sol_types::private::AssertTypeEq::<
13264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13265                    >(_) => {}
13266                }
13267            }
13268            #[automatically_derived]
13269            #[doc(hidden)]
13270            impl ::core::convert::From<deregisterValidatorReturn>
13271            for UnderlyingRustTuple<'_> {
13272                fn from(value: deregisterValidatorReturn) -> Self {
13273                    ()
13274                }
13275            }
13276            #[automatically_derived]
13277            #[doc(hidden)]
13278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13279            for deregisterValidatorReturn {
13280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13281                    Self {}
13282                }
13283            }
13284        }
13285        impl deregisterValidatorReturn {
13286            fn _tokenize(
13287                &self,
13288            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13289                ()
13290            }
13291        }
13292        #[automatically_derived]
13293        impl alloy_sol_types::SolCall for deregisterValidatorCall {
13294            type Parameters<'a> = ();
13295            type Token<'a> = <Self::Parameters<
13296                'a,
13297            > as alloy_sol_types::SolType>::Token<'a>;
13298            type Return = deregisterValidatorReturn;
13299            type ReturnTuple<'a> = ();
13300            type ReturnToken<'a> = <Self::ReturnTuple<
13301                'a,
13302            > as alloy_sol_types::SolType>::Token<'a>;
13303            const SIGNATURE: &'static str = "deregisterValidator()";
13304            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
13305            #[inline]
13306            fn new<'a>(
13307                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13308            ) -> Self {
13309                tuple.into()
13310            }
13311            #[inline]
13312            fn tokenize(&self) -> Self::Token<'_> {
13313                ()
13314            }
13315            #[inline]
13316            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13317                deregisterValidatorReturn::_tokenize(ret)
13318            }
13319            #[inline]
13320            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13321                <Self::ReturnTuple<
13322                    '_,
13323                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13324                    .map(Into::into)
13325            }
13326            #[inline]
13327            fn abi_decode_returns_validate(
13328                data: &[u8],
13329            ) -> alloy_sol_types::Result<Self::Return> {
13330                <Self::ReturnTuple<
13331                    '_,
13332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13333                    .map(Into::into)
13334            }
13335        }
13336    };
13337    #[derive(serde::Serialize, serde::Deserialize)]
13338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13339    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
13340```solidity
13341function exitEscrowPeriod() external view returns (uint256);
13342```*/
13343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13344    #[derive(Clone)]
13345    pub struct exitEscrowPeriodCall;
13346    #[derive(serde::Serialize, serde::Deserialize)]
13347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13348    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
13349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13350    #[derive(Clone)]
13351    pub struct exitEscrowPeriodReturn {
13352        #[allow(missing_docs)]
13353        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13354    }
13355    #[allow(
13356        non_camel_case_types,
13357        non_snake_case,
13358        clippy::pub_underscore_fields,
13359        clippy::style
13360    )]
13361    const _: () = {
13362        use alloy::sol_types as alloy_sol_types;
13363        {
13364            #[doc(hidden)]
13365            type UnderlyingSolTuple<'a> = ();
13366            #[doc(hidden)]
13367            type UnderlyingRustTuple<'a> = ();
13368            #[cfg(test)]
13369            #[allow(dead_code, unreachable_patterns)]
13370            fn _type_assertion(
13371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13372            ) {
13373                match _t {
13374                    alloy_sol_types::private::AssertTypeEq::<
13375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13376                    >(_) => {}
13377                }
13378            }
13379            #[automatically_derived]
13380            #[doc(hidden)]
13381            impl ::core::convert::From<exitEscrowPeriodCall>
13382            for UnderlyingRustTuple<'_> {
13383                fn from(value: exitEscrowPeriodCall) -> Self {
13384                    ()
13385                }
13386            }
13387            #[automatically_derived]
13388            #[doc(hidden)]
13389            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13390            for exitEscrowPeriodCall {
13391                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13392                    Self
13393                }
13394            }
13395        }
13396        {
13397            #[doc(hidden)]
13398            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13399            #[doc(hidden)]
13400            type UnderlyingRustTuple<'a> = (
13401                alloy::sol_types::private::primitives::aliases::U256,
13402            );
13403            #[cfg(test)]
13404            #[allow(dead_code, unreachable_patterns)]
13405            fn _type_assertion(
13406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13407            ) {
13408                match _t {
13409                    alloy_sol_types::private::AssertTypeEq::<
13410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13411                    >(_) => {}
13412                }
13413            }
13414            #[automatically_derived]
13415            #[doc(hidden)]
13416            impl ::core::convert::From<exitEscrowPeriodReturn>
13417            for UnderlyingRustTuple<'_> {
13418                fn from(value: exitEscrowPeriodReturn) -> Self {
13419                    (value._0,)
13420                }
13421            }
13422            #[automatically_derived]
13423            #[doc(hidden)]
13424            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13425            for exitEscrowPeriodReturn {
13426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13427                    Self { _0: tuple.0 }
13428                }
13429            }
13430        }
13431        #[automatically_derived]
13432        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
13433            type Parameters<'a> = ();
13434            type Token<'a> = <Self::Parameters<
13435                'a,
13436            > as alloy_sol_types::SolType>::Token<'a>;
13437            type Return = alloy::sol_types::private::primitives::aliases::U256;
13438            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13439            type ReturnToken<'a> = <Self::ReturnTuple<
13440                'a,
13441            > as alloy_sol_types::SolType>::Token<'a>;
13442            const SIGNATURE: &'static str = "exitEscrowPeriod()";
13443            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
13444            #[inline]
13445            fn new<'a>(
13446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13447            ) -> Self {
13448                tuple.into()
13449            }
13450            #[inline]
13451            fn tokenize(&self) -> Self::Token<'_> {
13452                ()
13453            }
13454            #[inline]
13455            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13456                (
13457                    <alloy::sol_types::sol_data::Uint<
13458                        256,
13459                    > as alloy_sol_types::SolType>::tokenize(ret),
13460                )
13461            }
13462            #[inline]
13463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13464                <Self::ReturnTuple<
13465                    '_,
13466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13467                    .map(|r| {
13468                        let r: exitEscrowPeriodReturn = r.into();
13469                        r._0
13470                    })
13471            }
13472            #[inline]
13473            fn abi_decode_returns_validate(
13474                data: &[u8],
13475            ) -> alloy_sol_types::Result<Self::Return> {
13476                <Self::ReturnTuple<
13477                    '_,
13478                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13479                    .map(|r| {
13480                        let r: exitEscrowPeriodReturn = r.into();
13481                        r._0
13482                    })
13483            }
13484        }
13485    };
13486    #[derive(serde::Serialize, serde::Deserialize)]
13487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13488    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
13489```solidity
13490function getRoleAdmin(bytes32 role) external view returns (bytes32);
13491```*/
13492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13493    #[derive(Clone)]
13494    pub struct getRoleAdminCall {
13495        #[allow(missing_docs)]
13496        pub role: alloy::sol_types::private::FixedBytes<32>,
13497    }
13498    #[derive(serde::Serialize, serde::Deserialize)]
13499    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13500    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
13501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13502    #[derive(Clone)]
13503    pub struct getRoleAdminReturn {
13504        #[allow(missing_docs)]
13505        pub _0: alloy::sol_types::private::FixedBytes<32>,
13506    }
13507    #[allow(
13508        non_camel_case_types,
13509        non_snake_case,
13510        clippy::pub_underscore_fields,
13511        clippy::style
13512    )]
13513    const _: () = {
13514        use alloy::sol_types as alloy_sol_types;
13515        {
13516            #[doc(hidden)]
13517            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13518            #[doc(hidden)]
13519            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13520            #[cfg(test)]
13521            #[allow(dead_code, unreachable_patterns)]
13522            fn _type_assertion(
13523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13524            ) {
13525                match _t {
13526                    alloy_sol_types::private::AssertTypeEq::<
13527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13528                    >(_) => {}
13529                }
13530            }
13531            #[automatically_derived]
13532            #[doc(hidden)]
13533            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
13534                fn from(value: getRoleAdminCall) -> Self {
13535                    (value.role,)
13536                }
13537            }
13538            #[automatically_derived]
13539            #[doc(hidden)]
13540            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
13541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13542                    Self { role: tuple.0 }
13543                }
13544            }
13545        }
13546        {
13547            #[doc(hidden)]
13548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13549            #[doc(hidden)]
13550            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13551            #[cfg(test)]
13552            #[allow(dead_code, unreachable_patterns)]
13553            fn _type_assertion(
13554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13555            ) {
13556                match _t {
13557                    alloy_sol_types::private::AssertTypeEq::<
13558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13559                    >(_) => {}
13560                }
13561            }
13562            #[automatically_derived]
13563            #[doc(hidden)]
13564            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
13565                fn from(value: getRoleAdminReturn) -> Self {
13566                    (value._0,)
13567                }
13568            }
13569            #[automatically_derived]
13570            #[doc(hidden)]
13571            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
13572                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13573                    Self { _0: tuple.0 }
13574                }
13575            }
13576        }
13577        #[automatically_derived]
13578        impl alloy_sol_types::SolCall for getRoleAdminCall {
13579            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13580            type Token<'a> = <Self::Parameters<
13581                'a,
13582            > as alloy_sol_types::SolType>::Token<'a>;
13583            type Return = alloy::sol_types::private::FixedBytes<32>;
13584            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13585            type ReturnToken<'a> = <Self::ReturnTuple<
13586                'a,
13587            > as alloy_sol_types::SolType>::Token<'a>;
13588            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
13589            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
13590            #[inline]
13591            fn new<'a>(
13592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13593            ) -> Self {
13594                tuple.into()
13595            }
13596            #[inline]
13597            fn tokenize(&self) -> Self::Token<'_> {
13598                (
13599                    <alloy::sol_types::sol_data::FixedBytes<
13600                        32,
13601                    > as alloy_sol_types::SolType>::tokenize(&self.role),
13602                )
13603            }
13604            #[inline]
13605            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13606                (
13607                    <alloy::sol_types::sol_data::FixedBytes<
13608                        32,
13609                    > as alloy_sol_types::SolType>::tokenize(ret),
13610                )
13611            }
13612            #[inline]
13613            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13614                <Self::ReturnTuple<
13615                    '_,
13616                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13617                    .map(|r| {
13618                        let r: getRoleAdminReturn = r.into();
13619                        r._0
13620                    })
13621            }
13622            #[inline]
13623            fn abi_decode_returns_validate(
13624                data: &[u8],
13625            ) -> alloy_sol_types::Result<Self::Return> {
13626                <Self::ReturnTuple<
13627                    '_,
13628                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13629                    .map(|r| {
13630                        let r: getRoleAdminReturn = r.into();
13631                        r._0
13632                    })
13633            }
13634        }
13635    };
13636    #[derive(serde::Serialize, serde::Deserialize)]
13637    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13638    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
13639```solidity
13640function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
13641```*/
13642    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13643    #[derive(Clone)]
13644    pub struct getUndelegationCall {
13645        #[allow(missing_docs)]
13646        pub validator: alloy::sol_types::private::Address,
13647        #[allow(missing_docs)]
13648        pub delegator: alloy::sol_types::private::Address,
13649    }
13650    #[derive(serde::Serialize, serde::Deserialize)]
13651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13652    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
13653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13654    #[derive(Clone)]
13655    pub struct getUndelegationReturn {
13656        #[allow(missing_docs)]
13657        pub id: u64,
13658        #[allow(missing_docs)]
13659        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13660        #[allow(missing_docs)]
13661        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
13662    }
13663    #[allow(
13664        non_camel_case_types,
13665        non_snake_case,
13666        clippy::pub_underscore_fields,
13667        clippy::style
13668    )]
13669    const _: () = {
13670        use alloy::sol_types as alloy_sol_types;
13671        {
13672            #[doc(hidden)]
13673            type UnderlyingSolTuple<'a> = (
13674                alloy::sol_types::sol_data::Address,
13675                alloy::sol_types::sol_data::Address,
13676            );
13677            #[doc(hidden)]
13678            type UnderlyingRustTuple<'a> = (
13679                alloy::sol_types::private::Address,
13680                alloy::sol_types::private::Address,
13681            );
13682            #[cfg(test)]
13683            #[allow(dead_code, unreachable_patterns)]
13684            fn _type_assertion(
13685                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13686            ) {
13687                match _t {
13688                    alloy_sol_types::private::AssertTypeEq::<
13689                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13690                    >(_) => {}
13691                }
13692            }
13693            #[automatically_derived]
13694            #[doc(hidden)]
13695            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
13696                fn from(value: getUndelegationCall) -> Self {
13697                    (value.validator, value.delegator)
13698                }
13699            }
13700            #[automatically_derived]
13701            #[doc(hidden)]
13702            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
13703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13704                    Self {
13705                        validator: tuple.0,
13706                        delegator: tuple.1,
13707                    }
13708                }
13709            }
13710        }
13711        {
13712            #[doc(hidden)]
13713            type UnderlyingSolTuple<'a> = (
13714                alloy::sol_types::sol_data::Uint<64>,
13715                alloy::sol_types::sol_data::Uint<256>,
13716                alloy::sol_types::sol_data::Uint<256>,
13717            );
13718            #[doc(hidden)]
13719            type UnderlyingRustTuple<'a> = (
13720                u64,
13721                alloy::sol_types::private::primitives::aliases::U256,
13722                alloy::sol_types::private::primitives::aliases::U256,
13723            );
13724            #[cfg(test)]
13725            #[allow(dead_code, unreachable_patterns)]
13726            fn _type_assertion(
13727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13728            ) {
13729                match _t {
13730                    alloy_sol_types::private::AssertTypeEq::<
13731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13732                    >(_) => {}
13733                }
13734            }
13735            #[automatically_derived]
13736            #[doc(hidden)]
13737            impl ::core::convert::From<getUndelegationReturn>
13738            for UnderlyingRustTuple<'_> {
13739                fn from(value: getUndelegationReturn) -> Self {
13740                    (value.id, value.amount, value.unlocksAt)
13741                }
13742            }
13743            #[automatically_derived]
13744            #[doc(hidden)]
13745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13746            for getUndelegationReturn {
13747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13748                    Self {
13749                        id: tuple.0,
13750                        amount: tuple.1,
13751                        unlocksAt: tuple.2,
13752                    }
13753                }
13754            }
13755        }
13756        impl getUndelegationReturn {
13757            fn _tokenize(
13758                &self,
13759            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13760                (
13761                    <alloy::sol_types::sol_data::Uint<
13762                        64,
13763                    > as alloy_sol_types::SolType>::tokenize(&self.id),
13764                    <alloy::sol_types::sol_data::Uint<
13765                        256,
13766                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13767                    <alloy::sol_types::sol_data::Uint<
13768                        256,
13769                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
13770                )
13771            }
13772        }
13773        #[automatically_derived]
13774        impl alloy_sol_types::SolCall for getUndelegationCall {
13775            type Parameters<'a> = (
13776                alloy::sol_types::sol_data::Address,
13777                alloy::sol_types::sol_data::Address,
13778            );
13779            type Token<'a> = <Self::Parameters<
13780                'a,
13781            > as alloy_sol_types::SolType>::Token<'a>;
13782            type Return = getUndelegationReturn;
13783            type ReturnTuple<'a> = (
13784                alloy::sol_types::sol_data::Uint<64>,
13785                alloy::sol_types::sol_data::Uint<256>,
13786                alloy::sol_types::sol_data::Uint<256>,
13787            );
13788            type ReturnToken<'a> = <Self::ReturnTuple<
13789                'a,
13790            > as alloy_sol_types::SolType>::Token<'a>;
13791            const SIGNATURE: &'static str = "getUndelegation(address,address)";
13792            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
13793            #[inline]
13794            fn new<'a>(
13795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13796            ) -> Self {
13797                tuple.into()
13798            }
13799            #[inline]
13800            fn tokenize(&self) -> Self::Token<'_> {
13801                (
13802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13803                        &self.validator,
13804                    ),
13805                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13806                        &self.delegator,
13807                    ),
13808                )
13809            }
13810            #[inline]
13811            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13812                getUndelegationReturn::_tokenize(ret)
13813            }
13814            #[inline]
13815            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13816                <Self::ReturnTuple<
13817                    '_,
13818                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13819                    .map(Into::into)
13820            }
13821            #[inline]
13822            fn abi_decode_returns_validate(
13823                data: &[u8],
13824            ) -> alloy_sol_types::Result<Self::Return> {
13825                <Self::ReturnTuple<
13826                    '_,
13827                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13828                    .map(Into::into)
13829            }
13830        }
13831    };
13832    #[derive(serde::Serialize, serde::Deserialize)]
13833    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13834    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
13835```solidity
13836function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
13837```*/
13838    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13839    #[derive(Clone)]
13840    pub struct getVersionCall;
13841    #[derive(serde::Serialize, serde::Deserialize)]
13842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13843    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
13844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13845    #[derive(Clone)]
13846    pub struct getVersionReturn {
13847        #[allow(missing_docs)]
13848        pub majorVersion: u8,
13849        #[allow(missing_docs)]
13850        pub minorVersion: u8,
13851        #[allow(missing_docs)]
13852        pub patchVersion: u8,
13853    }
13854    #[allow(
13855        non_camel_case_types,
13856        non_snake_case,
13857        clippy::pub_underscore_fields,
13858        clippy::style
13859    )]
13860    const _: () = {
13861        use alloy::sol_types as alloy_sol_types;
13862        {
13863            #[doc(hidden)]
13864            type UnderlyingSolTuple<'a> = ();
13865            #[doc(hidden)]
13866            type UnderlyingRustTuple<'a> = ();
13867            #[cfg(test)]
13868            #[allow(dead_code, unreachable_patterns)]
13869            fn _type_assertion(
13870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13871            ) {
13872                match _t {
13873                    alloy_sol_types::private::AssertTypeEq::<
13874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13875                    >(_) => {}
13876                }
13877            }
13878            #[automatically_derived]
13879            #[doc(hidden)]
13880            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
13881                fn from(value: getVersionCall) -> Self {
13882                    ()
13883                }
13884            }
13885            #[automatically_derived]
13886            #[doc(hidden)]
13887            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
13888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13889                    Self
13890                }
13891            }
13892        }
13893        {
13894            #[doc(hidden)]
13895            type UnderlyingSolTuple<'a> = (
13896                alloy::sol_types::sol_data::Uint<8>,
13897                alloy::sol_types::sol_data::Uint<8>,
13898                alloy::sol_types::sol_data::Uint<8>,
13899            );
13900            #[doc(hidden)]
13901            type UnderlyingRustTuple<'a> = (u8, u8, u8);
13902            #[cfg(test)]
13903            #[allow(dead_code, unreachable_patterns)]
13904            fn _type_assertion(
13905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13906            ) {
13907                match _t {
13908                    alloy_sol_types::private::AssertTypeEq::<
13909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13910                    >(_) => {}
13911                }
13912            }
13913            #[automatically_derived]
13914            #[doc(hidden)]
13915            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
13916                fn from(value: getVersionReturn) -> Self {
13917                    (value.majorVersion, value.minorVersion, value.patchVersion)
13918                }
13919            }
13920            #[automatically_derived]
13921            #[doc(hidden)]
13922            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
13923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13924                    Self {
13925                        majorVersion: tuple.0,
13926                        minorVersion: tuple.1,
13927                        patchVersion: tuple.2,
13928                    }
13929                }
13930            }
13931        }
13932        impl getVersionReturn {
13933            fn _tokenize(
13934                &self,
13935            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13936                (
13937                    <alloy::sol_types::sol_data::Uint<
13938                        8,
13939                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
13940                    <alloy::sol_types::sol_data::Uint<
13941                        8,
13942                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
13943                    <alloy::sol_types::sol_data::Uint<
13944                        8,
13945                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
13946                )
13947            }
13948        }
13949        #[automatically_derived]
13950        impl alloy_sol_types::SolCall for getVersionCall {
13951            type Parameters<'a> = ();
13952            type Token<'a> = <Self::Parameters<
13953                'a,
13954            > as alloy_sol_types::SolType>::Token<'a>;
13955            type Return = getVersionReturn;
13956            type ReturnTuple<'a> = (
13957                alloy::sol_types::sol_data::Uint<8>,
13958                alloy::sol_types::sol_data::Uint<8>,
13959                alloy::sol_types::sol_data::Uint<8>,
13960            );
13961            type ReturnToken<'a> = <Self::ReturnTuple<
13962                'a,
13963            > as alloy_sol_types::SolType>::Token<'a>;
13964            const SIGNATURE: &'static str = "getVersion()";
13965            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
13966            #[inline]
13967            fn new<'a>(
13968                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13969            ) -> Self {
13970                tuple.into()
13971            }
13972            #[inline]
13973            fn tokenize(&self) -> Self::Token<'_> {
13974                ()
13975            }
13976            #[inline]
13977            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13978                getVersionReturn::_tokenize(ret)
13979            }
13980            #[inline]
13981            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13982                <Self::ReturnTuple<
13983                    '_,
13984                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13985                    .map(Into::into)
13986            }
13987            #[inline]
13988            fn abi_decode_returns_validate(
13989                data: &[u8],
13990            ) -> alloy_sol_types::Result<Self::Return> {
13991                <Self::ReturnTuple<
13992                    '_,
13993                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13994                    .map(Into::into)
13995            }
13996        }
13997    };
13998    #[derive(serde::Serialize, serde::Deserialize)]
13999    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14000    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
14001```solidity
14002function grantRole(bytes32 role, address account) external;
14003```*/
14004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14005    #[derive(Clone)]
14006    pub struct grantRoleCall {
14007        #[allow(missing_docs)]
14008        pub role: alloy::sol_types::private::FixedBytes<32>,
14009        #[allow(missing_docs)]
14010        pub account: alloy::sol_types::private::Address,
14011    }
14012    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
14013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14014    #[derive(Clone)]
14015    pub struct grantRoleReturn {}
14016    #[allow(
14017        non_camel_case_types,
14018        non_snake_case,
14019        clippy::pub_underscore_fields,
14020        clippy::style
14021    )]
14022    const _: () = {
14023        use alloy::sol_types as alloy_sol_types;
14024        {
14025            #[doc(hidden)]
14026            type UnderlyingSolTuple<'a> = (
14027                alloy::sol_types::sol_data::FixedBytes<32>,
14028                alloy::sol_types::sol_data::Address,
14029            );
14030            #[doc(hidden)]
14031            type UnderlyingRustTuple<'a> = (
14032                alloy::sol_types::private::FixedBytes<32>,
14033                alloy::sol_types::private::Address,
14034            );
14035            #[cfg(test)]
14036            #[allow(dead_code, unreachable_patterns)]
14037            fn _type_assertion(
14038                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14039            ) {
14040                match _t {
14041                    alloy_sol_types::private::AssertTypeEq::<
14042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14043                    >(_) => {}
14044                }
14045            }
14046            #[automatically_derived]
14047            #[doc(hidden)]
14048            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
14049                fn from(value: grantRoleCall) -> Self {
14050                    (value.role, value.account)
14051                }
14052            }
14053            #[automatically_derived]
14054            #[doc(hidden)]
14055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
14056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14057                    Self {
14058                        role: tuple.0,
14059                        account: tuple.1,
14060                    }
14061                }
14062            }
14063        }
14064        {
14065            #[doc(hidden)]
14066            type UnderlyingSolTuple<'a> = ();
14067            #[doc(hidden)]
14068            type UnderlyingRustTuple<'a> = ();
14069            #[cfg(test)]
14070            #[allow(dead_code, unreachable_patterns)]
14071            fn _type_assertion(
14072                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14073            ) {
14074                match _t {
14075                    alloy_sol_types::private::AssertTypeEq::<
14076                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14077                    >(_) => {}
14078                }
14079            }
14080            #[automatically_derived]
14081            #[doc(hidden)]
14082            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
14083                fn from(value: grantRoleReturn) -> Self {
14084                    ()
14085                }
14086            }
14087            #[automatically_derived]
14088            #[doc(hidden)]
14089            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
14090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14091                    Self {}
14092                }
14093            }
14094        }
14095        impl grantRoleReturn {
14096            fn _tokenize(
14097                &self,
14098            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14099                ()
14100            }
14101        }
14102        #[automatically_derived]
14103        impl alloy_sol_types::SolCall for grantRoleCall {
14104            type Parameters<'a> = (
14105                alloy::sol_types::sol_data::FixedBytes<32>,
14106                alloy::sol_types::sol_data::Address,
14107            );
14108            type Token<'a> = <Self::Parameters<
14109                'a,
14110            > as alloy_sol_types::SolType>::Token<'a>;
14111            type Return = grantRoleReturn;
14112            type ReturnTuple<'a> = ();
14113            type ReturnToken<'a> = <Self::ReturnTuple<
14114                'a,
14115            > as alloy_sol_types::SolType>::Token<'a>;
14116            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
14117            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
14118            #[inline]
14119            fn new<'a>(
14120                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14121            ) -> Self {
14122                tuple.into()
14123            }
14124            #[inline]
14125            fn tokenize(&self) -> Self::Token<'_> {
14126                (
14127                    <alloy::sol_types::sol_data::FixedBytes<
14128                        32,
14129                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14130                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14131                        &self.account,
14132                    ),
14133                )
14134            }
14135            #[inline]
14136            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14137                grantRoleReturn::_tokenize(ret)
14138            }
14139            #[inline]
14140            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14141                <Self::ReturnTuple<
14142                    '_,
14143                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14144                    .map(Into::into)
14145            }
14146            #[inline]
14147            fn abi_decode_returns_validate(
14148                data: &[u8],
14149            ) -> alloy_sol_types::Result<Self::Return> {
14150                <Self::ReturnTuple<
14151                    '_,
14152                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14153                    .map(Into::into)
14154            }
14155        }
14156    };
14157    #[derive(serde::Serialize, serde::Deserialize)]
14158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14159    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
14160```solidity
14161function hasRole(bytes32 role, address account) external view returns (bool);
14162```*/
14163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14164    #[derive(Clone)]
14165    pub struct hasRoleCall {
14166        #[allow(missing_docs)]
14167        pub role: alloy::sol_types::private::FixedBytes<32>,
14168        #[allow(missing_docs)]
14169        pub account: alloy::sol_types::private::Address,
14170    }
14171    #[derive(serde::Serialize, serde::Deserialize)]
14172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14173    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
14174    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14175    #[derive(Clone)]
14176    pub struct hasRoleReturn {
14177        #[allow(missing_docs)]
14178        pub _0: bool,
14179    }
14180    #[allow(
14181        non_camel_case_types,
14182        non_snake_case,
14183        clippy::pub_underscore_fields,
14184        clippy::style
14185    )]
14186    const _: () = {
14187        use alloy::sol_types as alloy_sol_types;
14188        {
14189            #[doc(hidden)]
14190            type UnderlyingSolTuple<'a> = (
14191                alloy::sol_types::sol_data::FixedBytes<32>,
14192                alloy::sol_types::sol_data::Address,
14193            );
14194            #[doc(hidden)]
14195            type UnderlyingRustTuple<'a> = (
14196                alloy::sol_types::private::FixedBytes<32>,
14197                alloy::sol_types::private::Address,
14198            );
14199            #[cfg(test)]
14200            #[allow(dead_code, unreachable_patterns)]
14201            fn _type_assertion(
14202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14203            ) {
14204                match _t {
14205                    alloy_sol_types::private::AssertTypeEq::<
14206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14207                    >(_) => {}
14208                }
14209            }
14210            #[automatically_derived]
14211            #[doc(hidden)]
14212            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
14213                fn from(value: hasRoleCall) -> Self {
14214                    (value.role, value.account)
14215                }
14216            }
14217            #[automatically_derived]
14218            #[doc(hidden)]
14219            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
14220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14221                    Self {
14222                        role: tuple.0,
14223                        account: tuple.1,
14224                    }
14225                }
14226            }
14227        }
14228        {
14229            #[doc(hidden)]
14230            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14231            #[doc(hidden)]
14232            type UnderlyingRustTuple<'a> = (bool,);
14233            #[cfg(test)]
14234            #[allow(dead_code, unreachable_patterns)]
14235            fn _type_assertion(
14236                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14237            ) {
14238                match _t {
14239                    alloy_sol_types::private::AssertTypeEq::<
14240                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14241                    >(_) => {}
14242                }
14243            }
14244            #[automatically_derived]
14245            #[doc(hidden)]
14246            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
14247                fn from(value: hasRoleReturn) -> Self {
14248                    (value._0,)
14249                }
14250            }
14251            #[automatically_derived]
14252            #[doc(hidden)]
14253            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
14254                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14255                    Self { _0: tuple.0 }
14256                }
14257            }
14258        }
14259        #[automatically_derived]
14260        impl alloy_sol_types::SolCall for hasRoleCall {
14261            type Parameters<'a> = (
14262                alloy::sol_types::sol_data::FixedBytes<32>,
14263                alloy::sol_types::sol_data::Address,
14264            );
14265            type Token<'a> = <Self::Parameters<
14266                'a,
14267            > as alloy_sol_types::SolType>::Token<'a>;
14268            type Return = bool;
14269            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14270            type ReturnToken<'a> = <Self::ReturnTuple<
14271                'a,
14272            > as alloy_sol_types::SolType>::Token<'a>;
14273            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
14274            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
14275            #[inline]
14276            fn new<'a>(
14277                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14278            ) -> Self {
14279                tuple.into()
14280            }
14281            #[inline]
14282            fn tokenize(&self) -> Self::Token<'_> {
14283                (
14284                    <alloy::sol_types::sol_data::FixedBytes<
14285                        32,
14286                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14287                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14288                        &self.account,
14289                    ),
14290                )
14291            }
14292            #[inline]
14293            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14294                (
14295                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14296                        ret,
14297                    ),
14298                )
14299            }
14300            #[inline]
14301            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14302                <Self::ReturnTuple<
14303                    '_,
14304                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14305                    .map(|r| {
14306                        let r: hasRoleReturn = r.into();
14307                        r._0
14308                    })
14309            }
14310            #[inline]
14311            fn abi_decode_returns_validate(
14312                data: &[u8],
14313            ) -> alloy_sol_types::Result<Self::Return> {
14314                <Self::ReturnTuple<
14315                    '_,
14316                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14317                    .map(|r| {
14318                        let r: hasRoleReturn = r.into();
14319                        r._0
14320                    })
14321            }
14322        }
14323    };
14324    #[derive(serde::Serialize, serde::Deserialize)]
14325    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14326    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
14327```solidity
14328function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
14329```*/
14330    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14331    #[derive(Clone)]
14332    pub struct initializeCall {
14333        #[allow(missing_docs)]
14334        pub _tokenAddress: alloy::sol_types::private::Address,
14335        #[allow(missing_docs)]
14336        pub _lightClientAddress: alloy::sol_types::private::Address,
14337        #[allow(missing_docs)]
14338        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
14339        #[allow(missing_docs)]
14340        pub _timelock: alloy::sol_types::private::Address,
14341    }
14342    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
14343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14344    #[derive(Clone)]
14345    pub struct initializeReturn {}
14346    #[allow(
14347        non_camel_case_types,
14348        non_snake_case,
14349        clippy::pub_underscore_fields,
14350        clippy::style
14351    )]
14352    const _: () = {
14353        use alloy::sol_types as alloy_sol_types;
14354        {
14355            #[doc(hidden)]
14356            type UnderlyingSolTuple<'a> = (
14357                alloy::sol_types::sol_data::Address,
14358                alloy::sol_types::sol_data::Address,
14359                alloy::sol_types::sol_data::Uint<256>,
14360                alloy::sol_types::sol_data::Address,
14361            );
14362            #[doc(hidden)]
14363            type UnderlyingRustTuple<'a> = (
14364                alloy::sol_types::private::Address,
14365                alloy::sol_types::private::Address,
14366                alloy::sol_types::private::primitives::aliases::U256,
14367                alloy::sol_types::private::Address,
14368            );
14369            #[cfg(test)]
14370            #[allow(dead_code, unreachable_patterns)]
14371            fn _type_assertion(
14372                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14373            ) {
14374                match _t {
14375                    alloy_sol_types::private::AssertTypeEq::<
14376                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14377                    >(_) => {}
14378                }
14379            }
14380            #[automatically_derived]
14381            #[doc(hidden)]
14382            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
14383                fn from(value: initializeCall) -> Self {
14384                    (
14385                        value._tokenAddress,
14386                        value._lightClientAddress,
14387                        value._exitEscrowPeriod,
14388                        value._timelock,
14389                    )
14390                }
14391            }
14392            #[automatically_derived]
14393            #[doc(hidden)]
14394            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
14395                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14396                    Self {
14397                        _tokenAddress: tuple.0,
14398                        _lightClientAddress: tuple.1,
14399                        _exitEscrowPeriod: tuple.2,
14400                        _timelock: tuple.3,
14401                    }
14402                }
14403            }
14404        }
14405        {
14406            #[doc(hidden)]
14407            type UnderlyingSolTuple<'a> = ();
14408            #[doc(hidden)]
14409            type UnderlyingRustTuple<'a> = ();
14410            #[cfg(test)]
14411            #[allow(dead_code, unreachable_patterns)]
14412            fn _type_assertion(
14413                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14414            ) {
14415                match _t {
14416                    alloy_sol_types::private::AssertTypeEq::<
14417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14418                    >(_) => {}
14419                }
14420            }
14421            #[automatically_derived]
14422            #[doc(hidden)]
14423            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
14424                fn from(value: initializeReturn) -> Self {
14425                    ()
14426                }
14427            }
14428            #[automatically_derived]
14429            #[doc(hidden)]
14430            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
14431                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14432                    Self {}
14433                }
14434            }
14435        }
14436        impl initializeReturn {
14437            fn _tokenize(
14438                &self,
14439            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14440                ()
14441            }
14442        }
14443        #[automatically_derived]
14444        impl alloy_sol_types::SolCall for initializeCall {
14445            type Parameters<'a> = (
14446                alloy::sol_types::sol_data::Address,
14447                alloy::sol_types::sol_data::Address,
14448                alloy::sol_types::sol_data::Uint<256>,
14449                alloy::sol_types::sol_data::Address,
14450            );
14451            type Token<'a> = <Self::Parameters<
14452                'a,
14453            > as alloy_sol_types::SolType>::Token<'a>;
14454            type Return = initializeReturn;
14455            type ReturnTuple<'a> = ();
14456            type ReturnToken<'a> = <Self::ReturnTuple<
14457                'a,
14458            > as alloy_sol_types::SolType>::Token<'a>;
14459            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
14460            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
14461            #[inline]
14462            fn new<'a>(
14463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14464            ) -> Self {
14465                tuple.into()
14466            }
14467            #[inline]
14468            fn tokenize(&self) -> Self::Token<'_> {
14469                (
14470                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14471                        &self._tokenAddress,
14472                    ),
14473                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14474                        &self._lightClientAddress,
14475                    ),
14476                    <alloy::sol_types::sol_data::Uint<
14477                        256,
14478                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
14479                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14480                        &self._timelock,
14481                    ),
14482                )
14483            }
14484            #[inline]
14485            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14486                initializeReturn::_tokenize(ret)
14487            }
14488            #[inline]
14489            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14490                <Self::ReturnTuple<
14491                    '_,
14492                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14493                    .map(Into::into)
14494            }
14495            #[inline]
14496            fn abi_decode_returns_validate(
14497                data: &[u8],
14498            ) -> alloy_sol_types::Result<Self::Return> {
14499                <Self::ReturnTuple<
14500                    '_,
14501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14502                    .map(Into::into)
14503            }
14504        }
14505    };
14506    #[derive(serde::Serialize, serde::Deserialize)]
14507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14508    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
14509```solidity
14510function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
14511```*/
14512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14513    #[derive(Clone)]
14514    pub struct initializeV2Call {
14515        #[allow(missing_docs)]
14516        pub pauser: alloy::sol_types::private::Address,
14517        #[allow(missing_docs)]
14518        pub admin: alloy::sol_types::private::Address,
14519        #[allow(missing_docs)]
14520        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
14521        #[allow(missing_docs)]
14522        pub initialCommissions: alloy::sol_types::private::Vec<
14523            <InitialCommission as alloy::sol_types::SolType>::RustType,
14524        >,
14525    }
14526    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
14527    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14528    #[derive(Clone)]
14529    pub struct initializeV2Return {}
14530    #[allow(
14531        non_camel_case_types,
14532        non_snake_case,
14533        clippy::pub_underscore_fields,
14534        clippy::style
14535    )]
14536    const _: () = {
14537        use alloy::sol_types as alloy_sol_types;
14538        {
14539            #[doc(hidden)]
14540            type UnderlyingSolTuple<'a> = (
14541                alloy::sol_types::sol_data::Address,
14542                alloy::sol_types::sol_data::Address,
14543                alloy::sol_types::sol_data::Uint<256>,
14544                alloy::sol_types::sol_data::Array<InitialCommission>,
14545            );
14546            #[doc(hidden)]
14547            type UnderlyingRustTuple<'a> = (
14548                alloy::sol_types::private::Address,
14549                alloy::sol_types::private::Address,
14550                alloy::sol_types::private::primitives::aliases::U256,
14551                alloy::sol_types::private::Vec<
14552                    <InitialCommission as alloy::sol_types::SolType>::RustType,
14553                >,
14554            );
14555            #[cfg(test)]
14556            #[allow(dead_code, unreachable_patterns)]
14557            fn _type_assertion(
14558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14559            ) {
14560                match _t {
14561                    alloy_sol_types::private::AssertTypeEq::<
14562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14563                    >(_) => {}
14564                }
14565            }
14566            #[automatically_derived]
14567            #[doc(hidden)]
14568            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
14569                fn from(value: initializeV2Call) -> Self {
14570                    (
14571                        value.pauser,
14572                        value.admin,
14573                        value.initialActiveStake,
14574                        value.initialCommissions,
14575                    )
14576                }
14577            }
14578            #[automatically_derived]
14579            #[doc(hidden)]
14580            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
14581                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14582                    Self {
14583                        pauser: tuple.0,
14584                        admin: tuple.1,
14585                        initialActiveStake: tuple.2,
14586                        initialCommissions: tuple.3,
14587                    }
14588                }
14589            }
14590        }
14591        {
14592            #[doc(hidden)]
14593            type UnderlyingSolTuple<'a> = ();
14594            #[doc(hidden)]
14595            type UnderlyingRustTuple<'a> = ();
14596            #[cfg(test)]
14597            #[allow(dead_code, unreachable_patterns)]
14598            fn _type_assertion(
14599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14600            ) {
14601                match _t {
14602                    alloy_sol_types::private::AssertTypeEq::<
14603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14604                    >(_) => {}
14605                }
14606            }
14607            #[automatically_derived]
14608            #[doc(hidden)]
14609            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
14610                fn from(value: initializeV2Return) -> Self {
14611                    ()
14612                }
14613            }
14614            #[automatically_derived]
14615            #[doc(hidden)]
14616            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
14617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14618                    Self {}
14619                }
14620            }
14621        }
14622        impl initializeV2Return {
14623            fn _tokenize(
14624                &self,
14625            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
14626                ()
14627            }
14628        }
14629        #[automatically_derived]
14630        impl alloy_sol_types::SolCall for initializeV2Call {
14631            type Parameters<'a> = (
14632                alloy::sol_types::sol_data::Address,
14633                alloy::sol_types::sol_data::Address,
14634                alloy::sol_types::sol_data::Uint<256>,
14635                alloy::sol_types::sol_data::Array<InitialCommission>,
14636            );
14637            type Token<'a> = <Self::Parameters<
14638                'a,
14639            > as alloy_sol_types::SolType>::Token<'a>;
14640            type Return = initializeV2Return;
14641            type ReturnTuple<'a> = ();
14642            type ReturnToken<'a> = <Self::ReturnTuple<
14643                'a,
14644            > as alloy_sol_types::SolType>::Token<'a>;
14645            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
14646            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
14647            #[inline]
14648            fn new<'a>(
14649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14650            ) -> Self {
14651                tuple.into()
14652            }
14653            #[inline]
14654            fn tokenize(&self) -> Self::Token<'_> {
14655                (
14656                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14657                        &self.pauser,
14658                    ),
14659                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14660                        &self.admin,
14661                    ),
14662                    <alloy::sol_types::sol_data::Uint<
14663                        256,
14664                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
14665                    <alloy::sol_types::sol_data::Array<
14666                        InitialCommission,
14667                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
14668                )
14669            }
14670            #[inline]
14671            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14672                initializeV2Return::_tokenize(ret)
14673            }
14674            #[inline]
14675            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14676                <Self::ReturnTuple<
14677                    '_,
14678                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14679                    .map(Into::into)
14680            }
14681            #[inline]
14682            fn abi_decode_returns_validate(
14683                data: &[u8],
14684            ) -> alloy_sol_types::Result<Self::Return> {
14685                <Self::ReturnTuple<
14686                    '_,
14687                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14688                    .map(Into::into)
14689            }
14690        }
14691    };
14692    #[derive(serde::Serialize, serde::Deserialize)]
14693    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14694    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
14695```solidity
14696function initializedAtBlock() external view returns (uint256);
14697```*/
14698    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14699    #[derive(Clone)]
14700    pub struct initializedAtBlockCall;
14701    #[derive(serde::Serialize, serde::Deserialize)]
14702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14703    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
14704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14705    #[derive(Clone)]
14706    pub struct initializedAtBlockReturn {
14707        #[allow(missing_docs)]
14708        pub _0: alloy::sol_types::private::primitives::aliases::U256,
14709    }
14710    #[allow(
14711        non_camel_case_types,
14712        non_snake_case,
14713        clippy::pub_underscore_fields,
14714        clippy::style
14715    )]
14716    const _: () = {
14717        use alloy::sol_types as alloy_sol_types;
14718        {
14719            #[doc(hidden)]
14720            type UnderlyingSolTuple<'a> = ();
14721            #[doc(hidden)]
14722            type UnderlyingRustTuple<'a> = ();
14723            #[cfg(test)]
14724            #[allow(dead_code, unreachable_patterns)]
14725            fn _type_assertion(
14726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14727            ) {
14728                match _t {
14729                    alloy_sol_types::private::AssertTypeEq::<
14730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14731                    >(_) => {}
14732                }
14733            }
14734            #[automatically_derived]
14735            #[doc(hidden)]
14736            impl ::core::convert::From<initializedAtBlockCall>
14737            for UnderlyingRustTuple<'_> {
14738                fn from(value: initializedAtBlockCall) -> Self {
14739                    ()
14740                }
14741            }
14742            #[automatically_derived]
14743            #[doc(hidden)]
14744            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14745            for initializedAtBlockCall {
14746                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14747                    Self
14748                }
14749            }
14750        }
14751        {
14752            #[doc(hidden)]
14753            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14754            #[doc(hidden)]
14755            type UnderlyingRustTuple<'a> = (
14756                alloy::sol_types::private::primitives::aliases::U256,
14757            );
14758            #[cfg(test)]
14759            #[allow(dead_code, unreachable_patterns)]
14760            fn _type_assertion(
14761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14762            ) {
14763                match _t {
14764                    alloy_sol_types::private::AssertTypeEq::<
14765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14766                    >(_) => {}
14767                }
14768            }
14769            #[automatically_derived]
14770            #[doc(hidden)]
14771            impl ::core::convert::From<initializedAtBlockReturn>
14772            for UnderlyingRustTuple<'_> {
14773                fn from(value: initializedAtBlockReturn) -> Self {
14774                    (value._0,)
14775                }
14776            }
14777            #[automatically_derived]
14778            #[doc(hidden)]
14779            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14780            for initializedAtBlockReturn {
14781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14782                    Self { _0: tuple.0 }
14783                }
14784            }
14785        }
14786        #[automatically_derived]
14787        impl alloy_sol_types::SolCall for initializedAtBlockCall {
14788            type Parameters<'a> = ();
14789            type Token<'a> = <Self::Parameters<
14790                'a,
14791            > as alloy_sol_types::SolType>::Token<'a>;
14792            type Return = alloy::sol_types::private::primitives::aliases::U256;
14793            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14794            type ReturnToken<'a> = <Self::ReturnTuple<
14795                'a,
14796            > as alloy_sol_types::SolType>::Token<'a>;
14797            const SIGNATURE: &'static str = "initializedAtBlock()";
14798            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
14799            #[inline]
14800            fn new<'a>(
14801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14802            ) -> Self {
14803                tuple.into()
14804            }
14805            #[inline]
14806            fn tokenize(&self) -> Self::Token<'_> {
14807                ()
14808            }
14809            #[inline]
14810            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14811                (
14812                    <alloy::sol_types::sol_data::Uint<
14813                        256,
14814                    > as alloy_sol_types::SolType>::tokenize(ret),
14815                )
14816            }
14817            #[inline]
14818            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14819                <Self::ReturnTuple<
14820                    '_,
14821                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14822                    .map(|r| {
14823                        let r: initializedAtBlockReturn = r.into();
14824                        r._0
14825                    })
14826            }
14827            #[inline]
14828            fn abi_decode_returns_validate(
14829                data: &[u8],
14830            ) -> alloy_sol_types::Result<Self::Return> {
14831                <Self::ReturnTuple<
14832                    '_,
14833                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14834                    .map(|r| {
14835                        let r: initializedAtBlockReturn = r.into();
14836                        r._0
14837                    })
14838            }
14839        }
14840    };
14841    #[derive(serde::Serialize, serde::Deserialize)]
14842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14843    /**Function with signature `lightClient()` and selector `0xb5700e68`.
14844```solidity
14845function lightClient() external view returns (address);
14846```*/
14847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14848    #[derive(Clone)]
14849    pub struct lightClientCall;
14850    #[derive(serde::Serialize, serde::Deserialize)]
14851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14852    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
14853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14854    #[derive(Clone)]
14855    pub struct lightClientReturn {
14856        #[allow(missing_docs)]
14857        pub _0: alloy::sol_types::private::Address,
14858    }
14859    #[allow(
14860        non_camel_case_types,
14861        non_snake_case,
14862        clippy::pub_underscore_fields,
14863        clippy::style
14864    )]
14865    const _: () = {
14866        use alloy::sol_types as alloy_sol_types;
14867        {
14868            #[doc(hidden)]
14869            type UnderlyingSolTuple<'a> = ();
14870            #[doc(hidden)]
14871            type UnderlyingRustTuple<'a> = ();
14872            #[cfg(test)]
14873            #[allow(dead_code, unreachable_patterns)]
14874            fn _type_assertion(
14875                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14876            ) {
14877                match _t {
14878                    alloy_sol_types::private::AssertTypeEq::<
14879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14880                    >(_) => {}
14881                }
14882            }
14883            #[automatically_derived]
14884            #[doc(hidden)]
14885            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
14886                fn from(value: lightClientCall) -> Self {
14887                    ()
14888                }
14889            }
14890            #[automatically_derived]
14891            #[doc(hidden)]
14892            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
14893                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14894                    Self
14895                }
14896            }
14897        }
14898        {
14899            #[doc(hidden)]
14900            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14901            #[doc(hidden)]
14902            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14903            #[cfg(test)]
14904            #[allow(dead_code, unreachable_patterns)]
14905            fn _type_assertion(
14906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14907            ) {
14908                match _t {
14909                    alloy_sol_types::private::AssertTypeEq::<
14910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14911                    >(_) => {}
14912                }
14913            }
14914            #[automatically_derived]
14915            #[doc(hidden)]
14916            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
14917                fn from(value: lightClientReturn) -> Self {
14918                    (value._0,)
14919                }
14920            }
14921            #[automatically_derived]
14922            #[doc(hidden)]
14923            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
14924                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14925                    Self { _0: tuple.0 }
14926                }
14927            }
14928        }
14929        #[automatically_derived]
14930        impl alloy_sol_types::SolCall for lightClientCall {
14931            type Parameters<'a> = ();
14932            type Token<'a> = <Self::Parameters<
14933                'a,
14934            > as alloy_sol_types::SolType>::Token<'a>;
14935            type Return = alloy::sol_types::private::Address;
14936            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
14937            type ReturnToken<'a> = <Self::ReturnTuple<
14938                'a,
14939            > as alloy_sol_types::SolType>::Token<'a>;
14940            const SIGNATURE: &'static str = "lightClient()";
14941            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
14942            #[inline]
14943            fn new<'a>(
14944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14945            ) -> Self {
14946                tuple.into()
14947            }
14948            #[inline]
14949            fn tokenize(&self) -> Self::Token<'_> {
14950                ()
14951            }
14952            #[inline]
14953            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14954                (
14955                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14956                        ret,
14957                    ),
14958                )
14959            }
14960            #[inline]
14961            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14962                <Self::ReturnTuple<
14963                    '_,
14964                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14965                    .map(|r| {
14966                        let r: lightClientReturn = r.into();
14967                        r._0
14968                    })
14969            }
14970            #[inline]
14971            fn abi_decode_returns_validate(
14972                data: &[u8],
14973            ) -> alloy_sol_types::Result<Self::Return> {
14974                <Self::ReturnTuple<
14975                    '_,
14976                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14977                    .map(|r| {
14978                        let r: lightClientReturn = r.into();
14979                        r._0
14980                    })
14981            }
14982        }
14983    };
14984    #[derive(serde::Serialize, serde::Deserialize)]
14985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14986    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
14987```solidity
14988function maxCommissionIncrease() external view returns (uint16);
14989```*/
14990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14991    #[derive(Clone)]
14992    pub struct maxCommissionIncreaseCall;
14993    #[derive(serde::Serialize, serde::Deserialize)]
14994    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14995    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
14996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14997    #[derive(Clone)]
14998    pub struct maxCommissionIncreaseReturn {
14999        #[allow(missing_docs)]
15000        pub _0: u16,
15001    }
15002    #[allow(
15003        non_camel_case_types,
15004        non_snake_case,
15005        clippy::pub_underscore_fields,
15006        clippy::style
15007    )]
15008    const _: () = {
15009        use alloy::sol_types as alloy_sol_types;
15010        {
15011            #[doc(hidden)]
15012            type UnderlyingSolTuple<'a> = ();
15013            #[doc(hidden)]
15014            type UnderlyingRustTuple<'a> = ();
15015            #[cfg(test)]
15016            #[allow(dead_code, unreachable_patterns)]
15017            fn _type_assertion(
15018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15019            ) {
15020                match _t {
15021                    alloy_sol_types::private::AssertTypeEq::<
15022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15023                    >(_) => {}
15024                }
15025            }
15026            #[automatically_derived]
15027            #[doc(hidden)]
15028            impl ::core::convert::From<maxCommissionIncreaseCall>
15029            for UnderlyingRustTuple<'_> {
15030                fn from(value: maxCommissionIncreaseCall) -> Self {
15031                    ()
15032                }
15033            }
15034            #[automatically_derived]
15035            #[doc(hidden)]
15036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15037            for maxCommissionIncreaseCall {
15038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15039                    Self
15040                }
15041            }
15042        }
15043        {
15044            #[doc(hidden)]
15045            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15046            #[doc(hidden)]
15047            type UnderlyingRustTuple<'a> = (u16,);
15048            #[cfg(test)]
15049            #[allow(dead_code, unreachable_patterns)]
15050            fn _type_assertion(
15051                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15052            ) {
15053                match _t {
15054                    alloy_sol_types::private::AssertTypeEq::<
15055                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15056                    >(_) => {}
15057                }
15058            }
15059            #[automatically_derived]
15060            #[doc(hidden)]
15061            impl ::core::convert::From<maxCommissionIncreaseReturn>
15062            for UnderlyingRustTuple<'_> {
15063                fn from(value: maxCommissionIncreaseReturn) -> Self {
15064                    (value._0,)
15065                }
15066            }
15067            #[automatically_derived]
15068            #[doc(hidden)]
15069            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15070            for maxCommissionIncreaseReturn {
15071                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15072                    Self { _0: tuple.0 }
15073                }
15074            }
15075        }
15076        #[automatically_derived]
15077        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
15078            type Parameters<'a> = ();
15079            type Token<'a> = <Self::Parameters<
15080                'a,
15081            > as alloy_sol_types::SolType>::Token<'a>;
15082            type Return = u16;
15083            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15084            type ReturnToken<'a> = <Self::ReturnTuple<
15085                'a,
15086            > as alloy_sol_types::SolType>::Token<'a>;
15087            const SIGNATURE: &'static str = "maxCommissionIncrease()";
15088            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
15089            #[inline]
15090            fn new<'a>(
15091                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15092            ) -> Self {
15093                tuple.into()
15094            }
15095            #[inline]
15096            fn tokenize(&self) -> Self::Token<'_> {
15097                ()
15098            }
15099            #[inline]
15100            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15101                (
15102                    <alloy::sol_types::sol_data::Uint<
15103                        16,
15104                    > as alloy_sol_types::SolType>::tokenize(ret),
15105                )
15106            }
15107            #[inline]
15108            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15109                <Self::ReturnTuple<
15110                    '_,
15111                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15112                    .map(|r| {
15113                        let r: maxCommissionIncreaseReturn = r.into();
15114                        r._0
15115                    })
15116            }
15117            #[inline]
15118            fn abi_decode_returns_validate(
15119                data: &[u8],
15120            ) -> alloy_sol_types::Result<Self::Return> {
15121                <Self::ReturnTuple<
15122                    '_,
15123                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15124                    .map(|r| {
15125                        let r: maxCommissionIncreaseReturn = r.into();
15126                        r._0
15127                    })
15128            }
15129        }
15130    };
15131    #[derive(serde::Serialize, serde::Deserialize)]
15132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15133    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
15134```solidity
15135function minCommissionIncreaseInterval() external view returns (uint256);
15136```*/
15137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15138    #[derive(Clone)]
15139    pub struct minCommissionIncreaseIntervalCall;
15140    #[derive(serde::Serialize, serde::Deserialize)]
15141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15142    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
15143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15144    #[derive(Clone)]
15145    pub struct minCommissionIncreaseIntervalReturn {
15146        #[allow(missing_docs)]
15147        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15148    }
15149    #[allow(
15150        non_camel_case_types,
15151        non_snake_case,
15152        clippy::pub_underscore_fields,
15153        clippy::style
15154    )]
15155    const _: () = {
15156        use alloy::sol_types as alloy_sol_types;
15157        {
15158            #[doc(hidden)]
15159            type UnderlyingSolTuple<'a> = ();
15160            #[doc(hidden)]
15161            type UnderlyingRustTuple<'a> = ();
15162            #[cfg(test)]
15163            #[allow(dead_code, unreachable_patterns)]
15164            fn _type_assertion(
15165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15166            ) {
15167                match _t {
15168                    alloy_sol_types::private::AssertTypeEq::<
15169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15170                    >(_) => {}
15171                }
15172            }
15173            #[automatically_derived]
15174            #[doc(hidden)]
15175            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
15176            for UnderlyingRustTuple<'_> {
15177                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
15178                    ()
15179                }
15180            }
15181            #[automatically_derived]
15182            #[doc(hidden)]
15183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15184            for minCommissionIncreaseIntervalCall {
15185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15186                    Self
15187                }
15188            }
15189        }
15190        {
15191            #[doc(hidden)]
15192            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15193            #[doc(hidden)]
15194            type UnderlyingRustTuple<'a> = (
15195                alloy::sol_types::private::primitives::aliases::U256,
15196            );
15197            #[cfg(test)]
15198            #[allow(dead_code, unreachable_patterns)]
15199            fn _type_assertion(
15200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15201            ) {
15202                match _t {
15203                    alloy_sol_types::private::AssertTypeEq::<
15204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15205                    >(_) => {}
15206                }
15207            }
15208            #[automatically_derived]
15209            #[doc(hidden)]
15210            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
15211            for UnderlyingRustTuple<'_> {
15212                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
15213                    (value._0,)
15214                }
15215            }
15216            #[automatically_derived]
15217            #[doc(hidden)]
15218            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15219            for minCommissionIncreaseIntervalReturn {
15220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15221                    Self { _0: tuple.0 }
15222                }
15223            }
15224        }
15225        #[automatically_derived]
15226        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
15227            type Parameters<'a> = ();
15228            type Token<'a> = <Self::Parameters<
15229                'a,
15230            > as alloy_sol_types::SolType>::Token<'a>;
15231            type Return = alloy::sol_types::private::primitives::aliases::U256;
15232            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15233            type ReturnToken<'a> = <Self::ReturnTuple<
15234                'a,
15235            > as alloy_sol_types::SolType>::Token<'a>;
15236            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
15237            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
15238            #[inline]
15239            fn new<'a>(
15240                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15241            ) -> Self {
15242                tuple.into()
15243            }
15244            #[inline]
15245            fn tokenize(&self) -> Self::Token<'_> {
15246                ()
15247            }
15248            #[inline]
15249            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15250                (
15251                    <alloy::sol_types::sol_data::Uint<
15252                        256,
15253                    > as alloy_sol_types::SolType>::tokenize(ret),
15254                )
15255            }
15256            #[inline]
15257            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15258                <Self::ReturnTuple<
15259                    '_,
15260                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15261                    .map(|r| {
15262                        let r: minCommissionIncreaseIntervalReturn = r.into();
15263                        r._0
15264                    })
15265            }
15266            #[inline]
15267            fn abi_decode_returns_validate(
15268                data: &[u8],
15269            ) -> alloy_sol_types::Result<Self::Return> {
15270                <Self::ReturnTuple<
15271                    '_,
15272                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15273                    .map(|r| {
15274                        let r: minCommissionIncreaseIntervalReturn = r.into();
15275                        r._0
15276                    })
15277            }
15278        }
15279    };
15280    #[derive(serde::Serialize, serde::Deserialize)]
15281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15282    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
15283```solidity
15284function minDelegateAmount() external view returns (uint256);
15285```*/
15286    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15287    #[derive(Clone)]
15288    pub struct minDelegateAmountCall;
15289    #[derive(serde::Serialize, serde::Deserialize)]
15290    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15291    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
15292    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15293    #[derive(Clone)]
15294    pub struct minDelegateAmountReturn {
15295        #[allow(missing_docs)]
15296        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15297    }
15298    #[allow(
15299        non_camel_case_types,
15300        non_snake_case,
15301        clippy::pub_underscore_fields,
15302        clippy::style
15303    )]
15304    const _: () = {
15305        use alloy::sol_types as alloy_sol_types;
15306        {
15307            #[doc(hidden)]
15308            type UnderlyingSolTuple<'a> = ();
15309            #[doc(hidden)]
15310            type UnderlyingRustTuple<'a> = ();
15311            #[cfg(test)]
15312            #[allow(dead_code, unreachable_patterns)]
15313            fn _type_assertion(
15314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15315            ) {
15316                match _t {
15317                    alloy_sol_types::private::AssertTypeEq::<
15318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15319                    >(_) => {}
15320                }
15321            }
15322            #[automatically_derived]
15323            #[doc(hidden)]
15324            impl ::core::convert::From<minDelegateAmountCall>
15325            for UnderlyingRustTuple<'_> {
15326                fn from(value: minDelegateAmountCall) -> Self {
15327                    ()
15328                }
15329            }
15330            #[automatically_derived]
15331            #[doc(hidden)]
15332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15333            for minDelegateAmountCall {
15334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15335                    Self
15336                }
15337            }
15338        }
15339        {
15340            #[doc(hidden)]
15341            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15342            #[doc(hidden)]
15343            type UnderlyingRustTuple<'a> = (
15344                alloy::sol_types::private::primitives::aliases::U256,
15345            );
15346            #[cfg(test)]
15347            #[allow(dead_code, unreachable_patterns)]
15348            fn _type_assertion(
15349                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15350            ) {
15351                match _t {
15352                    alloy_sol_types::private::AssertTypeEq::<
15353                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15354                    >(_) => {}
15355                }
15356            }
15357            #[automatically_derived]
15358            #[doc(hidden)]
15359            impl ::core::convert::From<minDelegateAmountReturn>
15360            for UnderlyingRustTuple<'_> {
15361                fn from(value: minDelegateAmountReturn) -> Self {
15362                    (value._0,)
15363                }
15364            }
15365            #[automatically_derived]
15366            #[doc(hidden)]
15367            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15368            for minDelegateAmountReturn {
15369                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15370                    Self { _0: tuple.0 }
15371                }
15372            }
15373        }
15374        #[automatically_derived]
15375        impl alloy_sol_types::SolCall for minDelegateAmountCall {
15376            type Parameters<'a> = ();
15377            type Token<'a> = <Self::Parameters<
15378                'a,
15379            > as alloy_sol_types::SolType>::Token<'a>;
15380            type Return = alloy::sol_types::private::primitives::aliases::U256;
15381            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15382            type ReturnToken<'a> = <Self::ReturnTuple<
15383                'a,
15384            > as alloy_sol_types::SolType>::Token<'a>;
15385            const SIGNATURE: &'static str = "minDelegateAmount()";
15386            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
15387            #[inline]
15388            fn new<'a>(
15389                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15390            ) -> Self {
15391                tuple.into()
15392            }
15393            #[inline]
15394            fn tokenize(&self) -> Self::Token<'_> {
15395                ()
15396            }
15397            #[inline]
15398            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15399                (
15400                    <alloy::sol_types::sol_data::Uint<
15401                        256,
15402                    > as alloy_sol_types::SolType>::tokenize(ret),
15403                )
15404            }
15405            #[inline]
15406            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15407                <Self::ReturnTuple<
15408                    '_,
15409                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15410                    .map(|r| {
15411                        let r: minDelegateAmountReturn = r.into();
15412                        r._0
15413                    })
15414            }
15415            #[inline]
15416            fn abi_decode_returns_validate(
15417                data: &[u8],
15418            ) -> alloy_sol_types::Result<Self::Return> {
15419                <Self::ReturnTuple<
15420                    '_,
15421                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15422                    .map(|r| {
15423                        let r: minDelegateAmountReturn = r.into();
15424                        r._0
15425                    })
15426            }
15427        }
15428    };
15429    #[derive(serde::Serialize, serde::Deserialize)]
15430    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15431    /**Function with signature `owner()` and selector `0x8da5cb5b`.
15432```solidity
15433function owner() external view returns (address);
15434```*/
15435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15436    #[derive(Clone)]
15437    pub struct ownerCall;
15438    #[derive(serde::Serialize, serde::Deserialize)]
15439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15440    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
15441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15442    #[derive(Clone)]
15443    pub struct ownerReturn {
15444        #[allow(missing_docs)]
15445        pub _0: alloy::sol_types::private::Address,
15446    }
15447    #[allow(
15448        non_camel_case_types,
15449        non_snake_case,
15450        clippy::pub_underscore_fields,
15451        clippy::style
15452    )]
15453    const _: () = {
15454        use alloy::sol_types as alloy_sol_types;
15455        {
15456            #[doc(hidden)]
15457            type UnderlyingSolTuple<'a> = ();
15458            #[doc(hidden)]
15459            type UnderlyingRustTuple<'a> = ();
15460            #[cfg(test)]
15461            #[allow(dead_code, unreachable_patterns)]
15462            fn _type_assertion(
15463                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15464            ) {
15465                match _t {
15466                    alloy_sol_types::private::AssertTypeEq::<
15467                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15468                    >(_) => {}
15469                }
15470            }
15471            #[automatically_derived]
15472            #[doc(hidden)]
15473            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
15474                fn from(value: ownerCall) -> Self {
15475                    ()
15476                }
15477            }
15478            #[automatically_derived]
15479            #[doc(hidden)]
15480            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
15481                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15482                    Self
15483                }
15484            }
15485        }
15486        {
15487            #[doc(hidden)]
15488            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15489            #[doc(hidden)]
15490            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15491            #[cfg(test)]
15492            #[allow(dead_code, unreachable_patterns)]
15493            fn _type_assertion(
15494                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15495            ) {
15496                match _t {
15497                    alloy_sol_types::private::AssertTypeEq::<
15498                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15499                    >(_) => {}
15500                }
15501            }
15502            #[automatically_derived]
15503            #[doc(hidden)]
15504            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
15505                fn from(value: ownerReturn) -> Self {
15506                    (value._0,)
15507                }
15508            }
15509            #[automatically_derived]
15510            #[doc(hidden)]
15511            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
15512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15513                    Self { _0: tuple.0 }
15514                }
15515            }
15516        }
15517        #[automatically_derived]
15518        impl alloy_sol_types::SolCall for ownerCall {
15519            type Parameters<'a> = ();
15520            type Token<'a> = <Self::Parameters<
15521                'a,
15522            > as alloy_sol_types::SolType>::Token<'a>;
15523            type Return = alloy::sol_types::private::Address;
15524            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15525            type ReturnToken<'a> = <Self::ReturnTuple<
15526                'a,
15527            > as alloy_sol_types::SolType>::Token<'a>;
15528            const SIGNATURE: &'static str = "owner()";
15529            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
15530            #[inline]
15531            fn new<'a>(
15532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15533            ) -> Self {
15534                tuple.into()
15535            }
15536            #[inline]
15537            fn tokenize(&self) -> Self::Token<'_> {
15538                ()
15539            }
15540            #[inline]
15541            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15542                (
15543                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15544                        ret,
15545                    ),
15546                )
15547            }
15548            #[inline]
15549            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15550                <Self::ReturnTuple<
15551                    '_,
15552                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15553                    .map(|r| {
15554                        let r: ownerReturn = r.into();
15555                        r._0
15556                    })
15557            }
15558            #[inline]
15559            fn abi_decode_returns_validate(
15560                data: &[u8],
15561            ) -> alloy_sol_types::Result<Self::Return> {
15562                <Self::ReturnTuple<
15563                    '_,
15564                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15565                    .map(|r| {
15566                        let r: ownerReturn = r.into();
15567                        r._0
15568                    })
15569            }
15570        }
15571    };
15572    #[derive(serde::Serialize, serde::Deserialize)]
15573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15574    /**Function with signature `pause()` and selector `0x8456cb59`.
15575```solidity
15576function pause() external;
15577```*/
15578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15579    #[derive(Clone)]
15580    pub struct pauseCall;
15581    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
15582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15583    #[derive(Clone)]
15584    pub struct pauseReturn {}
15585    #[allow(
15586        non_camel_case_types,
15587        non_snake_case,
15588        clippy::pub_underscore_fields,
15589        clippy::style
15590    )]
15591    const _: () = {
15592        use alloy::sol_types as alloy_sol_types;
15593        {
15594            #[doc(hidden)]
15595            type UnderlyingSolTuple<'a> = ();
15596            #[doc(hidden)]
15597            type UnderlyingRustTuple<'a> = ();
15598            #[cfg(test)]
15599            #[allow(dead_code, unreachable_patterns)]
15600            fn _type_assertion(
15601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15602            ) {
15603                match _t {
15604                    alloy_sol_types::private::AssertTypeEq::<
15605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15606                    >(_) => {}
15607                }
15608            }
15609            #[automatically_derived]
15610            #[doc(hidden)]
15611            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
15612                fn from(value: pauseCall) -> Self {
15613                    ()
15614                }
15615            }
15616            #[automatically_derived]
15617            #[doc(hidden)]
15618            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
15619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15620                    Self
15621                }
15622            }
15623        }
15624        {
15625            #[doc(hidden)]
15626            type UnderlyingSolTuple<'a> = ();
15627            #[doc(hidden)]
15628            type UnderlyingRustTuple<'a> = ();
15629            #[cfg(test)]
15630            #[allow(dead_code, unreachable_patterns)]
15631            fn _type_assertion(
15632                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15633            ) {
15634                match _t {
15635                    alloy_sol_types::private::AssertTypeEq::<
15636                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15637                    >(_) => {}
15638                }
15639            }
15640            #[automatically_derived]
15641            #[doc(hidden)]
15642            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
15643                fn from(value: pauseReturn) -> Self {
15644                    ()
15645                }
15646            }
15647            #[automatically_derived]
15648            #[doc(hidden)]
15649            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
15650                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15651                    Self {}
15652                }
15653            }
15654        }
15655        impl pauseReturn {
15656            fn _tokenize(
15657                &self,
15658            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15659                ()
15660            }
15661        }
15662        #[automatically_derived]
15663        impl alloy_sol_types::SolCall for pauseCall {
15664            type Parameters<'a> = ();
15665            type Token<'a> = <Self::Parameters<
15666                'a,
15667            > as alloy_sol_types::SolType>::Token<'a>;
15668            type Return = pauseReturn;
15669            type ReturnTuple<'a> = ();
15670            type ReturnToken<'a> = <Self::ReturnTuple<
15671                'a,
15672            > as alloy_sol_types::SolType>::Token<'a>;
15673            const SIGNATURE: &'static str = "pause()";
15674            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
15675            #[inline]
15676            fn new<'a>(
15677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15678            ) -> Self {
15679                tuple.into()
15680            }
15681            #[inline]
15682            fn tokenize(&self) -> Self::Token<'_> {
15683                ()
15684            }
15685            #[inline]
15686            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15687                pauseReturn::_tokenize(ret)
15688            }
15689            #[inline]
15690            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15691                <Self::ReturnTuple<
15692                    '_,
15693                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15694                    .map(Into::into)
15695            }
15696            #[inline]
15697            fn abi_decode_returns_validate(
15698                data: &[u8],
15699            ) -> alloy_sol_types::Result<Self::Return> {
15700                <Self::ReturnTuple<
15701                    '_,
15702                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15703                    .map(Into::into)
15704            }
15705        }
15706    };
15707    #[derive(serde::Serialize, serde::Deserialize)]
15708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15709    /**Function with signature `paused()` and selector `0x5c975abb`.
15710```solidity
15711function paused() external view returns (bool);
15712```*/
15713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15714    #[derive(Clone)]
15715    pub struct pausedCall;
15716    #[derive(serde::Serialize, serde::Deserialize)]
15717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15718    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
15719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15720    #[derive(Clone)]
15721    pub struct pausedReturn {
15722        #[allow(missing_docs)]
15723        pub _0: bool,
15724    }
15725    #[allow(
15726        non_camel_case_types,
15727        non_snake_case,
15728        clippy::pub_underscore_fields,
15729        clippy::style
15730    )]
15731    const _: () = {
15732        use alloy::sol_types as alloy_sol_types;
15733        {
15734            #[doc(hidden)]
15735            type UnderlyingSolTuple<'a> = ();
15736            #[doc(hidden)]
15737            type UnderlyingRustTuple<'a> = ();
15738            #[cfg(test)]
15739            #[allow(dead_code, unreachable_patterns)]
15740            fn _type_assertion(
15741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15742            ) {
15743                match _t {
15744                    alloy_sol_types::private::AssertTypeEq::<
15745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15746                    >(_) => {}
15747                }
15748            }
15749            #[automatically_derived]
15750            #[doc(hidden)]
15751            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
15752                fn from(value: pausedCall) -> Self {
15753                    ()
15754                }
15755            }
15756            #[automatically_derived]
15757            #[doc(hidden)]
15758            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
15759                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15760                    Self
15761                }
15762            }
15763        }
15764        {
15765            #[doc(hidden)]
15766            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15767            #[doc(hidden)]
15768            type UnderlyingRustTuple<'a> = (bool,);
15769            #[cfg(test)]
15770            #[allow(dead_code, unreachable_patterns)]
15771            fn _type_assertion(
15772                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15773            ) {
15774                match _t {
15775                    alloy_sol_types::private::AssertTypeEq::<
15776                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15777                    >(_) => {}
15778                }
15779            }
15780            #[automatically_derived]
15781            #[doc(hidden)]
15782            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
15783                fn from(value: pausedReturn) -> Self {
15784                    (value._0,)
15785                }
15786            }
15787            #[automatically_derived]
15788            #[doc(hidden)]
15789            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
15790                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15791                    Self { _0: tuple.0 }
15792                }
15793            }
15794        }
15795        #[automatically_derived]
15796        impl alloy_sol_types::SolCall for pausedCall {
15797            type Parameters<'a> = ();
15798            type Token<'a> = <Self::Parameters<
15799                'a,
15800            > as alloy_sol_types::SolType>::Token<'a>;
15801            type Return = bool;
15802            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
15803            type ReturnToken<'a> = <Self::ReturnTuple<
15804                'a,
15805            > as alloy_sol_types::SolType>::Token<'a>;
15806            const SIGNATURE: &'static str = "paused()";
15807            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
15808            #[inline]
15809            fn new<'a>(
15810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15811            ) -> Self {
15812                tuple.into()
15813            }
15814            #[inline]
15815            fn tokenize(&self) -> Self::Token<'_> {
15816                ()
15817            }
15818            #[inline]
15819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15820                (
15821                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
15822                        ret,
15823                    ),
15824                )
15825            }
15826            #[inline]
15827            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15828                <Self::ReturnTuple<
15829                    '_,
15830                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15831                    .map(|r| {
15832                        let r: pausedReturn = r.into();
15833                        r._0
15834                    })
15835            }
15836            #[inline]
15837            fn abi_decode_returns_validate(
15838                data: &[u8],
15839            ) -> alloy_sol_types::Result<Self::Return> {
15840                <Self::ReturnTuple<
15841                    '_,
15842                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15843                    .map(|r| {
15844                        let r: pausedReturn = r.into();
15845                        r._0
15846                    })
15847            }
15848        }
15849    };
15850    #[derive(serde::Serialize, serde::Deserialize)]
15851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15852    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
15853```solidity
15854function proxiableUUID() external view returns (bytes32);
15855```*/
15856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15857    #[derive(Clone)]
15858    pub struct proxiableUUIDCall;
15859    #[derive(serde::Serialize, serde::Deserialize)]
15860    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15861    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
15862    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15863    #[derive(Clone)]
15864    pub struct proxiableUUIDReturn {
15865        #[allow(missing_docs)]
15866        pub _0: alloy::sol_types::private::FixedBytes<32>,
15867    }
15868    #[allow(
15869        non_camel_case_types,
15870        non_snake_case,
15871        clippy::pub_underscore_fields,
15872        clippy::style
15873    )]
15874    const _: () = {
15875        use alloy::sol_types as alloy_sol_types;
15876        {
15877            #[doc(hidden)]
15878            type UnderlyingSolTuple<'a> = ();
15879            #[doc(hidden)]
15880            type UnderlyingRustTuple<'a> = ();
15881            #[cfg(test)]
15882            #[allow(dead_code, unreachable_patterns)]
15883            fn _type_assertion(
15884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15885            ) {
15886                match _t {
15887                    alloy_sol_types::private::AssertTypeEq::<
15888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15889                    >(_) => {}
15890                }
15891            }
15892            #[automatically_derived]
15893            #[doc(hidden)]
15894            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
15895                fn from(value: proxiableUUIDCall) -> Self {
15896                    ()
15897                }
15898            }
15899            #[automatically_derived]
15900            #[doc(hidden)]
15901            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
15902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15903                    Self
15904                }
15905            }
15906        }
15907        {
15908            #[doc(hidden)]
15909            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15910            #[doc(hidden)]
15911            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
15912            #[cfg(test)]
15913            #[allow(dead_code, unreachable_patterns)]
15914            fn _type_assertion(
15915                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15916            ) {
15917                match _t {
15918                    alloy_sol_types::private::AssertTypeEq::<
15919                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15920                    >(_) => {}
15921                }
15922            }
15923            #[automatically_derived]
15924            #[doc(hidden)]
15925            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
15926                fn from(value: proxiableUUIDReturn) -> Self {
15927                    (value._0,)
15928                }
15929            }
15930            #[automatically_derived]
15931            #[doc(hidden)]
15932            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
15933                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15934                    Self { _0: tuple.0 }
15935                }
15936            }
15937        }
15938        #[automatically_derived]
15939        impl alloy_sol_types::SolCall for proxiableUUIDCall {
15940            type Parameters<'a> = ();
15941            type Token<'a> = <Self::Parameters<
15942                'a,
15943            > as alloy_sol_types::SolType>::Token<'a>;
15944            type Return = alloy::sol_types::private::FixedBytes<32>;
15945            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
15946            type ReturnToken<'a> = <Self::ReturnTuple<
15947                'a,
15948            > as alloy_sol_types::SolType>::Token<'a>;
15949            const SIGNATURE: &'static str = "proxiableUUID()";
15950            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
15951            #[inline]
15952            fn new<'a>(
15953                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15954            ) -> Self {
15955                tuple.into()
15956            }
15957            #[inline]
15958            fn tokenize(&self) -> Self::Token<'_> {
15959                ()
15960            }
15961            #[inline]
15962            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15963                (
15964                    <alloy::sol_types::sol_data::FixedBytes<
15965                        32,
15966                    > as alloy_sol_types::SolType>::tokenize(ret),
15967                )
15968            }
15969            #[inline]
15970            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15971                <Self::ReturnTuple<
15972                    '_,
15973                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15974                    .map(|r| {
15975                        let r: proxiableUUIDReturn = r.into();
15976                        r._0
15977                    })
15978            }
15979            #[inline]
15980            fn abi_decode_returns_validate(
15981                data: &[u8],
15982            ) -> alloy_sol_types::Result<Self::Return> {
15983                <Self::ReturnTuple<
15984                    '_,
15985                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15986                    .map(|r| {
15987                        let r: proxiableUUIDReturn = r.into();
15988                        r._0
15989                    })
15990            }
15991        }
15992    };
15993    #[derive(serde::Serialize, serde::Deserialize)]
15994    #[derive()]
15995    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
15996```solidity
15997function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
15998```*/
15999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16000    #[derive(Clone)]
16001    pub struct registerValidatorCall {
16002        #[allow(missing_docs)]
16003        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16004        #[allow(missing_docs)]
16005        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16006        #[allow(missing_docs)]
16007        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16008        #[allow(missing_docs)]
16009        pub _3: u16,
16010    }
16011    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
16012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16013    #[derive(Clone)]
16014    pub struct registerValidatorReturn {}
16015    #[allow(
16016        non_camel_case_types,
16017        non_snake_case,
16018        clippy::pub_underscore_fields,
16019        clippy::style
16020    )]
16021    const _: () = {
16022        use alloy::sol_types as alloy_sol_types;
16023        {
16024            #[doc(hidden)]
16025            type UnderlyingSolTuple<'a> = (
16026                BN254::G2Point,
16027                EdOnBN254::EdOnBN254Point,
16028                BN254::G1Point,
16029                alloy::sol_types::sol_data::Uint<16>,
16030            );
16031            #[doc(hidden)]
16032            type UnderlyingRustTuple<'a> = (
16033                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16034                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16035                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16036                u16,
16037            );
16038            #[cfg(test)]
16039            #[allow(dead_code, unreachable_patterns)]
16040            fn _type_assertion(
16041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16042            ) {
16043                match _t {
16044                    alloy_sol_types::private::AssertTypeEq::<
16045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16046                    >(_) => {}
16047                }
16048            }
16049            #[automatically_derived]
16050            #[doc(hidden)]
16051            impl ::core::convert::From<registerValidatorCall>
16052            for UnderlyingRustTuple<'_> {
16053                fn from(value: registerValidatorCall) -> Self {
16054                    (value._0, value._1, value._2, value._3)
16055                }
16056            }
16057            #[automatically_derived]
16058            #[doc(hidden)]
16059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16060            for registerValidatorCall {
16061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16062                    Self {
16063                        _0: tuple.0,
16064                        _1: tuple.1,
16065                        _2: tuple.2,
16066                        _3: tuple.3,
16067                    }
16068                }
16069            }
16070        }
16071        {
16072            #[doc(hidden)]
16073            type UnderlyingSolTuple<'a> = ();
16074            #[doc(hidden)]
16075            type UnderlyingRustTuple<'a> = ();
16076            #[cfg(test)]
16077            #[allow(dead_code, unreachable_patterns)]
16078            fn _type_assertion(
16079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16080            ) {
16081                match _t {
16082                    alloy_sol_types::private::AssertTypeEq::<
16083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16084                    >(_) => {}
16085                }
16086            }
16087            #[automatically_derived]
16088            #[doc(hidden)]
16089            impl ::core::convert::From<registerValidatorReturn>
16090            for UnderlyingRustTuple<'_> {
16091                fn from(value: registerValidatorReturn) -> Self {
16092                    ()
16093                }
16094            }
16095            #[automatically_derived]
16096            #[doc(hidden)]
16097            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16098            for registerValidatorReturn {
16099                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16100                    Self {}
16101                }
16102            }
16103        }
16104        impl registerValidatorReturn {
16105            fn _tokenize(
16106                &self,
16107            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16108                ()
16109            }
16110        }
16111        #[automatically_derived]
16112        impl alloy_sol_types::SolCall for registerValidatorCall {
16113            type Parameters<'a> = (
16114                BN254::G2Point,
16115                EdOnBN254::EdOnBN254Point,
16116                BN254::G1Point,
16117                alloy::sol_types::sol_data::Uint<16>,
16118            );
16119            type Token<'a> = <Self::Parameters<
16120                'a,
16121            > as alloy_sol_types::SolType>::Token<'a>;
16122            type Return = registerValidatorReturn;
16123            type ReturnTuple<'a> = ();
16124            type ReturnToken<'a> = <Self::ReturnTuple<
16125                'a,
16126            > as alloy_sol_types::SolType>::Token<'a>;
16127            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
16128            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
16129            #[inline]
16130            fn new<'a>(
16131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16132            ) -> Self {
16133                tuple.into()
16134            }
16135            #[inline]
16136            fn tokenize(&self) -> Self::Token<'_> {
16137                (
16138                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
16139                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16140                        &self._1,
16141                    ),
16142                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
16143                    <alloy::sol_types::sol_data::Uint<
16144                        16,
16145                    > as alloy_sol_types::SolType>::tokenize(&self._3),
16146                )
16147            }
16148            #[inline]
16149            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16150                registerValidatorReturn::_tokenize(ret)
16151            }
16152            #[inline]
16153            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16154                <Self::ReturnTuple<
16155                    '_,
16156                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16157                    .map(Into::into)
16158            }
16159            #[inline]
16160            fn abi_decode_returns_validate(
16161                data: &[u8],
16162            ) -> alloy_sol_types::Result<Self::Return> {
16163                <Self::ReturnTuple<
16164                    '_,
16165                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16166                    .map(Into::into)
16167            }
16168        }
16169    };
16170    #[derive(serde::Serialize, serde::Deserialize)]
16171    #[derive()]
16172    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
16173```solidity
16174function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
16175```*/
16176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16177    #[derive(Clone)]
16178    pub struct registerValidatorV2Call {
16179        #[allow(missing_docs)]
16180        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16181        #[allow(missing_docs)]
16182        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16183        #[allow(missing_docs)]
16184        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16185        #[allow(missing_docs)]
16186        pub schnorrSig: alloy::sol_types::private::Bytes,
16187        #[allow(missing_docs)]
16188        pub commission: u16,
16189        #[allow(missing_docs)]
16190        pub metadataUri: alloy::sol_types::private::String,
16191    }
16192    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
16193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16194    #[derive(Clone)]
16195    pub struct registerValidatorV2Return {}
16196    #[allow(
16197        non_camel_case_types,
16198        non_snake_case,
16199        clippy::pub_underscore_fields,
16200        clippy::style
16201    )]
16202    const _: () = {
16203        use alloy::sol_types as alloy_sol_types;
16204        {
16205            #[doc(hidden)]
16206            type UnderlyingSolTuple<'a> = (
16207                BN254::G2Point,
16208                EdOnBN254::EdOnBN254Point,
16209                BN254::G1Point,
16210                alloy::sol_types::sol_data::Bytes,
16211                alloy::sol_types::sol_data::Uint<16>,
16212                alloy::sol_types::sol_data::String,
16213            );
16214            #[doc(hidden)]
16215            type UnderlyingRustTuple<'a> = (
16216                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16217                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16218                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16219                alloy::sol_types::private::Bytes,
16220                u16,
16221                alloy::sol_types::private::String,
16222            );
16223            #[cfg(test)]
16224            #[allow(dead_code, unreachable_patterns)]
16225            fn _type_assertion(
16226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16227            ) {
16228                match _t {
16229                    alloy_sol_types::private::AssertTypeEq::<
16230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16231                    >(_) => {}
16232                }
16233            }
16234            #[automatically_derived]
16235            #[doc(hidden)]
16236            impl ::core::convert::From<registerValidatorV2Call>
16237            for UnderlyingRustTuple<'_> {
16238                fn from(value: registerValidatorV2Call) -> Self {
16239                    (
16240                        value.blsVK,
16241                        value.schnorrVK,
16242                        value.blsSig,
16243                        value.schnorrSig,
16244                        value.commission,
16245                        value.metadataUri,
16246                    )
16247                }
16248            }
16249            #[automatically_derived]
16250            #[doc(hidden)]
16251            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16252            for registerValidatorV2Call {
16253                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16254                    Self {
16255                        blsVK: tuple.0,
16256                        schnorrVK: tuple.1,
16257                        blsSig: tuple.2,
16258                        schnorrSig: tuple.3,
16259                        commission: tuple.4,
16260                        metadataUri: tuple.5,
16261                    }
16262                }
16263            }
16264        }
16265        {
16266            #[doc(hidden)]
16267            type UnderlyingSolTuple<'a> = ();
16268            #[doc(hidden)]
16269            type UnderlyingRustTuple<'a> = ();
16270            #[cfg(test)]
16271            #[allow(dead_code, unreachable_patterns)]
16272            fn _type_assertion(
16273                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16274            ) {
16275                match _t {
16276                    alloy_sol_types::private::AssertTypeEq::<
16277                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16278                    >(_) => {}
16279                }
16280            }
16281            #[automatically_derived]
16282            #[doc(hidden)]
16283            impl ::core::convert::From<registerValidatorV2Return>
16284            for UnderlyingRustTuple<'_> {
16285                fn from(value: registerValidatorV2Return) -> Self {
16286                    ()
16287                }
16288            }
16289            #[automatically_derived]
16290            #[doc(hidden)]
16291            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16292            for registerValidatorV2Return {
16293                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16294                    Self {}
16295                }
16296            }
16297        }
16298        impl registerValidatorV2Return {
16299            fn _tokenize(
16300                &self,
16301            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
16302                ()
16303            }
16304        }
16305        #[automatically_derived]
16306        impl alloy_sol_types::SolCall for registerValidatorV2Call {
16307            type Parameters<'a> = (
16308                BN254::G2Point,
16309                EdOnBN254::EdOnBN254Point,
16310                BN254::G1Point,
16311                alloy::sol_types::sol_data::Bytes,
16312                alloy::sol_types::sol_data::Uint<16>,
16313                alloy::sol_types::sol_data::String,
16314            );
16315            type Token<'a> = <Self::Parameters<
16316                'a,
16317            > as alloy_sol_types::SolType>::Token<'a>;
16318            type Return = registerValidatorV2Return;
16319            type ReturnTuple<'a> = ();
16320            type ReturnToken<'a> = <Self::ReturnTuple<
16321                'a,
16322            > as alloy_sol_types::SolType>::Token<'a>;
16323            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
16324            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
16325            #[inline]
16326            fn new<'a>(
16327                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16328            ) -> Self {
16329                tuple.into()
16330            }
16331            #[inline]
16332            fn tokenize(&self) -> Self::Token<'_> {
16333                (
16334                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
16335                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16336                        &self.schnorrVK,
16337                    ),
16338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
16339                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
16340                        &self.schnorrSig,
16341                    ),
16342                    <alloy::sol_types::sol_data::Uint<
16343                        16,
16344                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
16345                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
16346                        &self.metadataUri,
16347                    ),
16348                )
16349            }
16350            #[inline]
16351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16352                registerValidatorV2Return::_tokenize(ret)
16353            }
16354            #[inline]
16355            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16356                <Self::ReturnTuple<
16357                    '_,
16358                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16359                    .map(Into::into)
16360            }
16361            #[inline]
16362            fn abi_decode_returns_validate(
16363                data: &[u8],
16364            ) -> alloy_sol_types::Result<Self::Return> {
16365                <Self::ReturnTuple<
16366                    '_,
16367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16368                    .map(Into::into)
16369            }
16370        }
16371    };
16372    #[derive(serde::Serialize, serde::Deserialize)]
16373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16374    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
16375```solidity
16376function renounceOwnership() external;
16377```*/
16378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16379    #[derive(Clone)]
16380    pub struct renounceOwnershipCall;
16381    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
16382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16383    #[derive(Clone)]
16384    pub struct renounceOwnershipReturn {}
16385    #[allow(
16386        non_camel_case_types,
16387        non_snake_case,
16388        clippy::pub_underscore_fields,
16389        clippy::style
16390    )]
16391    const _: () = {
16392        use alloy::sol_types as alloy_sol_types;
16393        {
16394            #[doc(hidden)]
16395            type UnderlyingSolTuple<'a> = ();
16396            #[doc(hidden)]
16397            type UnderlyingRustTuple<'a> = ();
16398            #[cfg(test)]
16399            #[allow(dead_code, unreachable_patterns)]
16400            fn _type_assertion(
16401                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16402            ) {
16403                match _t {
16404                    alloy_sol_types::private::AssertTypeEq::<
16405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16406                    >(_) => {}
16407                }
16408            }
16409            #[automatically_derived]
16410            #[doc(hidden)]
16411            impl ::core::convert::From<renounceOwnershipCall>
16412            for UnderlyingRustTuple<'_> {
16413                fn from(value: renounceOwnershipCall) -> Self {
16414                    ()
16415                }
16416            }
16417            #[automatically_derived]
16418            #[doc(hidden)]
16419            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16420            for renounceOwnershipCall {
16421                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16422                    Self
16423                }
16424            }
16425        }
16426        {
16427            #[doc(hidden)]
16428            type UnderlyingSolTuple<'a> = ();
16429            #[doc(hidden)]
16430            type UnderlyingRustTuple<'a> = ();
16431            #[cfg(test)]
16432            #[allow(dead_code, unreachable_patterns)]
16433            fn _type_assertion(
16434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16435            ) {
16436                match _t {
16437                    alloy_sol_types::private::AssertTypeEq::<
16438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16439                    >(_) => {}
16440                }
16441            }
16442            #[automatically_derived]
16443            #[doc(hidden)]
16444            impl ::core::convert::From<renounceOwnershipReturn>
16445            for UnderlyingRustTuple<'_> {
16446                fn from(value: renounceOwnershipReturn) -> Self {
16447                    ()
16448                }
16449            }
16450            #[automatically_derived]
16451            #[doc(hidden)]
16452            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16453            for renounceOwnershipReturn {
16454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16455                    Self {}
16456                }
16457            }
16458        }
16459        impl renounceOwnershipReturn {
16460            fn _tokenize(
16461                &self,
16462            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16463                ()
16464            }
16465        }
16466        #[automatically_derived]
16467        impl alloy_sol_types::SolCall for renounceOwnershipCall {
16468            type Parameters<'a> = ();
16469            type Token<'a> = <Self::Parameters<
16470                'a,
16471            > as alloy_sol_types::SolType>::Token<'a>;
16472            type Return = renounceOwnershipReturn;
16473            type ReturnTuple<'a> = ();
16474            type ReturnToken<'a> = <Self::ReturnTuple<
16475                'a,
16476            > as alloy_sol_types::SolType>::Token<'a>;
16477            const SIGNATURE: &'static str = "renounceOwnership()";
16478            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
16479            #[inline]
16480            fn new<'a>(
16481                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16482            ) -> Self {
16483                tuple.into()
16484            }
16485            #[inline]
16486            fn tokenize(&self) -> Self::Token<'_> {
16487                ()
16488            }
16489            #[inline]
16490            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16491                renounceOwnershipReturn::_tokenize(ret)
16492            }
16493            #[inline]
16494            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16495                <Self::ReturnTuple<
16496                    '_,
16497                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16498                    .map(Into::into)
16499            }
16500            #[inline]
16501            fn abi_decode_returns_validate(
16502                data: &[u8],
16503            ) -> alloy_sol_types::Result<Self::Return> {
16504                <Self::ReturnTuple<
16505                    '_,
16506                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16507                    .map(Into::into)
16508            }
16509        }
16510    };
16511    #[derive(serde::Serialize, serde::Deserialize)]
16512    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16513    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
16514```solidity
16515function renounceRole(bytes32 role, address callerConfirmation) external;
16516```*/
16517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16518    #[derive(Clone)]
16519    pub struct renounceRoleCall {
16520        #[allow(missing_docs)]
16521        pub role: alloy::sol_types::private::FixedBytes<32>,
16522        #[allow(missing_docs)]
16523        pub callerConfirmation: alloy::sol_types::private::Address,
16524    }
16525    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
16526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16527    #[derive(Clone)]
16528    pub struct renounceRoleReturn {}
16529    #[allow(
16530        non_camel_case_types,
16531        non_snake_case,
16532        clippy::pub_underscore_fields,
16533        clippy::style
16534    )]
16535    const _: () = {
16536        use alloy::sol_types as alloy_sol_types;
16537        {
16538            #[doc(hidden)]
16539            type UnderlyingSolTuple<'a> = (
16540                alloy::sol_types::sol_data::FixedBytes<32>,
16541                alloy::sol_types::sol_data::Address,
16542            );
16543            #[doc(hidden)]
16544            type UnderlyingRustTuple<'a> = (
16545                alloy::sol_types::private::FixedBytes<32>,
16546                alloy::sol_types::private::Address,
16547            );
16548            #[cfg(test)]
16549            #[allow(dead_code, unreachable_patterns)]
16550            fn _type_assertion(
16551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16552            ) {
16553                match _t {
16554                    alloy_sol_types::private::AssertTypeEq::<
16555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16556                    >(_) => {}
16557                }
16558            }
16559            #[automatically_derived]
16560            #[doc(hidden)]
16561            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
16562                fn from(value: renounceRoleCall) -> Self {
16563                    (value.role, value.callerConfirmation)
16564                }
16565            }
16566            #[automatically_derived]
16567            #[doc(hidden)]
16568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
16569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16570                    Self {
16571                        role: tuple.0,
16572                        callerConfirmation: tuple.1,
16573                    }
16574                }
16575            }
16576        }
16577        {
16578            #[doc(hidden)]
16579            type UnderlyingSolTuple<'a> = ();
16580            #[doc(hidden)]
16581            type UnderlyingRustTuple<'a> = ();
16582            #[cfg(test)]
16583            #[allow(dead_code, unreachable_patterns)]
16584            fn _type_assertion(
16585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16586            ) {
16587                match _t {
16588                    alloy_sol_types::private::AssertTypeEq::<
16589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16590                    >(_) => {}
16591                }
16592            }
16593            #[automatically_derived]
16594            #[doc(hidden)]
16595            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
16596                fn from(value: renounceRoleReturn) -> Self {
16597                    ()
16598                }
16599            }
16600            #[automatically_derived]
16601            #[doc(hidden)]
16602            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
16603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16604                    Self {}
16605                }
16606            }
16607        }
16608        impl renounceRoleReturn {
16609            fn _tokenize(
16610                &self,
16611            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16612                ()
16613            }
16614        }
16615        #[automatically_derived]
16616        impl alloy_sol_types::SolCall for renounceRoleCall {
16617            type Parameters<'a> = (
16618                alloy::sol_types::sol_data::FixedBytes<32>,
16619                alloy::sol_types::sol_data::Address,
16620            );
16621            type Token<'a> = <Self::Parameters<
16622                'a,
16623            > as alloy_sol_types::SolType>::Token<'a>;
16624            type Return = renounceRoleReturn;
16625            type ReturnTuple<'a> = ();
16626            type ReturnToken<'a> = <Self::ReturnTuple<
16627                'a,
16628            > as alloy_sol_types::SolType>::Token<'a>;
16629            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
16630            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
16631            #[inline]
16632            fn new<'a>(
16633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16634            ) -> Self {
16635                tuple.into()
16636            }
16637            #[inline]
16638            fn tokenize(&self) -> Self::Token<'_> {
16639                (
16640                    <alloy::sol_types::sol_data::FixedBytes<
16641                        32,
16642                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16643                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16644                        &self.callerConfirmation,
16645                    ),
16646                )
16647            }
16648            #[inline]
16649            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16650                renounceRoleReturn::_tokenize(ret)
16651            }
16652            #[inline]
16653            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16654                <Self::ReturnTuple<
16655                    '_,
16656                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16657                    .map(Into::into)
16658            }
16659            #[inline]
16660            fn abi_decode_returns_validate(
16661                data: &[u8],
16662            ) -> alloy_sol_types::Result<Self::Return> {
16663                <Self::ReturnTuple<
16664                    '_,
16665                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16666                    .map(Into::into)
16667            }
16668        }
16669    };
16670    #[derive(serde::Serialize, serde::Deserialize)]
16671    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16672    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
16673```solidity
16674function revokeRole(bytes32 role, address account) external;
16675```*/
16676    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16677    #[derive(Clone)]
16678    pub struct revokeRoleCall {
16679        #[allow(missing_docs)]
16680        pub role: alloy::sol_types::private::FixedBytes<32>,
16681        #[allow(missing_docs)]
16682        pub account: alloy::sol_types::private::Address,
16683    }
16684    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
16685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16686    #[derive(Clone)]
16687    pub struct revokeRoleReturn {}
16688    #[allow(
16689        non_camel_case_types,
16690        non_snake_case,
16691        clippy::pub_underscore_fields,
16692        clippy::style
16693    )]
16694    const _: () = {
16695        use alloy::sol_types as alloy_sol_types;
16696        {
16697            #[doc(hidden)]
16698            type UnderlyingSolTuple<'a> = (
16699                alloy::sol_types::sol_data::FixedBytes<32>,
16700                alloy::sol_types::sol_data::Address,
16701            );
16702            #[doc(hidden)]
16703            type UnderlyingRustTuple<'a> = (
16704                alloy::sol_types::private::FixedBytes<32>,
16705                alloy::sol_types::private::Address,
16706            );
16707            #[cfg(test)]
16708            #[allow(dead_code, unreachable_patterns)]
16709            fn _type_assertion(
16710                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16711            ) {
16712                match _t {
16713                    alloy_sol_types::private::AssertTypeEq::<
16714                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16715                    >(_) => {}
16716                }
16717            }
16718            #[automatically_derived]
16719            #[doc(hidden)]
16720            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
16721                fn from(value: revokeRoleCall) -> Self {
16722                    (value.role, value.account)
16723                }
16724            }
16725            #[automatically_derived]
16726            #[doc(hidden)]
16727            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
16728                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16729                    Self {
16730                        role: tuple.0,
16731                        account: tuple.1,
16732                    }
16733                }
16734            }
16735        }
16736        {
16737            #[doc(hidden)]
16738            type UnderlyingSolTuple<'a> = ();
16739            #[doc(hidden)]
16740            type UnderlyingRustTuple<'a> = ();
16741            #[cfg(test)]
16742            #[allow(dead_code, unreachable_patterns)]
16743            fn _type_assertion(
16744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16745            ) {
16746                match _t {
16747                    alloy_sol_types::private::AssertTypeEq::<
16748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16749                    >(_) => {}
16750                }
16751            }
16752            #[automatically_derived]
16753            #[doc(hidden)]
16754            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
16755                fn from(value: revokeRoleReturn) -> Self {
16756                    ()
16757                }
16758            }
16759            #[automatically_derived]
16760            #[doc(hidden)]
16761            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
16762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16763                    Self {}
16764                }
16765            }
16766        }
16767        impl revokeRoleReturn {
16768            fn _tokenize(
16769                &self,
16770            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16771                ()
16772            }
16773        }
16774        #[automatically_derived]
16775        impl alloy_sol_types::SolCall for revokeRoleCall {
16776            type Parameters<'a> = (
16777                alloy::sol_types::sol_data::FixedBytes<32>,
16778                alloy::sol_types::sol_data::Address,
16779            );
16780            type Token<'a> = <Self::Parameters<
16781                'a,
16782            > as alloy_sol_types::SolType>::Token<'a>;
16783            type Return = revokeRoleReturn;
16784            type ReturnTuple<'a> = ();
16785            type ReturnToken<'a> = <Self::ReturnTuple<
16786                'a,
16787            > as alloy_sol_types::SolType>::Token<'a>;
16788            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
16789            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
16790            #[inline]
16791            fn new<'a>(
16792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16793            ) -> Self {
16794                tuple.into()
16795            }
16796            #[inline]
16797            fn tokenize(&self) -> Self::Token<'_> {
16798                (
16799                    <alloy::sol_types::sol_data::FixedBytes<
16800                        32,
16801                    > as alloy_sol_types::SolType>::tokenize(&self.role),
16802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16803                        &self.account,
16804                    ),
16805                )
16806            }
16807            #[inline]
16808            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16809                revokeRoleReturn::_tokenize(ret)
16810            }
16811            #[inline]
16812            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16813                <Self::ReturnTuple<
16814                    '_,
16815                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16816                    .map(Into::into)
16817            }
16818            #[inline]
16819            fn abi_decode_returns_validate(
16820                data: &[u8],
16821            ) -> alloy_sol_types::Result<Self::Return> {
16822                <Self::ReturnTuple<
16823                    '_,
16824                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16825                    .map(Into::into)
16826            }
16827        }
16828    };
16829    #[derive(serde::Serialize, serde::Deserialize)]
16830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16831    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
16832```solidity
16833function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
16834```*/
16835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16836    #[derive(Clone)]
16837    pub struct schnorrKeysCall {
16838        #[allow(missing_docs)]
16839        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
16840    }
16841    #[derive(serde::Serialize, serde::Deserialize)]
16842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16843    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
16844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16845    #[derive(Clone)]
16846    pub struct schnorrKeysReturn {
16847        #[allow(missing_docs)]
16848        pub used: bool,
16849    }
16850    #[allow(
16851        non_camel_case_types,
16852        non_snake_case,
16853        clippy::pub_underscore_fields,
16854        clippy::style
16855    )]
16856    const _: () = {
16857        use alloy::sol_types as alloy_sol_types;
16858        {
16859            #[doc(hidden)]
16860            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16861            #[doc(hidden)]
16862            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
16863            #[cfg(test)]
16864            #[allow(dead_code, unreachable_patterns)]
16865            fn _type_assertion(
16866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16867            ) {
16868                match _t {
16869                    alloy_sol_types::private::AssertTypeEq::<
16870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16871                    >(_) => {}
16872                }
16873            }
16874            #[automatically_derived]
16875            #[doc(hidden)]
16876            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
16877                fn from(value: schnorrKeysCall) -> Self {
16878                    (value.schnorrKey,)
16879                }
16880            }
16881            #[automatically_derived]
16882            #[doc(hidden)]
16883            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
16884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16885                    Self { schnorrKey: tuple.0 }
16886                }
16887            }
16888        }
16889        {
16890            #[doc(hidden)]
16891            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16892            #[doc(hidden)]
16893            type UnderlyingRustTuple<'a> = (bool,);
16894            #[cfg(test)]
16895            #[allow(dead_code, unreachable_patterns)]
16896            fn _type_assertion(
16897                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16898            ) {
16899                match _t {
16900                    alloy_sol_types::private::AssertTypeEq::<
16901                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16902                    >(_) => {}
16903                }
16904            }
16905            #[automatically_derived]
16906            #[doc(hidden)]
16907            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
16908                fn from(value: schnorrKeysReturn) -> Self {
16909                    (value.used,)
16910                }
16911            }
16912            #[automatically_derived]
16913            #[doc(hidden)]
16914            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
16915                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16916                    Self { used: tuple.0 }
16917                }
16918            }
16919        }
16920        #[automatically_derived]
16921        impl alloy_sol_types::SolCall for schnorrKeysCall {
16922            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16923            type Token<'a> = <Self::Parameters<
16924                'a,
16925            > as alloy_sol_types::SolType>::Token<'a>;
16926            type Return = bool;
16927            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16928            type ReturnToken<'a> = <Self::ReturnTuple<
16929                'a,
16930            > as alloy_sol_types::SolType>::Token<'a>;
16931            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
16932            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
16933            #[inline]
16934            fn new<'a>(
16935                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16936            ) -> Self {
16937                tuple.into()
16938            }
16939            #[inline]
16940            fn tokenize(&self) -> Self::Token<'_> {
16941                (
16942                    <alloy::sol_types::sol_data::FixedBytes<
16943                        32,
16944                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
16945                )
16946            }
16947            #[inline]
16948            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16949                (
16950                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
16951                        ret,
16952                    ),
16953                )
16954            }
16955            #[inline]
16956            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16957                <Self::ReturnTuple<
16958                    '_,
16959                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16960                    .map(|r| {
16961                        let r: schnorrKeysReturn = r.into();
16962                        r.used
16963                    })
16964            }
16965            #[inline]
16966            fn abi_decode_returns_validate(
16967                data: &[u8],
16968            ) -> alloy_sol_types::Result<Self::Return> {
16969                <Self::ReturnTuple<
16970                    '_,
16971                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
16972                    .map(|r| {
16973                        let r: schnorrKeysReturn = r.into();
16974                        r.used
16975                    })
16976            }
16977        }
16978    };
16979    #[derive(serde::Serialize, serde::Deserialize)]
16980    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16981    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
16982```solidity
16983function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
16984```*/
16985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16986    #[derive(Clone)]
16987    pub struct setMaxCommissionIncreaseCall {
16988        #[allow(missing_docs)]
16989        pub newMaxIncrease: u16,
16990    }
16991    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
16992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16993    #[derive(Clone)]
16994    pub struct setMaxCommissionIncreaseReturn {}
16995    #[allow(
16996        non_camel_case_types,
16997        non_snake_case,
16998        clippy::pub_underscore_fields,
16999        clippy::style
17000    )]
17001    const _: () = {
17002        use alloy::sol_types as alloy_sol_types;
17003        {
17004            #[doc(hidden)]
17005            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17006            #[doc(hidden)]
17007            type UnderlyingRustTuple<'a> = (u16,);
17008            #[cfg(test)]
17009            #[allow(dead_code, unreachable_patterns)]
17010            fn _type_assertion(
17011                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17012            ) {
17013                match _t {
17014                    alloy_sol_types::private::AssertTypeEq::<
17015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17016                    >(_) => {}
17017                }
17018            }
17019            #[automatically_derived]
17020            #[doc(hidden)]
17021            impl ::core::convert::From<setMaxCommissionIncreaseCall>
17022            for UnderlyingRustTuple<'_> {
17023                fn from(value: setMaxCommissionIncreaseCall) -> Self {
17024                    (value.newMaxIncrease,)
17025                }
17026            }
17027            #[automatically_derived]
17028            #[doc(hidden)]
17029            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17030            for setMaxCommissionIncreaseCall {
17031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17032                    Self { newMaxIncrease: tuple.0 }
17033                }
17034            }
17035        }
17036        {
17037            #[doc(hidden)]
17038            type UnderlyingSolTuple<'a> = ();
17039            #[doc(hidden)]
17040            type UnderlyingRustTuple<'a> = ();
17041            #[cfg(test)]
17042            #[allow(dead_code, unreachable_patterns)]
17043            fn _type_assertion(
17044                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17045            ) {
17046                match _t {
17047                    alloy_sol_types::private::AssertTypeEq::<
17048                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17049                    >(_) => {}
17050                }
17051            }
17052            #[automatically_derived]
17053            #[doc(hidden)]
17054            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
17055            for UnderlyingRustTuple<'_> {
17056                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
17057                    ()
17058                }
17059            }
17060            #[automatically_derived]
17061            #[doc(hidden)]
17062            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17063            for setMaxCommissionIncreaseReturn {
17064                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17065                    Self {}
17066                }
17067            }
17068        }
17069        impl setMaxCommissionIncreaseReturn {
17070            fn _tokenize(
17071                &self,
17072            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
17073                '_,
17074            > {
17075                ()
17076            }
17077        }
17078        #[automatically_derived]
17079        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
17080            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17081            type Token<'a> = <Self::Parameters<
17082                'a,
17083            > as alloy_sol_types::SolType>::Token<'a>;
17084            type Return = setMaxCommissionIncreaseReturn;
17085            type ReturnTuple<'a> = ();
17086            type ReturnToken<'a> = <Self::ReturnTuple<
17087                'a,
17088            > as alloy_sol_types::SolType>::Token<'a>;
17089            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
17090            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
17091            #[inline]
17092            fn new<'a>(
17093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17094            ) -> Self {
17095                tuple.into()
17096            }
17097            #[inline]
17098            fn tokenize(&self) -> Self::Token<'_> {
17099                (
17100                    <alloy::sol_types::sol_data::Uint<
17101                        16,
17102                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
17103                )
17104            }
17105            #[inline]
17106            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17107                setMaxCommissionIncreaseReturn::_tokenize(ret)
17108            }
17109            #[inline]
17110            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17111                <Self::ReturnTuple<
17112                    '_,
17113                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17114                    .map(Into::into)
17115            }
17116            #[inline]
17117            fn abi_decode_returns_validate(
17118                data: &[u8],
17119            ) -> alloy_sol_types::Result<Self::Return> {
17120                <Self::ReturnTuple<
17121                    '_,
17122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17123                    .map(Into::into)
17124            }
17125        }
17126    };
17127    #[derive(serde::Serialize, serde::Deserialize)]
17128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17129    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
17130```solidity
17131function setMinCommissionUpdateInterval(uint256 newInterval) external;
17132```*/
17133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17134    #[derive(Clone)]
17135    pub struct setMinCommissionUpdateIntervalCall {
17136        #[allow(missing_docs)]
17137        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
17138    }
17139    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
17140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17141    #[derive(Clone)]
17142    pub struct setMinCommissionUpdateIntervalReturn {}
17143    #[allow(
17144        non_camel_case_types,
17145        non_snake_case,
17146        clippy::pub_underscore_fields,
17147        clippy::style
17148    )]
17149    const _: () = {
17150        use alloy::sol_types as alloy_sol_types;
17151        {
17152            #[doc(hidden)]
17153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17154            #[doc(hidden)]
17155            type UnderlyingRustTuple<'a> = (
17156                alloy::sol_types::private::primitives::aliases::U256,
17157            );
17158            #[cfg(test)]
17159            #[allow(dead_code, unreachable_patterns)]
17160            fn _type_assertion(
17161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17162            ) {
17163                match _t {
17164                    alloy_sol_types::private::AssertTypeEq::<
17165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17166                    >(_) => {}
17167                }
17168            }
17169            #[automatically_derived]
17170            #[doc(hidden)]
17171            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
17172            for UnderlyingRustTuple<'_> {
17173                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
17174                    (value.newInterval,)
17175                }
17176            }
17177            #[automatically_derived]
17178            #[doc(hidden)]
17179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17180            for setMinCommissionUpdateIntervalCall {
17181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17182                    Self { newInterval: tuple.0 }
17183                }
17184            }
17185        }
17186        {
17187            #[doc(hidden)]
17188            type UnderlyingSolTuple<'a> = ();
17189            #[doc(hidden)]
17190            type UnderlyingRustTuple<'a> = ();
17191            #[cfg(test)]
17192            #[allow(dead_code, unreachable_patterns)]
17193            fn _type_assertion(
17194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17195            ) {
17196                match _t {
17197                    alloy_sol_types::private::AssertTypeEq::<
17198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17199                    >(_) => {}
17200                }
17201            }
17202            #[automatically_derived]
17203            #[doc(hidden)]
17204            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
17205            for UnderlyingRustTuple<'_> {
17206                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
17207                    ()
17208                }
17209            }
17210            #[automatically_derived]
17211            #[doc(hidden)]
17212            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17213            for setMinCommissionUpdateIntervalReturn {
17214                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17215                    Self {}
17216                }
17217            }
17218        }
17219        impl setMinCommissionUpdateIntervalReturn {
17220            fn _tokenize(
17221                &self,
17222            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
17223                '_,
17224            > {
17225                ()
17226            }
17227        }
17228        #[automatically_derived]
17229        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
17230            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17231            type Token<'a> = <Self::Parameters<
17232                'a,
17233            > as alloy_sol_types::SolType>::Token<'a>;
17234            type Return = setMinCommissionUpdateIntervalReturn;
17235            type ReturnTuple<'a> = ();
17236            type ReturnToken<'a> = <Self::ReturnTuple<
17237                'a,
17238            > as alloy_sol_types::SolType>::Token<'a>;
17239            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
17240            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
17241            #[inline]
17242            fn new<'a>(
17243                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17244            ) -> Self {
17245                tuple.into()
17246            }
17247            #[inline]
17248            fn tokenize(&self) -> Self::Token<'_> {
17249                (
17250                    <alloy::sol_types::sol_data::Uint<
17251                        256,
17252                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
17253                )
17254            }
17255            #[inline]
17256            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17257                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
17258            }
17259            #[inline]
17260            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17261                <Self::ReturnTuple<
17262                    '_,
17263                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17264                    .map(Into::into)
17265            }
17266            #[inline]
17267            fn abi_decode_returns_validate(
17268                data: &[u8],
17269            ) -> alloy_sol_types::Result<Self::Return> {
17270                <Self::ReturnTuple<
17271                    '_,
17272                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17273                    .map(Into::into)
17274            }
17275        }
17276    };
17277    #[derive(serde::Serialize, serde::Deserialize)]
17278    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17279    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
17280```solidity
17281function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
17282```*/
17283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17284    #[derive(Clone)]
17285    pub struct setMinDelegateAmountCall {
17286        #[allow(missing_docs)]
17287        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
17288    }
17289    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
17290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17291    #[derive(Clone)]
17292    pub struct setMinDelegateAmountReturn {}
17293    #[allow(
17294        non_camel_case_types,
17295        non_snake_case,
17296        clippy::pub_underscore_fields,
17297        clippy::style
17298    )]
17299    const _: () = {
17300        use alloy::sol_types as alloy_sol_types;
17301        {
17302            #[doc(hidden)]
17303            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17304            #[doc(hidden)]
17305            type UnderlyingRustTuple<'a> = (
17306                alloy::sol_types::private::primitives::aliases::U256,
17307            );
17308            #[cfg(test)]
17309            #[allow(dead_code, unreachable_patterns)]
17310            fn _type_assertion(
17311                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17312            ) {
17313                match _t {
17314                    alloy_sol_types::private::AssertTypeEq::<
17315                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17316                    >(_) => {}
17317                }
17318            }
17319            #[automatically_derived]
17320            #[doc(hidden)]
17321            impl ::core::convert::From<setMinDelegateAmountCall>
17322            for UnderlyingRustTuple<'_> {
17323                fn from(value: setMinDelegateAmountCall) -> Self {
17324                    (value.newMinDelegateAmount,)
17325                }
17326            }
17327            #[automatically_derived]
17328            #[doc(hidden)]
17329            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17330            for setMinDelegateAmountCall {
17331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17332                    Self {
17333                        newMinDelegateAmount: tuple.0,
17334                    }
17335                }
17336            }
17337        }
17338        {
17339            #[doc(hidden)]
17340            type UnderlyingSolTuple<'a> = ();
17341            #[doc(hidden)]
17342            type UnderlyingRustTuple<'a> = ();
17343            #[cfg(test)]
17344            #[allow(dead_code, unreachable_patterns)]
17345            fn _type_assertion(
17346                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17347            ) {
17348                match _t {
17349                    alloy_sol_types::private::AssertTypeEq::<
17350                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17351                    >(_) => {}
17352                }
17353            }
17354            #[automatically_derived]
17355            #[doc(hidden)]
17356            impl ::core::convert::From<setMinDelegateAmountReturn>
17357            for UnderlyingRustTuple<'_> {
17358                fn from(value: setMinDelegateAmountReturn) -> Self {
17359                    ()
17360                }
17361            }
17362            #[automatically_derived]
17363            #[doc(hidden)]
17364            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17365            for setMinDelegateAmountReturn {
17366                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17367                    Self {}
17368                }
17369            }
17370        }
17371        impl setMinDelegateAmountReturn {
17372            fn _tokenize(
17373                &self,
17374            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
17375                '_,
17376            > {
17377                ()
17378            }
17379        }
17380        #[automatically_derived]
17381        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
17382            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17383            type Token<'a> = <Self::Parameters<
17384                'a,
17385            > as alloy_sol_types::SolType>::Token<'a>;
17386            type Return = setMinDelegateAmountReturn;
17387            type ReturnTuple<'a> = ();
17388            type ReturnToken<'a> = <Self::ReturnTuple<
17389                'a,
17390            > as alloy_sol_types::SolType>::Token<'a>;
17391            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
17392            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
17393            #[inline]
17394            fn new<'a>(
17395                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17396            ) -> Self {
17397                tuple.into()
17398            }
17399            #[inline]
17400            fn tokenize(&self) -> Self::Token<'_> {
17401                (
17402                    <alloy::sol_types::sol_data::Uint<
17403                        256,
17404                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
17405                )
17406            }
17407            #[inline]
17408            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17409                setMinDelegateAmountReturn::_tokenize(ret)
17410            }
17411            #[inline]
17412            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17413                <Self::ReturnTuple<
17414                    '_,
17415                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17416                    .map(Into::into)
17417            }
17418            #[inline]
17419            fn abi_decode_returns_validate(
17420                data: &[u8],
17421            ) -> alloy_sol_types::Result<Self::Return> {
17422                <Self::ReturnTuple<
17423                    '_,
17424                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17425                    .map(Into::into)
17426            }
17427        }
17428    };
17429    #[derive(serde::Serialize, serde::Deserialize)]
17430    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17431    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
17432```solidity
17433function supportsInterface(bytes4 interfaceId) external view returns (bool);
17434```*/
17435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17436    #[derive(Clone)]
17437    pub struct supportsInterfaceCall {
17438        #[allow(missing_docs)]
17439        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
17440    }
17441    #[derive(serde::Serialize, serde::Deserialize)]
17442    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17443    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
17444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17445    #[derive(Clone)]
17446    pub struct supportsInterfaceReturn {
17447        #[allow(missing_docs)]
17448        pub _0: bool,
17449    }
17450    #[allow(
17451        non_camel_case_types,
17452        non_snake_case,
17453        clippy::pub_underscore_fields,
17454        clippy::style
17455    )]
17456    const _: () = {
17457        use alloy::sol_types as alloy_sol_types;
17458        {
17459            #[doc(hidden)]
17460            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17461            #[doc(hidden)]
17462            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
17463            #[cfg(test)]
17464            #[allow(dead_code, unreachable_patterns)]
17465            fn _type_assertion(
17466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17467            ) {
17468                match _t {
17469                    alloy_sol_types::private::AssertTypeEq::<
17470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17471                    >(_) => {}
17472                }
17473            }
17474            #[automatically_derived]
17475            #[doc(hidden)]
17476            impl ::core::convert::From<supportsInterfaceCall>
17477            for UnderlyingRustTuple<'_> {
17478                fn from(value: supportsInterfaceCall) -> Self {
17479                    (value.interfaceId,)
17480                }
17481            }
17482            #[automatically_derived]
17483            #[doc(hidden)]
17484            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17485            for supportsInterfaceCall {
17486                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17487                    Self { interfaceId: tuple.0 }
17488                }
17489            }
17490        }
17491        {
17492            #[doc(hidden)]
17493            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17494            #[doc(hidden)]
17495            type UnderlyingRustTuple<'a> = (bool,);
17496            #[cfg(test)]
17497            #[allow(dead_code, unreachable_patterns)]
17498            fn _type_assertion(
17499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17500            ) {
17501                match _t {
17502                    alloy_sol_types::private::AssertTypeEq::<
17503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17504                    >(_) => {}
17505                }
17506            }
17507            #[automatically_derived]
17508            #[doc(hidden)]
17509            impl ::core::convert::From<supportsInterfaceReturn>
17510            for UnderlyingRustTuple<'_> {
17511                fn from(value: supportsInterfaceReturn) -> Self {
17512                    (value._0,)
17513                }
17514            }
17515            #[automatically_derived]
17516            #[doc(hidden)]
17517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17518            for supportsInterfaceReturn {
17519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17520                    Self { _0: tuple.0 }
17521                }
17522            }
17523        }
17524        #[automatically_derived]
17525        impl alloy_sol_types::SolCall for supportsInterfaceCall {
17526            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
17527            type Token<'a> = <Self::Parameters<
17528                'a,
17529            > as alloy_sol_types::SolType>::Token<'a>;
17530            type Return = bool;
17531            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17532            type ReturnToken<'a> = <Self::ReturnTuple<
17533                'a,
17534            > as alloy_sol_types::SolType>::Token<'a>;
17535            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
17536            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
17537            #[inline]
17538            fn new<'a>(
17539                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17540            ) -> Self {
17541                tuple.into()
17542            }
17543            #[inline]
17544            fn tokenize(&self) -> Self::Token<'_> {
17545                (
17546                    <alloy::sol_types::sol_data::FixedBytes<
17547                        4,
17548                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
17549                )
17550            }
17551            #[inline]
17552            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17553                (
17554                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17555                        ret,
17556                    ),
17557                )
17558            }
17559            #[inline]
17560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17561                <Self::ReturnTuple<
17562                    '_,
17563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17564                    .map(|r| {
17565                        let r: supportsInterfaceReturn = r.into();
17566                        r._0
17567                    })
17568            }
17569            #[inline]
17570            fn abi_decode_returns_validate(
17571                data: &[u8],
17572            ) -> alloy_sol_types::Result<Self::Return> {
17573                <Self::ReturnTuple<
17574                    '_,
17575                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17576                    .map(|r| {
17577                        let r: supportsInterfaceReturn = r.into();
17578                        r._0
17579                    })
17580            }
17581        }
17582    };
17583    #[derive(serde::Serialize, serde::Deserialize)]
17584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17585    /**Function with signature `token()` and selector `0xfc0c546a`.
17586```solidity
17587function token() external view returns (address);
17588```*/
17589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17590    #[derive(Clone)]
17591    pub struct tokenCall;
17592    #[derive(serde::Serialize, serde::Deserialize)]
17593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17594    ///Container type for the return parameters of the [`token()`](tokenCall) function.
17595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17596    #[derive(Clone)]
17597    pub struct tokenReturn {
17598        #[allow(missing_docs)]
17599        pub _0: alloy::sol_types::private::Address,
17600    }
17601    #[allow(
17602        non_camel_case_types,
17603        non_snake_case,
17604        clippy::pub_underscore_fields,
17605        clippy::style
17606    )]
17607    const _: () = {
17608        use alloy::sol_types as alloy_sol_types;
17609        {
17610            #[doc(hidden)]
17611            type UnderlyingSolTuple<'a> = ();
17612            #[doc(hidden)]
17613            type UnderlyingRustTuple<'a> = ();
17614            #[cfg(test)]
17615            #[allow(dead_code, unreachable_patterns)]
17616            fn _type_assertion(
17617                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17618            ) {
17619                match _t {
17620                    alloy_sol_types::private::AssertTypeEq::<
17621                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17622                    >(_) => {}
17623                }
17624            }
17625            #[automatically_derived]
17626            #[doc(hidden)]
17627            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
17628                fn from(value: tokenCall) -> Self {
17629                    ()
17630                }
17631            }
17632            #[automatically_derived]
17633            #[doc(hidden)]
17634            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
17635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17636                    Self
17637                }
17638            }
17639        }
17640        {
17641            #[doc(hidden)]
17642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17643            #[doc(hidden)]
17644            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17645            #[cfg(test)]
17646            #[allow(dead_code, unreachable_patterns)]
17647            fn _type_assertion(
17648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17649            ) {
17650                match _t {
17651                    alloy_sol_types::private::AssertTypeEq::<
17652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17653                    >(_) => {}
17654                }
17655            }
17656            #[automatically_derived]
17657            #[doc(hidden)]
17658            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
17659                fn from(value: tokenReturn) -> Self {
17660                    (value._0,)
17661                }
17662            }
17663            #[automatically_derived]
17664            #[doc(hidden)]
17665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
17666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17667                    Self { _0: tuple.0 }
17668                }
17669            }
17670        }
17671        #[automatically_derived]
17672        impl alloy_sol_types::SolCall for tokenCall {
17673            type Parameters<'a> = ();
17674            type Token<'a> = <Self::Parameters<
17675                'a,
17676            > as alloy_sol_types::SolType>::Token<'a>;
17677            type Return = alloy::sol_types::private::Address;
17678            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
17679            type ReturnToken<'a> = <Self::ReturnTuple<
17680                'a,
17681            > as alloy_sol_types::SolType>::Token<'a>;
17682            const SIGNATURE: &'static str = "token()";
17683            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
17684            #[inline]
17685            fn new<'a>(
17686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17687            ) -> Self {
17688                tuple.into()
17689            }
17690            #[inline]
17691            fn tokenize(&self) -> Self::Token<'_> {
17692                ()
17693            }
17694            #[inline]
17695            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17696                (
17697                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17698                        ret,
17699                    ),
17700                )
17701            }
17702            #[inline]
17703            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17704                <Self::ReturnTuple<
17705                    '_,
17706                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17707                    .map(|r| {
17708                        let r: tokenReturn = r.into();
17709                        r._0
17710                    })
17711            }
17712            #[inline]
17713            fn abi_decode_returns_validate(
17714                data: &[u8],
17715            ) -> alloy_sol_types::Result<Self::Return> {
17716                <Self::ReturnTuple<
17717                    '_,
17718                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17719                    .map(|r| {
17720                        let r: tokenReturn = r.into();
17721                        r._0
17722                    })
17723            }
17724        }
17725    };
17726    #[derive(serde::Serialize, serde::Deserialize)]
17727    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17728    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
17729```solidity
17730function transferOwnership(address newOwner) external;
17731```*/
17732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17733    #[derive(Clone)]
17734    pub struct transferOwnershipCall {
17735        #[allow(missing_docs)]
17736        pub newOwner: alloy::sol_types::private::Address,
17737    }
17738    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
17739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17740    #[derive(Clone)]
17741    pub struct transferOwnershipReturn {}
17742    #[allow(
17743        non_camel_case_types,
17744        non_snake_case,
17745        clippy::pub_underscore_fields,
17746        clippy::style
17747    )]
17748    const _: () = {
17749        use alloy::sol_types as alloy_sol_types;
17750        {
17751            #[doc(hidden)]
17752            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
17753            #[doc(hidden)]
17754            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
17755            #[cfg(test)]
17756            #[allow(dead_code, unreachable_patterns)]
17757            fn _type_assertion(
17758                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17759            ) {
17760                match _t {
17761                    alloy_sol_types::private::AssertTypeEq::<
17762                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17763                    >(_) => {}
17764                }
17765            }
17766            #[automatically_derived]
17767            #[doc(hidden)]
17768            impl ::core::convert::From<transferOwnershipCall>
17769            for UnderlyingRustTuple<'_> {
17770                fn from(value: transferOwnershipCall) -> Self {
17771                    (value.newOwner,)
17772                }
17773            }
17774            #[automatically_derived]
17775            #[doc(hidden)]
17776            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17777            for transferOwnershipCall {
17778                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17779                    Self { newOwner: tuple.0 }
17780                }
17781            }
17782        }
17783        {
17784            #[doc(hidden)]
17785            type UnderlyingSolTuple<'a> = ();
17786            #[doc(hidden)]
17787            type UnderlyingRustTuple<'a> = ();
17788            #[cfg(test)]
17789            #[allow(dead_code, unreachable_patterns)]
17790            fn _type_assertion(
17791                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17792            ) {
17793                match _t {
17794                    alloy_sol_types::private::AssertTypeEq::<
17795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17796                    >(_) => {}
17797                }
17798            }
17799            #[automatically_derived]
17800            #[doc(hidden)]
17801            impl ::core::convert::From<transferOwnershipReturn>
17802            for UnderlyingRustTuple<'_> {
17803                fn from(value: transferOwnershipReturn) -> Self {
17804                    ()
17805                }
17806            }
17807            #[automatically_derived]
17808            #[doc(hidden)]
17809            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17810            for transferOwnershipReturn {
17811                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17812                    Self {}
17813                }
17814            }
17815        }
17816        impl transferOwnershipReturn {
17817            fn _tokenize(
17818                &self,
17819            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17820                ()
17821            }
17822        }
17823        #[automatically_derived]
17824        impl alloy_sol_types::SolCall for transferOwnershipCall {
17825            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
17826            type Token<'a> = <Self::Parameters<
17827                'a,
17828            > as alloy_sol_types::SolType>::Token<'a>;
17829            type Return = transferOwnershipReturn;
17830            type ReturnTuple<'a> = ();
17831            type ReturnToken<'a> = <Self::ReturnTuple<
17832                'a,
17833            > as alloy_sol_types::SolType>::Token<'a>;
17834            const SIGNATURE: &'static str = "transferOwnership(address)";
17835            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
17836            #[inline]
17837            fn new<'a>(
17838                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17839            ) -> Self {
17840                tuple.into()
17841            }
17842            #[inline]
17843            fn tokenize(&self) -> Self::Token<'_> {
17844                (
17845                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17846                        &self.newOwner,
17847                    ),
17848                )
17849            }
17850            #[inline]
17851            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17852                transferOwnershipReturn::_tokenize(ret)
17853            }
17854            #[inline]
17855            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17856                <Self::ReturnTuple<
17857                    '_,
17858                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17859                    .map(Into::into)
17860            }
17861            #[inline]
17862            fn abi_decode_returns_validate(
17863                data: &[u8],
17864            ) -> alloy_sol_types::Result<Self::Return> {
17865                <Self::ReturnTuple<
17866                    '_,
17867                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
17868                    .map(Into::into)
17869            }
17870        }
17871    };
17872    #[derive(serde::Serialize, serde::Deserialize)]
17873    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17874    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
17875```solidity
17876function undelegate(address validator, uint256 amount) external;
17877```*/
17878    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17879    #[derive(Clone)]
17880    pub struct undelegateCall {
17881        #[allow(missing_docs)]
17882        pub validator: alloy::sol_types::private::Address,
17883        #[allow(missing_docs)]
17884        pub amount: alloy::sol_types::private::primitives::aliases::U256,
17885    }
17886    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
17887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17888    #[derive(Clone)]
17889    pub struct undelegateReturn {}
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            type UnderlyingSolTuple<'a> = (
17901                alloy::sol_types::sol_data::Address,
17902                alloy::sol_types::sol_data::Uint<256>,
17903            );
17904            #[doc(hidden)]
17905            type UnderlyingRustTuple<'a> = (
17906                alloy::sol_types::private::Address,
17907                alloy::sol_types::private::primitives::aliases::U256,
17908            );
17909            #[cfg(test)]
17910            #[allow(dead_code, unreachable_patterns)]
17911            fn _type_assertion(
17912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17913            ) {
17914                match _t {
17915                    alloy_sol_types::private::AssertTypeEq::<
17916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17917                    >(_) => {}
17918                }
17919            }
17920            #[automatically_derived]
17921            #[doc(hidden)]
17922            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
17923                fn from(value: undelegateCall) -> Self {
17924                    (value.validator, value.amount)
17925                }
17926            }
17927            #[automatically_derived]
17928            #[doc(hidden)]
17929            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
17930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17931                    Self {
17932                        validator: tuple.0,
17933                        amount: tuple.1,
17934                    }
17935                }
17936            }
17937        }
17938        {
17939            #[doc(hidden)]
17940            type UnderlyingSolTuple<'a> = ();
17941            #[doc(hidden)]
17942            type UnderlyingRustTuple<'a> = ();
17943            #[cfg(test)]
17944            #[allow(dead_code, unreachable_patterns)]
17945            fn _type_assertion(
17946                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17947            ) {
17948                match _t {
17949                    alloy_sol_types::private::AssertTypeEq::<
17950                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17951                    >(_) => {}
17952                }
17953            }
17954            #[automatically_derived]
17955            #[doc(hidden)]
17956            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
17957                fn from(value: undelegateReturn) -> Self {
17958                    ()
17959                }
17960            }
17961            #[automatically_derived]
17962            #[doc(hidden)]
17963            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
17964                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17965                    Self {}
17966                }
17967            }
17968        }
17969        impl undelegateReturn {
17970            fn _tokenize(
17971                &self,
17972            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17973                ()
17974            }
17975        }
17976        #[automatically_derived]
17977        impl alloy_sol_types::SolCall for undelegateCall {
17978            type Parameters<'a> = (
17979                alloy::sol_types::sol_data::Address,
17980                alloy::sol_types::sol_data::Uint<256>,
17981            );
17982            type Token<'a> = <Self::Parameters<
17983                'a,
17984            > as alloy_sol_types::SolType>::Token<'a>;
17985            type Return = undelegateReturn;
17986            type ReturnTuple<'a> = ();
17987            type ReturnToken<'a> = <Self::ReturnTuple<
17988                'a,
17989            > as alloy_sol_types::SolType>::Token<'a>;
17990            const SIGNATURE: &'static str = "undelegate(address,uint256)";
17991            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
17992            #[inline]
17993            fn new<'a>(
17994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17995            ) -> Self {
17996                tuple.into()
17997            }
17998            #[inline]
17999            fn tokenize(&self) -> Self::Token<'_> {
18000                (
18001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18002                        &self.validator,
18003                    ),
18004                    <alloy::sol_types::sol_data::Uint<
18005                        256,
18006                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18007                )
18008            }
18009            #[inline]
18010            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18011                undelegateReturn::_tokenize(ret)
18012            }
18013            #[inline]
18014            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18015                <Self::ReturnTuple<
18016                    '_,
18017                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18018                    .map(Into::into)
18019            }
18020            #[inline]
18021            fn abi_decode_returns_validate(
18022                data: &[u8],
18023            ) -> alloy_sol_types::Result<Self::Return> {
18024                <Self::ReturnTuple<
18025                    '_,
18026                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18027                    .map(Into::into)
18028            }
18029        }
18030    };
18031    #[derive(serde::Serialize, serde::Deserialize)]
18032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18033    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
18034```solidity
18035function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
18036```*/
18037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18038    #[derive(Clone)]
18039    pub struct undelegationsCall {
18040        #[allow(missing_docs)]
18041        pub validator: alloy::sol_types::private::Address,
18042        #[allow(missing_docs)]
18043        pub delegator: alloy::sol_types::private::Address,
18044    }
18045    #[derive(serde::Serialize, serde::Deserialize)]
18046    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18047    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
18048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18049    #[derive(Clone)]
18050    pub struct undelegationsReturn {
18051        #[allow(missing_docs)]
18052        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18053        #[allow(missing_docs)]
18054        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
18055    }
18056    #[allow(
18057        non_camel_case_types,
18058        non_snake_case,
18059        clippy::pub_underscore_fields,
18060        clippy::style
18061    )]
18062    const _: () = {
18063        use alloy::sol_types as alloy_sol_types;
18064        {
18065            #[doc(hidden)]
18066            type UnderlyingSolTuple<'a> = (
18067                alloy::sol_types::sol_data::Address,
18068                alloy::sol_types::sol_data::Address,
18069            );
18070            #[doc(hidden)]
18071            type UnderlyingRustTuple<'a> = (
18072                alloy::sol_types::private::Address,
18073                alloy::sol_types::private::Address,
18074            );
18075            #[cfg(test)]
18076            #[allow(dead_code, unreachable_patterns)]
18077            fn _type_assertion(
18078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18079            ) {
18080                match _t {
18081                    alloy_sol_types::private::AssertTypeEq::<
18082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18083                    >(_) => {}
18084                }
18085            }
18086            #[automatically_derived]
18087            #[doc(hidden)]
18088            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
18089                fn from(value: undelegationsCall) -> Self {
18090                    (value.validator, value.delegator)
18091                }
18092            }
18093            #[automatically_derived]
18094            #[doc(hidden)]
18095            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
18096                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18097                    Self {
18098                        validator: tuple.0,
18099                        delegator: tuple.1,
18100                    }
18101                }
18102            }
18103        }
18104        {
18105            #[doc(hidden)]
18106            type UnderlyingSolTuple<'a> = (
18107                alloy::sol_types::sol_data::Uint<256>,
18108                alloy::sol_types::sol_data::Uint<256>,
18109            );
18110            #[doc(hidden)]
18111            type UnderlyingRustTuple<'a> = (
18112                alloy::sol_types::private::primitives::aliases::U256,
18113                alloy::sol_types::private::primitives::aliases::U256,
18114            );
18115            #[cfg(test)]
18116            #[allow(dead_code, unreachable_patterns)]
18117            fn _type_assertion(
18118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18119            ) {
18120                match _t {
18121                    alloy_sol_types::private::AssertTypeEq::<
18122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18123                    >(_) => {}
18124                }
18125            }
18126            #[automatically_derived]
18127            #[doc(hidden)]
18128            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
18129                fn from(value: undelegationsReturn) -> Self {
18130                    (value.amount, value.unlocksAt)
18131                }
18132            }
18133            #[automatically_derived]
18134            #[doc(hidden)]
18135            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
18136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18137                    Self {
18138                        amount: tuple.0,
18139                        unlocksAt: tuple.1,
18140                    }
18141                }
18142            }
18143        }
18144        impl undelegationsReturn {
18145            fn _tokenize(
18146                &self,
18147            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18148                (
18149                    <alloy::sol_types::sol_data::Uint<
18150                        256,
18151                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18152                    <alloy::sol_types::sol_data::Uint<
18153                        256,
18154                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
18155                )
18156            }
18157        }
18158        #[automatically_derived]
18159        impl alloy_sol_types::SolCall for undelegationsCall {
18160            type Parameters<'a> = (
18161                alloy::sol_types::sol_data::Address,
18162                alloy::sol_types::sol_data::Address,
18163            );
18164            type Token<'a> = <Self::Parameters<
18165                'a,
18166            > as alloy_sol_types::SolType>::Token<'a>;
18167            type Return = undelegationsReturn;
18168            type ReturnTuple<'a> = (
18169                alloy::sol_types::sol_data::Uint<256>,
18170                alloy::sol_types::sol_data::Uint<256>,
18171            );
18172            type ReturnToken<'a> = <Self::ReturnTuple<
18173                'a,
18174            > as alloy_sol_types::SolType>::Token<'a>;
18175            const SIGNATURE: &'static str = "undelegations(address,address)";
18176            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
18177            #[inline]
18178            fn new<'a>(
18179                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18180            ) -> Self {
18181                tuple.into()
18182            }
18183            #[inline]
18184            fn tokenize(&self) -> Self::Token<'_> {
18185                (
18186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18187                        &self.validator,
18188                    ),
18189                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18190                        &self.delegator,
18191                    ),
18192                )
18193            }
18194            #[inline]
18195            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18196                undelegationsReturn::_tokenize(ret)
18197            }
18198            #[inline]
18199            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18200                <Self::ReturnTuple<
18201                    '_,
18202                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18203                    .map(Into::into)
18204            }
18205            #[inline]
18206            fn abi_decode_returns_validate(
18207                data: &[u8],
18208            ) -> alloy_sol_types::Result<Self::Return> {
18209                <Self::ReturnTuple<
18210                    '_,
18211                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18212                    .map(Into::into)
18213            }
18214        }
18215    };
18216    #[derive(serde::Serialize, serde::Deserialize)]
18217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18218    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
18219```solidity
18220function unpause() external;
18221```*/
18222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18223    #[derive(Clone)]
18224    pub struct unpauseCall;
18225    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
18226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18227    #[derive(Clone)]
18228    pub struct unpauseReturn {}
18229    #[allow(
18230        non_camel_case_types,
18231        non_snake_case,
18232        clippy::pub_underscore_fields,
18233        clippy::style
18234    )]
18235    const _: () = {
18236        use alloy::sol_types as alloy_sol_types;
18237        {
18238            #[doc(hidden)]
18239            type UnderlyingSolTuple<'a> = ();
18240            #[doc(hidden)]
18241            type UnderlyingRustTuple<'a> = ();
18242            #[cfg(test)]
18243            #[allow(dead_code, unreachable_patterns)]
18244            fn _type_assertion(
18245                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18246            ) {
18247                match _t {
18248                    alloy_sol_types::private::AssertTypeEq::<
18249                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18250                    >(_) => {}
18251                }
18252            }
18253            #[automatically_derived]
18254            #[doc(hidden)]
18255            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
18256                fn from(value: unpauseCall) -> Self {
18257                    ()
18258                }
18259            }
18260            #[automatically_derived]
18261            #[doc(hidden)]
18262            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
18263                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18264                    Self
18265                }
18266            }
18267        }
18268        {
18269            #[doc(hidden)]
18270            type UnderlyingSolTuple<'a> = ();
18271            #[doc(hidden)]
18272            type UnderlyingRustTuple<'a> = ();
18273            #[cfg(test)]
18274            #[allow(dead_code, unreachable_patterns)]
18275            fn _type_assertion(
18276                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18277            ) {
18278                match _t {
18279                    alloy_sol_types::private::AssertTypeEq::<
18280                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18281                    >(_) => {}
18282                }
18283            }
18284            #[automatically_derived]
18285            #[doc(hidden)]
18286            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
18287                fn from(value: unpauseReturn) -> Self {
18288                    ()
18289                }
18290            }
18291            #[automatically_derived]
18292            #[doc(hidden)]
18293            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
18294                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18295                    Self {}
18296                }
18297            }
18298        }
18299        impl unpauseReturn {
18300            fn _tokenize(
18301                &self,
18302            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18303                ()
18304            }
18305        }
18306        #[automatically_derived]
18307        impl alloy_sol_types::SolCall for unpauseCall {
18308            type Parameters<'a> = ();
18309            type Token<'a> = <Self::Parameters<
18310                'a,
18311            > as alloy_sol_types::SolType>::Token<'a>;
18312            type Return = unpauseReturn;
18313            type ReturnTuple<'a> = ();
18314            type ReturnToken<'a> = <Self::ReturnTuple<
18315                'a,
18316            > as alloy_sol_types::SolType>::Token<'a>;
18317            const SIGNATURE: &'static str = "unpause()";
18318            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
18319            #[inline]
18320            fn new<'a>(
18321                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18322            ) -> Self {
18323                tuple.into()
18324            }
18325            #[inline]
18326            fn tokenize(&self) -> Self::Token<'_> {
18327                ()
18328            }
18329            #[inline]
18330            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18331                unpauseReturn::_tokenize(ret)
18332            }
18333            #[inline]
18334            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18335                <Self::ReturnTuple<
18336                    '_,
18337                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18338                    .map(Into::into)
18339            }
18340            #[inline]
18341            fn abi_decode_returns_validate(
18342                data: &[u8],
18343            ) -> alloy_sol_types::Result<Self::Return> {
18344                <Self::ReturnTuple<
18345                    '_,
18346                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18347                    .map(Into::into)
18348            }
18349        }
18350    };
18351    #[derive(serde::Serialize, serde::Deserialize)]
18352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18353    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
18354```solidity
18355function updateCommission(uint16 newCommission) external;
18356```*/
18357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18358    #[derive(Clone)]
18359    pub struct updateCommissionCall {
18360        #[allow(missing_docs)]
18361        pub newCommission: u16,
18362    }
18363    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
18364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18365    #[derive(Clone)]
18366    pub struct updateCommissionReturn {}
18367    #[allow(
18368        non_camel_case_types,
18369        non_snake_case,
18370        clippy::pub_underscore_fields,
18371        clippy::style
18372    )]
18373    const _: () = {
18374        use alloy::sol_types as alloy_sol_types;
18375        {
18376            #[doc(hidden)]
18377            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18378            #[doc(hidden)]
18379            type UnderlyingRustTuple<'a> = (u16,);
18380            #[cfg(test)]
18381            #[allow(dead_code, unreachable_patterns)]
18382            fn _type_assertion(
18383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18384            ) {
18385                match _t {
18386                    alloy_sol_types::private::AssertTypeEq::<
18387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18388                    >(_) => {}
18389                }
18390            }
18391            #[automatically_derived]
18392            #[doc(hidden)]
18393            impl ::core::convert::From<updateCommissionCall>
18394            for UnderlyingRustTuple<'_> {
18395                fn from(value: updateCommissionCall) -> Self {
18396                    (value.newCommission,)
18397                }
18398            }
18399            #[automatically_derived]
18400            #[doc(hidden)]
18401            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18402            for updateCommissionCall {
18403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18404                    Self { newCommission: tuple.0 }
18405                }
18406            }
18407        }
18408        {
18409            #[doc(hidden)]
18410            type UnderlyingSolTuple<'a> = ();
18411            #[doc(hidden)]
18412            type UnderlyingRustTuple<'a> = ();
18413            #[cfg(test)]
18414            #[allow(dead_code, unreachable_patterns)]
18415            fn _type_assertion(
18416                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18417            ) {
18418                match _t {
18419                    alloy_sol_types::private::AssertTypeEq::<
18420                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18421                    >(_) => {}
18422                }
18423            }
18424            #[automatically_derived]
18425            #[doc(hidden)]
18426            impl ::core::convert::From<updateCommissionReturn>
18427            for UnderlyingRustTuple<'_> {
18428                fn from(value: updateCommissionReturn) -> Self {
18429                    ()
18430                }
18431            }
18432            #[automatically_derived]
18433            #[doc(hidden)]
18434            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18435            for updateCommissionReturn {
18436                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18437                    Self {}
18438                }
18439            }
18440        }
18441        impl updateCommissionReturn {
18442            fn _tokenize(
18443                &self,
18444            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18445                ()
18446            }
18447        }
18448        #[automatically_derived]
18449        impl alloy_sol_types::SolCall for updateCommissionCall {
18450            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
18451            type Token<'a> = <Self::Parameters<
18452                'a,
18453            > as alloy_sol_types::SolType>::Token<'a>;
18454            type Return = updateCommissionReturn;
18455            type ReturnTuple<'a> = ();
18456            type ReturnToken<'a> = <Self::ReturnTuple<
18457                'a,
18458            > as alloy_sol_types::SolType>::Token<'a>;
18459            const SIGNATURE: &'static str = "updateCommission(uint16)";
18460            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
18461            #[inline]
18462            fn new<'a>(
18463                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18464            ) -> Self {
18465                tuple.into()
18466            }
18467            #[inline]
18468            fn tokenize(&self) -> Self::Token<'_> {
18469                (
18470                    <alloy::sol_types::sol_data::Uint<
18471                        16,
18472                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
18473                )
18474            }
18475            #[inline]
18476            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18477                updateCommissionReturn::_tokenize(ret)
18478            }
18479            #[inline]
18480            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18481                <Self::ReturnTuple<
18482                    '_,
18483                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18484                    .map(Into::into)
18485            }
18486            #[inline]
18487            fn abi_decode_returns_validate(
18488                data: &[u8],
18489            ) -> alloy_sol_types::Result<Self::Return> {
18490                <Self::ReturnTuple<
18491                    '_,
18492                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18493                    .map(Into::into)
18494            }
18495        }
18496    };
18497    #[derive(serde::Serialize, serde::Deserialize)]
18498    #[derive()]
18499    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
18500```solidity
18501function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
18502```*/
18503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18504    #[derive(Clone)]
18505    pub struct updateConsensusKeysCall {
18506        #[allow(missing_docs)]
18507        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18508        #[allow(missing_docs)]
18509        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18510        #[allow(missing_docs)]
18511        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18512    }
18513    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
18514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18515    #[derive(Clone)]
18516    pub struct updateConsensusKeysReturn {}
18517    #[allow(
18518        non_camel_case_types,
18519        non_snake_case,
18520        clippy::pub_underscore_fields,
18521        clippy::style
18522    )]
18523    const _: () = {
18524        use alloy::sol_types as alloy_sol_types;
18525        {
18526            #[doc(hidden)]
18527            type UnderlyingSolTuple<'a> = (
18528                BN254::G2Point,
18529                EdOnBN254::EdOnBN254Point,
18530                BN254::G1Point,
18531            );
18532            #[doc(hidden)]
18533            type UnderlyingRustTuple<'a> = (
18534                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18535                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18536                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18537            );
18538            #[cfg(test)]
18539            #[allow(dead_code, unreachable_patterns)]
18540            fn _type_assertion(
18541                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18542            ) {
18543                match _t {
18544                    alloy_sol_types::private::AssertTypeEq::<
18545                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18546                    >(_) => {}
18547                }
18548            }
18549            #[automatically_derived]
18550            #[doc(hidden)]
18551            impl ::core::convert::From<updateConsensusKeysCall>
18552            for UnderlyingRustTuple<'_> {
18553                fn from(value: updateConsensusKeysCall) -> Self {
18554                    (value._0, value._1, value._2)
18555                }
18556            }
18557            #[automatically_derived]
18558            #[doc(hidden)]
18559            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18560            for updateConsensusKeysCall {
18561                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18562                    Self {
18563                        _0: tuple.0,
18564                        _1: tuple.1,
18565                        _2: tuple.2,
18566                    }
18567                }
18568            }
18569        }
18570        {
18571            #[doc(hidden)]
18572            type UnderlyingSolTuple<'a> = ();
18573            #[doc(hidden)]
18574            type UnderlyingRustTuple<'a> = ();
18575            #[cfg(test)]
18576            #[allow(dead_code, unreachable_patterns)]
18577            fn _type_assertion(
18578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18579            ) {
18580                match _t {
18581                    alloy_sol_types::private::AssertTypeEq::<
18582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18583                    >(_) => {}
18584                }
18585            }
18586            #[automatically_derived]
18587            #[doc(hidden)]
18588            impl ::core::convert::From<updateConsensusKeysReturn>
18589            for UnderlyingRustTuple<'_> {
18590                fn from(value: updateConsensusKeysReturn) -> Self {
18591                    ()
18592                }
18593            }
18594            #[automatically_derived]
18595            #[doc(hidden)]
18596            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18597            for updateConsensusKeysReturn {
18598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18599                    Self {}
18600                }
18601            }
18602        }
18603        impl updateConsensusKeysReturn {
18604            fn _tokenize(
18605                &self,
18606            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18607                ()
18608            }
18609        }
18610        #[automatically_derived]
18611        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
18612            type Parameters<'a> = (
18613                BN254::G2Point,
18614                EdOnBN254::EdOnBN254Point,
18615                BN254::G1Point,
18616            );
18617            type Token<'a> = <Self::Parameters<
18618                'a,
18619            > as alloy_sol_types::SolType>::Token<'a>;
18620            type Return = updateConsensusKeysReturn;
18621            type ReturnTuple<'a> = ();
18622            type ReturnToken<'a> = <Self::ReturnTuple<
18623                'a,
18624            > as alloy_sol_types::SolType>::Token<'a>;
18625            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
18626            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
18627            #[inline]
18628            fn new<'a>(
18629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18630            ) -> Self {
18631                tuple.into()
18632            }
18633            #[inline]
18634            fn tokenize(&self) -> Self::Token<'_> {
18635                (
18636                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
18637                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18638                        &self._1,
18639                    ),
18640                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
18641                )
18642            }
18643            #[inline]
18644            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18645                updateConsensusKeysReturn::_tokenize(ret)
18646            }
18647            #[inline]
18648            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18649                <Self::ReturnTuple<
18650                    '_,
18651                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18652                    .map(Into::into)
18653            }
18654            #[inline]
18655            fn abi_decode_returns_validate(
18656                data: &[u8],
18657            ) -> alloy_sol_types::Result<Self::Return> {
18658                <Self::ReturnTuple<
18659                    '_,
18660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18661                    .map(Into::into)
18662            }
18663        }
18664    };
18665    #[derive(serde::Serialize, serde::Deserialize)]
18666    #[derive()]
18667    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
18668```solidity
18669function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
18670```*/
18671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18672    #[derive(Clone)]
18673    pub struct updateConsensusKeysV2Call {
18674        #[allow(missing_docs)]
18675        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18676        #[allow(missing_docs)]
18677        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18678        #[allow(missing_docs)]
18679        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18680        #[allow(missing_docs)]
18681        pub schnorrSig: alloy::sol_types::private::Bytes,
18682    }
18683    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
18684    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18685    #[derive(Clone)]
18686    pub struct updateConsensusKeysV2Return {}
18687    #[allow(
18688        non_camel_case_types,
18689        non_snake_case,
18690        clippy::pub_underscore_fields,
18691        clippy::style
18692    )]
18693    const _: () = {
18694        use alloy::sol_types as alloy_sol_types;
18695        {
18696            #[doc(hidden)]
18697            type UnderlyingSolTuple<'a> = (
18698                BN254::G2Point,
18699                EdOnBN254::EdOnBN254Point,
18700                BN254::G1Point,
18701                alloy::sol_types::sol_data::Bytes,
18702            );
18703            #[doc(hidden)]
18704            type UnderlyingRustTuple<'a> = (
18705                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
18706                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
18707                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
18708                alloy::sol_types::private::Bytes,
18709            );
18710            #[cfg(test)]
18711            #[allow(dead_code, unreachable_patterns)]
18712            fn _type_assertion(
18713                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18714            ) {
18715                match _t {
18716                    alloy_sol_types::private::AssertTypeEq::<
18717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18718                    >(_) => {}
18719                }
18720            }
18721            #[automatically_derived]
18722            #[doc(hidden)]
18723            impl ::core::convert::From<updateConsensusKeysV2Call>
18724            for UnderlyingRustTuple<'_> {
18725                fn from(value: updateConsensusKeysV2Call) -> Self {
18726                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
18727                }
18728            }
18729            #[automatically_derived]
18730            #[doc(hidden)]
18731            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18732            for updateConsensusKeysV2Call {
18733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18734                    Self {
18735                        blsVK: tuple.0,
18736                        schnorrVK: tuple.1,
18737                        blsSig: tuple.2,
18738                        schnorrSig: tuple.3,
18739                    }
18740                }
18741            }
18742        }
18743        {
18744            #[doc(hidden)]
18745            type UnderlyingSolTuple<'a> = ();
18746            #[doc(hidden)]
18747            type UnderlyingRustTuple<'a> = ();
18748            #[cfg(test)]
18749            #[allow(dead_code, unreachable_patterns)]
18750            fn _type_assertion(
18751                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18752            ) {
18753                match _t {
18754                    alloy_sol_types::private::AssertTypeEq::<
18755                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18756                    >(_) => {}
18757                }
18758            }
18759            #[automatically_derived]
18760            #[doc(hidden)]
18761            impl ::core::convert::From<updateConsensusKeysV2Return>
18762            for UnderlyingRustTuple<'_> {
18763                fn from(value: updateConsensusKeysV2Return) -> Self {
18764                    ()
18765                }
18766            }
18767            #[automatically_derived]
18768            #[doc(hidden)]
18769            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18770            for updateConsensusKeysV2Return {
18771                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18772                    Self {}
18773                }
18774            }
18775        }
18776        impl updateConsensusKeysV2Return {
18777            fn _tokenize(
18778                &self,
18779            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
18780                '_,
18781            > {
18782                ()
18783            }
18784        }
18785        #[automatically_derived]
18786        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
18787            type Parameters<'a> = (
18788                BN254::G2Point,
18789                EdOnBN254::EdOnBN254Point,
18790                BN254::G1Point,
18791                alloy::sol_types::sol_data::Bytes,
18792            );
18793            type Token<'a> = <Self::Parameters<
18794                'a,
18795            > as alloy_sol_types::SolType>::Token<'a>;
18796            type Return = updateConsensusKeysV2Return;
18797            type ReturnTuple<'a> = ();
18798            type ReturnToken<'a> = <Self::ReturnTuple<
18799                'a,
18800            > as alloy_sol_types::SolType>::Token<'a>;
18801            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
18802            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
18803            #[inline]
18804            fn new<'a>(
18805                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18806            ) -> Self {
18807                tuple.into()
18808            }
18809            #[inline]
18810            fn tokenize(&self) -> Self::Token<'_> {
18811                (
18812                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
18813                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
18814                        &self.schnorrVK,
18815                    ),
18816                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
18817                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
18818                        &self.schnorrSig,
18819                    ),
18820                )
18821            }
18822            #[inline]
18823            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18824                updateConsensusKeysV2Return::_tokenize(ret)
18825            }
18826            #[inline]
18827            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18828                <Self::ReturnTuple<
18829                    '_,
18830                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18831                    .map(Into::into)
18832            }
18833            #[inline]
18834            fn abi_decode_returns_validate(
18835                data: &[u8],
18836            ) -> alloy_sol_types::Result<Self::Return> {
18837                <Self::ReturnTuple<
18838                    '_,
18839                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18840                    .map(Into::into)
18841            }
18842        }
18843    };
18844    #[derive(serde::Serialize, serde::Deserialize)]
18845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18846    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
18847```solidity
18848function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
18849```*/
18850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18851    #[derive(Clone)]
18852    pub struct updateExitEscrowPeriodCall {
18853        #[allow(missing_docs)]
18854        pub newExitEscrowPeriod: u64,
18855    }
18856    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
18857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18858    #[derive(Clone)]
18859    pub struct updateExitEscrowPeriodReturn {}
18860    #[allow(
18861        non_camel_case_types,
18862        non_snake_case,
18863        clippy::pub_underscore_fields,
18864        clippy::style
18865    )]
18866    const _: () = {
18867        use alloy::sol_types as alloy_sol_types;
18868        {
18869            #[doc(hidden)]
18870            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
18871            #[doc(hidden)]
18872            type UnderlyingRustTuple<'a> = (u64,);
18873            #[cfg(test)]
18874            #[allow(dead_code, unreachable_patterns)]
18875            fn _type_assertion(
18876                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18877            ) {
18878                match _t {
18879                    alloy_sol_types::private::AssertTypeEq::<
18880                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18881                    >(_) => {}
18882                }
18883            }
18884            #[automatically_derived]
18885            #[doc(hidden)]
18886            impl ::core::convert::From<updateExitEscrowPeriodCall>
18887            for UnderlyingRustTuple<'_> {
18888                fn from(value: updateExitEscrowPeriodCall) -> Self {
18889                    (value.newExitEscrowPeriod,)
18890                }
18891            }
18892            #[automatically_derived]
18893            #[doc(hidden)]
18894            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18895            for updateExitEscrowPeriodCall {
18896                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18897                    Self {
18898                        newExitEscrowPeriod: tuple.0,
18899                    }
18900                }
18901            }
18902        }
18903        {
18904            #[doc(hidden)]
18905            type UnderlyingSolTuple<'a> = ();
18906            #[doc(hidden)]
18907            type UnderlyingRustTuple<'a> = ();
18908            #[cfg(test)]
18909            #[allow(dead_code, unreachable_patterns)]
18910            fn _type_assertion(
18911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18912            ) {
18913                match _t {
18914                    alloy_sol_types::private::AssertTypeEq::<
18915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18916                    >(_) => {}
18917                }
18918            }
18919            #[automatically_derived]
18920            #[doc(hidden)]
18921            impl ::core::convert::From<updateExitEscrowPeriodReturn>
18922            for UnderlyingRustTuple<'_> {
18923                fn from(value: updateExitEscrowPeriodReturn) -> Self {
18924                    ()
18925                }
18926            }
18927            #[automatically_derived]
18928            #[doc(hidden)]
18929            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18930            for updateExitEscrowPeriodReturn {
18931                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18932                    Self {}
18933                }
18934            }
18935        }
18936        impl updateExitEscrowPeriodReturn {
18937            fn _tokenize(
18938                &self,
18939            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
18940                '_,
18941            > {
18942                ()
18943            }
18944        }
18945        #[automatically_derived]
18946        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
18947            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
18948            type Token<'a> = <Self::Parameters<
18949                'a,
18950            > as alloy_sol_types::SolType>::Token<'a>;
18951            type Return = updateExitEscrowPeriodReturn;
18952            type ReturnTuple<'a> = ();
18953            type ReturnToken<'a> = <Self::ReturnTuple<
18954                'a,
18955            > as alloy_sol_types::SolType>::Token<'a>;
18956            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
18957            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
18958            #[inline]
18959            fn new<'a>(
18960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18961            ) -> Self {
18962                tuple.into()
18963            }
18964            #[inline]
18965            fn tokenize(&self) -> Self::Token<'_> {
18966                (
18967                    <alloy::sol_types::sol_data::Uint<
18968                        64,
18969                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
18970                )
18971            }
18972            #[inline]
18973            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18974                updateExitEscrowPeriodReturn::_tokenize(ret)
18975            }
18976            #[inline]
18977            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18978                <Self::ReturnTuple<
18979                    '_,
18980                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18981                    .map(Into::into)
18982            }
18983            #[inline]
18984            fn abi_decode_returns_validate(
18985                data: &[u8],
18986            ) -> alloy_sol_types::Result<Self::Return> {
18987                <Self::ReturnTuple<
18988                    '_,
18989                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
18990                    .map(Into::into)
18991            }
18992        }
18993    };
18994    #[derive(serde::Serialize, serde::Deserialize)]
18995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18996    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
18997```solidity
18998function updateMetadataUri(string memory metadataUri) external;
18999```*/
19000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19001    #[derive(Clone)]
19002    pub struct updateMetadataUriCall {
19003        #[allow(missing_docs)]
19004        pub metadataUri: alloy::sol_types::private::String,
19005    }
19006    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
19007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19008    #[derive(Clone)]
19009    pub struct updateMetadataUriReturn {}
19010    #[allow(
19011        non_camel_case_types,
19012        non_snake_case,
19013        clippy::pub_underscore_fields,
19014        clippy::style
19015    )]
19016    const _: () = {
19017        use alloy::sol_types as alloy_sol_types;
19018        {
19019            #[doc(hidden)]
19020            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19021            #[doc(hidden)]
19022            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19023            #[cfg(test)]
19024            #[allow(dead_code, unreachable_patterns)]
19025            fn _type_assertion(
19026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19027            ) {
19028                match _t {
19029                    alloy_sol_types::private::AssertTypeEq::<
19030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19031                    >(_) => {}
19032                }
19033            }
19034            #[automatically_derived]
19035            #[doc(hidden)]
19036            impl ::core::convert::From<updateMetadataUriCall>
19037            for UnderlyingRustTuple<'_> {
19038                fn from(value: updateMetadataUriCall) -> Self {
19039                    (value.metadataUri,)
19040                }
19041            }
19042            #[automatically_derived]
19043            #[doc(hidden)]
19044            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19045            for updateMetadataUriCall {
19046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19047                    Self { metadataUri: tuple.0 }
19048                }
19049            }
19050        }
19051        {
19052            #[doc(hidden)]
19053            type UnderlyingSolTuple<'a> = ();
19054            #[doc(hidden)]
19055            type UnderlyingRustTuple<'a> = ();
19056            #[cfg(test)]
19057            #[allow(dead_code, unreachable_patterns)]
19058            fn _type_assertion(
19059                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19060            ) {
19061                match _t {
19062                    alloy_sol_types::private::AssertTypeEq::<
19063                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19064                    >(_) => {}
19065                }
19066            }
19067            #[automatically_derived]
19068            #[doc(hidden)]
19069            impl ::core::convert::From<updateMetadataUriReturn>
19070            for UnderlyingRustTuple<'_> {
19071                fn from(value: updateMetadataUriReturn) -> Self {
19072                    ()
19073                }
19074            }
19075            #[automatically_derived]
19076            #[doc(hidden)]
19077            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19078            for updateMetadataUriReturn {
19079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19080                    Self {}
19081                }
19082            }
19083        }
19084        impl updateMetadataUriReturn {
19085            fn _tokenize(
19086                &self,
19087            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19088                ()
19089            }
19090        }
19091        #[automatically_derived]
19092        impl alloy_sol_types::SolCall for updateMetadataUriCall {
19093            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
19094            type Token<'a> = <Self::Parameters<
19095                'a,
19096            > as alloy_sol_types::SolType>::Token<'a>;
19097            type Return = updateMetadataUriReturn;
19098            type ReturnTuple<'a> = ();
19099            type ReturnToken<'a> = <Self::ReturnTuple<
19100                'a,
19101            > as alloy_sol_types::SolType>::Token<'a>;
19102            const SIGNATURE: &'static str = "updateMetadataUri(string)";
19103            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
19104            #[inline]
19105            fn new<'a>(
19106                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19107            ) -> Self {
19108                tuple.into()
19109            }
19110            #[inline]
19111            fn tokenize(&self) -> Self::Token<'_> {
19112                (
19113                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
19114                        &self.metadataUri,
19115                    ),
19116                )
19117            }
19118            #[inline]
19119            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19120                updateMetadataUriReturn::_tokenize(ret)
19121            }
19122            #[inline]
19123            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19124                <Self::ReturnTuple<
19125                    '_,
19126                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19127                    .map(Into::into)
19128            }
19129            #[inline]
19130            fn abi_decode_returns_validate(
19131                data: &[u8],
19132            ) -> alloy_sol_types::Result<Self::Return> {
19133                <Self::ReturnTuple<
19134                    '_,
19135                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19136                    .map(Into::into)
19137            }
19138        }
19139    };
19140    #[derive(serde::Serialize, serde::Deserialize)]
19141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19142    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
19143```solidity
19144function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
19145```*/
19146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19147    #[derive(Clone)]
19148    pub struct upgradeToAndCallCall {
19149        #[allow(missing_docs)]
19150        pub newImplementation: alloy::sol_types::private::Address,
19151        #[allow(missing_docs)]
19152        pub data: alloy::sol_types::private::Bytes,
19153    }
19154    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
19155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19156    #[derive(Clone)]
19157    pub struct upgradeToAndCallReturn {}
19158    #[allow(
19159        non_camel_case_types,
19160        non_snake_case,
19161        clippy::pub_underscore_fields,
19162        clippy::style
19163    )]
19164    const _: () = {
19165        use alloy::sol_types as alloy_sol_types;
19166        {
19167            #[doc(hidden)]
19168            type UnderlyingSolTuple<'a> = (
19169                alloy::sol_types::sol_data::Address,
19170                alloy::sol_types::sol_data::Bytes,
19171            );
19172            #[doc(hidden)]
19173            type UnderlyingRustTuple<'a> = (
19174                alloy::sol_types::private::Address,
19175                alloy::sol_types::private::Bytes,
19176            );
19177            #[cfg(test)]
19178            #[allow(dead_code, unreachable_patterns)]
19179            fn _type_assertion(
19180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19181            ) {
19182                match _t {
19183                    alloy_sol_types::private::AssertTypeEq::<
19184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19185                    >(_) => {}
19186                }
19187            }
19188            #[automatically_derived]
19189            #[doc(hidden)]
19190            impl ::core::convert::From<upgradeToAndCallCall>
19191            for UnderlyingRustTuple<'_> {
19192                fn from(value: upgradeToAndCallCall) -> Self {
19193                    (value.newImplementation, value.data)
19194                }
19195            }
19196            #[automatically_derived]
19197            #[doc(hidden)]
19198            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19199            for upgradeToAndCallCall {
19200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19201                    Self {
19202                        newImplementation: tuple.0,
19203                        data: tuple.1,
19204                    }
19205                }
19206            }
19207        }
19208        {
19209            #[doc(hidden)]
19210            type UnderlyingSolTuple<'a> = ();
19211            #[doc(hidden)]
19212            type UnderlyingRustTuple<'a> = ();
19213            #[cfg(test)]
19214            #[allow(dead_code, unreachable_patterns)]
19215            fn _type_assertion(
19216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19217            ) {
19218                match _t {
19219                    alloy_sol_types::private::AssertTypeEq::<
19220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19221                    >(_) => {}
19222                }
19223            }
19224            #[automatically_derived]
19225            #[doc(hidden)]
19226            impl ::core::convert::From<upgradeToAndCallReturn>
19227            for UnderlyingRustTuple<'_> {
19228                fn from(value: upgradeToAndCallReturn) -> Self {
19229                    ()
19230                }
19231            }
19232            #[automatically_derived]
19233            #[doc(hidden)]
19234            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19235            for upgradeToAndCallReturn {
19236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19237                    Self {}
19238                }
19239            }
19240        }
19241        impl upgradeToAndCallReturn {
19242            fn _tokenize(
19243                &self,
19244            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19245                ()
19246            }
19247        }
19248        #[automatically_derived]
19249        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
19250            type Parameters<'a> = (
19251                alloy::sol_types::sol_data::Address,
19252                alloy::sol_types::sol_data::Bytes,
19253            );
19254            type Token<'a> = <Self::Parameters<
19255                'a,
19256            > as alloy_sol_types::SolType>::Token<'a>;
19257            type Return = upgradeToAndCallReturn;
19258            type ReturnTuple<'a> = ();
19259            type ReturnToken<'a> = <Self::ReturnTuple<
19260                'a,
19261            > as alloy_sol_types::SolType>::Token<'a>;
19262            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
19263            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
19264            #[inline]
19265            fn new<'a>(
19266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19267            ) -> Self {
19268                tuple.into()
19269            }
19270            #[inline]
19271            fn tokenize(&self) -> Self::Token<'_> {
19272                (
19273                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19274                        &self.newImplementation,
19275                    ),
19276                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
19277                        &self.data,
19278                    ),
19279                )
19280            }
19281            #[inline]
19282            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19283                upgradeToAndCallReturn::_tokenize(ret)
19284            }
19285            #[inline]
19286            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19287                <Self::ReturnTuple<
19288                    '_,
19289                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19290                    .map(Into::into)
19291            }
19292            #[inline]
19293            fn abi_decode_returns_validate(
19294                data: &[u8],
19295            ) -> alloy_sol_types::Result<Self::Return> {
19296                <Self::ReturnTuple<
19297                    '_,
19298                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19299                    .map(Into::into)
19300            }
19301        }
19302    };
19303    #[derive(serde::Serialize, serde::Deserialize)]
19304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19305    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
19306```solidity
19307function validateMetadataUri(string memory metadataUri) external pure;
19308```*/
19309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19310    #[derive(Clone)]
19311    pub struct validateMetadataUriCall {
19312        #[allow(missing_docs)]
19313        pub metadataUri: alloy::sol_types::private::String,
19314    }
19315    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
19316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19317    #[derive(Clone)]
19318    pub struct validateMetadataUriReturn {}
19319    #[allow(
19320        non_camel_case_types,
19321        non_snake_case,
19322        clippy::pub_underscore_fields,
19323        clippy::style
19324    )]
19325    const _: () = {
19326        use alloy::sol_types as alloy_sol_types;
19327        {
19328            #[doc(hidden)]
19329            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
19330            #[doc(hidden)]
19331            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
19332            #[cfg(test)]
19333            #[allow(dead_code, unreachable_patterns)]
19334            fn _type_assertion(
19335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19336            ) {
19337                match _t {
19338                    alloy_sol_types::private::AssertTypeEq::<
19339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19340                    >(_) => {}
19341                }
19342            }
19343            #[automatically_derived]
19344            #[doc(hidden)]
19345            impl ::core::convert::From<validateMetadataUriCall>
19346            for UnderlyingRustTuple<'_> {
19347                fn from(value: validateMetadataUriCall) -> Self {
19348                    (value.metadataUri,)
19349                }
19350            }
19351            #[automatically_derived]
19352            #[doc(hidden)]
19353            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19354            for validateMetadataUriCall {
19355                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19356                    Self { metadataUri: tuple.0 }
19357                }
19358            }
19359        }
19360        {
19361            #[doc(hidden)]
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<validateMetadataUriReturn>
19379            for UnderlyingRustTuple<'_> {
19380                fn from(value: validateMetadataUriReturn) -> Self {
19381                    ()
19382                }
19383            }
19384            #[automatically_derived]
19385            #[doc(hidden)]
19386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19387            for validateMetadataUriReturn {
19388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19389                    Self {}
19390                }
19391            }
19392        }
19393        impl validateMetadataUriReturn {
19394            fn _tokenize(
19395                &self,
19396            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19397                ()
19398            }
19399        }
19400        #[automatically_derived]
19401        impl alloy_sol_types::SolCall for validateMetadataUriCall {
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 = validateMetadataUriReturn;
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 = "validateMetadataUri(string)";
19412            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
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                validateMetadataUriReturn::_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 `validatorExits(address)` and selector `0xb5ecb344`.
19452```solidity
19453function validatorExits(address validator) external view returns (uint256 unlocksAt);
19454```*/
19455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19456    #[derive(Clone)]
19457    pub struct validatorExitsCall {
19458        #[allow(missing_docs)]
19459        pub validator: alloy::sol_types::private::Address,
19460    }
19461    #[derive(serde::Serialize, serde::Deserialize)]
19462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19463    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
19464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19465    #[derive(Clone)]
19466    pub struct validatorExitsReturn {
19467        #[allow(missing_docs)]
19468        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
19469    }
19470    #[allow(
19471        non_camel_case_types,
19472        non_snake_case,
19473        clippy::pub_underscore_fields,
19474        clippy::style
19475    )]
19476    const _: () = {
19477        use alloy::sol_types as alloy_sol_types;
19478        {
19479            #[doc(hidden)]
19480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19481            #[doc(hidden)]
19482            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19483            #[cfg(test)]
19484            #[allow(dead_code, unreachable_patterns)]
19485            fn _type_assertion(
19486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19487            ) {
19488                match _t {
19489                    alloy_sol_types::private::AssertTypeEq::<
19490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19491                    >(_) => {}
19492                }
19493            }
19494            #[automatically_derived]
19495            #[doc(hidden)]
19496            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
19497                fn from(value: validatorExitsCall) -> Self {
19498                    (value.validator,)
19499                }
19500            }
19501            #[automatically_derived]
19502            #[doc(hidden)]
19503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
19504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19505                    Self { validator: tuple.0 }
19506                }
19507            }
19508        }
19509        {
19510            #[doc(hidden)]
19511            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19512            #[doc(hidden)]
19513            type UnderlyingRustTuple<'a> = (
19514                alloy::sol_types::private::primitives::aliases::U256,
19515            );
19516            #[cfg(test)]
19517            #[allow(dead_code, unreachable_patterns)]
19518            fn _type_assertion(
19519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19520            ) {
19521                match _t {
19522                    alloy_sol_types::private::AssertTypeEq::<
19523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19524                    >(_) => {}
19525                }
19526            }
19527            #[automatically_derived]
19528            #[doc(hidden)]
19529            impl ::core::convert::From<validatorExitsReturn>
19530            for UnderlyingRustTuple<'_> {
19531                fn from(value: validatorExitsReturn) -> Self {
19532                    (value.unlocksAt,)
19533                }
19534            }
19535            #[automatically_derived]
19536            #[doc(hidden)]
19537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19538            for validatorExitsReturn {
19539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19540                    Self { unlocksAt: tuple.0 }
19541                }
19542            }
19543        }
19544        #[automatically_derived]
19545        impl alloy_sol_types::SolCall for validatorExitsCall {
19546            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19547            type Token<'a> = <Self::Parameters<
19548                'a,
19549            > as alloy_sol_types::SolType>::Token<'a>;
19550            type Return = alloy::sol_types::private::primitives::aliases::U256;
19551            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
19552            type ReturnToken<'a> = <Self::ReturnTuple<
19553                'a,
19554            > as alloy_sol_types::SolType>::Token<'a>;
19555            const SIGNATURE: &'static str = "validatorExits(address)";
19556            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
19557            #[inline]
19558            fn new<'a>(
19559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19560            ) -> Self {
19561                tuple.into()
19562            }
19563            #[inline]
19564            fn tokenize(&self) -> Self::Token<'_> {
19565                (
19566                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19567                        &self.validator,
19568                    ),
19569                )
19570            }
19571            #[inline]
19572            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19573                (
19574                    <alloy::sol_types::sol_data::Uint<
19575                        256,
19576                    > as alloy_sol_types::SolType>::tokenize(ret),
19577                )
19578            }
19579            #[inline]
19580            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19581                <Self::ReturnTuple<
19582                    '_,
19583                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19584                    .map(|r| {
19585                        let r: validatorExitsReturn = r.into();
19586                        r.unlocksAt
19587                    })
19588            }
19589            #[inline]
19590            fn abi_decode_returns_validate(
19591                data: &[u8],
19592            ) -> alloy_sol_types::Result<Self::Return> {
19593                <Self::ReturnTuple<
19594                    '_,
19595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19596                    .map(|r| {
19597                        let r: validatorExitsReturn = r.into();
19598                        r.unlocksAt
19599                    })
19600            }
19601        }
19602    };
19603    #[derive(serde::Serialize, serde::Deserialize)]
19604    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19605    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
19606```solidity
19607function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
19608```*/
19609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19610    #[derive(Clone)]
19611    pub struct validatorsCall {
19612        #[allow(missing_docs)]
19613        pub account: alloy::sol_types::private::Address,
19614    }
19615    #[derive(serde::Serialize, serde::Deserialize)]
19616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19617    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
19618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19619    #[derive(Clone)]
19620    pub struct validatorsReturn {
19621        #[allow(missing_docs)]
19622        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
19623        #[allow(missing_docs)]
19624        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19625    }
19626    #[allow(
19627        non_camel_case_types,
19628        non_snake_case,
19629        clippy::pub_underscore_fields,
19630        clippy::style
19631    )]
19632    const _: () = {
19633        use alloy::sol_types as alloy_sol_types;
19634        {
19635            #[doc(hidden)]
19636            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
19637            #[doc(hidden)]
19638            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
19639            #[cfg(test)]
19640            #[allow(dead_code, unreachable_patterns)]
19641            fn _type_assertion(
19642                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19643            ) {
19644                match _t {
19645                    alloy_sol_types::private::AssertTypeEq::<
19646                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19647                    >(_) => {}
19648                }
19649            }
19650            #[automatically_derived]
19651            #[doc(hidden)]
19652            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
19653                fn from(value: validatorsCall) -> Self {
19654                    (value.account,)
19655                }
19656            }
19657            #[automatically_derived]
19658            #[doc(hidden)]
19659            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
19660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19661                    Self { account: tuple.0 }
19662                }
19663            }
19664        }
19665        {
19666            #[doc(hidden)]
19667            type UnderlyingSolTuple<'a> = (
19668                alloy::sol_types::sol_data::Uint<256>,
19669                StakeTable::ValidatorStatus,
19670            );
19671            #[doc(hidden)]
19672            type UnderlyingRustTuple<'a> = (
19673                alloy::sol_types::private::primitives::aliases::U256,
19674                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
19675            );
19676            #[cfg(test)]
19677            #[allow(dead_code, unreachable_patterns)]
19678            fn _type_assertion(
19679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19680            ) {
19681                match _t {
19682                    alloy_sol_types::private::AssertTypeEq::<
19683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19684                    >(_) => {}
19685                }
19686            }
19687            #[automatically_derived]
19688            #[doc(hidden)]
19689            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
19690                fn from(value: validatorsReturn) -> Self {
19691                    (value.delegatedAmount, value.status)
19692                }
19693            }
19694            #[automatically_derived]
19695            #[doc(hidden)]
19696            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
19697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19698                    Self {
19699                        delegatedAmount: tuple.0,
19700                        status: tuple.1,
19701                    }
19702                }
19703            }
19704        }
19705        impl validatorsReturn {
19706            fn _tokenize(
19707                &self,
19708            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19709                (
19710                    <alloy::sol_types::sol_data::Uint<
19711                        256,
19712                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
19713                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
19714                        &self.status,
19715                    ),
19716                )
19717            }
19718        }
19719        #[automatically_derived]
19720        impl alloy_sol_types::SolCall for validatorsCall {
19721            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
19722            type Token<'a> = <Self::Parameters<
19723                'a,
19724            > as alloy_sol_types::SolType>::Token<'a>;
19725            type Return = validatorsReturn;
19726            type ReturnTuple<'a> = (
19727                alloy::sol_types::sol_data::Uint<256>,
19728                StakeTable::ValidatorStatus,
19729            );
19730            type ReturnToken<'a> = <Self::ReturnTuple<
19731                'a,
19732            > as alloy_sol_types::SolType>::Token<'a>;
19733            const SIGNATURE: &'static str = "validators(address)";
19734            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
19735            #[inline]
19736            fn new<'a>(
19737                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19738            ) -> Self {
19739                tuple.into()
19740            }
19741            #[inline]
19742            fn tokenize(&self) -> Self::Token<'_> {
19743                (
19744                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19745                        &self.account,
19746                    ),
19747                )
19748            }
19749            #[inline]
19750            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19751                validatorsReturn::_tokenize(ret)
19752            }
19753            #[inline]
19754            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19755                <Self::ReturnTuple<
19756                    '_,
19757                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19758                    .map(Into::into)
19759            }
19760            #[inline]
19761            fn abi_decode_returns_validate(
19762                data: &[u8],
19763            ) -> alloy_sol_types::Result<Self::Return> {
19764                <Self::ReturnTuple<
19765                    '_,
19766                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
19767                    .map(Into::into)
19768            }
19769        }
19770    };
19771    ///Container for all the [`StakeTableV2`](self) function calls.
19772    #[derive(serde::Serialize, serde::Deserialize)]
19773    #[derive()]
19774    pub enum StakeTableV2Calls {
19775        #[allow(missing_docs)]
19776        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
19777        #[allow(missing_docs)]
19778        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
19779        #[allow(missing_docs)]
19780        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
19781        #[allow(missing_docs)]
19782        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
19783        #[allow(missing_docs)]
19784        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
19785        #[allow(missing_docs)]
19786        PAUSER_ROLE(PAUSER_ROLECall),
19787        #[allow(missing_docs)]
19788        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
19789        #[allow(missing_docs)]
19790        _hashBlsKey(_hashBlsKeyCall),
19791        #[allow(missing_docs)]
19792        activeStake(activeStakeCall),
19793        #[allow(missing_docs)]
19794        blsKeys(blsKeysCall),
19795        #[allow(missing_docs)]
19796        claimValidatorExit(claimValidatorExitCall),
19797        #[allow(missing_docs)]
19798        claimWithdrawal(claimWithdrawalCall),
19799        #[allow(missing_docs)]
19800        commissionTracking(commissionTrackingCall),
19801        #[allow(missing_docs)]
19802        delegate(delegateCall),
19803        #[allow(missing_docs)]
19804        delegations(delegationsCall),
19805        #[allow(missing_docs)]
19806        deregisterValidator(deregisterValidatorCall),
19807        #[allow(missing_docs)]
19808        exitEscrowPeriod(exitEscrowPeriodCall),
19809        #[allow(missing_docs)]
19810        getRoleAdmin(getRoleAdminCall),
19811        #[allow(missing_docs)]
19812        getUndelegation(getUndelegationCall),
19813        #[allow(missing_docs)]
19814        getVersion(getVersionCall),
19815        #[allow(missing_docs)]
19816        grantRole(grantRoleCall),
19817        #[allow(missing_docs)]
19818        hasRole(hasRoleCall),
19819        #[allow(missing_docs)]
19820        initialize(initializeCall),
19821        #[allow(missing_docs)]
19822        initializeV2(initializeV2Call),
19823        #[allow(missing_docs)]
19824        initializedAtBlock(initializedAtBlockCall),
19825        #[allow(missing_docs)]
19826        lightClient(lightClientCall),
19827        #[allow(missing_docs)]
19828        maxCommissionIncrease(maxCommissionIncreaseCall),
19829        #[allow(missing_docs)]
19830        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
19831        #[allow(missing_docs)]
19832        minDelegateAmount(minDelegateAmountCall),
19833        #[allow(missing_docs)]
19834        owner(ownerCall),
19835        #[allow(missing_docs)]
19836        pause(pauseCall),
19837        #[allow(missing_docs)]
19838        paused(pausedCall),
19839        #[allow(missing_docs)]
19840        proxiableUUID(proxiableUUIDCall),
19841        #[allow(missing_docs)]
19842        registerValidator(registerValidatorCall),
19843        #[allow(missing_docs)]
19844        registerValidatorV2(registerValidatorV2Call),
19845        #[allow(missing_docs)]
19846        renounceOwnership(renounceOwnershipCall),
19847        #[allow(missing_docs)]
19848        renounceRole(renounceRoleCall),
19849        #[allow(missing_docs)]
19850        revokeRole(revokeRoleCall),
19851        #[allow(missing_docs)]
19852        schnorrKeys(schnorrKeysCall),
19853        #[allow(missing_docs)]
19854        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
19855        #[allow(missing_docs)]
19856        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
19857        #[allow(missing_docs)]
19858        setMinDelegateAmount(setMinDelegateAmountCall),
19859        #[allow(missing_docs)]
19860        supportsInterface(supportsInterfaceCall),
19861        #[allow(missing_docs)]
19862        token(tokenCall),
19863        #[allow(missing_docs)]
19864        transferOwnership(transferOwnershipCall),
19865        #[allow(missing_docs)]
19866        undelegate(undelegateCall),
19867        #[allow(missing_docs)]
19868        undelegations(undelegationsCall),
19869        #[allow(missing_docs)]
19870        unpause(unpauseCall),
19871        #[allow(missing_docs)]
19872        updateCommission(updateCommissionCall),
19873        #[allow(missing_docs)]
19874        updateConsensusKeys(updateConsensusKeysCall),
19875        #[allow(missing_docs)]
19876        updateConsensusKeysV2(updateConsensusKeysV2Call),
19877        #[allow(missing_docs)]
19878        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
19879        #[allow(missing_docs)]
19880        updateMetadataUri(updateMetadataUriCall),
19881        #[allow(missing_docs)]
19882        upgradeToAndCall(upgradeToAndCallCall),
19883        #[allow(missing_docs)]
19884        validateMetadataUri(validateMetadataUriCall),
19885        #[allow(missing_docs)]
19886        validatorExits(validatorExitsCall),
19887        #[allow(missing_docs)]
19888        validators(validatorsCall),
19889    }
19890    #[automatically_derived]
19891    impl StakeTableV2Calls {
19892        /// All the selectors of this enum.
19893        ///
19894        /// Note that the selectors might not be in the same order as the variants.
19895        /// No guarantees are made about the order of the selectors.
19896        ///
19897        /// Prefer using `SolInterface` methods instead.
19898        pub const SELECTORS: &'static [[u8; 4usize]] = &[
19899            [1u8, 255u8, 201u8, 167u8],
19900            [2u8, 110u8, 64u8, 43u8],
19901            [13u8, 142u8, 110u8, 44u8],
19902            [19u8, 185u8, 5u8, 122u8],
19903            [26u8, 32u8, 205u8, 99u8],
19904            [33u8, 64u8, 254u8, 205u8],
19905            [36u8, 138u8, 156u8, 163u8],
19906            [43u8, 158u8, 92u8, 138u8],
19907            [45u8, 201u8, 186u8, 198u8],
19908            [47u8, 47u8, 241u8, 93u8],
19909            [47u8, 226u8, 135u8, 89u8],
19910            [54u8, 86u8, 138u8, 190u8],
19911            [57u8, 75u8, 52u8, 143u8],
19912            [59u8, 43u8, 127u8, 250u8],
19913            [62u8, 115u8, 46u8, 186u8],
19914            [62u8, 157u8, 249u8, 181u8],
19915            [63u8, 59u8, 179u8, 102u8],
19916            [63u8, 75u8, 168u8, 58u8],
19917            [77u8, 153u8, 221u8, 22u8],
19918            [79u8, 30u8, 242u8, 134u8],
19919            [82u8, 120u8, 11u8, 110u8],
19920            [82u8, 209u8, 144u8, 45u8],
19921            [85u8, 68u8, 194u8, 241u8],
19922            [92u8, 151u8, 90u8, 187u8],
19923            [95u8, 135u8, 84u8, 166u8],
19924            [106u8, 145u8, 28u8, 207u8],
19925            [106u8, 210u8, 142u8, 159u8],
19926            [113u8, 80u8, 24u8, 166u8],
19927            [114u8, 233u8, 201u8, 52u8],
19928            [132u8, 86u8, 203u8, 89u8],
19929            [135u8, 12u8, 143u8, 38u8],
19930            [141u8, 165u8, 203u8, 91u8],
19931            [145u8, 209u8, 72u8, 84u8],
19932            [155u8, 48u8, 165u8, 230u8],
19933            [158u8, 154u8, 143u8, 49u8],
19934            [159u8, 251u8, 107u8, 67u8],
19935            [162u8, 23u8, 253u8, 223u8],
19936            [162u8, 215u8, 141u8, 213u8],
19937            [163u8, 6u8, 106u8, 171u8],
19938            [172u8, 92u8, 42u8, 208u8],
19939            [173u8, 60u8, 177u8, 204u8],
19940            [179u8, 230u8, 235u8, 213u8],
19941            [181u8, 112u8, 14u8, 104u8],
19942            [181u8, 236u8, 179u8, 68u8],
19943            [187u8, 96u8, 191u8, 176u8],
19944            [189u8, 73u8, 195u8, 95u8],
19945            [190u8, 32u8, 48u8, 148u8],
19946            [198u8, 72u8, 20u8, 221u8],
19947            [213u8, 71u8, 116u8, 31u8],
19948            [217u8, 204u8, 125u8, 38u8],
19949            [227u8, 242u8, 55u8, 230u8],
19950            [228u8, 209u8, 251u8, 148u8],
19951            [230u8, 41u8, 119u8, 248u8],
19952            [230u8, 58u8, 177u8, 233u8],
19953            [242u8, 253u8, 227u8, 139u8],
19954            [250u8, 82u8, 199u8, 216u8],
19955            [252u8, 12u8, 84u8, 106u8],
19956        ];
19957    }
19958    #[automatically_derived]
19959    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
19960        const NAME: &'static str = "StakeTableV2Calls";
19961        const MIN_DATA_LENGTH: usize = 0usize;
19962        const COUNT: usize = 57usize;
19963        #[inline]
19964        fn selector(&self) -> [u8; 4] {
19965            match self {
19966                Self::DEFAULT_ADMIN_ROLE(_) => {
19967                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
19968                }
19969                Self::MAX_COMMISSION_BPS(_) => {
19970                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
19971                }
19972                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
19973                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
19974                }
19975                Self::MAX_METADATA_URI_LENGTH(_) => {
19976                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
19977                }
19978                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
19979                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
19980                }
19981                Self::PAUSER_ROLE(_) => {
19982                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
19983                }
19984                Self::UPGRADE_INTERFACE_VERSION(_) => {
19985                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
19986                }
19987                Self::_hashBlsKey(_) => {
19988                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
19989                }
19990                Self::activeStake(_) => {
19991                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
19992                }
19993                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
19994                Self::claimValidatorExit(_) => {
19995                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
19996                }
19997                Self::claimWithdrawal(_) => {
19998                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
19999                }
20000                Self::commissionTracking(_) => {
20001                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
20002                }
20003                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
20004                Self::delegations(_) => {
20005                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
20006                }
20007                Self::deregisterValidator(_) => {
20008                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20009                }
20010                Self::exitEscrowPeriod(_) => {
20011                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20012                }
20013                Self::getRoleAdmin(_) => {
20014                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
20015                }
20016                Self::getUndelegation(_) => {
20017                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
20018                }
20019                Self::getVersion(_) => {
20020                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
20021                }
20022                Self::grantRole(_) => {
20023                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
20024                }
20025                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
20026                Self::initialize(_) => {
20027                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
20028                }
20029                Self::initializeV2(_) => {
20030                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
20031                }
20032                Self::initializedAtBlock(_) => {
20033                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
20034                }
20035                Self::lightClient(_) => {
20036                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
20037                }
20038                Self::maxCommissionIncrease(_) => {
20039                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20040                }
20041                Self::minCommissionIncreaseInterval(_) => {
20042                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20043                }
20044                Self::minDelegateAmount(_) => {
20045                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20046                }
20047                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
20048                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
20049                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
20050                Self::proxiableUUID(_) => {
20051                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
20052                }
20053                Self::registerValidator(_) => {
20054                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
20055                }
20056                Self::registerValidatorV2(_) => {
20057                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
20058                }
20059                Self::renounceOwnership(_) => {
20060                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20061                }
20062                Self::renounceRole(_) => {
20063                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
20064                }
20065                Self::revokeRole(_) => {
20066                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
20067                }
20068                Self::schnorrKeys(_) => {
20069                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
20070                }
20071                Self::setMaxCommissionIncrease(_) => {
20072                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
20073                }
20074                Self::setMinCommissionUpdateInterval(_) => {
20075                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
20076                }
20077                Self::setMinDelegateAmount(_) => {
20078                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
20079                }
20080                Self::supportsInterface(_) => {
20081                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
20082                }
20083                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
20084                Self::transferOwnership(_) => {
20085                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
20086                }
20087                Self::undelegate(_) => {
20088                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
20089                }
20090                Self::undelegations(_) => {
20091                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
20092                }
20093                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
20094                Self::updateCommission(_) => {
20095                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
20096                }
20097                Self::updateConsensusKeys(_) => {
20098                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
20099                }
20100                Self::updateConsensusKeysV2(_) => {
20101                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
20102                }
20103                Self::updateExitEscrowPeriod(_) => {
20104                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
20105                }
20106                Self::updateMetadataUri(_) => {
20107                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20108                }
20109                Self::upgradeToAndCall(_) => {
20110                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
20111                }
20112                Self::validateMetadataUri(_) => {
20113                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
20114                }
20115                Self::validatorExits(_) => {
20116                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
20117                }
20118                Self::validators(_) => {
20119                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
20120                }
20121            }
20122        }
20123        #[inline]
20124        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
20125            Self::SELECTORS.get(i).copied()
20126        }
20127        #[inline]
20128        fn valid_selector(selector: [u8; 4]) -> bool {
20129            Self::SELECTORS.binary_search(&selector).is_ok()
20130        }
20131        #[inline]
20132        #[allow(non_snake_case)]
20133        fn abi_decode_raw(
20134            selector: [u8; 4],
20135            data: &[u8],
20136        ) -> alloy_sol_types::Result<Self> {
20137            static DECODE_SHIMS: &[fn(
20138                &[u8],
20139            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
20140                {
20141                    fn supportsInterface(
20142                        data: &[u8],
20143                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20144                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
20145                                data,
20146                            )
20147                            .map(StakeTableV2Calls::supportsInterface)
20148                    }
20149                    supportsInterface
20150                },
20151                {
20152                    fn delegate(
20153                        data: &[u8],
20154                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20155                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20156                            .map(StakeTableV2Calls::delegate)
20157                    }
20158                    delegate
20159                },
20160                {
20161                    fn getVersion(
20162                        data: &[u8],
20163                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20164                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20165                                data,
20166                            )
20167                            .map(StakeTableV2Calls::getVersion)
20168                    }
20169                    getVersion
20170                },
20171                {
20172                    fn registerValidator(
20173                        data: &[u8],
20174                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20175                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20176                                data,
20177                            )
20178                            .map(StakeTableV2Calls::registerValidator)
20179                    }
20180                    registerValidator
20181                },
20182                {
20183                    fn updateExitEscrowPeriod(
20184                        data: &[u8],
20185                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20186                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20187                                data,
20188                            )
20189                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
20190                    }
20191                    updateExitEscrowPeriod
20192                },
20193                {
20194                    fn claimValidatorExit(
20195                        data: &[u8],
20196                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20197                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw(
20198                                data,
20199                            )
20200                            .map(StakeTableV2Calls::claimValidatorExit)
20201                    }
20202                    claimValidatorExit
20203                },
20204                {
20205                    fn getRoleAdmin(
20206                        data: &[u8],
20207                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20208                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
20209                                data,
20210                            )
20211                            .map(StakeTableV2Calls::getRoleAdmin)
20212                    }
20213                    getRoleAdmin
20214                },
20215                {
20216                    fn registerValidatorV2(
20217                        data: &[u8],
20218                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20219                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20220                                data,
20221                            )
20222                            .map(StakeTableV2Calls::registerValidatorV2)
20223                    }
20224                    registerValidatorV2
20225                },
20226                {
20227                    fn setMaxCommissionIncrease(
20228                        data: &[u8],
20229                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20230                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20231                                data,
20232                            )
20233                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
20234                    }
20235                    setMaxCommissionIncrease
20236                },
20237                {
20238                    fn grantRole(
20239                        data: &[u8],
20240                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20241                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20242                            .map(StakeTableV2Calls::grantRole)
20243                    }
20244                    grantRole
20245                },
20246                {
20247                    fn MAX_METADATA_URI_LENGTH(
20248                        data: &[u8],
20249                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20250                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw(
20251                                data,
20252                            )
20253                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
20254                    }
20255                    MAX_METADATA_URI_LENGTH
20256                },
20257                {
20258                    fn renounceRole(
20259                        data: &[u8],
20260                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20261                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
20262                                data,
20263                            )
20264                            .map(StakeTableV2Calls::renounceRole)
20265                    }
20266                    renounceRole
20267                },
20268                {
20269                    fn setMinCommissionUpdateInterval(
20270                        data: &[u8],
20271                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20272                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20273                                data,
20274                            )
20275                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
20276                    }
20277                    setMinCommissionUpdateInterval
20278                },
20279                {
20280                    fn updateCommission(
20281                        data: &[u8],
20282                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20283                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
20284                                data,
20285                            )
20286                            .map(StakeTableV2Calls::updateCommission)
20287                    }
20288                    updateCommission
20289                },
20290                {
20291                    fn setMinDelegateAmount(
20292                        data: &[u8],
20293                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20294                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20295                                data,
20296                            )
20297                            .map(StakeTableV2Calls::setMinDelegateAmount)
20298                    }
20299                    setMinDelegateAmount
20300                },
20301                {
20302                    fn initializedAtBlock(
20303                        data: &[u8],
20304                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20305                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
20306                                data,
20307                            )
20308                            .map(StakeTableV2Calls::initializedAtBlock)
20309                    }
20310                    initializedAtBlock
20311                },
20312                {
20313                    fn maxCommissionIncrease(
20314                        data: &[u8],
20315                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20316                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw(
20317                                data,
20318                            )
20319                            .map(StakeTableV2Calls::maxCommissionIncrease)
20320                    }
20321                    maxCommissionIncrease
20322                },
20323                {
20324                    fn unpause(
20325                        data: &[u8],
20326                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20327                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20328                            .map(StakeTableV2Calls::unpause)
20329                    }
20330                    unpause
20331                },
20332                {
20333                    fn undelegate(
20334                        data: &[u8],
20335                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20336                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw(
20337                                data,
20338                            )
20339                            .map(StakeTableV2Calls::undelegate)
20340                    }
20341                    undelegate
20342                },
20343                {
20344                    fn upgradeToAndCall(
20345                        data: &[u8],
20346                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20347                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
20348                                data,
20349                            )
20350                            .map(StakeTableV2Calls::upgradeToAndCall)
20351                    }
20352                    upgradeToAndCall
20353                },
20354                {
20355                    fn initializeV2(
20356                        data: &[u8],
20357                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20358                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20359                                data,
20360                            )
20361                            .map(StakeTableV2Calls::initializeV2)
20362                    }
20363                    initializeV2
20364                },
20365                {
20366                    fn proxiableUUID(
20367                        data: &[u8],
20368                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20369                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
20370                                data,
20371                            )
20372                            .map(StakeTableV2Calls::proxiableUUID)
20373                    }
20374                    proxiableUUID
20375                },
20376                {
20377                    fn updateConsensusKeys(
20378                        data: &[u8],
20379                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20380                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20381                                data,
20382                            )
20383                            .map(StakeTableV2Calls::updateConsensusKeys)
20384                    }
20385                    updateConsensusKeys
20386                },
20387                {
20388                    fn paused(
20389                        data: &[u8],
20390                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20391                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20392                            .map(StakeTableV2Calls::paused)
20393                    }
20394                    paused
20395                },
20396                {
20397                    fn schnorrKeys(
20398                        data: &[u8],
20399                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20400                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(
20401                                data,
20402                            )
20403                            .map(StakeTableV2Calls::schnorrKeys)
20404                    }
20405                    schnorrKeys
20406                },
20407                {
20408                    fn deregisterValidator(
20409                        data: &[u8],
20410                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20411                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
20412                                data,
20413                            )
20414                            .map(StakeTableV2Calls::deregisterValidator)
20415                    }
20416                    deregisterValidator
20417                },
20418                {
20419                    fn MIN_EXIT_ESCROW_PERIOD(
20420                        data: &[u8],
20421                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20422                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
20423                                data,
20424                            )
20425                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
20426                    }
20427                    MIN_EXIT_ESCROW_PERIOD
20428                },
20429                {
20430                    fn renounceOwnership(
20431                        data: &[u8],
20432                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20433                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
20434                                data,
20435                            )
20436                            .map(StakeTableV2Calls::renounceOwnership)
20437                    }
20438                    renounceOwnership
20439                },
20440                {
20441                    fn minDelegateAmount(
20442                        data: &[u8],
20443                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20444                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw(
20445                                data,
20446                            )
20447                            .map(StakeTableV2Calls::minDelegateAmount)
20448                    }
20449                    minDelegateAmount
20450                },
20451                {
20452                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20453                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20454                            .map(StakeTableV2Calls::pause)
20455                    }
20456                    pause
20457                },
20458                {
20459                    fn updateMetadataUri(
20460                        data: &[u8],
20461                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20462                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
20463                                data,
20464                            )
20465                            .map(StakeTableV2Calls::updateMetadataUri)
20466                    }
20467                    updateMetadataUri
20468                },
20469                {
20470                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20471                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20472                            .map(StakeTableV2Calls::owner)
20473                    }
20474                    owner
20475                },
20476                {
20477                    fn hasRole(
20478                        data: &[u8],
20479                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20480                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20481                            .map(StakeTableV2Calls::hasRole)
20482                    }
20483                    hasRole
20484                },
20485                {
20486                    fn _hashBlsKey(
20487                        data: &[u8],
20488                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20489                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(
20490                                data,
20491                            )
20492                            .map(StakeTableV2Calls::_hashBlsKey)
20493                    }
20494                    _hashBlsKey
20495                },
20496                {
20497                    fn exitEscrowPeriod(
20498                        data: &[u8],
20499                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20500                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
20501                                data,
20502                            )
20503                            .map(StakeTableV2Calls::exitEscrowPeriod)
20504                    }
20505                    exitEscrowPeriod
20506                },
20507                {
20508                    fn commissionTracking(
20509                        data: &[u8],
20510                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20511                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw(
20512                                data,
20513                            )
20514                            .map(StakeTableV2Calls::commissionTracking)
20515                    }
20516                    commissionTracking
20517                },
20518                {
20519                    fn DEFAULT_ADMIN_ROLE(
20520                        data: &[u8],
20521                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20522                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
20523                                data,
20524                            )
20525                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
20526                    }
20527                    DEFAULT_ADMIN_ROLE
20528                },
20529                {
20530                    fn undelegations(
20531                        data: &[u8],
20532                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20533                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20534                                data,
20535                            )
20536                            .map(StakeTableV2Calls::undelegations)
20537                    }
20538                    undelegations
20539                },
20540                {
20541                    fn claimWithdrawal(
20542                        data: &[u8],
20543                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20544                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20545                                data,
20546                            )
20547                            .map(StakeTableV2Calls::claimWithdrawal)
20548                    }
20549                    claimWithdrawal
20550                },
20551                {
20552                    fn updateConsensusKeysV2(
20553                        data: &[u8],
20554                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20555                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
20556                                data,
20557                            )
20558                            .map(StakeTableV2Calls::updateConsensusKeysV2)
20559                    }
20560                    updateConsensusKeysV2
20561                },
20562                {
20563                    fn UPGRADE_INTERFACE_VERSION(
20564                        data: &[u8],
20565                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20566                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
20567                                data,
20568                            )
20569                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
20570                    }
20571                    UPGRADE_INTERFACE_VERSION
20572                },
20573                {
20574                    fn blsKeys(
20575                        data: &[u8],
20576                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20577                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20578                            .map(StakeTableV2Calls::blsKeys)
20579                    }
20580                    blsKeys
20581                },
20582                {
20583                    fn lightClient(
20584                        data: &[u8],
20585                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20586                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
20587                                data,
20588                            )
20589                            .map(StakeTableV2Calls::lightClient)
20590                    }
20591                    lightClient
20592                },
20593                {
20594                    fn validatorExits(
20595                        data: &[u8],
20596                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20597                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20598                                data,
20599                            )
20600                            .map(StakeTableV2Calls::validatorExits)
20601                    }
20602                    validatorExits
20603                },
20604                {
20605                    fn getUndelegation(
20606                        data: &[u8],
20607                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20608                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw(
20609                                data,
20610                            )
20611                            .map(StakeTableV2Calls::getUndelegation)
20612                    }
20613                    getUndelegation
20614                },
20615                {
20616                    fn activeStake(
20617                        data: &[u8],
20618                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20619                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw(
20620                                data,
20621                            )
20622                            .map(StakeTableV2Calls::activeStake)
20623                    }
20624                    activeStake
20625                },
20626                {
20627                    fn initialize(
20628                        data: &[u8],
20629                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20630                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
20631                                data,
20632                            )
20633                            .map(StakeTableV2Calls::initialize)
20634                    }
20635                    initialize
20636                },
20637                {
20638                    fn delegations(
20639                        data: &[u8],
20640                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20641                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20642                                data,
20643                            )
20644                            .map(StakeTableV2Calls::delegations)
20645                    }
20646                    delegations
20647                },
20648                {
20649                    fn revokeRole(
20650                        data: &[u8],
20651                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20652                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
20653                                data,
20654                            )
20655                            .map(StakeTableV2Calls::revokeRole)
20656                    }
20657                    revokeRole
20658                },
20659                {
20660                    fn minCommissionIncreaseInterval(
20661                        data: &[u8],
20662                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20663                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw(
20664                                data,
20665                            )
20666                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
20667                    }
20668                    minCommissionIncreaseInterval
20669                },
20670                {
20671                    fn validateMetadataUri(
20672                        data: &[u8],
20673                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20674                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw(
20675                                data,
20676                            )
20677                            .map(StakeTableV2Calls::validateMetadataUri)
20678                    }
20679                    validateMetadataUri
20680                },
20681                {
20682                    fn MAX_EXIT_ESCROW_PERIOD(
20683                        data: &[u8],
20684                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20685                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw(
20686                                data,
20687                            )
20688                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
20689                    }
20690                    MAX_EXIT_ESCROW_PERIOD
20691                },
20692                {
20693                    fn MAX_COMMISSION_BPS(
20694                        data: &[u8],
20695                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20696                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw(
20697                                data,
20698                            )
20699                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
20700                    }
20701                    MAX_COMMISSION_BPS
20702                },
20703                {
20704                    fn PAUSER_ROLE(
20705                        data: &[u8],
20706                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20707                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
20708                                data,
20709                            )
20710                            .map(StakeTableV2Calls::PAUSER_ROLE)
20711                    }
20712                    PAUSER_ROLE
20713                },
20714                {
20715                    fn transferOwnership(
20716                        data: &[u8],
20717                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20718                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
20719                                data,
20720                            )
20721                            .map(StakeTableV2Calls::transferOwnership)
20722                    }
20723                    transferOwnership
20724                },
20725                {
20726                    fn validators(
20727                        data: &[u8],
20728                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20729                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw(
20730                                data,
20731                            )
20732                            .map(StakeTableV2Calls::validators)
20733                    }
20734                    validators
20735                },
20736                {
20737                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
20738                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
20739                            .map(StakeTableV2Calls::token)
20740                    }
20741                    token
20742                },
20743            ];
20744            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
20745                return Err(
20746                    alloy_sol_types::Error::unknown_selector(
20747                        <Self as alloy_sol_types::SolInterface>::NAME,
20748                        selector,
20749                    ),
20750                );
20751            };
20752            DECODE_SHIMS[idx](data)
20753        }
20754        #[inline]
20755        #[allow(non_snake_case)]
20756        fn abi_decode_raw_validate(
20757            selector: [u8; 4],
20758            data: &[u8],
20759        ) -> alloy_sol_types::Result<Self> {
20760            static DECODE_VALIDATE_SHIMS: &[fn(
20761                &[u8],
20762            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
20763                {
20764                    fn supportsInterface(
20765                        data: &[u8],
20766                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20767                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20768                                data,
20769                            )
20770                            .map(StakeTableV2Calls::supportsInterface)
20771                    }
20772                    supportsInterface
20773                },
20774                {
20775                    fn delegate(
20776                        data: &[u8],
20777                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20778                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20779                                data,
20780                            )
20781                            .map(StakeTableV2Calls::delegate)
20782                    }
20783                    delegate
20784                },
20785                {
20786                    fn getVersion(
20787                        data: &[u8],
20788                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20789                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20790                                data,
20791                            )
20792                            .map(StakeTableV2Calls::getVersion)
20793                    }
20794                    getVersion
20795                },
20796                {
20797                    fn registerValidator(
20798                        data: &[u8],
20799                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20800                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20801                                data,
20802                            )
20803                            .map(StakeTableV2Calls::registerValidator)
20804                    }
20805                    registerValidator
20806                },
20807                {
20808                    fn updateExitEscrowPeriod(
20809                        data: &[u8],
20810                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20811                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20812                                data,
20813                            )
20814                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
20815                    }
20816                    updateExitEscrowPeriod
20817                },
20818                {
20819                    fn claimValidatorExit(
20820                        data: &[u8],
20821                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20822                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20823                                data,
20824                            )
20825                            .map(StakeTableV2Calls::claimValidatorExit)
20826                    }
20827                    claimValidatorExit
20828                },
20829                {
20830                    fn getRoleAdmin(
20831                        data: &[u8],
20832                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20833                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20834                                data,
20835                            )
20836                            .map(StakeTableV2Calls::getRoleAdmin)
20837                    }
20838                    getRoleAdmin
20839                },
20840                {
20841                    fn registerValidatorV2(
20842                        data: &[u8],
20843                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20844                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20845                                data,
20846                            )
20847                            .map(StakeTableV2Calls::registerValidatorV2)
20848                    }
20849                    registerValidatorV2
20850                },
20851                {
20852                    fn setMaxCommissionIncrease(
20853                        data: &[u8],
20854                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20855                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20856                                data,
20857                            )
20858                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
20859                    }
20860                    setMaxCommissionIncrease
20861                },
20862                {
20863                    fn grantRole(
20864                        data: &[u8],
20865                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20866                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20867                                data,
20868                            )
20869                            .map(StakeTableV2Calls::grantRole)
20870                    }
20871                    grantRole
20872                },
20873                {
20874                    fn MAX_METADATA_URI_LENGTH(
20875                        data: &[u8],
20876                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20877                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20878                                data,
20879                            )
20880                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
20881                    }
20882                    MAX_METADATA_URI_LENGTH
20883                },
20884                {
20885                    fn renounceRole(
20886                        data: &[u8],
20887                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20888                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20889                                data,
20890                            )
20891                            .map(StakeTableV2Calls::renounceRole)
20892                    }
20893                    renounceRole
20894                },
20895                {
20896                    fn setMinCommissionUpdateInterval(
20897                        data: &[u8],
20898                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20899                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20900                                data,
20901                            )
20902                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
20903                    }
20904                    setMinCommissionUpdateInterval
20905                },
20906                {
20907                    fn updateCommission(
20908                        data: &[u8],
20909                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20910                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20911                                data,
20912                            )
20913                            .map(StakeTableV2Calls::updateCommission)
20914                    }
20915                    updateCommission
20916                },
20917                {
20918                    fn setMinDelegateAmount(
20919                        data: &[u8],
20920                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20921                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20922                                data,
20923                            )
20924                            .map(StakeTableV2Calls::setMinDelegateAmount)
20925                    }
20926                    setMinDelegateAmount
20927                },
20928                {
20929                    fn initializedAtBlock(
20930                        data: &[u8],
20931                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20932                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20933                                data,
20934                            )
20935                            .map(StakeTableV2Calls::initializedAtBlock)
20936                    }
20937                    initializedAtBlock
20938                },
20939                {
20940                    fn maxCommissionIncrease(
20941                        data: &[u8],
20942                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20943                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20944                                data,
20945                            )
20946                            .map(StakeTableV2Calls::maxCommissionIncrease)
20947                    }
20948                    maxCommissionIncrease
20949                },
20950                {
20951                    fn unpause(
20952                        data: &[u8],
20953                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20954                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20955                                data,
20956                            )
20957                            .map(StakeTableV2Calls::unpause)
20958                    }
20959                    unpause
20960                },
20961                {
20962                    fn undelegate(
20963                        data: &[u8],
20964                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20965                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20966                                data,
20967                            )
20968                            .map(StakeTableV2Calls::undelegate)
20969                    }
20970                    undelegate
20971                },
20972                {
20973                    fn upgradeToAndCall(
20974                        data: &[u8],
20975                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20976                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20977                                data,
20978                            )
20979                            .map(StakeTableV2Calls::upgradeToAndCall)
20980                    }
20981                    upgradeToAndCall
20982                },
20983                {
20984                    fn initializeV2(
20985                        data: &[u8],
20986                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20987                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20988                                data,
20989                            )
20990                            .map(StakeTableV2Calls::initializeV2)
20991                    }
20992                    initializeV2
20993                },
20994                {
20995                    fn proxiableUUID(
20996                        data: &[u8],
20997                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
20998                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
20999                                data,
21000                            )
21001                            .map(StakeTableV2Calls::proxiableUUID)
21002                    }
21003                    proxiableUUID
21004                },
21005                {
21006                    fn updateConsensusKeys(
21007                        data: &[u8],
21008                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21009                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21010                                data,
21011                            )
21012                            .map(StakeTableV2Calls::updateConsensusKeys)
21013                    }
21014                    updateConsensusKeys
21015                },
21016                {
21017                    fn paused(
21018                        data: &[u8],
21019                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21020                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21021                                data,
21022                            )
21023                            .map(StakeTableV2Calls::paused)
21024                    }
21025                    paused
21026                },
21027                {
21028                    fn schnorrKeys(
21029                        data: &[u8],
21030                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21031                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21032                                data,
21033                            )
21034                            .map(StakeTableV2Calls::schnorrKeys)
21035                    }
21036                    schnorrKeys
21037                },
21038                {
21039                    fn deregisterValidator(
21040                        data: &[u8],
21041                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21042                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21043                                data,
21044                            )
21045                            .map(StakeTableV2Calls::deregisterValidator)
21046                    }
21047                    deregisterValidator
21048                },
21049                {
21050                    fn MIN_EXIT_ESCROW_PERIOD(
21051                        data: &[u8],
21052                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21053                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21054                                data,
21055                            )
21056                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
21057                    }
21058                    MIN_EXIT_ESCROW_PERIOD
21059                },
21060                {
21061                    fn renounceOwnership(
21062                        data: &[u8],
21063                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21064                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21065                                data,
21066                            )
21067                            .map(StakeTableV2Calls::renounceOwnership)
21068                    }
21069                    renounceOwnership
21070                },
21071                {
21072                    fn minDelegateAmount(
21073                        data: &[u8],
21074                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21075                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21076                                data,
21077                            )
21078                            .map(StakeTableV2Calls::minDelegateAmount)
21079                    }
21080                    minDelegateAmount
21081                },
21082                {
21083                    fn pause(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21084                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21085                                data,
21086                            )
21087                            .map(StakeTableV2Calls::pause)
21088                    }
21089                    pause
21090                },
21091                {
21092                    fn updateMetadataUri(
21093                        data: &[u8],
21094                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21095                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21096                                data,
21097                            )
21098                            .map(StakeTableV2Calls::updateMetadataUri)
21099                    }
21100                    updateMetadataUri
21101                },
21102                {
21103                    fn owner(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21104                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21105                                data,
21106                            )
21107                            .map(StakeTableV2Calls::owner)
21108                    }
21109                    owner
21110                },
21111                {
21112                    fn hasRole(
21113                        data: &[u8],
21114                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21115                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21116                                data,
21117                            )
21118                            .map(StakeTableV2Calls::hasRole)
21119                    }
21120                    hasRole
21121                },
21122                {
21123                    fn _hashBlsKey(
21124                        data: &[u8],
21125                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21126                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21127                                data,
21128                            )
21129                            .map(StakeTableV2Calls::_hashBlsKey)
21130                    }
21131                    _hashBlsKey
21132                },
21133                {
21134                    fn exitEscrowPeriod(
21135                        data: &[u8],
21136                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21137                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21138                                data,
21139                            )
21140                            .map(StakeTableV2Calls::exitEscrowPeriod)
21141                    }
21142                    exitEscrowPeriod
21143                },
21144                {
21145                    fn commissionTracking(
21146                        data: &[u8],
21147                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21148                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21149                                data,
21150                            )
21151                            .map(StakeTableV2Calls::commissionTracking)
21152                    }
21153                    commissionTracking
21154                },
21155                {
21156                    fn DEFAULT_ADMIN_ROLE(
21157                        data: &[u8],
21158                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21159                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21160                                data,
21161                            )
21162                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
21163                    }
21164                    DEFAULT_ADMIN_ROLE
21165                },
21166                {
21167                    fn undelegations(
21168                        data: &[u8],
21169                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21170                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21171                                data,
21172                            )
21173                            .map(StakeTableV2Calls::undelegations)
21174                    }
21175                    undelegations
21176                },
21177                {
21178                    fn claimWithdrawal(
21179                        data: &[u8],
21180                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21181                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21182                                data,
21183                            )
21184                            .map(StakeTableV2Calls::claimWithdrawal)
21185                    }
21186                    claimWithdrawal
21187                },
21188                {
21189                    fn updateConsensusKeysV2(
21190                        data: &[u8],
21191                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21192                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21193                                data,
21194                            )
21195                            .map(StakeTableV2Calls::updateConsensusKeysV2)
21196                    }
21197                    updateConsensusKeysV2
21198                },
21199                {
21200                    fn UPGRADE_INTERFACE_VERSION(
21201                        data: &[u8],
21202                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21203                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21204                                data,
21205                            )
21206                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
21207                    }
21208                    UPGRADE_INTERFACE_VERSION
21209                },
21210                {
21211                    fn blsKeys(
21212                        data: &[u8],
21213                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21214                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21215                                data,
21216                            )
21217                            .map(StakeTableV2Calls::blsKeys)
21218                    }
21219                    blsKeys
21220                },
21221                {
21222                    fn lightClient(
21223                        data: &[u8],
21224                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21225                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21226                                data,
21227                            )
21228                            .map(StakeTableV2Calls::lightClient)
21229                    }
21230                    lightClient
21231                },
21232                {
21233                    fn validatorExits(
21234                        data: &[u8],
21235                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21236                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21237                                data,
21238                            )
21239                            .map(StakeTableV2Calls::validatorExits)
21240                    }
21241                    validatorExits
21242                },
21243                {
21244                    fn getUndelegation(
21245                        data: &[u8],
21246                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21247                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21248                                data,
21249                            )
21250                            .map(StakeTableV2Calls::getUndelegation)
21251                    }
21252                    getUndelegation
21253                },
21254                {
21255                    fn activeStake(
21256                        data: &[u8],
21257                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21258                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21259                                data,
21260                            )
21261                            .map(StakeTableV2Calls::activeStake)
21262                    }
21263                    activeStake
21264                },
21265                {
21266                    fn initialize(
21267                        data: &[u8],
21268                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21269                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21270                                data,
21271                            )
21272                            .map(StakeTableV2Calls::initialize)
21273                    }
21274                    initialize
21275                },
21276                {
21277                    fn delegations(
21278                        data: &[u8],
21279                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21280                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21281                                data,
21282                            )
21283                            .map(StakeTableV2Calls::delegations)
21284                    }
21285                    delegations
21286                },
21287                {
21288                    fn revokeRole(
21289                        data: &[u8],
21290                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21291                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21292                                data,
21293                            )
21294                            .map(StakeTableV2Calls::revokeRole)
21295                    }
21296                    revokeRole
21297                },
21298                {
21299                    fn minCommissionIncreaseInterval(
21300                        data: &[u8],
21301                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21302                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21303                                data,
21304                            )
21305                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
21306                    }
21307                    minCommissionIncreaseInterval
21308                },
21309                {
21310                    fn validateMetadataUri(
21311                        data: &[u8],
21312                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21313                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21314                                data,
21315                            )
21316                            .map(StakeTableV2Calls::validateMetadataUri)
21317                    }
21318                    validateMetadataUri
21319                },
21320                {
21321                    fn MAX_EXIT_ESCROW_PERIOD(
21322                        data: &[u8],
21323                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21324                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21325                                data,
21326                            )
21327                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
21328                    }
21329                    MAX_EXIT_ESCROW_PERIOD
21330                },
21331                {
21332                    fn MAX_COMMISSION_BPS(
21333                        data: &[u8],
21334                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21335                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21336                                data,
21337                            )
21338                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
21339                    }
21340                    MAX_COMMISSION_BPS
21341                },
21342                {
21343                    fn PAUSER_ROLE(
21344                        data: &[u8],
21345                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21346                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21347                                data,
21348                            )
21349                            .map(StakeTableV2Calls::PAUSER_ROLE)
21350                    }
21351                    PAUSER_ROLE
21352                },
21353                {
21354                    fn transferOwnership(
21355                        data: &[u8],
21356                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21357                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21358                                data,
21359                            )
21360                            .map(StakeTableV2Calls::transferOwnership)
21361                    }
21362                    transferOwnership
21363                },
21364                {
21365                    fn validators(
21366                        data: &[u8],
21367                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21368                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21369                                data,
21370                            )
21371                            .map(StakeTableV2Calls::validators)
21372                    }
21373                    validators
21374                },
21375                {
21376                    fn token(data: &[u8]) -> alloy_sol_types::Result<StakeTableV2Calls> {
21377                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
21378                                data,
21379                            )
21380                            .map(StakeTableV2Calls::token)
21381                    }
21382                    token
21383                },
21384            ];
21385            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
21386                return Err(
21387                    alloy_sol_types::Error::unknown_selector(
21388                        <Self as alloy_sol_types::SolInterface>::NAME,
21389                        selector,
21390                    ),
21391                );
21392            };
21393            DECODE_VALIDATE_SHIMS[idx](data)
21394        }
21395        #[inline]
21396        fn abi_encoded_size(&self) -> usize {
21397            match self {
21398                Self::DEFAULT_ADMIN_ROLE(inner) => {
21399                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21400                        inner,
21401                    )
21402                }
21403                Self::MAX_COMMISSION_BPS(inner) => {
21404                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
21405                        inner,
21406                    )
21407                }
21408                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
21409                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21410                        inner,
21411                    )
21412                }
21413                Self::MAX_METADATA_URI_LENGTH(inner) => {
21414                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
21415                        inner,
21416                    )
21417                }
21418                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
21419                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
21420                        inner,
21421                    )
21422                }
21423                Self::PAUSER_ROLE(inner) => {
21424                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
21425                        inner,
21426                    )
21427                }
21428                Self::UPGRADE_INTERFACE_VERSION(inner) => {
21429                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
21430                        inner,
21431                    )
21432                }
21433                Self::_hashBlsKey(inner) => {
21434                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
21435                        inner,
21436                    )
21437                }
21438                Self::activeStake(inner) => {
21439                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
21440                        inner,
21441                    )
21442                }
21443                Self::blsKeys(inner) => {
21444                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21445                }
21446                Self::claimValidatorExit(inner) => {
21447                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
21448                        inner,
21449                    )
21450                }
21451                Self::claimWithdrawal(inner) => {
21452                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21453                        inner,
21454                    )
21455                }
21456                Self::commissionTracking(inner) => {
21457                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
21458                        inner,
21459                    )
21460                }
21461                Self::delegate(inner) => {
21462                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21463                }
21464                Self::delegations(inner) => {
21465                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21466                        inner,
21467                    )
21468                }
21469                Self::deregisterValidator(inner) => {
21470                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
21471                        inner,
21472                    )
21473                }
21474                Self::exitEscrowPeriod(inner) => {
21475                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
21476                        inner,
21477                    )
21478                }
21479                Self::getRoleAdmin(inner) => {
21480                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
21481                        inner,
21482                    )
21483                }
21484                Self::getUndelegation(inner) => {
21485                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
21486                        inner,
21487                    )
21488                }
21489                Self::getVersion(inner) => {
21490                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21491                }
21492                Self::grantRole(inner) => {
21493                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21494                }
21495                Self::hasRole(inner) => {
21496                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21497                }
21498                Self::initialize(inner) => {
21499                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21500                }
21501                Self::initializeV2(inner) => {
21502                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21503                        inner,
21504                    )
21505                }
21506                Self::initializedAtBlock(inner) => {
21507                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
21508                        inner,
21509                    )
21510                }
21511                Self::lightClient(inner) => {
21512                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
21513                        inner,
21514                    )
21515                }
21516                Self::maxCommissionIncrease(inner) => {
21517                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
21518                        inner,
21519                    )
21520                }
21521                Self::minCommissionIncreaseInterval(inner) => {
21522                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21523                        inner,
21524                    )
21525                }
21526                Self::minDelegateAmount(inner) => {
21527                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
21528                        inner,
21529                    )
21530                }
21531                Self::owner(inner) => {
21532                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21533                }
21534                Self::pause(inner) => {
21535                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21536                }
21537                Self::paused(inner) => {
21538                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21539                }
21540                Self::proxiableUUID(inner) => {
21541                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
21542                        inner,
21543                    )
21544                }
21545                Self::registerValidator(inner) => {
21546                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
21547                        inner,
21548                    )
21549                }
21550                Self::registerValidatorV2(inner) => {
21551                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21552                        inner,
21553                    )
21554                }
21555                Self::renounceOwnership(inner) => {
21556                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
21557                        inner,
21558                    )
21559                }
21560                Self::renounceRole(inner) => {
21561                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
21562                        inner,
21563                    )
21564                }
21565                Self::revokeRole(inner) => {
21566                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21567                }
21568                Self::schnorrKeys(inner) => {
21569                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
21570                        inner,
21571                    )
21572                }
21573                Self::setMaxCommissionIncrease(inner) => {
21574                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
21575                        inner,
21576                    )
21577                }
21578                Self::setMinCommissionUpdateInterval(inner) => {
21579                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
21580                        inner,
21581                    )
21582                }
21583                Self::setMinDelegateAmount(inner) => {
21584                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
21585                        inner,
21586                    )
21587                }
21588                Self::supportsInterface(inner) => {
21589                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
21590                        inner,
21591                    )
21592                }
21593                Self::token(inner) => {
21594                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21595                }
21596                Self::transferOwnership(inner) => {
21597                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
21598                        inner,
21599                    )
21600                }
21601                Self::undelegate(inner) => {
21602                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21603                }
21604                Self::undelegations(inner) => {
21605                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21606                        inner,
21607                    )
21608                }
21609                Self::unpause(inner) => {
21610                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21611                }
21612                Self::updateCommission(inner) => {
21613                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
21614                        inner,
21615                    )
21616                }
21617                Self::updateConsensusKeys(inner) => {
21618                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
21619                        inner,
21620                    )
21621                }
21622                Self::updateConsensusKeysV2(inner) => {
21623                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
21624                        inner,
21625                    )
21626                }
21627                Self::updateExitEscrowPeriod(inner) => {
21628                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
21629                        inner,
21630                    )
21631                }
21632                Self::updateMetadataUri(inner) => {
21633                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
21634                        inner,
21635                    )
21636                }
21637                Self::upgradeToAndCall(inner) => {
21638                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
21639                        inner,
21640                    )
21641                }
21642                Self::validateMetadataUri(inner) => {
21643                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
21644                        inner,
21645                    )
21646                }
21647                Self::validatorExits(inner) => {
21648                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
21649                        inner,
21650                    )
21651                }
21652                Self::validators(inner) => {
21653                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
21654                }
21655            }
21656        }
21657        #[inline]
21658        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
21659            match self {
21660                Self::DEFAULT_ADMIN_ROLE(inner) => {
21661                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
21662                        inner,
21663                        out,
21664                    )
21665                }
21666                Self::MAX_COMMISSION_BPS(inner) => {
21667                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
21668                        inner,
21669                        out,
21670                    )
21671                }
21672                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
21673                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
21674                        inner,
21675                        out,
21676                    )
21677                }
21678                Self::MAX_METADATA_URI_LENGTH(inner) => {
21679                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
21680                        inner,
21681                        out,
21682                    )
21683                }
21684                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
21685                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
21686                        inner,
21687                        out,
21688                    )
21689                }
21690                Self::PAUSER_ROLE(inner) => {
21691                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
21692                        inner,
21693                        out,
21694                    )
21695                }
21696                Self::UPGRADE_INTERFACE_VERSION(inner) => {
21697                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
21698                        inner,
21699                        out,
21700                    )
21701                }
21702                Self::_hashBlsKey(inner) => {
21703                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
21704                        inner,
21705                        out,
21706                    )
21707                }
21708                Self::activeStake(inner) => {
21709                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
21710                        inner,
21711                        out,
21712                    )
21713                }
21714                Self::blsKeys(inner) => {
21715                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21716                }
21717                Self::claimValidatorExit(inner) => {
21718                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
21719                        inner,
21720                        out,
21721                    )
21722                }
21723                Self::claimWithdrawal(inner) => {
21724                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
21725                        inner,
21726                        out,
21727                    )
21728                }
21729                Self::commissionTracking(inner) => {
21730                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
21731                        inner,
21732                        out,
21733                    )
21734                }
21735                Self::delegate(inner) => {
21736                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
21737                        inner,
21738                        out,
21739                    )
21740                }
21741                Self::delegations(inner) => {
21742                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
21743                        inner,
21744                        out,
21745                    )
21746                }
21747                Self::deregisterValidator(inner) => {
21748                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
21749                        inner,
21750                        out,
21751                    )
21752                }
21753                Self::exitEscrowPeriod(inner) => {
21754                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
21755                        inner,
21756                        out,
21757                    )
21758                }
21759                Self::getRoleAdmin(inner) => {
21760                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
21761                        inner,
21762                        out,
21763                    )
21764                }
21765                Self::getUndelegation(inner) => {
21766                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
21767                        inner,
21768                        out,
21769                    )
21770                }
21771                Self::getVersion(inner) => {
21772                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
21773                        inner,
21774                        out,
21775                    )
21776                }
21777                Self::grantRole(inner) => {
21778                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
21779                        inner,
21780                        out,
21781                    )
21782                }
21783                Self::hasRole(inner) => {
21784                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21785                }
21786                Self::initialize(inner) => {
21787                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
21788                        inner,
21789                        out,
21790                    )
21791                }
21792                Self::initializeV2(inner) => {
21793                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
21794                        inner,
21795                        out,
21796                    )
21797                }
21798                Self::initializedAtBlock(inner) => {
21799                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
21800                        inner,
21801                        out,
21802                    )
21803                }
21804                Self::lightClient(inner) => {
21805                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
21806                        inner,
21807                        out,
21808                    )
21809                }
21810                Self::maxCommissionIncrease(inner) => {
21811                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
21812                        inner,
21813                        out,
21814                    )
21815                }
21816                Self::minCommissionIncreaseInterval(inner) => {
21817                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
21818                        inner,
21819                        out,
21820                    )
21821                }
21822                Self::minDelegateAmount(inner) => {
21823                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
21824                        inner,
21825                        out,
21826                    )
21827                }
21828                Self::owner(inner) => {
21829                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21830                }
21831                Self::pause(inner) => {
21832                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21833                }
21834                Self::paused(inner) => {
21835                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21836                }
21837                Self::proxiableUUID(inner) => {
21838                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
21839                        inner,
21840                        out,
21841                    )
21842                }
21843                Self::registerValidator(inner) => {
21844                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
21845                        inner,
21846                        out,
21847                    )
21848                }
21849                Self::registerValidatorV2(inner) => {
21850                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
21851                        inner,
21852                        out,
21853                    )
21854                }
21855                Self::renounceOwnership(inner) => {
21856                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
21857                        inner,
21858                        out,
21859                    )
21860                }
21861                Self::renounceRole(inner) => {
21862                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
21863                        inner,
21864                        out,
21865                    )
21866                }
21867                Self::revokeRole(inner) => {
21868                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
21869                        inner,
21870                        out,
21871                    )
21872                }
21873                Self::schnorrKeys(inner) => {
21874                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
21875                        inner,
21876                        out,
21877                    )
21878                }
21879                Self::setMaxCommissionIncrease(inner) => {
21880                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
21881                        inner,
21882                        out,
21883                    )
21884                }
21885                Self::setMinCommissionUpdateInterval(inner) => {
21886                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
21887                        inner,
21888                        out,
21889                    )
21890                }
21891                Self::setMinDelegateAmount(inner) => {
21892                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
21893                        inner,
21894                        out,
21895                    )
21896                }
21897                Self::supportsInterface(inner) => {
21898                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
21899                        inner,
21900                        out,
21901                    )
21902                }
21903                Self::token(inner) => {
21904                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21905                }
21906                Self::transferOwnership(inner) => {
21907                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
21908                        inner,
21909                        out,
21910                    )
21911                }
21912                Self::undelegate(inner) => {
21913                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
21914                        inner,
21915                        out,
21916                    )
21917                }
21918                Self::undelegations(inner) => {
21919                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
21920                        inner,
21921                        out,
21922                    )
21923                }
21924                Self::unpause(inner) => {
21925                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
21926                }
21927                Self::updateCommission(inner) => {
21928                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
21929                        inner,
21930                        out,
21931                    )
21932                }
21933                Self::updateConsensusKeys(inner) => {
21934                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
21935                        inner,
21936                        out,
21937                    )
21938                }
21939                Self::updateConsensusKeysV2(inner) => {
21940                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
21941                        inner,
21942                        out,
21943                    )
21944                }
21945                Self::updateExitEscrowPeriod(inner) => {
21946                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
21947                        inner,
21948                        out,
21949                    )
21950                }
21951                Self::updateMetadataUri(inner) => {
21952                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
21953                        inner,
21954                        out,
21955                    )
21956                }
21957                Self::upgradeToAndCall(inner) => {
21958                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
21959                        inner,
21960                        out,
21961                    )
21962                }
21963                Self::validateMetadataUri(inner) => {
21964                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
21965                        inner,
21966                        out,
21967                    )
21968                }
21969                Self::validatorExits(inner) => {
21970                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
21971                        inner,
21972                        out,
21973                    )
21974                }
21975                Self::validators(inner) => {
21976                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
21977                        inner,
21978                        out,
21979                    )
21980                }
21981            }
21982        }
21983    }
21984    ///Container for all the [`StakeTableV2`](self) custom errors.
21985    #[derive(serde::Serialize, serde::Deserialize)]
21986    #[derive(Debug, PartialEq, Eq, Hash)]
21987    pub enum StakeTableV2Errors {
21988        #[allow(missing_docs)]
21989        AccessControlBadConfirmation(AccessControlBadConfirmation),
21990        #[allow(missing_docs)]
21991        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
21992        #[allow(missing_docs)]
21993        AddressEmptyCode(AddressEmptyCode),
21994        #[allow(missing_docs)]
21995        BLSSigVerificationFailed(BLSSigVerificationFailed),
21996        #[allow(missing_docs)]
21997        BN254PairingProdFailed(BN254PairingProdFailed),
21998        #[allow(missing_docs)]
21999        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
22000        #[allow(missing_docs)]
22001        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
22002        #[allow(missing_docs)]
22003        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
22004        #[allow(missing_docs)]
22005        CommissionUnchanged(CommissionUnchanged),
22006        #[allow(missing_docs)]
22007        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
22008        #[allow(missing_docs)]
22009        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
22010        #[allow(missing_docs)]
22011        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
22012        #[allow(missing_docs)]
22013        DelegateAmountTooSmall(DelegateAmountTooSmall),
22014        #[allow(missing_docs)]
22015        DeprecatedFunction(DeprecatedFunction),
22016        #[allow(missing_docs)]
22017        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
22018        #[allow(missing_docs)]
22019        ERC1967NonPayable(ERC1967NonPayable),
22020        #[allow(missing_docs)]
22021        EnforcedPause(EnforcedPause),
22022        #[allow(missing_docs)]
22023        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
22024        #[allow(missing_docs)]
22025        ExpectedPause(ExpectedPause),
22026        #[allow(missing_docs)]
22027        FailedInnerCall(FailedInnerCall),
22028        #[allow(missing_docs)]
22029        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
22030        #[allow(missing_docs)]
22031        InsufficientAllowance(InsufficientAllowance),
22032        #[allow(missing_docs)]
22033        InsufficientBalance(InsufficientBalance),
22034        #[allow(missing_docs)]
22035        InvalidCommission(InvalidCommission),
22036        #[allow(missing_docs)]
22037        InvalidG1(InvalidG1),
22038        #[allow(missing_docs)]
22039        InvalidInitialization(InvalidInitialization),
22040        #[allow(missing_docs)]
22041        InvalidMetadataUriLength(InvalidMetadataUriLength),
22042        #[allow(missing_docs)]
22043        InvalidRateLimitParameters(InvalidRateLimitParameters),
22044        #[allow(missing_docs)]
22045        InvalidSchnorrSig(InvalidSchnorrSig),
22046        #[allow(missing_docs)]
22047        InvalidSchnorrVK(InvalidSchnorrVK),
22048        #[allow(missing_docs)]
22049        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
22050        #[allow(missing_docs)]
22051        NoUndelegationFound(NoUndelegationFound),
22052        #[allow(missing_docs)]
22053        NotInitializing(NotInitializing),
22054        #[allow(missing_docs)]
22055        NothingToWithdraw(NothingToWithdraw),
22056        #[allow(missing_docs)]
22057        OwnableInvalidOwner(OwnableInvalidOwner),
22058        #[allow(missing_docs)]
22059        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
22060        #[allow(missing_docs)]
22061        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
22062        #[allow(missing_docs)]
22063        PowPrecompileFailed(PowPrecompileFailed),
22064        #[allow(missing_docs)]
22065        PrematureWithdrawal(PrematureWithdrawal),
22066        #[allow(missing_docs)]
22067        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
22068        #[allow(missing_docs)]
22069        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
22070        #[allow(missing_docs)]
22071        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
22072        #[allow(missing_docs)]
22073        UndelegationAlreadyExists(UndelegationAlreadyExists),
22074        #[allow(missing_docs)]
22075        ValidatorAlreadyExited(ValidatorAlreadyExited),
22076        #[allow(missing_docs)]
22077        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
22078        #[allow(missing_docs)]
22079        ValidatorInactive(ValidatorInactive),
22080        #[allow(missing_docs)]
22081        ValidatorNotExited(ValidatorNotExited),
22082        #[allow(missing_docs)]
22083        ZeroAddress(ZeroAddress),
22084        #[allow(missing_docs)]
22085        ZeroAmount(ZeroAmount),
22086    }
22087    #[automatically_derived]
22088    impl StakeTableV2Errors {
22089        /// All the selectors of this enum.
22090        ///
22091        /// Note that the selectors might not be in the same order as the variants.
22092        /// No guarantees are made about the order of the selectors.
22093        ///
22094        /// Prefer using `SolInterface` methods instead.
22095        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22096            [1u8, 181u8, 20u8, 174u8],
22097            [6u8, 207u8, 67u8, 143u8],
22098            [12u8, 237u8, 62u8, 80u8],
22099            [17u8, 140u8, 218u8, 167u8],
22100            [20u8, 37u8, 234u8, 66u8],
22101            [22u8, 235u8, 148u8, 203u8],
22102            [30u8, 79u8, 189u8, 247u8],
22103            [31u8, 42u8, 32u8, 5u8],
22104            [35u8, 159u8, 245u8, 127u8],
22105            [37u8, 173u8, 72u8, 202u8],
22106            [42u8, 27u8, 45u8, 216u8],
22107            [47u8, 171u8, 146u8, 202u8],
22108            [50u8, 116u8, 250u8, 100u8],
22109            [66u8, 71u8, 6u8, 135u8],
22110            [76u8, 156u8, 140u8, 227u8],
22111            [80u8, 129u8, 78u8, 16u8],
22112            [80u8, 138u8, 121u8, 63u8],
22113            [90u8, 119u8, 67u8, 87u8],
22114            [102u8, 151u8, 178u8, 50u8],
22115            [103u8, 78u8, 142u8, 243u8],
22116            [123u8, 38u8, 158u8, 146u8],
22117            [125u8, 41u8, 135u8, 49u8],
22118            [139u8, 120u8, 99u8, 29u8],
22119            [141u8, 252u8, 32u8, 43u8],
22120            [144u8, 184u8, 103u8, 138u8],
22121            [146u8, 102u8, 83u8, 81u8],
22122            [153u8, 115u8, 247u8, 216u8],
22123            [153u8, 150u8, 179u8, 21u8],
22124            [158u8, 120u8, 209u8, 76u8],
22125            [170u8, 29u8, 73u8, 164u8],
22126            [174u8, 73u8, 59u8, 3u8],
22127            [176u8, 181u8, 251u8, 153u8],
22128            [179u8, 152u8, 151u8, 159u8],
22129            [181u8, 36u8, 253u8, 106u8],
22130            [181u8, 126u8, 33u8, 223u8],
22131            [194u8, 6u8, 51u8, 79u8],
22132            [194u8, 11u8, 172u8, 148u8],
22133            [194u8, 215u8, 248u8, 19u8],
22134            [208u8, 208u8, 79u8, 96u8],
22135            [212u8, 35u8, 164u8, 241u8],
22136            [215u8, 230u8, 188u8, 248u8],
22137            [217u8, 46u8, 35u8, 61u8],
22138            [217u8, 60u8, 6u8, 101u8],
22139            [220u8, 129u8, 219u8, 133u8],
22140            [224u8, 124u8, 141u8, 186u8],
22141            [226u8, 81u8, 125u8, 63u8],
22142            [234u8, 180u8, 169u8, 99u8],
22143            [242u8, 83u8, 20u8, 166u8],
22144            [249u8, 46u8, 232u8, 169u8],
22145        ];
22146    }
22147    #[automatically_derived]
22148    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
22149        const NAME: &'static str = "StakeTableV2Errors";
22150        const MIN_DATA_LENGTH: usize = 0usize;
22151        const COUNT: usize = 49usize;
22152        #[inline]
22153        fn selector(&self) -> [u8; 4] {
22154            match self {
22155                Self::AccessControlBadConfirmation(_) => {
22156                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
22157                }
22158                Self::AccessControlUnauthorizedAccount(_) => {
22159                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22160                }
22161                Self::AddressEmptyCode(_) => {
22162                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
22163                }
22164                Self::BLSSigVerificationFailed(_) => {
22165                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
22166                }
22167                Self::BN254PairingProdFailed(_) => {
22168                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
22169                }
22170                Self::BlsKeyAlreadyUsed(_) => {
22171                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22172                }
22173                Self::CommissionAlreadyInitialized(_) => {
22174                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
22175                }
22176                Self::CommissionIncreaseExceedsMax(_) => {
22177                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
22178                }
22179                Self::CommissionUnchanged(_) => {
22180                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
22181                }
22182                Self::CommissionUpdateTooSoon(_) => {
22183                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
22184                }
22185                Self::DefaultAdminCannotBeRenounced(_) => {
22186                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22187                }
22188                Self::DefaultAdminCannotBeRevoked(_) => {
22189                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
22190                }
22191                Self::DelegateAmountTooSmall(_) => {
22192                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22193                }
22194                Self::DeprecatedFunction(_) => {
22195                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
22196                }
22197                Self::ERC1967InvalidImplementation(_) => {
22198                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
22199                }
22200                Self::ERC1967NonPayable(_) => {
22201                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
22202                }
22203                Self::EnforcedPause(_) => {
22204                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
22205                }
22206                Self::ExitEscrowPeriodInvalid(_) => {
22207                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
22208                }
22209                Self::ExpectedPause(_) => {
22210                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
22211                }
22212                Self::FailedInnerCall(_) => {
22213                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
22214                }
22215                Self::InitialActiveStakeExceedsBalance(_) => {
22216                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
22217                }
22218                Self::InsufficientAllowance(_) => {
22219                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
22220                }
22221                Self::InsufficientBalance(_) => {
22222                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
22223                }
22224                Self::InvalidCommission(_) => {
22225                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
22226                }
22227                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
22228                Self::InvalidInitialization(_) => {
22229                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
22230                }
22231                Self::InvalidMetadataUriLength(_) => {
22232                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
22233                }
22234                Self::InvalidRateLimitParameters(_) => {
22235                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
22236                }
22237                Self::InvalidSchnorrSig(_) => {
22238                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
22239                }
22240                Self::InvalidSchnorrVK(_) => {
22241                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
22242                }
22243                Self::MinDelegateAmountTooSmall(_) => {
22244                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
22245                }
22246                Self::NoUndelegationFound(_) => {
22247                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
22248                }
22249                Self::NotInitializing(_) => {
22250                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
22251                }
22252                Self::NothingToWithdraw(_) => {
22253                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
22254                }
22255                Self::OwnableInvalidOwner(_) => {
22256                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
22257                }
22258                Self::OwnableUnauthorizedAccount(_) => {
22259                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
22260                }
22261                Self::OwnershipCannotBeRenounced(_) => {
22262                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
22263                }
22264                Self::PowPrecompileFailed(_) => {
22265                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
22266                }
22267                Self::PrematureWithdrawal(_) => {
22268                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
22269                }
22270                Self::SchnorrKeyAlreadyUsed(_) => {
22271                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
22272                }
22273                Self::UUPSUnauthorizedCallContext(_) => {
22274                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
22275                }
22276                Self::UUPSUnsupportedProxiableUUID(_) => {
22277                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
22278                }
22279                Self::UndelegationAlreadyExists(_) => {
22280                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
22281                }
22282                Self::ValidatorAlreadyExited(_) => {
22283                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
22284                }
22285                Self::ValidatorAlreadyRegistered(_) => {
22286                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
22287                }
22288                Self::ValidatorInactive(_) => {
22289                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
22290                }
22291                Self::ValidatorNotExited(_) => {
22292                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
22293                }
22294                Self::ZeroAddress(_) => {
22295                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
22296                }
22297                Self::ZeroAmount(_) => {
22298                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
22299                }
22300            }
22301        }
22302        #[inline]
22303        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
22304            Self::SELECTORS.get(i).copied()
22305        }
22306        #[inline]
22307        fn valid_selector(selector: [u8; 4]) -> bool {
22308            Self::SELECTORS.binary_search(&selector).is_ok()
22309        }
22310        #[inline]
22311        #[allow(non_snake_case)]
22312        fn abi_decode_raw(
22313            selector: [u8; 4],
22314            data: &[u8],
22315        ) -> alloy_sol_types::Result<Self> {
22316            static DECODE_SHIMS: &[fn(
22317                &[u8],
22318            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
22319                {
22320                    fn BlsKeyAlreadyUsed(
22321                        data: &[u8],
22322                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22323                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
22324                                data,
22325                            )
22326                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
22327                    }
22328                    BlsKeyAlreadyUsed
22329                },
22330                {
22331                    fn InvalidSchnorrVK(
22332                        data: &[u8],
22333                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22334                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw(
22335                                data,
22336                            )
22337                            .map(StakeTableV2Errors::InvalidSchnorrVK)
22338                    }
22339                    InvalidSchnorrVK
22340                },
22341                {
22342                    fn BLSSigVerificationFailed(
22343                        data: &[u8],
22344                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22345                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw(
22346                                data,
22347                            )
22348                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
22349                    }
22350                    BLSSigVerificationFailed
22351                },
22352                {
22353                    fn OwnableUnauthorizedAccount(
22354                        data: &[u8],
22355                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22356                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
22357                                data,
22358                            )
22359                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
22360                    }
22361                    OwnableUnauthorizedAccount
22362                },
22363                {
22364                    fn FailedInnerCall(
22365                        data: &[u8],
22366                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22367                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
22368                                data,
22369                            )
22370                            .map(StakeTableV2Errors::FailedInnerCall)
22371                    }
22372                    FailedInnerCall
22373                },
22374                {
22375                    fn CommissionUpdateTooSoon(
22376                        data: &[u8],
22377                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22378                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw(
22379                                data,
22380                            )
22381                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
22382                    }
22383                    CommissionUpdateTooSoon
22384                },
22385                {
22386                    fn OwnableInvalidOwner(
22387                        data: &[u8],
22388                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22389                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
22390                                data,
22391                            )
22392                            .map(StakeTableV2Errors::OwnableInvalidOwner)
22393                    }
22394                    OwnableInvalidOwner
22395                },
22396                {
22397                    fn ZeroAmount(
22398                        data: &[u8],
22399                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22400                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw(data)
22401                            .map(StakeTableV2Errors::ZeroAmount)
22402                    }
22403                    ZeroAmount
22404                },
22405                {
22406                    fn InvalidMetadataUriLength(
22407                        data: &[u8],
22408                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22409                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw(
22410                                data,
22411                            )
22412                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
22413                    }
22414                    InvalidMetadataUriLength
22415                },
22416                {
22417                    fn CommissionIncreaseExceedsMax(
22418                        data: &[u8],
22419                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22420                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw(
22421                                data,
22422                            )
22423                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
22424                    }
22425                    CommissionIncreaseExceedsMax
22426                },
22427                {
22428                    fn InsufficientAllowance(
22429                        data: &[u8],
22430                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22431                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw(
22432                                data,
22433                            )
22434                            .map(StakeTableV2Errors::InsufficientAllowance)
22435                    }
22436                    InsufficientAllowance
22437                },
22438                {
22439                    fn OwnershipCannotBeRenounced(
22440                        data: &[u8],
22441                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22442                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
22443                                data,
22444                            )
22445                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
22446                    }
22447                    OwnershipCannotBeRenounced
22448                },
22449                {
22450                    fn PowPrecompileFailed(
22451                        data: &[u8],
22452                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22453                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
22454                                data,
22455                            )
22456                            .map(StakeTableV2Errors::PowPrecompileFailed)
22457                    }
22458                    PowPrecompileFailed
22459                },
22460                {
22461                    fn InvalidSchnorrSig(
22462                        data: &[u8],
22463                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22464                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw(
22465                                data,
22466                            )
22467                            .map(StakeTableV2Errors::InvalidSchnorrSig)
22468                    }
22469                    InvalidSchnorrSig
22470                },
22471                {
22472                    fn ERC1967InvalidImplementation(
22473                        data: &[u8],
22474                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22475                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
22476                                data,
22477                            )
22478                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
22479                    }
22480                    ERC1967InvalidImplementation
22481                },
22482                {
22483                    fn CommissionAlreadyInitialized(
22484                        data: &[u8],
22485                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22486                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw(
22487                                data,
22488                            )
22489                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
22490                    }
22491                    CommissionAlreadyInitialized
22492                },
22493                {
22494                    fn ValidatorInactive(
22495                        data: &[u8],
22496                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22497                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw(
22498                                data,
22499                            )
22500                            .map(StakeTableV2Errors::ValidatorInactive)
22501                    }
22502                    ValidatorInactive
22503                },
22504                {
22505                    fn PrematureWithdrawal(
22506                        data: &[u8],
22507                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22508                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw(
22509                                data,
22510                            )
22511                            .map(StakeTableV2Errors::PrematureWithdrawal)
22512                    }
22513                    PrematureWithdrawal
22514                },
22515                {
22516                    fn AccessControlBadConfirmation(
22517                        data: &[u8],
22518                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22519                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
22520                                data,
22521                            )
22522                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
22523                    }
22524                    AccessControlBadConfirmation
22525                },
22526                {
22527                    fn InvalidRateLimitParameters(
22528                        data: &[u8],
22529                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22530                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw(
22531                                data,
22532                            )
22533                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
22534                    }
22535                    InvalidRateLimitParameters
22536                },
22537                {
22538                    fn InitialActiveStakeExceedsBalance(
22539                        data: &[u8],
22540                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22541                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw(
22542                                data,
22543                            )
22544                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
22545                    }
22546                    InitialActiveStakeExceedsBalance
22547                },
22548                {
22549                    fn DelegateAmountTooSmall(
22550                        data: &[u8],
22551                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22552                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
22553                                data,
22554                            )
22555                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
22556                    }
22557                    DelegateAmountTooSmall
22558                },
22559                {
22560                    fn DefaultAdminCannotBeRenounced(
22561                        data: &[u8],
22562                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22563                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
22564                                data,
22565                            )
22566                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
22567                    }
22568                    DefaultAdminCannotBeRenounced
22569                },
22570                {
22571                    fn ExpectedPause(
22572                        data: &[u8],
22573                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22574                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
22575                                data,
22576                            )
22577                            .map(StakeTableV2Errors::ExpectedPause)
22578                    }
22579                    ExpectedPause
22580                },
22581                {
22582                    fn MinDelegateAmountTooSmall(
22583                        data: &[u8],
22584                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22585                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw(
22586                                data,
22587                            )
22588                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
22589                    }
22590                    MinDelegateAmountTooSmall
22591                },
22592                {
22593                    fn InsufficientBalance(
22594                        data: &[u8],
22595                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22596                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw(
22597                                data,
22598                            )
22599                            .map(StakeTableV2Errors::InsufficientBalance)
22600                    }
22601                    InsufficientBalance
22602                },
22603                {
22604                    fn ValidatorAlreadyRegistered(
22605                        data: &[u8],
22606                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22607                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
22608                                data,
22609                            )
22610                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
22611                    }
22612                    ValidatorAlreadyRegistered
22613                },
22614                {
22615                    fn AddressEmptyCode(
22616                        data: &[u8],
22617                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22618                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
22619                                data,
22620                            )
22621                            .map(StakeTableV2Errors::AddressEmptyCode)
22622                    }
22623                    AddressEmptyCode
22624                },
22625                {
22626                    fn InvalidG1(
22627                        data: &[u8],
22628                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22629                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
22630                            .map(StakeTableV2Errors::InvalidG1)
22631                    }
22632                    InvalidG1
22633                },
22634                {
22635                    fn UUPSUnsupportedProxiableUUID(
22636                        data: &[u8],
22637                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22638                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
22639                                data,
22640                            )
22641                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
22642                    }
22643                    UUPSUnsupportedProxiableUUID
22644                },
22645                {
22646                    fn SchnorrKeyAlreadyUsed(
22647                        data: &[u8],
22648                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22649                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw(
22650                                data,
22651                            )
22652                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
22653                    }
22654                    SchnorrKeyAlreadyUsed
22655                },
22656                {
22657                    fn DefaultAdminCannotBeRevoked(
22658                        data: &[u8],
22659                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22660                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw(
22661                                data,
22662                            )
22663                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
22664                    }
22665                    DefaultAdminCannotBeRevoked
22666                },
22667                {
22668                    fn ERC1967NonPayable(
22669                        data: &[u8],
22670                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22671                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
22672                                data,
22673                            )
22674                            .map(StakeTableV2Errors::ERC1967NonPayable)
22675                    }
22676                    ERC1967NonPayable
22677                },
22678                {
22679                    fn NoUndelegationFound(
22680                        data: &[u8],
22681                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22682                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw(
22683                                data,
22684                            )
22685                            .map(StakeTableV2Errors::NoUndelegationFound)
22686                    }
22687                    NoUndelegationFound
22688                },
22689                {
22690                    fn ExitEscrowPeriodInvalid(
22691                        data: &[u8],
22692                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22693                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw(
22694                                data,
22695                            )
22696                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
22697                    }
22698                    ExitEscrowPeriodInvalid
22699                },
22700                {
22701                    fn BN254PairingProdFailed(
22702                        data: &[u8],
22703                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22704                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
22705                                data,
22706                            )
22707                            .map(StakeTableV2Errors::BN254PairingProdFailed)
22708                    }
22709                    BN254PairingProdFailed
22710                },
22711                {
22712                    fn CommissionUnchanged(
22713                        data: &[u8],
22714                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22715                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw(
22716                                data,
22717                            )
22718                            .map(StakeTableV2Errors::CommissionUnchanged)
22719                    }
22720                    CommissionUnchanged
22721                },
22722                {
22723                    fn DeprecatedFunction(
22724                        data: &[u8],
22725                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22726                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw(
22727                                data,
22728                            )
22729                            .map(StakeTableV2Errors::DeprecatedFunction)
22730                    }
22731                    DeprecatedFunction
22732                },
22733                {
22734                    fn NothingToWithdraw(
22735                        data: &[u8],
22736                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22737                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw(
22738                                data,
22739                            )
22740                            .map(StakeTableV2Errors::NothingToWithdraw)
22741                    }
22742                    NothingToWithdraw
22743                },
22744                {
22745                    fn UndelegationAlreadyExists(
22746                        data: &[u8],
22747                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22748                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(
22749                                data,
22750                            )
22751                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
22752                    }
22753                    UndelegationAlreadyExists
22754                },
22755                {
22756                    fn NotInitializing(
22757                        data: &[u8],
22758                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22759                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
22760                                data,
22761                            )
22762                            .map(StakeTableV2Errors::NotInitializing)
22763                    }
22764                    NotInitializing
22765                },
22766                {
22767                    fn ZeroAddress(
22768                        data: &[u8],
22769                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22770                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw(data)
22771                            .map(StakeTableV2Errors::ZeroAddress)
22772                    }
22773                    ZeroAddress
22774                },
22775                {
22776                    fn EnforcedPause(
22777                        data: &[u8],
22778                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22779                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
22780                                data,
22781                            )
22782                            .map(StakeTableV2Errors::EnforcedPause)
22783                    }
22784                    EnforcedPause
22785                },
22786                {
22787                    fn InvalidCommission(
22788                        data: &[u8],
22789                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22790                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw(
22791                                data,
22792                            )
22793                            .map(StakeTableV2Errors::InvalidCommission)
22794                    }
22795                    InvalidCommission
22796                },
22797                {
22798                    fn UUPSUnauthorizedCallContext(
22799                        data: &[u8],
22800                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22801                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
22802                                data,
22803                            )
22804                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
22805                    }
22806                    UUPSUnauthorizedCallContext
22807                },
22808                {
22809                    fn AccessControlUnauthorizedAccount(
22810                        data: &[u8],
22811                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22812                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
22813                                data,
22814                            )
22815                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
22816                    }
22817                    AccessControlUnauthorizedAccount
22818                },
22819                {
22820                    fn ValidatorAlreadyExited(
22821                        data: &[u8],
22822                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22823                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw(
22824                                data,
22825                            )
22826                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
22827                    }
22828                    ValidatorAlreadyExited
22829                },
22830                {
22831                    fn ValidatorNotExited(
22832                        data: &[u8],
22833                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22834                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw(
22835                                data,
22836                            )
22837                            .map(StakeTableV2Errors::ValidatorNotExited)
22838                    }
22839                    ValidatorNotExited
22840                },
22841                {
22842                    fn InvalidInitialization(
22843                        data: &[u8],
22844                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22845                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
22846                                data,
22847                            )
22848                            .map(StakeTableV2Errors::InvalidInitialization)
22849                    }
22850                    InvalidInitialization
22851                },
22852            ];
22853            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
22854                return Err(
22855                    alloy_sol_types::Error::unknown_selector(
22856                        <Self as alloy_sol_types::SolInterface>::NAME,
22857                        selector,
22858                    ),
22859                );
22860            };
22861            DECODE_SHIMS[idx](data)
22862        }
22863        #[inline]
22864        #[allow(non_snake_case)]
22865        fn abi_decode_raw_validate(
22866            selector: [u8; 4],
22867            data: &[u8],
22868        ) -> alloy_sol_types::Result<Self> {
22869            static DECODE_VALIDATE_SHIMS: &[fn(
22870                &[u8],
22871            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
22872                {
22873                    fn BlsKeyAlreadyUsed(
22874                        data: &[u8],
22875                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22876                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
22877                                data,
22878                            )
22879                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
22880                    }
22881                    BlsKeyAlreadyUsed
22882                },
22883                {
22884                    fn InvalidSchnorrVK(
22885                        data: &[u8],
22886                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22887                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
22888                                data,
22889                            )
22890                            .map(StakeTableV2Errors::InvalidSchnorrVK)
22891                    }
22892                    InvalidSchnorrVK
22893                },
22894                {
22895                    fn BLSSigVerificationFailed(
22896                        data: &[u8],
22897                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22898                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
22899                                data,
22900                            )
22901                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
22902                    }
22903                    BLSSigVerificationFailed
22904                },
22905                {
22906                    fn OwnableUnauthorizedAccount(
22907                        data: &[u8],
22908                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22909                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
22910                                data,
22911                            )
22912                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
22913                    }
22914                    OwnableUnauthorizedAccount
22915                },
22916                {
22917                    fn FailedInnerCall(
22918                        data: &[u8],
22919                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22920                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
22921                                data,
22922                            )
22923                            .map(StakeTableV2Errors::FailedInnerCall)
22924                    }
22925                    FailedInnerCall
22926                },
22927                {
22928                    fn CommissionUpdateTooSoon(
22929                        data: &[u8],
22930                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22931                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_validate(
22932                                data,
22933                            )
22934                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
22935                    }
22936                    CommissionUpdateTooSoon
22937                },
22938                {
22939                    fn OwnableInvalidOwner(
22940                        data: &[u8],
22941                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22942                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
22943                                data,
22944                            )
22945                            .map(StakeTableV2Errors::OwnableInvalidOwner)
22946                    }
22947                    OwnableInvalidOwner
22948                },
22949                {
22950                    fn ZeroAmount(
22951                        data: &[u8],
22952                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22953                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
22954                                data,
22955                            )
22956                            .map(StakeTableV2Errors::ZeroAmount)
22957                    }
22958                    ZeroAmount
22959                },
22960                {
22961                    fn InvalidMetadataUriLength(
22962                        data: &[u8],
22963                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22964                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
22965                                data,
22966                            )
22967                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
22968                    }
22969                    InvalidMetadataUriLength
22970                },
22971                {
22972                    fn CommissionIncreaseExceedsMax(
22973                        data: &[u8],
22974                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22975                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_validate(
22976                                data,
22977                            )
22978                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
22979                    }
22980                    CommissionIncreaseExceedsMax
22981                },
22982                {
22983                    fn InsufficientAllowance(
22984                        data: &[u8],
22985                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22986                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_validate(
22987                                data,
22988                            )
22989                            .map(StakeTableV2Errors::InsufficientAllowance)
22990                    }
22991                    InsufficientAllowance
22992                },
22993                {
22994                    fn OwnershipCannotBeRenounced(
22995                        data: &[u8],
22996                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
22997                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
22998                                data,
22999                            )
23000                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
23001                    }
23002                    OwnershipCannotBeRenounced
23003                },
23004                {
23005                    fn PowPrecompileFailed(
23006                        data: &[u8],
23007                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23008                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23009                                data,
23010                            )
23011                            .map(StakeTableV2Errors::PowPrecompileFailed)
23012                    }
23013                    PowPrecompileFailed
23014                },
23015                {
23016                    fn InvalidSchnorrSig(
23017                        data: &[u8],
23018                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23019                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_validate(
23020                                data,
23021                            )
23022                            .map(StakeTableV2Errors::InvalidSchnorrSig)
23023                    }
23024                    InvalidSchnorrSig
23025                },
23026                {
23027                    fn ERC1967InvalidImplementation(
23028                        data: &[u8],
23029                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23030                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23031                                data,
23032                            )
23033                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
23034                    }
23035                    ERC1967InvalidImplementation
23036                },
23037                {
23038                    fn CommissionAlreadyInitialized(
23039                        data: &[u8],
23040                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23041                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_validate(
23042                                data,
23043                            )
23044                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
23045                    }
23046                    CommissionAlreadyInitialized
23047                },
23048                {
23049                    fn ValidatorInactive(
23050                        data: &[u8],
23051                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23052                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_validate(
23053                                data,
23054                            )
23055                            .map(StakeTableV2Errors::ValidatorInactive)
23056                    }
23057                    ValidatorInactive
23058                },
23059                {
23060                    fn PrematureWithdrawal(
23061                        data: &[u8],
23062                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23063                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_validate(
23064                                data,
23065                            )
23066                            .map(StakeTableV2Errors::PrematureWithdrawal)
23067                    }
23068                    PrematureWithdrawal
23069                },
23070                {
23071                    fn AccessControlBadConfirmation(
23072                        data: &[u8],
23073                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23074                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
23075                                data,
23076                            )
23077                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
23078                    }
23079                    AccessControlBadConfirmation
23080                },
23081                {
23082                    fn InvalidRateLimitParameters(
23083                        data: &[u8],
23084                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23085                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_validate(
23086                                data,
23087                            )
23088                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
23089                    }
23090                    InvalidRateLimitParameters
23091                },
23092                {
23093                    fn InitialActiveStakeExceedsBalance(
23094                        data: &[u8],
23095                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23096                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23097                                data,
23098                            )
23099                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
23100                    }
23101                    InitialActiveStakeExceedsBalance
23102                },
23103                {
23104                    fn DelegateAmountTooSmall(
23105                        data: &[u8],
23106                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23107                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23108                                data,
23109                            )
23110                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
23111                    }
23112                    DelegateAmountTooSmall
23113                },
23114                {
23115                    fn DefaultAdminCannotBeRenounced(
23116                        data: &[u8],
23117                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23118                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
23119                                data,
23120                            )
23121                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
23122                    }
23123                    DefaultAdminCannotBeRenounced
23124                },
23125                {
23126                    fn ExpectedPause(
23127                        data: &[u8],
23128                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23129                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23130                                data,
23131                            )
23132                            .map(StakeTableV2Errors::ExpectedPause)
23133                    }
23134                    ExpectedPause
23135                },
23136                {
23137                    fn MinDelegateAmountTooSmall(
23138                        data: &[u8],
23139                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23140                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_validate(
23141                                data,
23142                            )
23143                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23144                    }
23145                    MinDelegateAmountTooSmall
23146                },
23147                {
23148                    fn InsufficientBalance(
23149                        data: &[u8],
23150                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23151                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_validate(
23152                                data,
23153                            )
23154                            .map(StakeTableV2Errors::InsufficientBalance)
23155                    }
23156                    InsufficientBalance
23157                },
23158                {
23159                    fn ValidatorAlreadyRegistered(
23160                        data: &[u8],
23161                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23162                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
23163                                data,
23164                            )
23165                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23166                    }
23167                    ValidatorAlreadyRegistered
23168                },
23169                {
23170                    fn AddressEmptyCode(
23171                        data: &[u8],
23172                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23173                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
23174                                data,
23175                            )
23176                            .map(StakeTableV2Errors::AddressEmptyCode)
23177                    }
23178                    AddressEmptyCode
23179                },
23180                {
23181                    fn InvalidG1(
23182                        data: &[u8],
23183                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23184                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
23185                                data,
23186                            )
23187                            .map(StakeTableV2Errors::InvalidG1)
23188                    }
23189                    InvalidG1
23190                },
23191                {
23192                    fn UUPSUnsupportedProxiableUUID(
23193                        data: &[u8],
23194                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23195                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
23196                                data,
23197                            )
23198                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23199                    }
23200                    UUPSUnsupportedProxiableUUID
23201                },
23202                {
23203                    fn SchnorrKeyAlreadyUsed(
23204                        data: &[u8],
23205                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23206                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23207                                data,
23208                            )
23209                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23210                    }
23211                    SchnorrKeyAlreadyUsed
23212                },
23213                {
23214                    fn DefaultAdminCannotBeRevoked(
23215                        data: &[u8],
23216                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23217                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_validate(
23218                                data,
23219                            )
23220                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23221                    }
23222                    DefaultAdminCannotBeRevoked
23223                },
23224                {
23225                    fn ERC1967NonPayable(
23226                        data: &[u8],
23227                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23228                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
23229                                data,
23230                            )
23231                            .map(StakeTableV2Errors::ERC1967NonPayable)
23232                    }
23233                    ERC1967NonPayable
23234                },
23235                {
23236                    fn NoUndelegationFound(
23237                        data: &[u8],
23238                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23239                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_validate(
23240                                data,
23241                            )
23242                            .map(StakeTableV2Errors::NoUndelegationFound)
23243                    }
23244                    NoUndelegationFound
23245                },
23246                {
23247                    fn ExitEscrowPeriodInvalid(
23248                        data: &[u8],
23249                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23250                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_validate(
23251                                data,
23252                            )
23253                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23254                    }
23255                    ExitEscrowPeriodInvalid
23256                },
23257                {
23258                    fn BN254PairingProdFailed(
23259                        data: &[u8],
23260                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23261                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
23262                                data,
23263                            )
23264                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23265                    }
23266                    BN254PairingProdFailed
23267                },
23268                {
23269                    fn CommissionUnchanged(
23270                        data: &[u8],
23271                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23272                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_validate(
23273                                data,
23274                            )
23275                            .map(StakeTableV2Errors::CommissionUnchanged)
23276                    }
23277                    CommissionUnchanged
23278                },
23279                {
23280                    fn DeprecatedFunction(
23281                        data: &[u8],
23282                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23283                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_validate(
23284                                data,
23285                            )
23286                            .map(StakeTableV2Errors::DeprecatedFunction)
23287                    }
23288                    DeprecatedFunction
23289                },
23290                {
23291                    fn NothingToWithdraw(
23292                        data: &[u8],
23293                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23294                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_validate(
23295                                data,
23296                            )
23297                            .map(StakeTableV2Errors::NothingToWithdraw)
23298                    }
23299                    NothingToWithdraw
23300                },
23301                {
23302                    fn UndelegationAlreadyExists(
23303                        data: &[u8],
23304                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23305                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
23306                                data,
23307                            )
23308                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23309                    }
23310                    UndelegationAlreadyExists
23311                },
23312                {
23313                    fn NotInitializing(
23314                        data: &[u8],
23315                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23316                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
23317                                data,
23318                            )
23319                            .map(StakeTableV2Errors::NotInitializing)
23320                    }
23321                    NotInitializing
23322                },
23323                {
23324                    fn ZeroAddress(
23325                        data: &[u8],
23326                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23327                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
23328                                data,
23329                            )
23330                            .map(StakeTableV2Errors::ZeroAddress)
23331                    }
23332                    ZeroAddress
23333                },
23334                {
23335                    fn EnforcedPause(
23336                        data: &[u8],
23337                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23338                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
23339                                data,
23340                            )
23341                            .map(StakeTableV2Errors::EnforcedPause)
23342                    }
23343                    EnforcedPause
23344                },
23345                {
23346                    fn InvalidCommission(
23347                        data: &[u8],
23348                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23349                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_validate(
23350                                data,
23351                            )
23352                            .map(StakeTableV2Errors::InvalidCommission)
23353                    }
23354                    InvalidCommission
23355                },
23356                {
23357                    fn UUPSUnauthorizedCallContext(
23358                        data: &[u8],
23359                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23360                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
23361                                data,
23362                            )
23363                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
23364                    }
23365                    UUPSUnauthorizedCallContext
23366                },
23367                {
23368                    fn AccessControlUnauthorizedAccount(
23369                        data: &[u8],
23370                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23371                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
23372                                data,
23373                            )
23374                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
23375                    }
23376                    AccessControlUnauthorizedAccount
23377                },
23378                {
23379                    fn ValidatorAlreadyExited(
23380                        data: &[u8],
23381                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23382                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
23383                                data,
23384                            )
23385                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
23386                    }
23387                    ValidatorAlreadyExited
23388                },
23389                {
23390                    fn ValidatorNotExited(
23391                        data: &[u8],
23392                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23393                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_validate(
23394                                data,
23395                            )
23396                            .map(StakeTableV2Errors::ValidatorNotExited)
23397                    }
23398                    ValidatorNotExited
23399                },
23400                {
23401                    fn InvalidInitialization(
23402                        data: &[u8],
23403                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23404                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
23405                                data,
23406                            )
23407                            .map(StakeTableV2Errors::InvalidInitialization)
23408                    }
23409                    InvalidInitialization
23410                },
23411            ];
23412            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23413                return Err(
23414                    alloy_sol_types::Error::unknown_selector(
23415                        <Self as alloy_sol_types::SolInterface>::NAME,
23416                        selector,
23417                    ),
23418                );
23419            };
23420            DECODE_VALIDATE_SHIMS[idx](data)
23421        }
23422        #[inline]
23423        fn abi_encoded_size(&self) -> usize {
23424            match self {
23425                Self::AccessControlBadConfirmation(inner) => {
23426                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
23427                        inner,
23428                    )
23429                }
23430                Self::AccessControlUnauthorizedAccount(inner) => {
23431                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
23432                        inner,
23433                    )
23434                }
23435                Self::AddressEmptyCode(inner) => {
23436                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
23437                        inner,
23438                    )
23439                }
23440                Self::BLSSigVerificationFailed(inner) => {
23441                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
23442                        inner,
23443                    )
23444                }
23445                Self::BN254PairingProdFailed(inner) => {
23446                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
23447                        inner,
23448                    )
23449                }
23450                Self::BlsKeyAlreadyUsed(inner) => {
23451                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
23452                        inner,
23453                    )
23454                }
23455                Self::CommissionAlreadyInitialized(inner) => {
23456                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
23457                        inner,
23458                    )
23459                }
23460                Self::CommissionIncreaseExceedsMax(inner) => {
23461                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
23462                        inner,
23463                    )
23464                }
23465                Self::CommissionUnchanged(inner) => {
23466                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
23467                        inner,
23468                    )
23469                }
23470                Self::CommissionUpdateTooSoon(inner) => {
23471                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
23472                        inner,
23473                    )
23474                }
23475                Self::DefaultAdminCannotBeRenounced(inner) => {
23476                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
23477                        inner,
23478                    )
23479                }
23480                Self::DefaultAdminCannotBeRevoked(inner) => {
23481                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
23482                        inner,
23483                    )
23484                }
23485                Self::DelegateAmountTooSmall(inner) => {
23486                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
23487                        inner,
23488                    )
23489                }
23490                Self::DeprecatedFunction(inner) => {
23491                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
23492                        inner,
23493                    )
23494                }
23495                Self::ERC1967InvalidImplementation(inner) => {
23496                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
23497                        inner,
23498                    )
23499                }
23500                Self::ERC1967NonPayable(inner) => {
23501                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
23502                        inner,
23503                    )
23504                }
23505                Self::EnforcedPause(inner) => {
23506                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23507                }
23508                Self::ExitEscrowPeriodInvalid(inner) => {
23509                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
23510                        inner,
23511                    )
23512                }
23513                Self::ExpectedPause(inner) => {
23514                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23515                }
23516                Self::FailedInnerCall(inner) => {
23517                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
23518                        inner,
23519                    )
23520                }
23521                Self::InitialActiveStakeExceedsBalance(inner) => {
23522                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
23523                        inner,
23524                    )
23525                }
23526                Self::InsufficientAllowance(inner) => {
23527                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
23528                        inner,
23529                    )
23530                }
23531                Self::InsufficientBalance(inner) => {
23532                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
23533                        inner,
23534                    )
23535                }
23536                Self::InvalidCommission(inner) => {
23537                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
23538                        inner,
23539                    )
23540                }
23541                Self::InvalidG1(inner) => {
23542                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
23543                }
23544                Self::InvalidInitialization(inner) => {
23545                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
23546                        inner,
23547                    )
23548                }
23549                Self::InvalidMetadataUriLength(inner) => {
23550                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
23551                        inner,
23552                    )
23553                }
23554                Self::InvalidRateLimitParameters(inner) => {
23555                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
23556                        inner,
23557                    )
23558                }
23559                Self::InvalidSchnorrSig(inner) => {
23560                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
23561                        inner,
23562                    )
23563                }
23564                Self::InvalidSchnorrVK(inner) => {
23565                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
23566                        inner,
23567                    )
23568                }
23569                Self::MinDelegateAmountTooSmall(inner) => {
23570                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
23571                        inner,
23572                    )
23573                }
23574                Self::NoUndelegationFound(inner) => {
23575                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
23576                        inner,
23577                    )
23578                }
23579                Self::NotInitializing(inner) => {
23580                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
23581                        inner,
23582                    )
23583                }
23584                Self::NothingToWithdraw(inner) => {
23585                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
23586                        inner,
23587                    )
23588                }
23589                Self::OwnableInvalidOwner(inner) => {
23590                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
23591                        inner,
23592                    )
23593                }
23594                Self::OwnableUnauthorizedAccount(inner) => {
23595                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
23596                        inner,
23597                    )
23598                }
23599                Self::OwnershipCannotBeRenounced(inner) => {
23600                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
23601                        inner,
23602                    )
23603                }
23604                Self::PowPrecompileFailed(inner) => {
23605                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
23606                        inner,
23607                    )
23608                }
23609                Self::PrematureWithdrawal(inner) => {
23610                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
23611                        inner,
23612                    )
23613                }
23614                Self::SchnorrKeyAlreadyUsed(inner) => {
23615                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
23616                        inner,
23617                    )
23618                }
23619                Self::UUPSUnauthorizedCallContext(inner) => {
23620                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
23621                        inner,
23622                    )
23623                }
23624                Self::UUPSUnsupportedProxiableUUID(inner) => {
23625                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
23626                        inner,
23627                    )
23628                }
23629                Self::UndelegationAlreadyExists(inner) => {
23630                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
23631                        inner,
23632                    )
23633                }
23634                Self::ValidatorAlreadyExited(inner) => {
23635                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
23636                        inner,
23637                    )
23638                }
23639                Self::ValidatorAlreadyRegistered(inner) => {
23640                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
23641                        inner,
23642                    )
23643                }
23644                Self::ValidatorInactive(inner) => {
23645                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
23646                        inner,
23647                    )
23648                }
23649                Self::ValidatorNotExited(inner) => {
23650                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
23651                        inner,
23652                    )
23653                }
23654                Self::ZeroAddress(inner) => {
23655                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
23656                }
23657                Self::ZeroAmount(inner) => {
23658                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
23659                }
23660            }
23661        }
23662        #[inline]
23663        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
23664            match self {
23665                Self::AccessControlBadConfirmation(inner) => {
23666                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
23667                        inner,
23668                        out,
23669                    )
23670                }
23671                Self::AccessControlUnauthorizedAccount(inner) => {
23672                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
23673                        inner,
23674                        out,
23675                    )
23676                }
23677                Self::AddressEmptyCode(inner) => {
23678                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
23679                        inner,
23680                        out,
23681                    )
23682                }
23683                Self::BLSSigVerificationFailed(inner) => {
23684                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
23685                        inner,
23686                        out,
23687                    )
23688                }
23689                Self::BN254PairingProdFailed(inner) => {
23690                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
23691                        inner,
23692                        out,
23693                    )
23694                }
23695                Self::BlsKeyAlreadyUsed(inner) => {
23696                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
23697                        inner,
23698                        out,
23699                    )
23700                }
23701                Self::CommissionAlreadyInitialized(inner) => {
23702                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
23703                        inner,
23704                        out,
23705                    )
23706                }
23707                Self::CommissionIncreaseExceedsMax(inner) => {
23708                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
23709                        inner,
23710                        out,
23711                    )
23712                }
23713                Self::CommissionUnchanged(inner) => {
23714                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
23715                        inner,
23716                        out,
23717                    )
23718                }
23719                Self::CommissionUpdateTooSoon(inner) => {
23720                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
23721                        inner,
23722                        out,
23723                    )
23724                }
23725                Self::DefaultAdminCannotBeRenounced(inner) => {
23726                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
23727                        inner,
23728                        out,
23729                    )
23730                }
23731                Self::DefaultAdminCannotBeRevoked(inner) => {
23732                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
23733                        inner,
23734                        out,
23735                    )
23736                }
23737                Self::DelegateAmountTooSmall(inner) => {
23738                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
23739                        inner,
23740                        out,
23741                    )
23742                }
23743                Self::DeprecatedFunction(inner) => {
23744                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
23745                        inner,
23746                        out,
23747                    )
23748                }
23749                Self::ERC1967InvalidImplementation(inner) => {
23750                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
23751                        inner,
23752                        out,
23753                    )
23754                }
23755                Self::ERC1967NonPayable(inner) => {
23756                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
23757                        inner,
23758                        out,
23759                    )
23760                }
23761                Self::EnforcedPause(inner) => {
23762                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
23763                        inner,
23764                        out,
23765                    )
23766                }
23767                Self::ExitEscrowPeriodInvalid(inner) => {
23768                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
23769                        inner,
23770                        out,
23771                    )
23772                }
23773                Self::ExpectedPause(inner) => {
23774                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
23775                        inner,
23776                        out,
23777                    )
23778                }
23779                Self::FailedInnerCall(inner) => {
23780                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
23781                        inner,
23782                        out,
23783                    )
23784                }
23785                Self::InitialActiveStakeExceedsBalance(inner) => {
23786                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
23787                        inner,
23788                        out,
23789                    )
23790                }
23791                Self::InsufficientAllowance(inner) => {
23792                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
23793                        inner,
23794                        out,
23795                    )
23796                }
23797                Self::InsufficientBalance(inner) => {
23798                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
23799                        inner,
23800                        out,
23801                    )
23802                }
23803                Self::InvalidCommission(inner) => {
23804                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
23805                        inner,
23806                        out,
23807                    )
23808                }
23809                Self::InvalidG1(inner) => {
23810                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
23811                }
23812                Self::InvalidInitialization(inner) => {
23813                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
23814                        inner,
23815                        out,
23816                    )
23817                }
23818                Self::InvalidMetadataUriLength(inner) => {
23819                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
23820                        inner,
23821                        out,
23822                    )
23823                }
23824                Self::InvalidRateLimitParameters(inner) => {
23825                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
23826                        inner,
23827                        out,
23828                    )
23829                }
23830                Self::InvalidSchnorrSig(inner) => {
23831                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
23832                        inner,
23833                        out,
23834                    )
23835                }
23836                Self::InvalidSchnorrVK(inner) => {
23837                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
23838                        inner,
23839                        out,
23840                    )
23841                }
23842                Self::MinDelegateAmountTooSmall(inner) => {
23843                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
23844                        inner,
23845                        out,
23846                    )
23847                }
23848                Self::NoUndelegationFound(inner) => {
23849                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
23850                        inner,
23851                        out,
23852                    )
23853                }
23854                Self::NotInitializing(inner) => {
23855                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
23856                        inner,
23857                        out,
23858                    )
23859                }
23860                Self::NothingToWithdraw(inner) => {
23861                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
23862                        inner,
23863                        out,
23864                    )
23865                }
23866                Self::OwnableInvalidOwner(inner) => {
23867                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
23868                        inner,
23869                        out,
23870                    )
23871                }
23872                Self::OwnableUnauthorizedAccount(inner) => {
23873                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
23874                        inner,
23875                        out,
23876                    )
23877                }
23878                Self::OwnershipCannotBeRenounced(inner) => {
23879                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
23880                        inner,
23881                        out,
23882                    )
23883                }
23884                Self::PowPrecompileFailed(inner) => {
23885                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
23886                        inner,
23887                        out,
23888                    )
23889                }
23890                Self::PrematureWithdrawal(inner) => {
23891                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
23892                        inner,
23893                        out,
23894                    )
23895                }
23896                Self::SchnorrKeyAlreadyUsed(inner) => {
23897                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
23898                        inner,
23899                        out,
23900                    )
23901                }
23902                Self::UUPSUnauthorizedCallContext(inner) => {
23903                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
23904                        inner,
23905                        out,
23906                    )
23907                }
23908                Self::UUPSUnsupportedProxiableUUID(inner) => {
23909                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
23910                        inner,
23911                        out,
23912                    )
23913                }
23914                Self::UndelegationAlreadyExists(inner) => {
23915                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
23916                        inner,
23917                        out,
23918                    )
23919                }
23920                Self::ValidatorAlreadyExited(inner) => {
23921                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
23922                        inner,
23923                        out,
23924                    )
23925                }
23926                Self::ValidatorAlreadyRegistered(inner) => {
23927                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
23928                        inner,
23929                        out,
23930                    )
23931                }
23932                Self::ValidatorInactive(inner) => {
23933                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
23934                        inner,
23935                        out,
23936                    )
23937                }
23938                Self::ValidatorNotExited(inner) => {
23939                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
23940                        inner,
23941                        out,
23942                    )
23943                }
23944                Self::ZeroAddress(inner) => {
23945                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
23946                        inner,
23947                        out,
23948                    )
23949                }
23950                Self::ZeroAmount(inner) => {
23951                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
23952                }
23953            }
23954        }
23955    }
23956    ///Container for all the [`StakeTableV2`](self) events.
23957    #[derive(serde::Serialize, serde::Deserialize)]
23958    #[derive()]
23959    pub enum StakeTableV2Events {
23960        #[allow(missing_docs)]
23961        CommissionUpdated(CommissionUpdated),
23962        #[allow(missing_docs)]
23963        ConsensusKeysUpdated(ConsensusKeysUpdated),
23964        #[allow(missing_docs)]
23965        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
23966        #[allow(missing_docs)]
23967        Delegated(Delegated),
23968        #[allow(missing_docs)]
23969        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
23970        #[allow(missing_docs)]
23971        Initialized(Initialized),
23972        #[allow(missing_docs)]
23973        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
23974        #[allow(missing_docs)]
23975        MetadataUriUpdated(MetadataUriUpdated),
23976        #[allow(missing_docs)]
23977        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
23978        #[allow(missing_docs)]
23979        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
23980        #[allow(missing_docs)]
23981        OwnershipTransferred(OwnershipTransferred),
23982        #[allow(missing_docs)]
23983        Paused(Paused),
23984        #[allow(missing_docs)]
23985        RoleAdminChanged(RoleAdminChanged),
23986        #[allow(missing_docs)]
23987        RoleGranted(RoleGranted),
23988        #[allow(missing_docs)]
23989        RoleRevoked(RoleRevoked),
23990        #[allow(missing_docs)]
23991        Undelegated(Undelegated),
23992        #[allow(missing_docs)]
23993        UndelegatedV2(UndelegatedV2),
23994        #[allow(missing_docs)]
23995        Unpaused(Unpaused),
23996        #[allow(missing_docs)]
23997        Upgraded(Upgraded),
23998        #[allow(missing_docs)]
23999        ValidatorExit(ValidatorExit),
24000        #[allow(missing_docs)]
24001        ValidatorExitClaimed(ValidatorExitClaimed),
24002        #[allow(missing_docs)]
24003        ValidatorExitV2(ValidatorExitV2),
24004        #[allow(missing_docs)]
24005        ValidatorRegistered(ValidatorRegistered),
24006        #[allow(missing_docs)]
24007        ValidatorRegisteredV2(ValidatorRegisteredV2),
24008        #[allow(missing_docs)]
24009        Withdrawal(Withdrawal),
24010        #[allow(missing_docs)]
24011        WithdrawalClaimed(WithdrawalClaimed),
24012    }
24013    #[automatically_derived]
24014    impl StakeTableV2Events {
24015        /// All the selectors of this enum.
24016        ///
24017        /// Note that the selectors might not be in the same order as the variants.
24018        /// No guarantees are made about the order of the selectors.
24019        ///
24020        /// Prefer using `SolInterface` methods instead.
24021        pub const SELECTORS: &'static [[u8; 32usize]] = &[
24022            [
24023                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
24024                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
24025                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
24026            ],
24027            [
24028                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
24029                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
24030                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
24031            ],
24032            [
24033                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
24034                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
24035                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
24036            ],
24037            [
24038                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
24039                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
24040                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
24041            ],
24042            [
24043                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
24044                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
24045                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
24046            ],
24047            [
24048                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
24049                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
24050                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
24051            ],
24052            [
24053                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
24054                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
24055                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
24056            ],
24057            [
24058                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
24059                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
24060                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
24061            ],
24062            [
24063                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
24064                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
24065                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
24066            ],
24067            [
24068                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
24069                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
24070                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
24071            ],
24072            [
24073                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
24074                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
24075                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
24076            ],
24077            [
24078                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
24079                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
24080                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
24081            ],
24082            [
24083                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
24084                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
24085                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
24086            ],
24087            [
24088                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
24089                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
24090                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
24091            ],
24092            [
24093                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
24094                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
24095                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
24096            ],
24097            [
24098                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
24099                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
24100                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
24101            ],
24102            [
24103                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
24104                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
24105                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
24106            ],
24107            [
24108                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
24109                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
24110                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
24111            ],
24112            [
24113                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
24114                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
24115                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
24116            ],
24117            [
24118                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
24119                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
24120                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
24121            ],
24122            [
24123                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
24124                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
24125                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
24126            ],
24127            [
24128                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
24129                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
24130                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
24131            ],
24132            [
24133                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
24134                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
24135                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
24136            ],
24137            [
24138                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
24139                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
24140                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
24141            ],
24142            [
24143                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
24144                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
24145                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
24146            ],
24147            [
24148                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
24149                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
24150                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
24151            ],
24152        ];
24153    }
24154    #[automatically_derived]
24155    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
24156        const NAME: &'static str = "StakeTableV2Events";
24157        const COUNT: usize = 26usize;
24158        fn decode_raw_log(
24159            topics: &[alloy_sol_types::Word],
24160            data: &[u8],
24161        ) -> alloy_sol_types::Result<Self> {
24162            match topics.first().copied() {
24163                Some(
24164                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24165                ) => {
24166                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24167                            topics,
24168                            data,
24169                        )
24170                        .map(Self::CommissionUpdated)
24171                }
24172                Some(
24173                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24174                ) => {
24175                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24176                            topics,
24177                            data,
24178                        )
24179                        .map(Self::ConsensusKeysUpdated)
24180                }
24181                Some(
24182                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24183                ) => {
24184                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24185                            topics,
24186                            data,
24187                        )
24188                        .map(Self::ConsensusKeysUpdatedV2)
24189                }
24190                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24191                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log(
24192                            topics,
24193                            data,
24194                        )
24195                        .map(Self::Delegated)
24196                }
24197                Some(
24198                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24199                ) => {
24200                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24201                            topics,
24202                            data,
24203                        )
24204                        .map(Self::ExitEscrowPeriodUpdated)
24205                }
24206                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24207                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
24208                            topics,
24209                            data,
24210                        )
24211                        .map(Self::Initialized)
24212                }
24213                Some(
24214                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24215                ) => {
24216                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24217                            topics,
24218                            data,
24219                        )
24220                        .map(Self::MaxCommissionIncreaseUpdated)
24221                }
24222                Some(
24223                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24224                ) => {
24225                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24226                            topics,
24227                            data,
24228                        )
24229                        .map(Self::MetadataUriUpdated)
24230                }
24231                Some(
24232                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24233                ) => {
24234                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24235                            topics,
24236                            data,
24237                        )
24238                        .map(Self::MinCommissionUpdateIntervalUpdated)
24239                }
24240                Some(
24241                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24242                ) => {
24243                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
24244                            topics,
24245                            data,
24246                        )
24247                        .map(Self::MinDelegateAmountUpdated)
24248                }
24249                Some(
24250                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24251                ) => {
24252                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
24253                            topics,
24254                            data,
24255                        )
24256                        .map(Self::OwnershipTransferred)
24257                }
24258                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24259                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24260                        .map(Self::Paused)
24261                }
24262                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24263                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
24264                            topics,
24265                            data,
24266                        )
24267                        .map(Self::RoleAdminChanged)
24268                }
24269                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24270                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
24271                            topics,
24272                            data,
24273                        )
24274                        .map(Self::RoleGranted)
24275                }
24276                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24277                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
24278                            topics,
24279                            data,
24280                        )
24281                        .map(Self::RoleRevoked)
24282                }
24283                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24284                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log(
24285                            topics,
24286                            data,
24287                        )
24288                        .map(Self::Undelegated)
24289                }
24290                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24291                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24292                            topics,
24293                            data,
24294                        )
24295                        .map(Self::UndelegatedV2)
24296                }
24297                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24298                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24299                        .map(Self::Unpaused)
24300                }
24301                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24302                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
24303                        .map(Self::Upgraded)
24304                }
24305                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24306                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log(
24307                            topics,
24308                            data,
24309                        )
24310                        .map(Self::ValidatorExit)
24311                }
24312                Some(
24313                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24314                ) => {
24315                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
24316                            topics,
24317                            data,
24318                        )
24319                        .map(Self::ValidatorExitClaimed)
24320                }
24321                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24322                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24323                            topics,
24324                            data,
24325                        )
24326                        .map(Self::ValidatorExitV2)
24327                }
24328                Some(
24329                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24330                ) => {
24331                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log(
24332                            topics,
24333                            data,
24334                        )
24335                        .map(Self::ValidatorRegistered)
24336                }
24337                Some(
24338                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24339                ) => {
24340                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log(
24341                            topics,
24342                            data,
24343                        )
24344                        .map(Self::ValidatorRegisteredV2)
24345                }
24346                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
24347                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log(
24348                            topics,
24349                            data,
24350                        )
24351                        .map(Self::Withdrawal)
24352                }
24353                Some(
24354                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
24355                ) => {
24356                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
24357                            topics,
24358                            data,
24359                        )
24360                        .map(Self::WithdrawalClaimed)
24361                }
24362                _ => {
24363                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
24364                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
24365                        log: alloy_sol_types::private::Box::new(
24366                            alloy_sol_types::private::LogData::new_unchecked(
24367                                topics.to_vec(),
24368                                data.to_vec().into(),
24369                            ),
24370                        ),
24371                    })
24372                }
24373            }
24374        }
24375    }
24376    #[automatically_derived]
24377    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
24378        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
24379            match self {
24380                Self::CommissionUpdated(inner) => {
24381                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24382                }
24383                Self::ConsensusKeysUpdated(inner) => {
24384                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24385                }
24386                Self::ConsensusKeysUpdatedV2(inner) => {
24387                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24388                }
24389                Self::Delegated(inner) => {
24390                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24391                }
24392                Self::ExitEscrowPeriodUpdated(inner) => {
24393                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24394                }
24395                Self::Initialized(inner) => {
24396                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24397                }
24398                Self::MaxCommissionIncreaseUpdated(inner) => {
24399                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24400                }
24401                Self::MetadataUriUpdated(inner) => {
24402                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24403                }
24404                Self::MinCommissionUpdateIntervalUpdated(inner) => {
24405                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24406                }
24407                Self::MinDelegateAmountUpdated(inner) => {
24408                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24409                }
24410                Self::OwnershipTransferred(inner) => {
24411                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24412                }
24413                Self::Paused(inner) => {
24414                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24415                }
24416                Self::RoleAdminChanged(inner) => {
24417                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24418                }
24419                Self::RoleGranted(inner) => {
24420                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24421                }
24422                Self::RoleRevoked(inner) => {
24423                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24424                }
24425                Self::Undelegated(inner) => {
24426                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24427                }
24428                Self::UndelegatedV2(inner) => {
24429                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24430                }
24431                Self::Unpaused(inner) => {
24432                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24433                }
24434                Self::Upgraded(inner) => {
24435                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24436                }
24437                Self::ValidatorExit(inner) => {
24438                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24439                }
24440                Self::ValidatorExitClaimed(inner) => {
24441                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24442                }
24443                Self::ValidatorExitV2(inner) => {
24444                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24445                }
24446                Self::ValidatorRegistered(inner) => {
24447                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24448                }
24449                Self::ValidatorRegisteredV2(inner) => {
24450                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24451                }
24452                Self::Withdrawal(inner) => {
24453                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24454                }
24455                Self::WithdrawalClaimed(inner) => {
24456                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
24457                }
24458            }
24459        }
24460        fn into_log_data(self) -> alloy_sol_types::private::LogData {
24461            match self {
24462                Self::CommissionUpdated(inner) => {
24463                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24464                }
24465                Self::ConsensusKeysUpdated(inner) => {
24466                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24467                }
24468                Self::ConsensusKeysUpdatedV2(inner) => {
24469                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24470                }
24471                Self::Delegated(inner) => {
24472                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24473                }
24474                Self::ExitEscrowPeriodUpdated(inner) => {
24475                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24476                }
24477                Self::Initialized(inner) => {
24478                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24479                }
24480                Self::MaxCommissionIncreaseUpdated(inner) => {
24481                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24482                }
24483                Self::MetadataUriUpdated(inner) => {
24484                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24485                }
24486                Self::MinCommissionUpdateIntervalUpdated(inner) => {
24487                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24488                }
24489                Self::MinDelegateAmountUpdated(inner) => {
24490                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24491                }
24492                Self::OwnershipTransferred(inner) => {
24493                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24494                }
24495                Self::Paused(inner) => {
24496                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24497                }
24498                Self::RoleAdminChanged(inner) => {
24499                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24500                }
24501                Self::RoleGranted(inner) => {
24502                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24503                }
24504                Self::RoleRevoked(inner) => {
24505                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24506                }
24507                Self::Undelegated(inner) => {
24508                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24509                }
24510                Self::UndelegatedV2(inner) => {
24511                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24512                }
24513                Self::Unpaused(inner) => {
24514                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24515                }
24516                Self::Upgraded(inner) => {
24517                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24518                }
24519                Self::ValidatorExit(inner) => {
24520                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24521                }
24522                Self::ValidatorExitClaimed(inner) => {
24523                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24524                }
24525                Self::ValidatorExitV2(inner) => {
24526                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24527                }
24528                Self::ValidatorRegistered(inner) => {
24529                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24530                }
24531                Self::ValidatorRegisteredV2(inner) => {
24532                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24533                }
24534                Self::Withdrawal(inner) => {
24535                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24536                }
24537                Self::WithdrawalClaimed(inner) => {
24538                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
24539                }
24540            }
24541        }
24542    }
24543    use alloy::contract as alloy_contract;
24544    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
24545
24546See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
24547    #[inline]
24548    pub const fn new<
24549        P: alloy_contract::private::Provider<N>,
24550        N: alloy_contract::private::Network,
24551    >(
24552        address: alloy_sol_types::private::Address,
24553        provider: P,
24554    ) -> StakeTableV2Instance<P, N> {
24555        StakeTableV2Instance::<P, N>::new(address, provider)
24556    }
24557    /**Deploys this contract using the given `provider` and constructor arguments, if any.
24558
24559Returns a new instance of the contract, if the deployment was successful.
24560
24561For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
24562    #[inline]
24563    pub fn deploy<
24564        P: alloy_contract::private::Provider<N>,
24565        N: alloy_contract::private::Network,
24566    >(
24567        provider: P,
24568    ) -> impl ::core::future::Future<
24569        Output = alloy_contract::Result<StakeTableV2Instance<P, N>>,
24570    > {
24571        StakeTableV2Instance::<P, N>::deploy(provider)
24572    }
24573    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
24574and constructor arguments, if any.
24575
24576This is a simple wrapper around creating a `RawCallBuilder` with the data set to
24577the bytecode concatenated with the constructor's ABI-encoded arguments.*/
24578    #[inline]
24579    pub fn deploy_builder<
24580        P: alloy_contract::private::Provider<N>,
24581        N: alloy_contract::private::Network,
24582    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
24583        StakeTableV2Instance::<P, N>::deploy_builder(provider)
24584    }
24585    /**A [`StakeTableV2`](self) instance.
24586
24587Contains type-safe methods for interacting with an on-chain instance of the
24588[`StakeTableV2`](self) contract located at a given `address`, using a given
24589provider `P`.
24590
24591If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
24592documentation on how to provide it), the `deploy` and `deploy_builder` methods can
24593be used to deploy a new instance of the contract.
24594
24595See the [module-level documentation](self) for all the available methods.*/
24596    #[derive(Clone)]
24597    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
24598        address: alloy_sol_types::private::Address,
24599        provider: P,
24600        _network: ::core::marker::PhantomData<N>,
24601    }
24602    #[automatically_derived]
24603    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
24604        #[inline]
24605        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
24606            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
24607        }
24608    }
24609    /// Instantiation and getters/setters.
24610    #[automatically_derived]
24611    impl<
24612        P: alloy_contract::private::Provider<N>,
24613        N: alloy_contract::private::Network,
24614    > StakeTableV2Instance<P, N> {
24615        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
24616
24617See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
24618        #[inline]
24619        pub const fn new(
24620            address: alloy_sol_types::private::Address,
24621            provider: P,
24622        ) -> Self {
24623            Self {
24624                address,
24625                provider,
24626                _network: ::core::marker::PhantomData,
24627            }
24628        }
24629        /**Deploys this contract using the given `provider` and constructor arguments, if any.
24630
24631Returns a new instance of the contract, if the deployment was successful.
24632
24633For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
24634        #[inline]
24635        pub async fn deploy(
24636            provider: P,
24637        ) -> alloy_contract::Result<StakeTableV2Instance<P, N>> {
24638            let call_builder = Self::deploy_builder(provider);
24639            let contract_address = call_builder.deploy().await?;
24640            Ok(Self::new(contract_address, call_builder.provider))
24641        }
24642        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
24643and constructor arguments, if any.
24644
24645This is a simple wrapper around creating a `RawCallBuilder` with the data set to
24646the bytecode concatenated with the constructor's ABI-encoded arguments.*/
24647        #[inline]
24648        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
24649            alloy_contract::RawCallBuilder::new_raw_deploy(
24650                provider,
24651                ::core::clone::Clone::clone(&BYTECODE),
24652            )
24653        }
24654        /// Returns a reference to the address.
24655        #[inline]
24656        pub const fn address(&self) -> &alloy_sol_types::private::Address {
24657            &self.address
24658        }
24659        /// Sets the address.
24660        #[inline]
24661        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
24662            self.address = address;
24663        }
24664        /// Sets the address and returns `self`.
24665        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
24666            self.set_address(address);
24667            self
24668        }
24669        /// Returns a reference to the provider.
24670        #[inline]
24671        pub const fn provider(&self) -> &P {
24672            &self.provider
24673        }
24674    }
24675    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
24676        /// Clones the provider and returns a new instance with the cloned provider.
24677        #[inline]
24678        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
24679            StakeTableV2Instance {
24680                address: self.address,
24681                provider: ::core::clone::Clone::clone(&self.provider),
24682                _network: ::core::marker::PhantomData,
24683            }
24684        }
24685    }
24686    /// Function calls.
24687    #[automatically_derived]
24688    impl<
24689        P: alloy_contract::private::Provider<N>,
24690        N: alloy_contract::private::Network,
24691    > StakeTableV2Instance<P, N> {
24692        /// Creates a new call builder using this contract instance's provider and address.
24693        ///
24694        /// Note that the call can be any function call, not just those defined in this
24695        /// contract. Prefer using the other methods for building type-safe contract calls.
24696        pub fn call_builder<C: alloy_sol_types::SolCall>(
24697            &self,
24698            call: &C,
24699        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
24700            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
24701        }
24702        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
24703        pub fn DEFAULT_ADMIN_ROLE(
24704            &self,
24705        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
24706            self.call_builder(&DEFAULT_ADMIN_ROLECall)
24707        }
24708        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
24709        pub fn MAX_COMMISSION_BPS(
24710            &self,
24711        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
24712            self.call_builder(&MAX_COMMISSION_BPSCall)
24713        }
24714        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
24715        pub fn MAX_EXIT_ESCROW_PERIOD(
24716            &self,
24717        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
24718            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
24719        }
24720        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
24721        pub fn MAX_METADATA_URI_LENGTH(
24722            &self,
24723        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
24724            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
24725        }
24726        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
24727        pub fn MIN_EXIT_ESCROW_PERIOD(
24728            &self,
24729        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
24730            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
24731        }
24732        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
24733        pub fn PAUSER_ROLE(
24734            &self,
24735        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
24736            self.call_builder(&PAUSER_ROLECall)
24737        }
24738        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
24739        pub fn UPGRADE_INTERFACE_VERSION(
24740            &self,
24741        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
24742            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
24743        }
24744        ///Creates a new call builder for the [`_hashBlsKey`] function.
24745        pub fn _hashBlsKey(
24746            &self,
24747            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
24748        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
24749            self.call_builder(&_hashBlsKeyCall { blsVK })
24750        }
24751        ///Creates a new call builder for the [`activeStake`] function.
24752        pub fn activeStake(
24753            &self,
24754        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
24755            self.call_builder(&activeStakeCall)
24756        }
24757        ///Creates a new call builder for the [`blsKeys`] function.
24758        pub fn blsKeys(
24759            &self,
24760            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
24761        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
24762            self.call_builder(&blsKeysCall { blsKeyHash })
24763        }
24764        ///Creates a new call builder for the [`claimValidatorExit`] function.
24765        pub fn claimValidatorExit(
24766            &self,
24767            validator: alloy::sol_types::private::Address,
24768        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
24769            self.call_builder(
24770                &claimValidatorExitCall {
24771                    validator,
24772                },
24773            )
24774        }
24775        ///Creates a new call builder for the [`claimWithdrawal`] function.
24776        pub fn claimWithdrawal(
24777            &self,
24778            validator: alloy::sol_types::private::Address,
24779        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
24780            self.call_builder(&claimWithdrawalCall { validator })
24781        }
24782        ///Creates a new call builder for the [`commissionTracking`] function.
24783        pub fn commissionTracking(
24784            &self,
24785            validator: alloy::sol_types::private::Address,
24786        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
24787            self.call_builder(
24788                &commissionTrackingCall {
24789                    validator,
24790                },
24791            )
24792        }
24793        ///Creates a new call builder for the [`delegate`] function.
24794        pub fn delegate(
24795            &self,
24796            validator: alloy::sol_types::private::Address,
24797            amount: alloy::sol_types::private::primitives::aliases::U256,
24798        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
24799            self.call_builder(&delegateCall { validator, amount })
24800        }
24801        ///Creates a new call builder for the [`delegations`] function.
24802        pub fn delegations(
24803            &self,
24804            validator: alloy::sol_types::private::Address,
24805            delegator: alloy::sol_types::private::Address,
24806        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
24807            self.call_builder(
24808                &delegationsCall {
24809                    validator,
24810                    delegator,
24811                },
24812            )
24813        }
24814        ///Creates a new call builder for the [`deregisterValidator`] function.
24815        pub fn deregisterValidator(
24816            &self,
24817        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
24818            self.call_builder(&deregisterValidatorCall)
24819        }
24820        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
24821        pub fn exitEscrowPeriod(
24822            &self,
24823        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
24824            self.call_builder(&exitEscrowPeriodCall)
24825        }
24826        ///Creates a new call builder for the [`getRoleAdmin`] function.
24827        pub fn getRoleAdmin(
24828            &self,
24829            role: alloy::sol_types::private::FixedBytes<32>,
24830        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
24831            self.call_builder(&getRoleAdminCall { role })
24832        }
24833        ///Creates a new call builder for the [`getUndelegation`] function.
24834        pub fn getUndelegation(
24835            &self,
24836            validator: alloy::sol_types::private::Address,
24837            delegator: alloy::sol_types::private::Address,
24838        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
24839            self.call_builder(
24840                &getUndelegationCall {
24841                    validator,
24842                    delegator,
24843                },
24844            )
24845        }
24846        ///Creates a new call builder for the [`getVersion`] function.
24847        pub fn getVersion(
24848            &self,
24849        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
24850            self.call_builder(&getVersionCall)
24851        }
24852        ///Creates a new call builder for the [`grantRole`] function.
24853        pub fn grantRole(
24854            &self,
24855            role: alloy::sol_types::private::FixedBytes<32>,
24856            account: alloy::sol_types::private::Address,
24857        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
24858            self.call_builder(&grantRoleCall { role, account })
24859        }
24860        ///Creates a new call builder for the [`hasRole`] function.
24861        pub fn hasRole(
24862            &self,
24863            role: alloy::sol_types::private::FixedBytes<32>,
24864            account: alloy::sol_types::private::Address,
24865        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
24866            self.call_builder(&hasRoleCall { role, account })
24867        }
24868        ///Creates a new call builder for the [`initialize`] function.
24869        pub fn initialize(
24870            &self,
24871            _tokenAddress: alloy::sol_types::private::Address,
24872            _lightClientAddress: alloy::sol_types::private::Address,
24873            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
24874            _timelock: alloy::sol_types::private::Address,
24875        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
24876            self.call_builder(
24877                &initializeCall {
24878                    _tokenAddress,
24879                    _lightClientAddress,
24880                    _exitEscrowPeriod,
24881                    _timelock,
24882                },
24883            )
24884        }
24885        ///Creates a new call builder for the [`initializeV2`] function.
24886        pub fn initializeV2(
24887            &self,
24888            pauser: alloy::sol_types::private::Address,
24889            admin: alloy::sol_types::private::Address,
24890            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
24891            initialCommissions: alloy::sol_types::private::Vec<
24892                <InitialCommission as alloy::sol_types::SolType>::RustType,
24893            >,
24894        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
24895            self.call_builder(
24896                &initializeV2Call {
24897                    pauser,
24898                    admin,
24899                    initialActiveStake,
24900                    initialCommissions,
24901                },
24902            )
24903        }
24904        ///Creates a new call builder for the [`initializedAtBlock`] function.
24905        pub fn initializedAtBlock(
24906            &self,
24907        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
24908            self.call_builder(&initializedAtBlockCall)
24909        }
24910        ///Creates a new call builder for the [`lightClient`] function.
24911        pub fn lightClient(
24912            &self,
24913        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
24914            self.call_builder(&lightClientCall)
24915        }
24916        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
24917        pub fn maxCommissionIncrease(
24918            &self,
24919        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
24920            self.call_builder(&maxCommissionIncreaseCall)
24921        }
24922        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
24923        pub fn minCommissionIncreaseInterval(
24924            &self,
24925        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
24926            self.call_builder(&minCommissionIncreaseIntervalCall)
24927        }
24928        ///Creates a new call builder for the [`minDelegateAmount`] function.
24929        pub fn minDelegateAmount(
24930            &self,
24931        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
24932            self.call_builder(&minDelegateAmountCall)
24933        }
24934        ///Creates a new call builder for the [`owner`] function.
24935        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
24936            self.call_builder(&ownerCall)
24937        }
24938        ///Creates a new call builder for the [`pause`] function.
24939        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
24940            self.call_builder(&pauseCall)
24941        }
24942        ///Creates a new call builder for the [`paused`] function.
24943        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
24944            self.call_builder(&pausedCall)
24945        }
24946        ///Creates a new call builder for the [`proxiableUUID`] function.
24947        pub fn proxiableUUID(
24948            &self,
24949        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
24950            self.call_builder(&proxiableUUIDCall)
24951        }
24952        ///Creates a new call builder for the [`registerValidator`] function.
24953        pub fn registerValidator(
24954            &self,
24955            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
24956            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
24957            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
24958            _3: u16,
24959        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
24960            self.call_builder(
24961                &registerValidatorCall {
24962                    _0,
24963                    _1,
24964                    _2,
24965                    _3,
24966                },
24967            )
24968        }
24969        ///Creates a new call builder for the [`registerValidatorV2`] function.
24970        pub fn registerValidatorV2(
24971            &self,
24972            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
24973            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
24974            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
24975            schnorrSig: alloy::sol_types::private::Bytes,
24976            commission: u16,
24977            metadataUri: alloy::sol_types::private::String,
24978        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
24979            self.call_builder(
24980                &registerValidatorV2Call {
24981                    blsVK,
24982                    schnorrVK,
24983                    blsSig,
24984                    schnorrSig,
24985                    commission,
24986                    metadataUri,
24987                },
24988            )
24989        }
24990        ///Creates a new call builder for the [`renounceOwnership`] function.
24991        pub fn renounceOwnership(
24992            &self,
24993        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
24994            self.call_builder(&renounceOwnershipCall)
24995        }
24996        ///Creates a new call builder for the [`renounceRole`] function.
24997        pub fn renounceRole(
24998            &self,
24999            role: alloy::sol_types::private::FixedBytes<32>,
25000            callerConfirmation: alloy::sol_types::private::Address,
25001        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
25002            self.call_builder(
25003                &renounceRoleCall {
25004                    role,
25005                    callerConfirmation,
25006                },
25007            )
25008        }
25009        ///Creates a new call builder for the [`revokeRole`] function.
25010        pub fn revokeRole(
25011            &self,
25012            role: alloy::sol_types::private::FixedBytes<32>,
25013            account: alloy::sol_types::private::Address,
25014        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
25015            self.call_builder(&revokeRoleCall { role, account })
25016        }
25017        ///Creates a new call builder for the [`schnorrKeys`] function.
25018        pub fn schnorrKeys(
25019            &self,
25020            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
25021        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
25022            self.call_builder(&schnorrKeysCall { schnorrKey })
25023        }
25024        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
25025        pub fn setMaxCommissionIncrease(
25026            &self,
25027            newMaxIncrease: u16,
25028        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
25029            self.call_builder(
25030                &setMaxCommissionIncreaseCall {
25031                    newMaxIncrease,
25032                },
25033            )
25034        }
25035        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
25036        pub fn setMinCommissionUpdateInterval(
25037            &self,
25038            newInterval: alloy::sol_types::private::primitives::aliases::U256,
25039        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
25040            self.call_builder(
25041                &setMinCommissionUpdateIntervalCall {
25042                    newInterval,
25043                },
25044            )
25045        }
25046        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
25047        pub fn setMinDelegateAmount(
25048            &self,
25049            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
25050        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
25051            self.call_builder(
25052                &setMinDelegateAmountCall {
25053                    newMinDelegateAmount,
25054                },
25055            )
25056        }
25057        ///Creates a new call builder for the [`supportsInterface`] function.
25058        pub fn supportsInterface(
25059            &self,
25060            interfaceId: alloy::sol_types::private::FixedBytes<4>,
25061        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
25062            self.call_builder(
25063                &supportsInterfaceCall {
25064                    interfaceId,
25065                },
25066            )
25067        }
25068        ///Creates a new call builder for the [`token`] function.
25069        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
25070            self.call_builder(&tokenCall)
25071        }
25072        ///Creates a new call builder for the [`transferOwnership`] function.
25073        pub fn transferOwnership(
25074            &self,
25075            newOwner: alloy::sol_types::private::Address,
25076        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
25077            self.call_builder(&transferOwnershipCall { newOwner })
25078        }
25079        ///Creates a new call builder for the [`undelegate`] function.
25080        pub fn undelegate(
25081            &self,
25082            validator: alloy::sol_types::private::Address,
25083            amount: alloy::sol_types::private::primitives::aliases::U256,
25084        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
25085            self.call_builder(
25086                &undelegateCall {
25087                    validator,
25088                    amount,
25089                },
25090            )
25091        }
25092        ///Creates a new call builder for the [`undelegations`] function.
25093        pub fn undelegations(
25094            &self,
25095            validator: alloy::sol_types::private::Address,
25096            delegator: alloy::sol_types::private::Address,
25097        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
25098            self.call_builder(
25099                &undelegationsCall {
25100                    validator,
25101                    delegator,
25102                },
25103            )
25104        }
25105        ///Creates a new call builder for the [`unpause`] function.
25106        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
25107            self.call_builder(&unpauseCall)
25108        }
25109        ///Creates a new call builder for the [`updateCommission`] function.
25110        pub fn updateCommission(
25111            &self,
25112            newCommission: u16,
25113        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
25114            self.call_builder(
25115                &updateCommissionCall {
25116                    newCommission,
25117                },
25118            )
25119        }
25120        ///Creates a new call builder for the [`updateConsensusKeys`] function.
25121        pub fn updateConsensusKeys(
25122            &self,
25123            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25124            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25125            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25126        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
25127            self.call_builder(
25128                &updateConsensusKeysCall {
25129                    _0,
25130                    _1,
25131                    _2,
25132                },
25133            )
25134        }
25135        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
25136        pub fn updateConsensusKeysV2(
25137            &self,
25138            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25139            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25140            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25141            schnorrSig: alloy::sol_types::private::Bytes,
25142        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
25143            self.call_builder(
25144                &updateConsensusKeysV2Call {
25145                    blsVK,
25146                    schnorrVK,
25147                    blsSig,
25148                    schnorrSig,
25149                },
25150            )
25151        }
25152        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
25153        pub fn updateExitEscrowPeriod(
25154            &self,
25155            newExitEscrowPeriod: u64,
25156        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
25157            self.call_builder(
25158                &updateExitEscrowPeriodCall {
25159                    newExitEscrowPeriod,
25160                },
25161            )
25162        }
25163        ///Creates a new call builder for the [`updateMetadataUri`] function.
25164        pub fn updateMetadataUri(
25165            &self,
25166            metadataUri: alloy::sol_types::private::String,
25167        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
25168            self.call_builder(
25169                &updateMetadataUriCall {
25170                    metadataUri,
25171                },
25172            )
25173        }
25174        ///Creates a new call builder for the [`upgradeToAndCall`] function.
25175        pub fn upgradeToAndCall(
25176            &self,
25177            newImplementation: alloy::sol_types::private::Address,
25178            data: alloy::sol_types::private::Bytes,
25179        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
25180            self.call_builder(
25181                &upgradeToAndCallCall {
25182                    newImplementation,
25183                    data,
25184                },
25185            )
25186        }
25187        ///Creates a new call builder for the [`validateMetadataUri`] function.
25188        pub fn validateMetadataUri(
25189            &self,
25190            metadataUri: alloy::sol_types::private::String,
25191        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
25192            self.call_builder(
25193                &validateMetadataUriCall {
25194                    metadataUri,
25195                },
25196            )
25197        }
25198        ///Creates a new call builder for the [`validatorExits`] function.
25199        pub fn validatorExits(
25200            &self,
25201            validator: alloy::sol_types::private::Address,
25202        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
25203            self.call_builder(&validatorExitsCall { validator })
25204        }
25205        ///Creates a new call builder for the [`validators`] function.
25206        pub fn validators(
25207            &self,
25208            account: alloy::sol_types::private::Address,
25209        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
25210            self.call_builder(&validatorsCall { account })
25211        }
25212    }
25213    /// Event filters.
25214    #[automatically_derived]
25215    impl<
25216        P: alloy_contract::private::Provider<N>,
25217        N: alloy_contract::private::Network,
25218    > StakeTableV2Instance<P, N> {
25219        /// Creates a new event filter using this contract instance's provider and address.
25220        ///
25221        /// Note that the type can be any event, not just those defined in this contract.
25222        /// Prefer using the other methods for building type-safe event filters.
25223        pub fn event_filter<E: alloy_sol_types::SolEvent>(
25224            &self,
25225        ) -> alloy_contract::Event<&P, E, N> {
25226            alloy_contract::Event::new_sol(&self.provider, &self.address)
25227        }
25228        ///Creates a new event filter for the [`CommissionUpdated`] event.
25229        pub fn CommissionUpdated_filter(
25230            &self,
25231        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
25232            self.event_filter::<CommissionUpdated>()
25233        }
25234        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
25235        pub fn ConsensusKeysUpdated_filter(
25236            &self,
25237        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
25238            self.event_filter::<ConsensusKeysUpdated>()
25239        }
25240        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
25241        pub fn ConsensusKeysUpdatedV2_filter(
25242            &self,
25243        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
25244            self.event_filter::<ConsensusKeysUpdatedV2>()
25245        }
25246        ///Creates a new event filter for the [`Delegated`] event.
25247        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
25248            self.event_filter::<Delegated>()
25249        }
25250        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
25251        pub fn ExitEscrowPeriodUpdated_filter(
25252            &self,
25253        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
25254            self.event_filter::<ExitEscrowPeriodUpdated>()
25255        }
25256        ///Creates a new event filter for the [`Initialized`] event.
25257        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
25258            self.event_filter::<Initialized>()
25259        }
25260        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
25261        pub fn MaxCommissionIncreaseUpdated_filter(
25262            &self,
25263        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
25264            self.event_filter::<MaxCommissionIncreaseUpdated>()
25265        }
25266        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
25267        pub fn MetadataUriUpdated_filter(
25268            &self,
25269        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
25270            self.event_filter::<MetadataUriUpdated>()
25271        }
25272        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
25273        pub fn MinCommissionUpdateIntervalUpdated_filter(
25274            &self,
25275        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
25276            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
25277        }
25278        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
25279        pub fn MinDelegateAmountUpdated_filter(
25280            &self,
25281        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
25282            self.event_filter::<MinDelegateAmountUpdated>()
25283        }
25284        ///Creates a new event filter for the [`OwnershipTransferred`] event.
25285        pub fn OwnershipTransferred_filter(
25286            &self,
25287        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
25288            self.event_filter::<OwnershipTransferred>()
25289        }
25290        ///Creates a new event filter for the [`Paused`] event.
25291        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
25292            self.event_filter::<Paused>()
25293        }
25294        ///Creates a new event filter for the [`RoleAdminChanged`] event.
25295        pub fn RoleAdminChanged_filter(
25296            &self,
25297        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
25298            self.event_filter::<RoleAdminChanged>()
25299        }
25300        ///Creates a new event filter for the [`RoleGranted`] event.
25301        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
25302            self.event_filter::<RoleGranted>()
25303        }
25304        ///Creates a new event filter for the [`RoleRevoked`] event.
25305        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
25306            self.event_filter::<RoleRevoked>()
25307        }
25308        ///Creates a new event filter for the [`Undelegated`] event.
25309        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
25310            self.event_filter::<Undelegated>()
25311        }
25312        ///Creates a new event filter for the [`UndelegatedV2`] event.
25313        pub fn UndelegatedV2_filter(
25314            &self,
25315        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
25316            self.event_filter::<UndelegatedV2>()
25317        }
25318        ///Creates a new event filter for the [`Unpaused`] event.
25319        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
25320            self.event_filter::<Unpaused>()
25321        }
25322        ///Creates a new event filter for the [`Upgraded`] event.
25323        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
25324            self.event_filter::<Upgraded>()
25325        }
25326        ///Creates a new event filter for the [`ValidatorExit`] event.
25327        pub fn ValidatorExit_filter(
25328            &self,
25329        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
25330            self.event_filter::<ValidatorExit>()
25331        }
25332        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
25333        pub fn ValidatorExitClaimed_filter(
25334            &self,
25335        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
25336            self.event_filter::<ValidatorExitClaimed>()
25337        }
25338        ///Creates a new event filter for the [`ValidatorExitV2`] event.
25339        pub fn ValidatorExitV2_filter(
25340            &self,
25341        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
25342            self.event_filter::<ValidatorExitV2>()
25343        }
25344        ///Creates a new event filter for the [`ValidatorRegistered`] event.
25345        pub fn ValidatorRegistered_filter(
25346            &self,
25347        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
25348            self.event_filter::<ValidatorRegistered>()
25349        }
25350        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
25351        pub fn ValidatorRegisteredV2_filter(
25352            &self,
25353        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
25354            self.event_filter::<ValidatorRegisteredV2>()
25355        }
25356        ///Creates a new event filter for the [`Withdrawal`] event.
25357        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
25358            self.event_filter::<Withdrawal>()
25359        }
25360        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
25361        pub fn WithdrawalClaimed_filter(
25362            &self,
25363        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
25364            self.event_filter::<WithdrawalClaimed>()
25365        }
25366    }
25367}