Skip to main content

hotshot_contract_adapter/bindings/
stake_table_v2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    struct G1Point { BaseField x; BaseField y; }
8    struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(BaseField);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    /**```solidity
168struct G1Point { BaseField x; BaseField y; }
169```*/
170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
171    #[derive(Clone)]
172    pub struct G1Point {
173        #[allow(missing_docs)]
174        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
175        #[allow(missing_docs)]
176        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[doc(hidden)]
187        #[allow(dead_code)]
188        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
189        #[doc(hidden)]
190        type UnderlyingRustTuple<'a> = (
191            <BaseField as alloy::sol_types::SolType>::RustType,
192            <BaseField as alloy::sol_types::SolType>::RustType,
193        );
194        #[cfg(test)]
195        #[allow(dead_code, unreachable_patterns)]
196        fn _type_assertion(
197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
198        ) {
199            match _t {
200                alloy_sol_types::private::AssertTypeEq::<
201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
202                >(_) => {}
203            }
204        }
205        #[automatically_derived]
206        #[doc(hidden)]
207        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
208            fn from(value: G1Point) -> Self {
209                (value.x, value.y)
210            }
211        }
212        #[automatically_derived]
213        #[doc(hidden)]
214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
216                Self { x: tuple.0, y: tuple.1 }
217            }
218        }
219        #[automatically_derived]
220        impl alloy_sol_types::SolValue for G1Point {
221            type SolType = Self;
222        }
223        #[automatically_derived]
224        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
225            #[inline]
226            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
227                (
228                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
229                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
230                )
231            }
232            #[inline]
233            fn stv_abi_encoded_size(&self) -> usize {
234                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
235                    return size;
236                }
237                let tuple = <UnderlyingRustTuple<
238                    '_,
239                > as ::core::convert::From<Self>>::from(self.clone());
240                <UnderlyingSolTuple<
241                    '_,
242                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
243            }
244            #[inline]
245            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
246                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
247            }
248            #[inline]
249            fn stv_abi_encode_packed_to(
250                &self,
251                out: &mut alloy_sol_types::private::Vec<u8>,
252            ) {
253                let tuple = <UnderlyingRustTuple<
254                    '_,
255                > as ::core::convert::From<Self>>::from(self.clone());
256                <UnderlyingSolTuple<
257                    '_,
258                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
259            }
260            #[inline]
261            fn stv_abi_packed_encoded_size(&self) -> usize {
262                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
263                    return size;
264                }
265                let tuple = <UnderlyingRustTuple<
266                    '_,
267                > as ::core::convert::From<Self>>::from(self.clone());
268                <UnderlyingSolTuple<
269                    '_,
270                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
271            }
272        }
273        #[automatically_derived]
274        impl alloy_sol_types::SolType for G1Point {
275            type RustType = Self;
276            type Token<'a> = <UnderlyingSolTuple<
277                'a,
278            > as alloy_sol_types::SolType>::Token<'a>;
279            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
280            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
281                '_,
282            > as alloy_sol_types::SolType>::ENCODED_SIZE;
283            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
284                '_,
285            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
286            #[inline]
287            fn valid_token(token: &Self::Token<'_>) -> bool {
288                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
289            }
290            #[inline]
291            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
292                let tuple = <UnderlyingSolTuple<
293                    '_,
294                > as alloy_sol_types::SolType>::detokenize(token);
295                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
296            }
297        }
298        #[automatically_derived]
299        impl alloy_sol_types::SolStruct for G1Point {
300            const NAME: &'static str = "G1Point";
301            #[inline]
302            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
303                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
304            }
305            #[inline]
306            fn eip712_components() -> alloy_sol_types::private::Vec<
307                alloy_sol_types::private::Cow<'static, str>,
308            > {
309                alloy_sol_types::private::Vec::new()
310            }
311            #[inline]
312            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
313                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
314            }
315            #[inline]
316            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
317                [
318                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
319                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
320                ]
321                    .concat()
322            }
323        }
324        #[automatically_derived]
325        impl alloy_sol_types::EventTopic for G1Point {
326            #[inline]
327            fn topic_preimage_length(rust: &Self::RustType) -> usize {
328                0usize
329                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
330                        &rust.x,
331                    )
332                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
333                        &rust.y,
334                    )
335            }
336            #[inline]
337            fn encode_topic_preimage(
338                rust: &Self::RustType,
339                out: &mut alloy_sol_types::private::Vec<u8>,
340            ) {
341                out.reserve(
342                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
343                );
344                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
345                    &rust.x,
346                    out,
347                );
348                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
349                    &rust.y,
350                    out,
351                );
352            }
353            #[inline]
354            fn encode_topic(
355                rust: &Self::RustType,
356            ) -> alloy_sol_types::abi::token::WordToken {
357                let mut out = alloy_sol_types::private::Vec::new();
358                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
359                    rust,
360                    &mut out,
361                );
362                alloy_sol_types::abi::token::WordToken(
363                    alloy_sol_types::private::keccak256(out),
364                )
365            }
366        }
367    };
368    #[derive(serde::Serialize, serde::Deserialize)]
369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
370    /**```solidity
371struct G2Point { BaseField x0; BaseField x1; BaseField y0; BaseField y1; }
372```*/
373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
374    #[derive(Clone)]
375    pub struct G2Point {
376        #[allow(missing_docs)]
377        pub x0: <BaseField as alloy::sol_types::SolType>::RustType,
378        #[allow(missing_docs)]
379        pub x1: <BaseField as alloy::sol_types::SolType>::RustType,
380        #[allow(missing_docs)]
381        pub y0: <BaseField as alloy::sol_types::SolType>::RustType,
382        #[allow(missing_docs)]
383        pub y1: <BaseField as alloy::sol_types::SolType>::RustType,
384    }
385    #[allow(
386        non_camel_case_types,
387        non_snake_case,
388        clippy::pub_underscore_fields,
389        clippy::style
390    )]
391    const _: () = {
392        use alloy::sol_types as alloy_sol_types;
393        #[doc(hidden)]
394        #[allow(dead_code)]
395        type UnderlyingSolTuple<'a> = (BaseField, BaseField, BaseField, BaseField);
396        #[doc(hidden)]
397        type UnderlyingRustTuple<'a> = (
398            <BaseField as alloy::sol_types::SolType>::RustType,
399            <BaseField as alloy::sol_types::SolType>::RustType,
400            <BaseField as alloy::sol_types::SolType>::RustType,
401            <BaseField as alloy::sol_types::SolType>::RustType,
402        );
403        #[cfg(test)]
404        #[allow(dead_code, unreachable_patterns)]
405        fn _type_assertion(
406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407        ) {
408            match _t {
409                alloy_sol_types::private::AssertTypeEq::<
410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                >(_) => {}
412            }
413        }
414        #[automatically_derived]
415        #[doc(hidden)]
416        impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
417            fn from(value: G2Point) -> Self {
418                (value.x0, value.x1, value.y0, value.y1)
419            }
420        }
421        #[automatically_derived]
422        #[doc(hidden)]
423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                Self {
426                    x0: tuple.0,
427                    x1: tuple.1,
428                    y0: tuple.2,
429                    y1: tuple.3,
430                }
431            }
432        }
433        #[automatically_derived]
434        impl alloy_sol_types::SolValue for G2Point {
435            type SolType = Self;
436        }
437        #[automatically_derived]
438        impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
439            #[inline]
440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
441                (
442                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x0),
443                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x1),
444                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y0),
445                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y1),
446                )
447            }
448            #[inline]
449            fn stv_abi_encoded_size(&self) -> usize {
450                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
451                    return size;
452                }
453                let tuple = <UnderlyingRustTuple<
454                    '_,
455                > as ::core::convert::From<Self>>::from(self.clone());
456                <UnderlyingSolTuple<
457                    '_,
458                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
459            }
460            #[inline]
461            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
462                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
463            }
464            #[inline]
465            fn stv_abi_encode_packed_to(
466                &self,
467                out: &mut alloy_sol_types::private::Vec<u8>,
468            ) {
469                let tuple = <UnderlyingRustTuple<
470                    '_,
471                > as ::core::convert::From<Self>>::from(self.clone());
472                <UnderlyingSolTuple<
473                    '_,
474                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
475            }
476            #[inline]
477            fn stv_abi_packed_encoded_size(&self) -> usize {
478                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
479                    return size;
480                }
481                let tuple = <UnderlyingRustTuple<
482                    '_,
483                > as ::core::convert::From<Self>>::from(self.clone());
484                <UnderlyingSolTuple<
485                    '_,
486                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
487            }
488        }
489        #[automatically_derived]
490        impl alloy_sol_types::SolType for G2Point {
491            type RustType = Self;
492            type Token<'a> = <UnderlyingSolTuple<
493                'a,
494            > as alloy_sol_types::SolType>::Token<'a>;
495            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
496            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
497                '_,
498            > as alloy_sol_types::SolType>::ENCODED_SIZE;
499            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
500                '_,
501            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
502            #[inline]
503            fn valid_token(token: &Self::Token<'_>) -> bool {
504                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
505            }
506            #[inline]
507            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
508                let tuple = <UnderlyingSolTuple<
509                    '_,
510                > as alloy_sol_types::SolType>::detokenize(token);
511                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
512            }
513        }
514        #[automatically_derived]
515        impl alloy_sol_types::SolStruct for G2Point {
516            const NAME: &'static str = "G2Point";
517            #[inline]
518            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
519                alloy_sol_types::private::Cow::Borrowed(
520                    "G2Point(uint256 x0,uint256 x1,uint256 y0,uint256 y1)",
521                )
522            }
523            #[inline]
524            fn eip712_components() -> alloy_sol_types::private::Vec<
525                alloy_sol_types::private::Cow<'static, str>,
526            > {
527                alloy_sol_types::private::Vec::new()
528            }
529            #[inline]
530            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
531                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
532            }
533            #[inline]
534            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
535                [
536                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x0)
537                        .0,
538                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x1)
539                        .0,
540                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y0)
541                        .0,
542                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y1).0,
543                ]
544                    .concat()
545            }
546        }
547        #[automatically_derived]
548        impl alloy_sol_types::EventTopic for G2Point {
549            #[inline]
550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
551                0usize
552                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
553                        &rust.x0,
554                    )
555                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
556                        &rust.x1,
557                    )
558                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
559                        &rust.y0,
560                    )
561                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
562                        &rust.y1,
563                    )
564            }
565            #[inline]
566            fn encode_topic_preimage(
567                rust: &Self::RustType,
568                out: &mut alloy_sol_types::private::Vec<u8>,
569            ) {
570                out.reserve(
571                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
572                );
573                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
574                    &rust.x0,
575                    out,
576                );
577                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
578                    &rust.x1,
579                    out,
580                );
581                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
582                    &rust.y0,
583                    out,
584                );
585                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
586                    &rust.y1,
587                    out,
588                );
589            }
590            #[inline]
591            fn encode_topic(
592                rust: &Self::RustType,
593            ) -> alloy_sol_types::abi::token::WordToken {
594                let mut out = alloy_sol_types::private::Vec::new();
595                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
596                    rust,
597                    &mut out,
598                );
599                alloy_sol_types::abi::token::WordToken(
600                    alloy_sol_types::private::keccak256(out),
601                )
602            }
603        }
604    };
605    use alloy::contract as alloy_contract;
606    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
607
608See the [wrapper's documentation](`BN254Instance`) for more details.*/
609    #[inline]
610    pub const fn new<
611        P: alloy_contract::private::Provider<N>,
612        N: alloy_contract::private::Network,
613    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
614        BN254Instance::<P, N>::new(address, __provider)
615    }
616    /**A [`BN254`](self) instance.
617
618Contains type-safe methods for interacting with an on-chain instance of the
619[`BN254`](self) contract located at a given `address`, using a given
620provider `P`.
621
622If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
623documentation on how to provide it), the `deploy` and `deploy_builder` methods can
624be used to deploy a new instance of the contract.
625
626See the [module-level documentation](self) for all the available methods.*/
627    #[derive(Clone)]
628    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
629        address: alloy_sol_types::private::Address,
630        provider: P,
631        _network: ::core::marker::PhantomData<N>,
632    }
633    #[automatically_derived]
634    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
635        #[inline]
636        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
637            f.debug_tuple("BN254Instance").field(&self.address).finish()
638        }
639    }
640    /// Instantiation and getters/setters.
641    impl<
642        P: alloy_contract::private::Provider<N>,
643        N: alloy_contract::private::Network,
644    > BN254Instance<P, N> {
645        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
646
647See the [wrapper's documentation](`BN254Instance`) for more details.*/
648        #[inline]
649        pub const fn new(
650            address: alloy_sol_types::private::Address,
651            __provider: P,
652        ) -> Self {
653            Self {
654                address,
655                provider: __provider,
656                _network: ::core::marker::PhantomData,
657            }
658        }
659        /// Returns a reference to the address.
660        #[inline]
661        pub const fn address(&self) -> &alloy_sol_types::private::Address {
662            &self.address
663        }
664        /// Sets the address.
665        #[inline]
666        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
667            self.address = address;
668        }
669        /// Sets the address and returns `self`.
670        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
671            self.set_address(address);
672            self
673        }
674        /// Returns a reference to the provider.
675        #[inline]
676        pub const fn provider(&self) -> &P {
677            &self.provider
678        }
679    }
680    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
681        /// Clones the provider and returns a new instance with the cloned provider.
682        #[inline]
683        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
684            BN254Instance {
685                address: self.address,
686                provider: ::core::clone::Clone::clone(&self.provider),
687                _network: ::core::marker::PhantomData,
688            }
689        }
690    }
691    /// Function calls.
692    impl<
693        P: alloy_contract::private::Provider<N>,
694        N: alloy_contract::private::Network,
695    > BN254Instance<P, N> {
696        /// Creates a new call builder using this contract instance's provider and address.
697        ///
698        /// Note that the call can be any function call, not just those defined in this
699        /// contract. Prefer using the other methods for building type-safe contract calls.
700        pub fn call_builder<C: alloy_sol_types::SolCall>(
701            &self,
702            call: &C,
703        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
704            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
705        }
706    }
707    /// Event filters.
708    impl<
709        P: alloy_contract::private::Provider<N>,
710        N: alloy_contract::private::Network,
711    > BN254Instance<P, N> {
712        /// Creates a new event filter using this contract instance's provider and address.
713        ///
714        /// Note that the type can be any event, not just those defined in this contract.
715        /// Prefer using the other methods for building type-safe event filters.
716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
717            &self,
718        ) -> alloy_contract::Event<&P, E, N> {
719            alloy_contract::Event::new_sol(&self.provider, &self.address)
720        }
721    }
722}
723///Module containing a contract's types and functions.
724/**
725
726```solidity
727library EdOnBN254 {
728    struct EdOnBN254Point { uint256 x; uint256 y; }
729}
730```*/
731#[allow(
732    non_camel_case_types,
733    non_snake_case,
734    clippy::pub_underscore_fields,
735    clippy::style,
736    clippy::empty_structs_with_brackets
737)]
738pub mod EdOnBN254 {
739    use super::*;
740    use alloy::sol_types as alloy_sol_types;
741    #[derive(serde::Serialize, serde::Deserialize)]
742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
743    /**```solidity
744struct EdOnBN254Point { uint256 x; uint256 y; }
745```*/
746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
747    #[derive(Clone)]
748    pub struct EdOnBN254Point {
749        #[allow(missing_docs)]
750        pub x: alloy::sol_types::private::primitives::aliases::U256,
751        #[allow(missing_docs)]
752        pub y: alloy::sol_types::private::primitives::aliases::U256,
753    }
754    #[allow(
755        non_camel_case_types,
756        non_snake_case,
757        clippy::pub_underscore_fields,
758        clippy::style
759    )]
760    const _: () = {
761        use alloy::sol_types as alloy_sol_types;
762        #[doc(hidden)]
763        #[allow(dead_code)]
764        type UnderlyingSolTuple<'a> = (
765            alloy::sol_types::sol_data::Uint<256>,
766            alloy::sol_types::sol_data::Uint<256>,
767        );
768        #[doc(hidden)]
769        type UnderlyingRustTuple<'a> = (
770            alloy::sol_types::private::primitives::aliases::U256,
771            alloy::sol_types::private::primitives::aliases::U256,
772        );
773        #[cfg(test)]
774        #[allow(dead_code, unreachable_patterns)]
775        fn _type_assertion(
776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
777        ) {
778            match _t {
779                alloy_sol_types::private::AssertTypeEq::<
780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
781                >(_) => {}
782            }
783        }
784        #[automatically_derived]
785        #[doc(hidden)]
786        impl ::core::convert::From<EdOnBN254Point> for UnderlyingRustTuple<'_> {
787            fn from(value: EdOnBN254Point) -> Self {
788                (value.x, value.y)
789            }
790        }
791        #[automatically_derived]
792        #[doc(hidden)]
793        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EdOnBN254Point {
794            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
795                Self { x: tuple.0, y: tuple.1 }
796            }
797        }
798        #[automatically_derived]
799        impl alloy_sol_types::SolValue for EdOnBN254Point {
800            type SolType = Self;
801        }
802        #[automatically_derived]
803        impl alloy_sol_types::private::SolTypeValue<Self> for EdOnBN254Point {
804            #[inline]
805            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
806                (
807                    <alloy::sol_types::sol_data::Uint<
808                        256,
809                    > as alloy_sol_types::SolType>::tokenize(&self.x),
810                    <alloy::sol_types::sol_data::Uint<
811                        256,
812                    > as alloy_sol_types::SolType>::tokenize(&self.y),
813                )
814            }
815            #[inline]
816            fn stv_abi_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
818                    return size;
819                }
820                let tuple = <UnderlyingRustTuple<
821                    '_,
822                > as ::core::convert::From<Self>>::from(self.clone());
823                <UnderlyingSolTuple<
824                    '_,
825                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
826            }
827            #[inline]
828            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
829                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
830            }
831            #[inline]
832            fn stv_abi_encode_packed_to(
833                &self,
834                out: &mut alloy_sol_types::private::Vec<u8>,
835            ) {
836                let tuple = <UnderlyingRustTuple<
837                    '_,
838                > as ::core::convert::From<Self>>::from(self.clone());
839                <UnderlyingSolTuple<
840                    '_,
841                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
842            }
843            #[inline]
844            fn stv_abi_packed_encoded_size(&self) -> usize {
845                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
846                    return size;
847                }
848                let tuple = <UnderlyingRustTuple<
849                    '_,
850                > as ::core::convert::From<Self>>::from(self.clone());
851                <UnderlyingSolTuple<
852                    '_,
853                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
854            }
855        }
856        #[automatically_derived]
857        impl alloy_sol_types::SolType for EdOnBN254Point {
858            type RustType = Self;
859            type Token<'a> = <UnderlyingSolTuple<
860                'a,
861            > as alloy_sol_types::SolType>::Token<'a>;
862            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
863            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
864                '_,
865            > as alloy_sol_types::SolType>::ENCODED_SIZE;
866            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
867                '_,
868            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
869            #[inline]
870            fn valid_token(token: &Self::Token<'_>) -> bool {
871                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
872            }
873            #[inline]
874            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
875                let tuple = <UnderlyingSolTuple<
876                    '_,
877                > as alloy_sol_types::SolType>::detokenize(token);
878                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
879            }
880        }
881        #[automatically_derived]
882        impl alloy_sol_types::SolStruct for EdOnBN254Point {
883            const NAME: &'static str = "EdOnBN254Point";
884            #[inline]
885            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
886                alloy_sol_types::private::Cow::Borrowed(
887                    "EdOnBN254Point(uint256 x,uint256 y)",
888                )
889            }
890            #[inline]
891            fn eip712_components() -> alloy_sol_types::private::Vec<
892                alloy_sol_types::private::Cow<'static, str>,
893            > {
894                alloy_sol_types::private::Vec::new()
895            }
896            #[inline]
897            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
898                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
899            }
900            #[inline]
901            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
902                [
903                    <alloy::sol_types::sol_data::Uint<
904                        256,
905                    > as alloy_sol_types::SolType>::eip712_data_word(&self.x)
906                        .0,
907                    <alloy::sol_types::sol_data::Uint<
908                        256,
909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.y)
910                        .0,
911                ]
912                    .concat()
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::EventTopic for EdOnBN254Point {
917            #[inline]
918            fn topic_preimage_length(rust: &Self::RustType) -> usize {
919                0usize
920                    + <alloy::sol_types::sol_data::Uint<
921                        256,
922                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
923                    + <alloy::sol_types::sol_data::Uint<
924                        256,
925                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
926            }
927            #[inline]
928            fn encode_topic_preimage(
929                rust: &Self::RustType,
930                out: &mut alloy_sol_types::private::Vec<u8>,
931            ) {
932                out.reserve(
933                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
934                );
935                <alloy::sol_types::sol_data::Uint<
936                    256,
937                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
938                <alloy::sol_types::sol_data::Uint<
939                    256,
940                > as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
941            }
942            #[inline]
943            fn encode_topic(
944                rust: &Self::RustType,
945            ) -> alloy_sol_types::abi::token::WordToken {
946                let mut out = alloy_sol_types::private::Vec::new();
947                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
948                    rust,
949                    &mut out,
950                );
951                alloy_sol_types::abi::token::WordToken(
952                    alloy_sol_types::private::keccak256(out),
953                )
954            }
955        }
956    };
957    use alloy::contract as alloy_contract;
958    /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
959
960See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
961    #[inline]
962    pub const fn new<
963        P: alloy_contract::private::Provider<N>,
964        N: alloy_contract::private::Network,
965    >(
966        address: alloy_sol_types::private::Address,
967        __provider: P,
968    ) -> EdOnBN254Instance<P, N> {
969        EdOnBN254Instance::<P, N>::new(address, __provider)
970    }
971    /**A [`EdOnBN254`](self) instance.
972
973Contains type-safe methods for interacting with an on-chain instance of the
974[`EdOnBN254`](self) contract located at a given `address`, using a given
975provider `P`.
976
977If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
978documentation on how to provide it), the `deploy` and `deploy_builder` methods can
979be used to deploy a new instance of the contract.
980
981See the [module-level documentation](self) for all the available methods.*/
982    #[derive(Clone)]
983    pub struct EdOnBN254Instance<P, N = alloy_contract::private::Ethereum> {
984        address: alloy_sol_types::private::Address,
985        provider: P,
986        _network: ::core::marker::PhantomData<N>,
987    }
988    #[automatically_derived]
989    impl<P, N> ::core::fmt::Debug for EdOnBN254Instance<P, N> {
990        #[inline]
991        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
992            f.debug_tuple("EdOnBN254Instance").field(&self.address).finish()
993        }
994    }
995    /// Instantiation and getters/setters.
996    impl<
997        P: alloy_contract::private::Provider<N>,
998        N: alloy_contract::private::Network,
999    > EdOnBN254Instance<P, N> {
1000        /**Creates a new wrapper around an on-chain [`EdOnBN254`](self) contract instance.
1001
1002See the [wrapper's documentation](`EdOnBN254Instance`) for more details.*/
1003        #[inline]
1004        pub const fn new(
1005            address: alloy_sol_types::private::Address,
1006            __provider: P,
1007        ) -> Self {
1008            Self {
1009                address,
1010                provider: __provider,
1011                _network: ::core::marker::PhantomData,
1012            }
1013        }
1014        /// Returns a reference to the address.
1015        #[inline]
1016        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1017            &self.address
1018        }
1019        /// Sets the address.
1020        #[inline]
1021        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1022            self.address = address;
1023        }
1024        /// Sets the address and returns `self`.
1025        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1026            self.set_address(address);
1027            self
1028        }
1029        /// Returns a reference to the provider.
1030        #[inline]
1031        pub const fn provider(&self) -> &P {
1032            &self.provider
1033        }
1034    }
1035    impl<P: ::core::clone::Clone, N> EdOnBN254Instance<&P, N> {
1036        /// Clones the provider and returns a new instance with the cloned provider.
1037        #[inline]
1038        pub fn with_cloned_provider(self) -> EdOnBN254Instance<P, N> {
1039            EdOnBN254Instance {
1040                address: self.address,
1041                provider: ::core::clone::Clone::clone(&self.provider),
1042                _network: ::core::marker::PhantomData,
1043            }
1044        }
1045    }
1046    /// Function calls.
1047    impl<
1048        P: alloy_contract::private::Provider<N>,
1049        N: alloy_contract::private::Network,
1050    > EdOnBN254Instance<P, N> {
1051        /// Creates a new call builder using this contract instance's provider and address.
1052        ///
1053        /// Note that the call can be any function call, not just those defined in this
1054        /// contract. Prefer using the other methods for building type-safe contract calls.
1055        pub fn call_builder<C: alloy_sol_types::SolCall>(
1056            &self,
1057            call: &C,
1058        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1059            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1060        }
1061    }
1062    /// Event filters.
1063    impl<
1064        P: alloy_contract::private::Provider<N>,
1065        N: alloy_contract::private::Network,
1066    > EdOnBN254Instance<P, N> {
1067        /// Creates a new event filter using this contract instance's provider and address.
1068        ///
1069        /// Note that the type can be any event, not just those defined in this contract.
1070        /// Prefer using the other methods for building type-safe event filters.
1071        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1072            &self,
1073        ) -> alloy_contract::Event<&P, E, N> {
1074            alloy_contract::Event::new_sol(&self.provider, &self.address)
1075        }
1076    }
1077}
1078///Module containing a contract's types and functions.
1079/**
1080
1081```solidity
1082library StakeTable {
1083    type ValidatorStatus is uint8;
1084}
1085```*/
1086#[allow(
1087    non_camel_case_types,
1088    non_snake_case,
1089    clippy::pub_underscore_fields,
1090    clippy::style,
1091    clippy::empty_structs_with_brackets
1092)]
1093pub mod StakeTable {
1094    use super::*;
1095    use alloy::sol_types as alloy_sol_types;
1096    #[derive(serde::Serialize, serde::Deserialize)]
1097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1099    #[derive(Clone)]
1100    pub struct ValidatorStatus(u8);
1101    const _: () = {
1102        use alloy::sol_types as alloy_sol_types;
1103        #[automatically_derived]
1104        impl alloy_sol_types::private::SolTypeValue<ValidatorStatus> for u8 {
1105            #[inline]
1106            fn stv_to_tokens(
1107                &self,
1108            ) -> <alloy::sol_types::sol_data::Uint<
1109                8,
1110            > as alloy_sol_types::SolType>::Token<'_> {
1111                alloy_sol_types::private::SolTypeValue::<
1112                    alloy::sol_types::sol_data::Uint<8>,
1113                >::stv_to_tokens(self)
1114            }
1115            #[inline]
1116            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1117                <alloy::sol_types::sol_data::Uint<
1118                    8,
1119                > as alloy_sol_types::SolType>::tokenize(self)
1120                    .0
1121            }
1122            #[inline]
1123            fn stv_abi_encode_packed_to(
1124                &self,
1125                out: &mut alloy_sol_types::private::Vec<u8>,
1126            ) {
1127                <alloy::sol_types::sol_data::Uint<
1128                    8,
1129                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
1130            }
1131            #[inline]
1132            fn stv_abi_packed_encoded_size(&self) -> usize {
1133                <alloy::sol_types::sol_data::Uint<
1134                    8,
1135                > as alloy_sol_types::SolType>::abi_encoded_size(self)
1136            }
1137        }
1138        impl ValidatorStatus {
1139            /// The Solidity type name.
1140            pub const NAME: &'static str = stringify!(ValidatorStatus);
1141            /// Convert from the underlying value type.
1142            #[inline]
1143            pub const fn from_underlying(value: u8) -> Self {
1144                Self(value)
1145            }
1146            /// Return the underlying value.
1147            #[inline]
1148            pub const fn into_underlying(self) -> u8 {
1149                self.0
1150            }
1151            /// Return the single encoding of this value, delegating to the
1152            /// underlying type.
1153            #[inline]
1154            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
1155                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
1156            }
1157            /// Return the packed encoding of this value, delegating to the
1158            /// underlying type.
1159            #[inline]
1160            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
1161                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
1162            }
1163        }
1164        #[automatically_derived]
1165        impl From<u8> for ValidatorStatus {
1166            fn from(value: u8) -> Self {
1167                Self::from_underlying(value)
1168            }
1169        }
1170        #[automatically_derived]
1171        impl From<ValidatorStatus> for u8 {
1172            fn from(value: ValidatorStatus) -> Self {
1173                value.into_underlying()
1174            }
1175        }
1176        #[automatically_derived]
1177        impl alloy_sol_types::SolType for ValidatorStatus {
1178            type RustType = u8;
1179            type Token<'a> = <alloy::sol_types::sol_data::Uint<
1180                8,
1181            > as alloy_sol_types::SolType>::Token<'a>;
1182            const SOL_NAME: &'static str = Self::NAME;
1183            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1184                8,
1185            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1186            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
1187                8,
1188            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1189            #[inline]
1190            fn valid_token(token: &Self::Token<'_>) -> bool {
1191                Self::type_check(token).is_ok()
1192            }
1193            #[inline]
1194            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
1195                <alloy::sol_types::sol_data::Uint<
1196                    8,
1197                > as alloy_sol_types::SolType>::type_check(token)
1198            }
1199            #[inline]
1200            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1201                <alloy::sol_types::sol_data::Uint<
1202                    8,
1203                > as alloy_sol_types::SolType>::detokenize(token)
1204            }
1205        }
1206        #[automatically_derived]
1207        impl alloy_sol_types::EventTopic for ValidatorStatus {
1208            #[inline]
1209            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1210                <alloy::sol_types::sol_data::Uint<
1211                    8,
1212                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
1213            }
1214            #[inline]
1215            fn encode_topic_preimage(
1216                rust: &Self::RustType,
1217                out: &mut alloy_sol_types::private::Vec<u8>,
1218            ) {
1219                <alloy::sol_types::sol_data::Uint<
1220                    8,
1221                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
1222            }
1223            #[inline]
1224            fn encode_topic(
1225                rust: &Self::RustType,
1226            ) -> alloy_sol_types::abi::token::WordToken {
1227                <alloy::sol_types::sol_data::Uint<
1228                    8,
1229                > as alloy_sol_types::EventTopic>::encode_topic(rust)
1230            }
1231        }
1232    };
1233    use alloy::contract as alloy_contract;
1234    /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1235
1236See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1237    #[inline]
1238    pub const fn new<
1239        P: alloy_contract::private::Provider<N>,
1240        N: alloy_contract::private::Network,
1241    >(
1242        address: alloy_sol_types::private::Address,
1243        __provider: P,
1244    ) -> StakeTableInstance<P, N> {
1245        StakeTableInstance::<P, N>::new(address, __provider)
1246    }
1247    /**A [`StakeTable`](self) instance.
1248
1249Contains type-safe methods for interacting with an on-chain instance of the
1250[`StakeTable`](self) contract located at a given `address`, using a given
1251provider `P`.
1252
1253If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1254documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1255be used to deploy a new instance of the contract.
1256
1257See the [module-level documentation](self) for all the available methods.*/
1258    #[derive(Clone)]
1259    pub struct StakeTableInstance<P, N = alloy_contract::private::Ethereum> {
1260        address: alloy_sol_types::private::Address,
1261        provider: P,
1262        _network: ::core::marker::PhantomData<N>,
1263    }
1264    #[automatically_derived]
1265    impl<P, N> ::core::fmt::Debug for StakeTableInstance<P, N> {
1266        #[inline]
1267        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1268            f.debug_tuple("StakeTableInstance").field(&self.address).finish()
1269        }
1270    }
1271    /// Instantiation and getters/setters.
1272    impl<
1273        P: alloy_contract::private::Provider<N>,
1274        N: alloy_contract::private::Network,
1275    > StakeTableInstance<P, N> {
1276        /**Creates a new wrapper around an on-chain [`StakeTable`](self) contract instance.
1277
1278See the [wrapper's documentation](`StakeTableInstance`) for more details.*/
1279        #[inline]
1280        pub const fn new(
1281            address: alloy_sol_types::private::Address,
1282            __provider: P,
1283        ) -> Self {
1284            Self {
1285                address,
1286                provider: __provider,
1287                _network: ::core::marker::PhantomData,
1288            }
1289        }
1290        /// Returns a reference to the address.
1291        #[inline]
1292        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1293            &self.address
1294        }
1295        /// Sets the address.
1296        #[inline]
1297        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1298            self.address = address;
1299        }
1300        /// Sets the address and returns `self`.
1301        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1302            self.set_address(address);
1303            self
1304        }
1305        /// Returns a reference to the provider.
1306        #[inline]
1307        pub const fn provider(&self) -> &P {
1308            &self.provider
1309        }
1310    }
1311    impl<P: ::core::clone::Clone, N> StakeTableInstance<&P, N> {
1312        /// Clones the provider and returns a new instance with the cloned provider.
1313        #[inline]
1314        pub fn with_cloned_provider(self) -> StakeTableInstance<P, N> {
1315            StakeTableInstance {
1316                address: self.address,
1317                provider: ::core::clone::Clone::clone(&self.provider),
1318                _network: ::core::marker::PhantomData,
1319            }
1320        }
1321    }
1322    /// Function calls.
1323    impl<
1324        P: alloy_contract::private::Provider<N>,
1325        N: alloy_contract::private::Network,
1326    > StakeTableInstance<P, N> {
1327        /// Creates a new call builder using this contract instance's provider and address.
1328        ///
1329        /// Note that the call can be any function call, not just those defined in this
1330        /// contract. Prefer using the other methods for building type-safe contract calls.
1331        pub fn call_builder<C: alloy_sol_types::SolCall>(
1332            &self,
1333            call: &C,
1334        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1335            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1336        }
1337    }
1338    /// Event filters.
1339    impl<
1340        P: alloy_contract::private::Provider<N>,
1341        N: alloy_contract::private::Network,
1342    > StakeTableInstance<P, N> {
1343        /// Creates a new event filter using this contract instance's provider and address.
1344        ///
1345        /// Note that the type can be any event, not just those defined in this contract.
1346        /// Prefer using the other methods for building type-safe event filters.
1347        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1348            &self,
1349        ) -> alloy_contract::Event<&P, E, N> {
1350            alloy_contract::Event::new_sol(&self.provider, &self.address)
1351        }
1352    }
1353}
1354/**
1355
1356Generated by the following Solidity interface...
1357```solidity
1358library BN254 {
1359    type BaseField is uint256;
1360    struct G1Point {
1361        BaseField x;
1362        BaseField y;
1363    }
1364    struct G2Point {
1365        BaseField x0;
1366        BaseField x1;
1367        BaseField y0;
1368        BaseField y1;
1369    }
1370}
1371
1372library EdOnBN254 {
1373    struct EdOnBN254Point {
1374        uint256 x;
1375        uint256 y;
1376    }
1377}
1378
1379library StakeTable {
1380    type ValidatorStatus is uint8;
1381}
1382
1383interface StakeTableV2 {
1384    struct InitialCommission {
1385        address validator;
1386        uint16 commission;
1387    }
1388
1389    error AccessControlBadConfirmation();
1390    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1391    error AddressEmptyCode(address target);
1392    error BLSSigIsInfinity();
1393    error BLSSigVerificationFailed();
1394    error BLSVKIsInfinity();
1395    error BN254PairingProdFailed();
1396    error BlsKeyAlreadyUsed();
1397    error CommissionAlreadyInitialized(address validator);
1398    error CommissionIncreaseExceedsMax();
1399    error CommissionUnchanged();
1400    error CommissionUpdateTooSoon();
1401    error DefaultAdminCannotBeRenounced();
1402    error DefaultAdminCannotBeRevoked();
1403    error DelegateAmountTooSmall();
1404    error DeprecatedFunction();
1405    error ERC1967InvalidImplementation(address implementation);
1406    error ERC1967NonPayable();
1407    error EnforcedPause();
1408    error ExitEscrowPeriodInvalid();
1409    error ExpectedPause();
1410    error FailedInnerCall();
1411    error InitialActiveStakeExceedsBalance();
1412    error InsufficientAllowance(uint256, uint256);
1413    error InsufficientBalance(uint256);
1414    error InvalidCommission();
1415    error InvalidG1();
1416    error InvalidInitialization();
1417    error InvalidMetadataUriLength();
1418    error InvalidRateLimitParameters();
1419    error InvalidSchnorrSig();
1420    error InvalidSchnorrVK();
1421    error MinDelegateAmountTooSmall();
1422    error NoUndelegationFound();
1423    error NotInitializing();
1424    error NothingToWithdraw();
1425    error OwnableInvalidOwner(address owner);
1426    error OwnableUnauthorizedAccount(address account);
1427    error OwnershipCannotBeRenounced();
1428    error PowPrecompileFailed();
1429    error PrematureWithdrawal();
1430    error SchnorrKeyAlreadyUsed();
1431    error UUPSUnauthorizedCallContext();
1432    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1433    error UndelegationAlreadyExists();
1434    error ValidatorAlreadyExited();
1435    error ValidatorAlreadyRegistered();
1436    error ValidatorInactive();
1437    error ValidatorNotExited();
1438    error ZeroAddress();
1439    error ZeroAmount();
1440
1441    event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
1442    event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
1443    event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
1444    event Delegated(address indexed delegator, address indexed validator, uint256 amount);
1445    event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
1446    event Initialized(uint64 version);
1447    event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
1448    event MetadataUriUpdated(address indexed validator, string metadataUri);
1449    event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
1450    event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
1451    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1452    event Paused(address account);
1453    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
1454    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1455    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
1456    event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
1457    event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
1458    event Unpaused(address account);
1459    event Upgraded(address indexed implementation);
1460    event ValidatorExit(address indexed validator);
1461    event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
1462    event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
1463    event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
1464    event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
1465    event Withdrawal(address indexed account, uint256 amount);
1466    event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
1467
1468    constructor();
1469
1470    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
1471    function MAX_COMMISSION_BPS() external view returns (uint16);
1472    function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
1473    function MAX_METADATA_URI_LENGTH() external view returns (uint256);
1474    function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
1475    function PAUSER_ROLE() external view returns (bytes32);
1476    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1477    function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
1478    function activeStake() external view returns (uint256);
1479    function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
1480    function claimValidatorExit(address validator) external;
1481    function claimWithdrawal(address validator) external;
1482    function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
1483    function delegate(address validator, uint256 amount) external;
1484    function delegations(address validator, address delegator) external view returns (uint256 amount);
1485    function deregisterValidator() external;
1486    function exitEscrowPeriod() external view returns (uint256);
1487    function getRoleAdmin(bytes32 role) external view returns (bytes32);
1488    function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
1489    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
1490    function grantRole(bytes32 role, address account) external;
1491    function hasRole(bytes32 role, address account) external view returns (bool);
1492    function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
1493    function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
1494    function initializedAtBlock() external view returns (uint256);
1495    function lightClient() external view returns (address);
1496    function maxCommissionIncrease() external view returns (uint16);
1497    function minCommissionIncreaseInterval() external view returns (uint256);
1498    function minDelegateAmount() external view returns (uint256);
1499    function owner() external view returns (address);
1500    function pause() external;
1501    function paused() external view returns (bool);
1502    function proxiableUUID() external view returns (bytes32);
1503    function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
1504    function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
1505    function renounceOwnership() external;
1506    function renounceRole(bytes32 role, address callerConfirmation) external;
1507    function revokeRole(bytes32 role, address account) external;
1508    function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
1509    function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
1510    function setMinCommissionUpdateInterval(uint256 newInterval) external;
1511    function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
1512    function supportsInterface(bytes4 interfaceId) external view returns (bool);
1513    function token() external view returns (address);
1514    function transferOwnership(address newOwner) external;
1515    function undelegate(address validator, uint256 amount) external;
1516    function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
1517    function unpause() external;
1518    function updateCommission(uint16 newCommission) external;
1519    function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
1520    function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
1521    function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
1522    function updateMetadataUri(string memory metadataUri) external;
1523    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
1524    function validateMetadataUri(string memory metadataUri) external pure;
1525    function validatorExits(address validator) external view returns (uint256 unlocksAt);
1526    function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
1527}
1528```
1529
1530...which was generated by the following JSON ABI:
1531```json
1532[
1533  {
1534    "type": "constructor",
1535    "inputs": [],
1536    "stateMutability": "nonpayable"
1537  },
1538  {
1539    "type": "function",
1540    "name": "DEFAULT_ADMIN_ROLE",
1541    "inputs": [],
1542    "outputs": [
1543      {
1544        "name": "",
1545        "type": "bytes32",
1546        "internalType": "bytes32"
1547      }
1548    ],
1549    "stateMutability": "view"
1550  },
1551  {
1552    "type": "function",
1553    "name": "MAX_COMMISSION_BPS",
1554    "inputs": [],
1555    "outputs": [
1556      {
1557        "name": "",
1558        "type": "uint16",
1559        "internalType": "uint16"
1560      }
1561    ],
1562    "stateMutability": "view"
1563  },
1564  {
1565    "type": "function",
1566    "name": "MAX_EXIT_ESCROW_PERIOD",
1567    "inputs": [],
1568    "outputs": [
1569      {
1570        "name": "",
1571        "type": "uint64",
1572        "internalType": "uint64"
1573      }
1574    ],
1575    "stateMutability": "view"
1576  },
1577  {
1578    "type": "function",
1579    "name": "MAX_METADATA_URI_LENGTH",
1580    "inputs": [],
1581    "outputs": [
1582      {
1583        "name": "",
1584        "type": "uint256",
1585        "internalType": "uint256"
1586      }
1587    ],
1588    "stateMutability": "view"
1589  },
1590  {
1591    "type": "function",
1592    "name": "MIN_EXIT_ESCROW_PERIOD",
1593    "inputs": [],
1594    "outputs": [
1595      {
1596        "name": "",
1597        "type": "uint64",
1598        "internalType": "uint64"
1599      }
1600    ],
1601    "stateMutability": "view"
1602  },
1603  {
1604    "type": "function",
1605    "name": "PAUSER_ROLE",
1606    "inputs": [],
1607    "outputs": [
1608      {
1609        "name": "",
1610        "type": "bytes32",
1611        "internalType": "bytes32"
1612      }
1613    ],
1614    "stateMutability": "view"
1615  },
1616  {
1617    "type": "function",
1618    "name": "UPGRADE_INTERFACE_VERSION",
1619    "inputs": [],
1620    "outputs": [
1621      {
1622        "name": "",
1623        "type": "string",
1624        "internalType": "string"
1625      }
1626    ],
1627    "stateMutability": "view"
1628  },
1629  {
1630    "type": "function",
1631    "name": "_hashBlsKey",
1632    "inputs": [
1633      {
1634        "name": "blsVK",
1635        "type": "tuple",
1636        "internalType": "struct BN254.G2Point",
1637        "components": [
1638          {
1639            "name": "x0",
1640            "type": "uint256",
1641            "internalType": "BN254.BaseField"
1642          },
1643          {
1644            "name": "x1",
1645            "type": "uint256",
1646            "internalType": "BN254.BaseField"
1647          },
1648          {
1649            "name": "y0",
1650            "type": "uint256",
1651            "internalType": "BN254.BaseField"
1652          },
1653          {
1654            "name": "y1",
1655            "type": "uint256",
1656            "internalType": "BN254.BaseField"
1657          }
1658        ]
1659      }
1660    ],
1661    "outputs": [
1662      {
1663        "name": "",
1664        "type": "bytes32",
1665        "internalType": "bytes32"
1666      }
1667    ],
1668    "stateMutability": "pure"
1669  },
1670  {
1671    "type": "function",
1672    "name": "activeStake",
1673    "inputs": [],
1674    "outputs": [
1675      {
1676        "name": "",
1677        "type": "uint256",
1678        "internalType": "uint256"
1679      }
1680    ],
1681    "stateMutability": "view"
1682  },
1683  {
1684    "type": "function",
1685    "name": "blsKeys",
1686    "inputs": [
1687      {
1688        "name": "blsKeyHash",
1689        "type": "bytes32",
1690        "internalType": "bytes32"
1691      }
1692    ],
1693    "outputs": [
1694      {
1695        "name": "used",
1696        "type": "bool",
1697        "internalType": "bool"
1698      }
1699    ],
1700    "stateMutability": "view"
1701  },
1702  {
1703    "type": "function",
1704    "name": "claimValidatorExit",
1705    "inputs": [
1706      {
1707        "name": "validator",
1708        "type": "address",
1709        "internalType": "address"
1710      }
1711    ],
1712    "outputs": [],
1713    "stateMutability": "nonpayable"
1714  },
1715  {
1716    "type": "function",
1717    "name": "claimWithdrawal",
1718    "inputs": [
1719      {
1720        "name": "validator",
1721        "type": "address",
1722        "internalType": "address"
1723      }
1724    ],
1725    "outputs": [],
1726    "stateMutability": "nonpayable"
1727  },
1728  {
1729    "type": "function",
1730    "name": "commissionTracking",
1731    "inputs": [
1732      {
1733        "name": "validator",
1734        "type": "address",
1735        "internalType": "address"
1736      }
1737    ],
1738    "outputs": [
1739      {
1740        "name": "commission",
1741        "type": "uint16",
1742        "internalType": "uint16"
1743      },
1744      {
1745        "name": "lastIncreaseTime",
1746        "type": "uint256",
1747        "internalType": "uint256"
1748      }
1749    ],
1750    "stateMutability": "view"
1751  },
1752  {
1753    "type": "function",
1754    "name": "delegate",
1755    "inputs": [
1756      {
1757        "name": "validator",
1758        "type": "address",
1759        "internalType": "address"
1760      },
1761      {
1762        "name": "amount",
1763        "type": "uint256",
1764        "internalType": "uint256"
1765      }
1766    ],
1767    "outputs": [],
1768    "stateMutability": "nonpayable"
1769  },
1770  {
1771    "type": "function",
1772    "name": "delegations",
1773    "inputs": [
1774      {
1775        "name": "validator",
1776        "type": "address",
1777        "internalType": "address"
1778      },
1779      {
1780        "name": "delegator",
1781        "type": "address",
1782        "internalType": "address"
1783      }
1784    ],
1785    "outputs": [
1786      {
1787        "name": "amount",
1788        "type": "uint256",
1789        "internalType": "uint256"
1790      }
1791    ],
1792    "stateMutability": "view"
1793  },
1794  {
1795    "type": "function",
1796    "name": "deregisterValidator",
1797    "inputs": [],
1798    "outputs": [],
1799    "stateMutability": "nonpayable"
1800  },
1801  {
1802    "type": "function",
1803    "name": "exitEscrowPeriod",
1804    "inputs": [],
1805    "outputs": [
1806      {
1807        "name": "",
1808        "type": "uint256",
1809        "internalType": "uint256"
1810      }
1811    ],
1812    "stateMutability": "view"
1813  },
1814  {
1815    "type": "function",
1816    "name": "getRoleAdmin",
1817    "inputs": [
1818      {
1819        "name": "role",
1820        "type": "bytes32",
1821        "internalType": "bytes32"
1822      }
1823    ],
1824    "outputs": [
1825      {
1826        "name": "",
1827        "type": "bytes32",
1828        "internalType": "bytes32"
1829      }
1830    ],
1831    "stateMutability": "view"
1832  },
1833  {
1834    "type": "function",
1835    "name": "getUndelegation",
1836    "inputs": [
1837      {
1838        "name": "validator",
1839        "type": "address",
1840        "internalType": "address"
1841      },
1842      {
1843        "name": "delegator",
1844        "type": "address",
1845        "internalType": "address"
1846      }
1847    ],
1848    "outputs": [
1849      {
1850        "name": "id",
1851        "type": "uint64",
1852        "internalType": "uint64"
1853      },
1854      {
1855        "name": "amount",
1856        "type": "uint256",
1857        "internalType": "uint256"
1858      },
1859      {
1860        "name": "unlocksAt",
1861        "type": "uint256",
1862        "internalType": "uint256"
1863      }
1864    ],
1865    "stateMutability": "view"
1866  },
1867  {
1868    "type": "function",
1869    "name": "getVersion",
1870    "inputs": [],
1871    "outputs": [
1872      {
1873        "name": "majorVersion",
1874        "type": "uint8",
1875        "internalType": "uint8"
1876      },
1877      {
1878        "name": "minorVersion",
1879        "type": "uint8",
1880        "internalType": "uint8"
1881      },
1882      {
1883        "name": "patchVersion",
1884        "type": "uint8",
1885        "internalType": "uint8"
1886      }
1887    ],
1888    "stateMutability": "pure"
1889  },
1890  {
1891    "type": "function",
1892    "name": "grantRole",
1893    "inputs": [
1894      {
1895        "name": "role",
1896        "type": "bytes32",
1897        "internalType": "bytes32"
1898      },
1899      {
1900        "name": "account",
1901        "type": "address",
1902        "internalType": "address"
1903      }
1904    ],
1905    "outputs": [],
1906    "stateMutability": "nonpayable"
1907  },
1908  {
1909    "type": "function",
1910    "name": "hasRole",
1911    "inputs": [
1912      {
1913        "name": "role",
1914        "type": "bytes32",
1915        "internalType": "bytes32"
1916      },
1917      {
1918        "name": "account",
1919        "type": "address",
1920        "internalType": "address"
1921      }
1922    ],
1923    "outputs": [
1924      {
1925        "name": "",
1926        "type": "bool",
1927        "internalType": "bool"
1928      }
1929    ],
1930    "stateMutability": "view"
1931  },
1932  {
1933    "type": "function",
1934    "name": "initialize",
1935    "inputs": [
1936      {
1937        "name": "_tokenAddress",
1938        "type": "address",
1939        "internalType": "address"
1940      },
1941      {
1942        "name": "_lightClientAddress",
1943        "type": "address",
1944        "internalType": "address"
1945      },
1946      {
1947        "name": "_exitEscrowPeriod",
1948        "type": "uint256",
1949        "internalType": "uint256"
1950      },
1951      {
1952        "name": "_timelock",
1953        "type": "address",
1954        "internalType": "address"
1955      }
1956    ],
1957    "outputs": [],
1958    "stateMutability": "nonpayable"
1959  },
1960  {
1961    "type": "function",
1962    "name": "initializeV2",
1963    "inputs": [
1964      {
1965        "name": "pauser",
1966        "type": "address",
1967        "internalType": "address"
1968      },
1969      {
1970        "name": "admin",
1971        "type": "address",
1972        "internalType": "address"
1973      },
1974      {
1975        "name": "initialActiveStake",
1976        "type": "uint256",
1977        "internalType": "uint256"
1978      },
1979      {
1980        "name": "initialCommissions",
1981        "type": "tuple[]",
1982        "internalType": "struct StakeTableV2.InitialCommission[]",
1983        "components": [
1984          {
1985            "name": "validator",
1986            "type": "address",
1987            "internalType": "address"
1988          },
1989          {
1990            "name": "commission",
1991            "type": "uint16",
1992            "internalType": "uint16"
1993          }
1994        ]
1995      }
1996    ],
1997    "outputs": [],
1998    "stateMutability": "nonpayable"
1999  },
2000  {
2001    "type": "function",
2002    "name": "initializedAtBlock",
2003    "inputs": [],
2004    "outputs": [
2005      {
2006        "name": "",
2007        "type": "uint256",
2008        "internalType": "uint256"
2009      }
2010    ],
2011    "stateMutability": "view"
2012  },
2013  {
2014    "type": "function",
2015    "name": "lightClient",
2016    "inputs": [],
2017    "outputs": [
2018      {
2019        "name": "",
2020        "type": "address",
2021        "internalType": "contract ILightClient"
2022      }
2023    ],
2024    "stateMutability": "view"
2025  },
2026  {
2027    "type": "function",
2028    "name": "maxCommissionIncrease",
2029    "inputs": [],
2030    "outputs": [
2031      {
2032        "name": "",
2033        "type": "uint16",
2034        "internalType": "uint16"
2035      }
2036    ],
2037    "stateMutability": "view"
2038  },
2039  {
2040    "type": "function",
2041    "name": "minCommissionIncreaseInterval",
2042    "inputs": [],
2043    "outputs": [
2044      {
2045        "name": "",
2046        "type": "uint256",
2047        "internalType": "uint256"
2048      }
2049    ],
2050    "stateMutability": "view"
2051  },
2052  {
2053    "type": "function",
2054    "name": "minDelegateAmount",
2055    "inputs": [],
2056    "outputs": [
2057      {
2058        "name": "",
2059        "type": "uint256",
2060        "internalType": "uint256"
2061      }
2062    ],
2063    "stateMutability": "view"
2064  },
2065  {
2066    "type": "function",
2067    "name": "owner",
2068    "inputs": [],
2069    "outputs": [
2070      {
2071        "name": "",
2072        "type": "address",
2073        "internalType": "address"
2074      }
2075    ],
2076    "stateMutability": "view"
2077  },
2078  {
2079    "type": "function",
2080    "name": "pause",
2081    "inputs": [],
2082    "outputs": [],
2083    "stateMutability": "nonpayable"
2084  },
2085  {
2086    "type": "function",
2087    "name": "paused",
2088    "inputs": [],
2089    "outputs": [
2090      {
2091        "name": "",
2092        "type": "bool",
2093        "internalType": "bool"
2094      }
2095    ],
2096    "stateMutability": "view"
2097  },
2098  {
2099    "type": "function",
2100    "name": "proxiableUUID",
2101    "inputs": [],
2102    "outputs": [
2103      {
2104        "name": "",
2105        "type": "bytes32",
2106        "internalType": "bytes32"
2107      }
2108    ],
2109    "stateMutability": "view"
2110  },
2111  {
2112    "type": "function",
2113    "name": "registerValidator",
2114    "inputs": [
2115      {
2116        "name": "",
2117        "type": "tuple",
2118        "internalType": "struct BN254.G2Point",
2119        "components": [
2120          {
2121            "name": "x0",
2122            "type": "uint256",
2123            "internalType": "BN254.BaseField"
2124          },
2125          {
2126            "name": "x1",
2127            "type": "uint256",
2128            "internalType": "BN254.BaseField"
2129          },
2130          {
2131            "name": "y0",
2132            "type": "uint256",
2133            "internalType": "BN254.BaseField"
2134          },
2135          {
2136            "name": "y1",
2137            "type": "uint256",
2138            "internalType": "BN254.BaseField"
2139          }
2140        ]
2141      },
2142      {
2143        "name": "",
2144        "type": "tuple",
2145        "internalType": "struct EdOnBN254.EdOnBN254Point",
2146        "components": [
2147          {
2148            "name": "x",
2149            "type": "uint256",
2150            "internalType": "uint256"
2151          },
2152          {
2153            "name": "y",
2154            "type": "uint256",
2155            "internalType": "uint256"
2156          }
2157        ]
2158      },
2159      {
2160        "name": "",
2161        "type": "tuple",
2162        "internalType": "struct BN254.G1Point",
2163        "components": [
2164          {
2165            "name": "x",
2166            "type": "uint256",
2167            "internalType": "BN254.BaseField"
2168          },
2169          {
2170            "name": "y",
2171            "type": "uint256",
2172            "internalType": "BN254.BaseField"
2173          }
2174        ]
2175      },
2176      {
2177        "name": "",
2178        "type": "uint16",
2179        "internalType": "uint16"
2180      }
2181    ],
2182    "outputs": [],
2183    "stateMutability": "pure"
2184  },
2185  {
2186    "type": "function",
2187    "name": "registerValidatorV2",
2188    "inputs": [
2189      {
2190        "name": "blsVK",
2191        "type": "tuple",
2192        "internalType": "struct BN254.G2Point",
2193        "components": [
2194          {
2195            "name": "x0",
2196            "type": "uint256",
2197            "internalType": "BN254.BaseField"
2198          },
2199          {
2200            "name": "x1",
2201            "type": "uint256",
2202            "internalType": "BN254.BaseField"
2203          },
2204          {
2205            "name": "y0",
2206            "type": "uint256",
2207            "internalType": "BN254.BaseField"
2208          },
2209          {
2210            "name": "y1",
2211            "type": "uint256",
2212            "internalType": "BN254.BaseField"
2213          }
2214        ]
2215      },
2216      {
2217        "name": "schnorrVK",
2218        "type": "tuple",
2219        "internalType": "struct EdOnBN254.EdOnBN254Point",
2220        "components": [
2221          {
2222            "name": "x",
2223            "type": "uint256",
2224            "internalType": "uint256"
2225          },
2226          {
2227            "name": "y",
2228            "type": "uint256",
2229            "internalType": "uint256"
2230          }
2231        ]
2232      },
2233      {
2234        "name": "blsSig",
2235        "type": "tuple",
2236        "internalType": "struct BN254.G1Point",
2237        "components": [
2238          {
2239            "name": "x",
2240            "type": "uint256",
2241            "internalType": "BN254.BaseField"
2242          },
2243          {
2244            "name": "y",
2245            "type": "uint256",
2246            "internalType": "BN254.BaseField"
2247          }
2248        ]
2249      },
2250      {
2251        "name": "schnorrSig",
2252        "type": "bytes",
2253        "internalType": "bytes"
2254      },
2255      {
2256        "name": "commission",
2257        "type": "uint16",
2258        "internalType": "uint16"
2259      },
2260      {
2261        "name": "metadataUri",
2262        "type": "string",
2263        "internalType": "string"
2264      }
2265    ],
2266    "outputs": [],
2267    "stateMutability": "nonpayable"
2268  },
2269  {
2270    "type": "function",
2271    "name": "renounceOwnership",
2272    "inputs": [],
2273    "outputs": [],
2274    "stateMutability": "nonpayable"
2275  },
2276  {
2277    "type": "function",
2278    "name": "renounceRole",
2279    "inputs": [
2280      {
2281        "name": "role",
2282        "type": "bytes32",
2283        "internalType": "bytes32"
2284      },
2285      {
2286        "name": "callerConfirmation",
2287        "type": "address",
2288        "internalType": "address"
2289      }
2290    ],
2291    "outputs": [],
2292    "stateMutability": "nonpayable"
2293  },
2294  {
2295    "type": "function",
2296    "name": "revokeRole",
2297    "inputs": [
2298      {
2299        "name": "role",
2300        "type": "bytes32",
2301        "internalType": "bytes32"
2302      },
2303      {
2304        "name": "account",
2305        "type": "address",
2306        "internalType": "address"
2307      }
2308    ],
2309    "outputs": [],
2310    "stateMutability": "nonpayable"
2311  },
2312  {
2313    "type": "function",
2314    "name": "schnorrKeys",
2315    "inputs": [
2316      {
2317        "name": "schnorrKey",
2318        "type": "bytes32",
2319        "internalType": "bytes32"
2320      }
2321    ],
2322    "outputs": [
2323      {
2324        "name": "used",
2325        "type": "bool",
2326        "internalType": "bool"
2327      }
2328    ],
2329    "stateMutability": "view"
2330  },
2331  {
2332    "type": "function",
2333    "name": "setMaxCommissionIncrease",
2334    "inputs": [
2335      {
2336        "name": "newMaxIncrease",
2337        "type": "uint16",
2338        "internalType": "uint16"
2339      }
2340    ],
2341    "outputs": [],
2342    "stateMutability": "nonpayable"
2343  },
2344  {
2345    "type": "function",
2346    "name": "setMinCommissionUpdateInterval",
2347    "inputs": [
2348      {
2349        "name": "newInterval",
2350        "type": "uint256",
2351        "internalType": "uint256"
2352      }
2353    ],
2354    "outputs": [],
2355    "stateMutability": "nonpayable"
2356  },
2357  {
2358    "type": "function",
2359    "name": "setMinDelegateAmount",
2360    "inputs": [
2361      {
2362        "name": "newMinDelegateAmount",
2363        "type": "uint256",
2364        "internalType": "uint256"
2365      }
2366    ],
2367    "outputs": [],
2368    "stateMutability": "nonpayable"
2369  },
2370  {
2371    "type": "function",
2372    "name": "supportsInterface",
2373    "inputs": [
2374      {
2375        "name": "interfaceId",
2376        "type": "bytes4",
2377        "internalType": "bytes4"
2378      }
2379    ],
2380    "outputs": [
2381      {
2382        "name": "",
2383        "type": "bool",
2384        "internalType": "bool"
2385      }
2386    ],
2387    "stateMutability": "view"
2388  },
2389  {
2390    "type": "function",
2391    "name": "token",
2392    "inputs": [],
2393    "outputs": [
2394      {
2395        "name": "",
2396        "type": "address",
2397        "internalType": "contract ERC20"
2398      }
2399    ],
2400    "stateMutability": "view"
2401  },
2402  {
2403    "type": "function",
2404    "name": "transferOwnership",
2405    "inputs": [
2406      {
2407        "name": "newOwner",
2408        "type": "address",
2409        "internalType": "address"
2410      }
2411    ],
2412    "outputs": [],
2413    "stateMutability": "nonpayable"
2414  },
2415  {
2416    "type": "function",
2417    "name": "undelegate",
2418    "inputs": [
2419      {
2420        "name": "validator",
2421        "type": "address",
2422        "internalType": "address"
2423      },
2424      {
2425        "name": "amount",
2426        "type": "uint256",
2427        "internalType": "uint256"
2428      }
2429    ],
2430    "outputs": [],
2431    "stateMutability": "nonpayable"
2432  },
2433  {
2434    "type": "function",
2435    "name": "undelegations",
2436    "inputs": [
2437      {
2438        "name": "validator",
2439        "type": "address",
2440        "internalType": "address"
2441      },
2442      {
2443        "name": "delegator",
2444        "type": "address",
2445        "internalType": "address"
2446      }
2447    ],
2448    "outputs": [
2449      {
2450        "name": "amount",
2451        "type": "uint256",
2452        "internalType": "uint256"
2453      },
2454      {
2455        "name": "unlocksAt",
2456        "type": "uint256",
2457        "internalType": "uint256"
2458      }
2459    ],
2460    "stateMutability": "view"
2461  },
2462  {
2463    "type": "function",
2464    "name": "unpause",
2465    "inputs": [],
2466    "outputs": [],
2467    "stateMutability": "nonpayable"
2468  },
2469  {
2470    "type": "function",
2471    "name": "updateCommission",
2472    "inputs": [
2473      {
2474        "name": "newCommission",
2475        "type": "uint16",
2476        "internalType": "uint16"
2477      }
2478    ],
2479    "outputs": [],
2480    "stateMutability": "nonpayable"
2481  },
2482  {
2483    "type": "function",
2484    "name": "updateConsensusKeys",
2485    "inputs": [
2486      {
2487        "name": "",
2488        "type": "tuple",
2489        "internalType": "struct BN254.G2Point",
2490        "components": [
2491          {
2492            "name": "x0",
2493            "type": "uint256",
2494            "internalType": "BN254.BaseField"
2495          },
2496          {
2497            "name": "x1",
2498            "type": "uint256",
2499            "internalType": "BN254.BaseField"
2500          },
2501          {
2502            "name": "y0",
2503            "type": "uint256",
2504            "internalType": "BN254.BaseField"
2505          },
2506          {
2507            "name": "y1",
2508            "type": "uint256",
2509            "internalType": "BN254.BaseField"
2510          }
2511        ]
2512      },
2513      {
2514        "name": "",
2515        "type": "tuple",
2516        "internalType": "struct EdOnBN254.EdOnBN254Point",
2517        "components": [
2518          {
2519            "name": "x",
2520            "type": "uint256",
2521            "internalType": "uint256"
2522          },
2523          {
2524            "name": "y",
2525            "type": "uint256",
2526            "internalType": "uint256"
2527          }
2528        ]
2529      },
2530      {
2531        "name": "",
2532        "type": "tuple",
2533        "internalType": "struct BN254.G1Point",
2534        "components": [
2535          {
2536            "name": "x",
2537            "type": "uint256",
2538            "internalType": "BN254.BaseField"
2539          },
2540          {
2541            "name": "y",
2542            "type": "uint256",
2543            "internalType": "BN254.BaseField"
2544          }
2545        ]
2546      }
2547    ],
2548    "outputs": [],
2549    "stateMutability": "pure"
2550  },
2551  {
2552    "type": "function",
2553    "name": "updateConsensusKeysV2",
2554    "inputs": [
2555      {
2556        "name": "blsVK",
2557        "type": "tuple",
2558        "internalType": "struct BN254.G2Point",
2559        "components": [
2560          {
2561            "name": "x0",
2562            "type": "uint256",
2563            "internalType": "BN254.BaseField"
2564          },
2565          {
2566            "name": "x1",
2567            "type": "uint256",
2568            "internalType": "BN254.BaseField"
2569          },
2570          {
2571            "name": "y0",
2572            "type": "uint256",
2573            "internalType": "BN254.BaseField"
2574          },
2575          {
2576            "name": "y1",
2577            "type": "uint256",
2578            "internalType": "BN254.BaseField"
2579          }
2580        ]
2581      },
2582      {
2583        "name": "schnorrVK",
2584        "type": "tuple",
2585        "internalType": "struct EdOnBN254.EdOnBN254Point",
2586        "components": [
2587          {
2588            "name": "x",
2589            "type": "uint256",
2590            "internalType": "uint256"
2591          },
2592          {
2593            "name": "y",
2594            "type": "uint256",
2595            "internalType": "uint256"
2596          }
2597        ]
2598      },
2599      {
2600        "name": "blsSig",
2601        "type": "tuple",
2602        "internalType": "struct BN254.G1Point",
2603        "components": [
2604          {
2605            "name": "x",
2606            "type": "uint256",
2607            "internalType": "BN254.BaseField"
2608          },
2609          {
2610            "name": "y",
2611            "type": "uint256",
2612            "internalType": "BN254.BaseField"
2613          }
2614        ]
2615      },
2616      {
2617        "name": "schnorrSig",
2618        "type": "bytes",
2619        "internalType": "bytes"
2620      }
2621    ],
2622    "outputs": [],
2623    "stateMutability": "nonpayable"
2624  },
2625  {
2626    "type": "function",
2627    "name": "updateExitEscrowPeriod",
2628    "inputs": [
2629      {
2630        "name": "newExitEscrowPeriod",
2631        "type": "uint64",
2632        "internalType": "uint64"
2633      }
2634    ],
2635    "outputs": [],
2636    "stateMutability": "nonpayable"
2637  },
2638  {
2639    "type": "function",
2640    "name": "updateMetadataUri",
2641    "inputs": [
2642      {
2643        "name": "metadataUri",
2644        "type": "string",
2645        "internalType": "string"
2646      }
2647    ],
2648    "outputs": [],
2649    "stateMutability": "nonpayable"
2650  },
2651  {
2652    "type": "function",
2653    "name": "upgradeToAndCall",
2654    "inputs": [
2655      {
2656        "name": "newImplementation",
2657        "type": "address",
2658        "internalType": "address"
2659      },
2660      {
2661        "name": "data",
2662        "type": "bytes",
2663        "internalType": "bytes"
2664      }
2665    ],
2666    "outputs": [],
2667    "stateMutability": "payable"
2668  },
2669  {
2670    "type": "function",
2671    "name": "validateMetadataUri",
2672    "inputs": [
2673      {
2674        "name": "metadataUri",
2675        "type": "string",
2676        "internalType": "string"
2677      }
2678    ],
2679    "outputs": [],
2680    "stateMutability": "pure"
2681  },
2682  {
2683    "type": "function",
2684    "name": "validatorExits",
2685    "inputs": [
2686      {
2687        "name": "validator",
2688        "type": "address",
2689        "internalType": "address"
2690      }
2691    ],
2692    "outputs": [
2693      {
2694        "name": "unlocksAt",
2695        "type": "uint256",
2696        "internalType": "uint256"
2697      }
2698    ],
2699    "stateMutability": "view"
2700  },
2701  {
2702    "type": "function",
2703    "name": "validators",
2704    "inputs": [
2705      {
2706        "name": "account",
2707        "type": "address",
2708        "internalType": "address"
2709      }
2710    ],
2711    "outputs": [
2712      {
2713        "name": "delegatedAmount",
2714        "type": "uint256",
2715        "internalType": "uint256"
2716      },
2717      {
2718        "name": "status",
2719        "type": "uint8",
2720        "internalType": "enum StakeTable.ValidatorStatus"
2721      }
2722    ],
2723    "stateMutability": "view"
2724  },
2725  {
2726    "type": "event",
2727    "name": "CommissionUpdated",
2728    "inputs": [
2729      {
2730        "name": "validator",
2731        "type": "address",
2732        "indexed": true,
2733        "internalType": "address"
2734      },
2735      {
2736        "name": "timestamp",
2737        "type": "uint256",
2738        "indexed": false,
2739        "internalType": "uint256"
2740      },
2741      {
2742        "name": "oldCommission",
2743        "type": "uint16",
2744        "indexed": false,
2745        "internalType": "uint16"
2746      },
2747      {
2748        "name": "newCommission",
2749        "type": "uint16",
2750        "indexed": false,
2751        "internalType": "uint16"
2752      }
2753    ],
2754    "anonymous": false
2755  },
2756  {
2757    "type": "event",
2758    "name": "ConsensusKeysUpdated",
2759    "inputs": [
2760      {
2761        "name": "account",
2762        "type": "address",
2763        "indexed": true,
2764        "internalType": "address"
2765      },
2766      {
2767        "name": "blsVK",
2768        "type": "tuple",
2769        "indexed": false,
2770        "internalType": "struct BN254.G2Point",
2771        "components": [
2772          {
2773            "name": "x0",
2774            "type": "uint256",
2775            "internalType": "BN254.BaseField"
2776          },
2777          {
2778            "name": "x1",
2779            "type": "uint256",
2780            "internalType": "BN254.BaseField"
2781          },
2782          {
2783            "name": "y0",
2784            "type": "uint256",
2785            "internalType": "BN254.BaseField"
2786          },
2787          {
2788            "name": "y1",
2789            "type": "uint256",
2790            "internalType": "BN254.BaseField"
2791          }
2792        ]
2793      },
2794      {
2795        "name": "schnorrVK",
2796        "type": "tuple",
2797        "indexed": false,
2798        "internalType": "struct EdOnBN254.EdOnBN254Point",
2799        "components": [
2800          {
2801            "name": "x",
2802            "type": "uint256",
2803            "internalType": "uint256"
2804          },
2805          {
2806            "name": "y",
2807            "type": "uint256",
2808            "internalType": "uint256"
2809          }
2810        ]
2811      }
2812    ],
2813    "anonymous": false
2814  },
2815  {
2816    "type": "event",
2817    "name": "ConsensusKeysUpdatedV2",
2818    "inputs": [
2819      {
2820        "name": "account",
2821        "type": "address",
2822        "indexed": true,
2823        "internalType": "address"
2824      },
2825      {
2826        "name": "blsVK",
2827        "type": "tuple",
2828        "indexed": false,
2829        "internalType": "struct BN254.G2Point",
2830        "components": [
2831          {
2832            "name": "x0",
2833            "type": "uint256",
2834            "internalType": "BN254.BaseField"
2835          },
2836          {
2837            "name": "x1",
2838            "type": "uint256",
2839            "internalType": "BN254.BaseField"
2840          },
2841          {
2842            "name": "y0",
2843            "type": "uint256",
2844            "internalType": "BN254.BaseField"
2845          },
2846          {
2847            "name": "y1",
2848            "type": "uint256",
2849            "internalType": "BN254.BaseField"
2850          }
2851        ]
2852      },
2853      {
2854        "name": "schnorrVK",
2855        "type": "tuple",
2856        "indexed": false,
2857        "internalType": "struct EdOnBN254.EdOnBN254Point",
2858        "components": [
2859          {
2860            "name": "x",
2861            "type": "uint256",
2862            "internalType": "uint256"
2863          },
2864          {
2865            "name": "y",
2866            "type": "uint256",
2867            "internalType": "uint256"
2868          }
2869        ]
2870      },
2871      {
2872        "name": "blsSig",
2873        "type": "tuple",
2874        "indexed": false,
2875        "internalType": "struct BN254.G1Point",
2876        "components": [
2877          {
2878            "name": "x",
2879            "type": "uint256",
2880            "internalType": "BN254.BaseField"
2881          },
2882          {
2883            "name": "y",
2884            "type": "uint256",
2885            "internalType": "BN254.BaseField"
2886          }
2887        ]
2888      },
2889      {
2890        "name": "schnorrSig",
2891        "type": "bytes",
2892        "indexed": false,
2893        "internalType": "bytes"
2894      }
2895    ],
2896    "anonymous": false
2897  },
2898  {
2899    "type": "event",
2900    "name": "Delegated",
2901    "inputs": [
2902      {
2903        "name": "delegator",
2904        "type": "address",
2905        "indexed": true,
2906        "internalType": "address"
2907      },
2908      {
2909        "name": "validator",
2910        "type": "address",
2911        "indexed": true,
2912        "internalType": "address"
2913      },
2914      {
2915        "name": "amount",
2916        "type": "uint256",
2917        "indexed": false,
2918        "internalType": "uint256"
2919      }
2920    ],
2921    "anonymous": false
2922  },
2923  {
2924    "type": "event",
2925    "name": "ExitEscrowPeriodUpdated",
2926    "inputs": [
2927      {
2928        "name": "newExitEscrowPeriod",
2929        "type": "uint64",
2930        "indexed": false,
2931        "internalType": "uint64"
2932      }
2933    ],
2934    "anonymous": false
2935  },
2936  {
2937    "type": "event",
2938    "name": "Initialized",
2939    "inputs": [
2940      {
2941        "name": "version",
2942        "type": "uint64",
2943        "indexed": false,
2944        "internalType": "uint64"
2945      }
2946    ],
2947    "anonymous": false
2948  },
2949  {
2950    "type": "event",
2951    "name": "MaxCommissionIncreaseUpdated",
2952    "inputs": [
2953      {
2954        "name": "newMaxIncrease",
2955        "type": "uint16",
2956        "indexed": false,
2957        "internalType": "uint16"
2958      }
2959    ],
2960    "anonymous": false
2961  },
2962  {
2963    "type": "event",
2964    "name": "MetadataUriUpdated",
2965    "inputs": [
2966      {
2967        "name": "validator",
2968        "type": "address",
2969        "indexed": true,
2970        "internalType": "address"
2971      },
2972      {
2973        "name": "metadataUri",
2974        "type": "string",
2975        "indexed": false,
2976        "internalType": "string"
2977      }
2978    ],
2979    "anonymous": false
2980  },
2981  {
2982    "type": "event",
2983    "name": "MinCommissionUpdateIntervalUpdated",
2984    "inputs": [
2985      {
2986        "name": "newInterval",
2987        "type": "uint256",
2988        "indexed": false,
2989        "internalType": "uint256"
2990      }
2991    ],
2992    "anonymous": false
2993  },
2994  {
2995    "type": "event",
2996    "name": "MinDelegateAmountUpdated",
2997    "inputs": [
2998      {
2999        "name": "newMinDelegateAmount",
3000        "type": "uint256",
3001        "indexed": false,
3002        "internalType": "uint256"
3003      }
3004    ],
3005    "anonymous": false
3006  },
3007  {
3008    "type": "event",
3009    "name": "OwnershipTransferred",
3010    "inputs": [
3011      {
3012        "name": "previousOwner",
3013        "type": "address",
3014        "indexed": true,
3015        "internalType": "address"
3016      },
3017      {
3018        "name": "newOwner",
3019        "type": "address",
3020        "indexed": true,
3021        "internalType": "address"
3022      }
3023    ],
3024    "anonymous": false
3025  },
3026  {
3027    "type": "event",
3028    "name": "Paused",
3029    "inputs": [
3030      {
3031        "name": "account",
3032        "type": "address",
3033        "indexed": false,
3034        "internalType": "address"
3035      }
3036    ],
3037    "anonymous": false
3038  },
3039  {
3040    "type": "event",
3041    "name": "RoleAdminChanged",
3042    "inputs": [
3043      {
3044        "name": "role",
3045        "type": "bytes32",
3046        "indexed": true,
3047        "internalType": "bytes32"
3048      },
3049      {
3050        "name": "previousAdminRole",
3051        "type": "bytes32",
3052        "indexed": true,
3053        "internalType": "bytes32"
3054      },
3055      {
3056        "name": "newAdminRole",
3057        "type": "bytes32",
3058        "indexed": true,
3059        "internalType": "bytes32"
3060      }
3061    ],
3062    "anonymous": false
3063  },
3064  {
3065    "type": "event",
3066    "name": "RoleGranted",
3067    "inputs": [
3068      {
3069        "name": "role",
3070        "type": "bytes32",
3071        "indexed": true,
3072        "internalType": "bytes32"
3073      },
3074      {
3075        "name": "account",
3076        "type": "address",
3077        "indexed": true,
3078        "internalType": "address"
3079      },
3080      {
3081        "name": "sender",
3082        "type": "address",
3083        "indexed": true,
3084        "internalType": "address"
3085      }
3086    ],
3087    "anonymous": false
3088  },
3089  {
3090    "type": "event",
3091    "name": "RoleRevoked",
3092    "inputs": [
3093      {
3094        "name": "role",
3095        "type": "bytes32",
3096        "indexed": true,
3097        "internalType": "bytes32"
3098      },
3099      {
3100        "name": "account",
3101        "type": "address",
3102        "indexed": true,
3103        "internalType": "address"
3104      },
3105      {
3106        "name": "sender",
3107        "type": "address",
3108        "indexed": true,
3109        "internalType": "address"
3110      }
3111    ],
3112    "anonymous": false
3113  },
3114  {
3115    "type": "event",
3116    "name": "Undelegated",
3117    "inputs": [
3118      {
3119        "name": "delegator",
3120        "type": "address",
3121        "indexed": true,
3122        "internalType": "address"
3123      },
3124      {
3125        "name": "validator",
3126        "type": "address",
3127        "indexed": true,
3128        "internalType": "address"
3129      },
3130      {
3131        "name": "amount",
3132        "type": "uint256",
3133        "indexed": false,
3134        "internalType": "uint256"
3135      }
3136    ],
3137    "anonymous": false
3138  },
3139  {
3140    "type": "event",
3141    "name": "UndelegatedV2",
3142    "inputs": [
3143      {
3144        "name": "delegator",
3145        "type": "address",
3146        "indexed": true,
3147        "internalType": "address"
3148      },
3149      {
3150        "name": "validator",
3151        "type": "address",
3152        "indexed": true,
3153        "internalType": "address"
3154      },
3155      {
3156        "name": "undelegationId",
3157        "type": "uint64",
3158        "indexed": true,
3159        "internalType": "uint64"
3160      },
3161      {
3162        "name": "amount",
3163        "type": "uint256",
3164        "indexed": false,
3165        "internalType": "uint256"
3166      },
3167      {
3168        "name": "unlocksAt",
3169        "type": "uint256",
3170        "indexed": false,
3171        "internalType": "uint256"
3172      }
3173    ],
3174    "anonymous": false
3175  },
3176  {
3177    "type": "event",
3178    "name": "Unpaused",
3179    "inputs": [
3180      {
3181        "name": "account",
3182        "type": "address",
3183        "indexed": false,
3184        "internalType": "address"
3185      }
3186    ],
3187    "anonymous": false
3188  },
3189  {
3190    "type": "event",
3191    "name": "Upgraded",
3192    "inputs": [
3193      {
3194        "name": "implementation",
3195        "type": "address",
3196        "indexed": true,
3197        "internalType": "address"
3198      }
3199    ],
3200    "anonymous": false
3201  },
3202  {
3203    "type": "event",
3204    "name": "ValidatorExit",
3205    "inputs": [
3206      {
3207        "name": "validator",
3208        "type": "address",
3209        "indexed": true,
3210        "internalType": "address"
3211      }
3212    ],
3213    "anonymous": false
3214  },
3215  {
3216    "type": "event",
3217    "name": "ValidatorExitClaimed",
3218    "inputs": [
3219      {
3220        "name": "delegator",
3221        "type": "address",
3222        "indexed": true,
3223        "internalType": "address"
3224      },
3225      {
3226        "name": "validator",
3227        "type": "address",
3228        "indexed": true,
3229        "internalType": "address"
3230      },
3231      {
3232        "name": "amount",
3233        "type": "uint256",
3234        "indexed": false,
3235        "internalType": "uint256"
3236      }
3237    ],
3238    "anonymous": false
3239  },
3240  {
3241    "type": "event",
3242    "name": "ValidatorExitV2",
3243    "inputs": [
3244      {
3245        "name": "validator",
3246        "type": "address",
3247        "indexed": true,
3248        "internalType": "address"
3249      },
3250      {
3251        "name": "unlocksAt",
3252        "type": "uint256",
3253        "indexed": false,
3254        "internalType": "uint256"
3255      }
3256    ],
3257    "anonymous": false
3258  },
3259  {
3260    "type": "event",
3261    "name": "ValidatorRegistered",
3262    "inputs": [
3263      {
3264        "name": "account",
3265        "type": "address",
3266        "indexed": true,
3267        "internalType": "address"
3268      },
3269      {
3270        "name": "blsVk",
3271        "type": "tuple",
3272        "indexed": false,
3273        "internalType": "struct BN254.G2Point",
3274        "components": [
3275          {
3276            "name": "x0",
3277            "type": "uint256",
3278            "internalType": "BN254.BaseField"
3279          },
3280          {
3281            "name": "x1",
3282            "type": "uint256",
3283            "internalType": "BN254.BaseField"
3284          },
3285          {
3286            "name": "y0",
3287            "type": "uint256",
3288            "internalType": "BN254.BaseField"
3289          },
3290          {
3291            "name": "y1",
3292            "type": "uint256",
3293            "internalType": "BN254.BaseField"
3294          }
3295        ]
3296      },
3297      {
3298        "name": "schnorrVk",
3299        "type": "tuple",
3300        "indexed": false,
3301        "internalType": "struct EdOnBN254.EdOnBN254Point",
3302        "components": [
3303          {
3304            "name": "x",
3305            "type": "uint256",
3306            "internalType": "uint256"
3307          },
3308          {
3309            "name": "y",
3310            "type": "uint256",
3311            "internalType": "uint256"
3312          }
3313        ]
3314      },
3315      {
3316        "name": "commission",
3317        "type": "uint16",
3318        "indexed": false,
3319        "internalType": "uint16"
3320      }
3321    ],
3322    "anonymous": false
3323  },
3324  {
3325    "type": "event",
3326    "name": "ValidatorRegisteredV2",
3327    "inputs": [
3328      {
3329        "name": "account",
3330        "type": "address",
3331        "indexed": true,
3332        "internalType": "address"
3333      },
3334      {
3335        "name": "blsVK",
3336        "type": "tuple",
3337        "indexed": false,
3338        "internalType": "struct BN254.G2Point",
3339        "components": [
3340          {
3341            "name": "x0",
3342            "type": "uint256",
3343            "internalType": "BN254.BaseField"
3344          },
3345          {
3346            "name": "x1",
3347            "type": "uint256",
3348            "internalType": "BN254.BaseField"
3349          },
3350          {
3351            "name": "y0",
3352            "type": "uint256",
3353            "internalType": "BN254.BaseField"
3354          },
3355          {
3356            "name": "y1",
3357            "type": "uint256",
3358            "internalType": "BN254.BaseField"
3359          }
3360        ]
3361      },
3362      {
3363        "name": "schnorrVK",
3364        "type": "tuple",
3365        "indexed": false,
3366        "internalType": "struct EdOnBN254.EdOnBN254Point",
3367        "components": [
3368          {
3369            "name": "x",
3370            "type": "uint256",
3371            "internalType": "uint256"
3372          },
3373          {
3374            "name": "y",
3375            "type": "uint256",
3376            "internalType": "uint256"
3377          }
3378        ]
3379      },
3380      {
3381        "name": "commission",
3382        "type": "uint16",
3383        "indexed": false,
3384        "internalType": "uint16"
3385      },
3386      {
3387        "name": "blsSig",
3388        "type": "tuple",
3389        "indexed": false,
3390        "internalType": "struct BN254.G1Point",
3391        "components": [
3392          {
3393            "name": "x",
3394            "type": "uint256",
3395            "internalType": "BN254.BaseField"
3396          },
3397          {
3398            "name": "y",
3399            "type": "uint256",
3400            "internalType": "BN254.BaseField"
3401          }
3402        ]
3403      },
3404      {
3405        "name": "schnorrSig",
3406        "type": "bytes",
3407        "indexed": false,
3408        "internalType": "bytes"
3409      },
3410      {
3411        "name": "metadataUri",
3412        "type": "string",
3413        "indexed": false,
3414        "internalType": "string"
3415      }
3416    ],
3417    "anonymous": false
3418  },
3419  {
3420    "type": "event",
3421    "name": "Withdrawal",
3422    "inputs": [
3423      {
3424        "name": "account",
3425        "type": "address",
3426        "indexed": true,
3427        "internalType": "address"
3428      },
3429      {
3430        "name": "amount",
3431        "type": "uint256",
3432        "indexed": false,
3433        "internalType": "uint256"
3434      }
3435    ],
3436    "anonymous": false
3437  },
3438  {
3439    "type": "event",
3440    "name": "WithdrawalClaimed",
3441    "inputs": [
3442      {
3443        "name": "delegator",
3444        "type": "address",
3445        "indexed": true,
3446        "internalType": "address"
3447      },
3448      {
3449        "name": "validator",
3450        "type": "address",
3451        "indexed": true,
3452        "internalType": "address"
3453      },
3454      {
3455        "name": "undelegationId",
3456        "type": "uint64",
3457        "indexed": true,
3458        "internalType": "uint64"
3459      },
3460      {
3461        "name": "amount",
3462        "type": "uint256",
3463        "indexed": false,
3464        "internalType": "uint256"
3465      }
3466    ],
3467    "anonymous": false
3468  },
3469  {
3470    "type": "error",
3471    "name": "AccessControlBadConfirmation",
3472    "inputs": []
3473  },
3474  {
3475    "type": "error",
3476    "name": "AccessControlUnauthorizedAccount",
3477    "inputs": [
3478      {
3479        "name": "account",
3480        "type": "address",
3481        "internalType": "address"
3482      },
3483      {
3484        "name": "neededRole",
3485        "type": "bytes32",
3486        "internalType": "bytes32"
3487      }
3488    ]
3489  },
3490  {
3491    "type": "error",
3492    "name": "AddressEmptyCode",
3493    "inputs": [
3494      {
3495        "name": "target",
3496        "type": "address",
3497        "internalType": "address"
3498      }
3499    ]
3500  },
3501  {
3502    "type": "error",
3503    "name": "BLSSigIsInfinity",
3504    "inputs": []
3505  },
3506  {
3507    "type": "error",
3508    "name": "BLSSigVerificationFailed",
3509    "inputs": []
3510  },
3511  {
3512    "type": "error",
3513    "name": "BLSVKIsInfinity",
3514    "inputs": []
3515  },
3516  {
3517    "type": "error",
3518    "name": "BN254PairingProdFailed",
3519    "inputs": []
3520  },
3521  {
3522    "type": "error",
3523    "name": "BlsKeyAlreadyUsed",
3524    "inputs": []
3525  },
3526  {
3527    "type": "error",
3528    "name": "CommissionAlreadyInitialized",
3529    "inputs": [
3530      {
3531        "name": "validator",
3532        "type": "address",
3533        "internalType": "address"
3534      }
3535    ]
3536  },
3537  {
3538    "type": "error",
3539    "name": "CommissionIncreaseExceedsMax",
3540    "inputs": []
3541  },
3542  {
3543    "type": "error",
3544    "name": "CommissionUnchanged",
3545    "inputs": []
3546  },
3547  {
3548    "type": "error",
3549    "name": "CommissionUpdateTooSoon",
3550    "inputs": []
3551  },
3552  {
3553    "type": "error",
3554    "name": "DefaultAdminCannotBeRenounced",
3555    "inputs": []
3556  },
3557  {
3558    "type": "error",
3559    "name": "DefaultAdminCannotBeRevoked",
3560    "inputs": []
3561  },
3562  {
3563    "type": "error",
3564    "name": "DelegateAmountTooSmall",
3565    "inputs": []
3566  },
3567  {
3568    "type": "error",
3569    "name": "DeprecatedFunction",
3570    "inputs": []
3571  },
3572  {
3573    "type": "error",
3574    "name": "ERC1967InvalidImplementation",
3575    "inputs": [
3576      {
3577        "name": "implementation",
3578        "type": "address",
3579        "internalType": "address"
3580      }
3581    ]
3582  },
3583  {
3584    "type": "error",
3585    "name": "ERC1967NonPayable",
3586    "inputs": []
3587  },
3588  {
3589    "type": "error",
3590    "name": "EnforcedPause",
3591    "inputs": []
3592  },
3593  {
3594    "type": "error",
3595    "name": "ExitEscrowPeriodInvalid",
3596    "inputs": []
3597  },
3598  {
3599    "type": "error",
3600    "name": "ExpectedPause",
3601    "inputs": []
3602  },
3603  {
3604    "type": "error",
3605    "name": "FailedInnerCall",
3606    "inputs": []
3607  },
3608  {
3609    "type": "error",
3610    "name": "InitialActiveStakeExceedsBalance",
3611    "inputs": []
3612  },
3613  {
3614    "type": "error",
3615    "name": "InsufficientAllowance",
3616    "inputs": [
3617      {
3618        "name": "",
3619        "type": "uint256",
3620        "internalType": "uint256"
3621      },
3622      {
3623        "name": "",
3624        "type": "uint256",
3625        "internalType": "uint256"
3626      }
3627    ]
3628  },
3629  {
3630    "type": "error",
3631    "name": "InsufficientBalance",
3632    "inputs": [
3633      {
3634        "name": "",
3635        "type": "uint256",
3636        "internalType": "uint256"
3637      }
3638    ]
3639  },
3640  {
3641    "type": "error",
3642    "name": "InvalidCommission",
3643    "inputs": []
3644  },
3645  {
3646    "type": "error",
3647    "name": "InvalidG1",
3648    "inputs": []
3649  },
3650  {
3651    "type": "error",
3652    "name": "InvalidInitialization",
3653    "inputs": []
3654  },
3655  {
3656    "type": "error",
3657    "name": "InvalidMetadataUriLength",
3658    "inputs": []
3659  },
3660  {
3661    "type": "error",
3662    "name": "InvalidRateLimitParameters",
3663    "inputs": []
3664  },
3665  {
3666    "type": "error",
3667    "name": "InvalidSchnorrSig",
3668    "inputs": []
3669  },
3670  {
3671    "type": "error",
3672    "name": "InvalidSchnorrVK",
3673    "inputs": []
3674  },
3675  {
3676    "type": "error",
3677    "name": "MinDelegateAmountTooSmall",
3678    "inputs": []
3679  },
3680  {
3681    "type": "error",
3682    "name": "NoUndelegationFound",
3683    "inputs": []
3684  },
3685  {
3686    "type": "error",
3687    "name": "NotInitializing",
3688    "inputs": []
3689  },
3690  {
3691    "type": "error",
3692    "name": "NothingToWithdraw",
3693    "inputs": []
3694  },
3695  {
3696    "type": "error",
3697    "name": "OwnableInvalidOwner",
3698    "inputs": [
3699      {
3700        "name": "owner",
3701        "type": "address",
3702        "internalType": "address"
3703      }
3704    ]
3705  },
3706  {
3707    "type": "error",
3708    "name": "OwnableUnauthorizedAccount",
3709    "inputs": [
3710      {
3711        "name": "account",
3712        "type": "address",
3713        "internalType": "address"
3714      }
3715    ]
3716  },
3717  {
3718    "type": "error",
3719    "name": "OwnershipCannotBeRenounced",
3720    "inputs": []
3721  },
3722  {
3723    "type": "error",
3724    "name": "PowPrecompileFailed",
3725    "inputs": []
3726  },
3727  {
3728    "type": "error",
3729    "name": "PrematureWithdrawal",
3730    "inputs": []
3731  },
3732  {
3733    "type": "error",
3734    "name": "SchnorrKeyAlreadyUsed",
3735    "inputs": []
3736  },
3737  {
3738    "type": "error",
3739    "name": "UUPSUnauthorizedCallContext",
3740    "inputs": []
3741  },
3742  {
3743    "type": "error",
3744    "name": "UUPSUnsupportedProxiableUUID",
3745    "inputs": [
3746      {
3747        "name": "slot",
3748        "type": "bytes32",
3749        "internalType": "bytes32"
3750      }
3751    ]
3752  },
3753  {
3754    "type": "error",
3755    "name": "UndelegationAlreadyExists",
3756    "inputs": []
3757  },
3758  {
3759    "type": "error",
3760    "name": "ValidatorAlreadyExited",
3761    "inputs": []
3762  },
3763  {
3764    "type": "error",
3765    "name": "ValidatorAlreadyRegistered",
3766    "inputs": []
3767  },
3768  {
3769    "type": "error",
3770    "name": "ValidatorInactive",
3771    "inputs": []
3772  },
3773  {
3774    "type": "error",
3775    "name": "ValidatorNotExited",
3776    "inputs": []
3777  },
3778  {
3779    "type": "error",
3780    "name": "ZeroAddress",
3781    "inputs": []
3782  },
3783  {
3784    "type": "error",
3785    "name": "ZeroAmount",
3786    "inputs": []
3787  }
3788]
3789```*/
3790#[allow(
3791    non_camel_case_types,
3792    non_snake_case,
3793    clippy::pub_underscore_fields,
3794    clippy::style,
3795    clippy::empty_structs_with_brackets
3796)]
3797pub mod StakeTableV2 {
3798    use super::*;
3799    use alloy::sol_types as alloy_sol_types;
3800    /// The creation / init bytecode of the contract.
3801    ///
3802    /// ```text
3803    ///0x60a060405230608052348015610013575f5ffd5b5061001c610031565b610024610031565b61002c610031565b6100e3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100815760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100e05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516144996101095f395f818161254a015281816125730152612a3301526144995ff3fe608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b50610389610384366004613995565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b83660046139d7565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613adb565b610d38565b348015610414575f5ffd5b506103bd610423366004613b31565b610d51565b348015610433575f5ffd5b506103bd610442366004613b57565b610de5565b348015610452575f5ffd5b50610466610461366004613b70565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613c16565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613cbf565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613cd8565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613cd8565b611209565b348015610510575f5ffd5b506103bd61051f366004613b70565b611231565b34801561052f575f5ffd5b506103bd61053e366004613cbf565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613b70565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d13660046139d7565b61148f565b6103bd6105e4366004613d02565b611700565b3480156105f4575f5ffd5b506103bd610603366004613d4c565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613de2565b348015610641575f5ffd5b505f51602061444d5f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613b70565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613e26565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613cd8565b611a85565b34801561077b575f5ffd5b5061046661078a366004613e5f565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613b57565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613e79565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613b57565b611b15565b348015610886575f5ffd5b506103bd610895366004613ea1565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613f3e565b3480156108e2575f5ffd5b506103896108f1366004613b70565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613b57565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613e79565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613f50565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613e79565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613cd8565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613e26565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f51602061440d5f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613b57565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613b57565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613fa3565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613fd3565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613ffe565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613ffe565b9250508190555082600b5f828254610cde9190613ffe565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490614011565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f51602061442d5f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a87876122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a612364565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a61246d565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613f8f565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613f8f565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90614024565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb8282612491565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826124ad565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613ffe565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff16836140ab565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f51602061440d5f395f51905f5261148481612178565b61148c6124e0565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a836140c5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190614011565b90915550506008545f906115f79042613ffe565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490614011565b9250508190555084600b5f82825461169f9190614011565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b61170861253f565b611711826125e3565b6111fb82826125ed565b6117236126a9565b5f51602061446d5f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee6126db565b6117f66126e3565b61180d5f51602061440d5f395f51905f52886126f3565b506118185f876126f3565b505f611822611a57565b9050806001600160a01b0316876001600160a01b0316146118465761184687612794565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612804565b61188f86612999565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e9612a28565b505f5160206143ed5f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613ffe565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490614011565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6126a9565b6040516317d5c96560e11b815260040160405180910390fd5b5f51602061440d5f395f51905f526119fb81612178565b61148c612a71565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613f3e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f51602061442d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f85856122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd1818588612364565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d328861246d565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d9494939291906140ef565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee086612ab9565b611ee86126db565b611ef0612aca565b611efb898989612bbb565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612c66565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612c82565b505050565b6120085f84612491565b61201183612c82565b61201b5f82612cbc565b50505050565b5f51602061444d5f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613f8f565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613f8f565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612d35565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613f8f565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011115806122ac57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156122ca576040516306cf438f60e01b815260040160405180910390fd5b80515f0361148c576040516306cf438f60e01b815260040160405180910390fd5b60045f6122f784611abb565b815260208101919091526040015f205460ff16156123275760405162da8a5760e11b815260040160405180910390fd5b600e5f6123338361246d565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561238d57604051633a13919960e11b815260040160405180910390fd5b805115801561239e57506020810151155b80156123ac57506040810151155b80156123ba57506060810151155b156123d857604051635e4362cd60e11b815260040160405180910390fd5b6123e182612d6e565b5f6040518060600160405280602481526020016143a96024913990505f848260405160200161241192919061416c565b60405160208183030381529060405290505f61242c82612dd5565b9050612449818561243c88612ec2565b612444612f39565b613006565b6124655760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b61249a82610f35565b6124a381612178565b61201b83836126f3565b6001600160a01b03811633146124d65760405163334bd91960e11b815260040160405180910390fd5b611ff98282612cbc565b6124e86130b5565b5f51602061444d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125b95f5160206143ed5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612647575060408051601f3d908101601f1916820190925261264491810190613fd3565b60015b61266f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143ed5f395f51905f52811461269f57604051632a87526960e21b815260048101829052602401610c43565b611ff983836130e4565b336126b2611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b612051613139565b6126eb613139565b61205161316f565b5f5f51602061442d5f395f51905f5261270c8484611a85565b61278b575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556127413390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f83838381811061282157612821614180565b6128379260206040909202019081019150613b57565b90505f84848481811061284c5761284c614180565b90506040020160200160208101906128649190613cbf565b905061271061ffff8216111561288d5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156128be576128be613f8f565b036128dc5760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561291d57506001600160a01b0383165f908152600d602052604090205461ffff16155b83906129485760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612806565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156129df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190613fd3565b811115612a2357604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b612a79612021565b5f51602061444d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612521565b612ac1613139565b61148c8161318f565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612afb5750825b90505f826001600160401b03166001148015612b165750303b155b905081158015612b24575080155b15612b425760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b6c57845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612be25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612c095760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612c5e5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612c6f82610f35565b612c7881612178565b61201b8383612cbc565b612c8a6126a9565b6001600160a01b038116612cb357604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c81612794565b5f5f51602061442d5f395f51905f52612cd58484611a85565b1561278b575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612d3f8282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805160208201515f915f5160206143cd5f395f51905f52911590151615612d9457505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612df283613197565b90505f5160206143cd5f395f51905f5260035f8284850990508280612e1957612e19614194565b84820990508280612e2c57612e2c614194565b82820890505f5f612e3c8361339f565b925090505b80612ea5578480612e5457612e54614194565b6001870895508480612e6857612e68614194565b86870992508480612e7b57612e7b614194565b86840992508480612e8e57612e8e614194565b8484089250612e9c8361339f565b92509050612e41565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612ee9575090565b6040518060400160405280835f015181526020015f5160206143cd5f395f51905f528460200151612f1a91906141a8565b612f31905f5160206143cd5f395f51905f52614011565b905292915050565b612f6060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806130a95760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f51602061444d5f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b6130ed82613467565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561313157611ff982826134ca565b6111fb61353c565b5f51602061446d5f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b613177613139565b5f51602061444d5f395f51905f52805460ff19169055565b612c8a613139565b5f5f6131a28361355b565b8051909150603081146131b7576131b76141c7565b5f816001600160401b038111156131d0576131d06139ff565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b5090505f5b82811015613269578360016132148386614011565b61321e9190614011565b8151811061322e5761322e614180565b602001015160f81c60f81b82828151811061324b5761324b614180565b60200101906001600160f81b03191690815f1a9053506001016131ff565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156132f95783816132a58588614011565b6132af9190613ffe565b815181106132bf576132bf614180565b602001015160f81c60f81b60f81c8282815181106132df576132df614180565b60ff90921660209283029190910190910152600101613291565b505f613304826138a6565b90506101005f5160206143cd5f395f51905f525f6133228689614011565b90505f5b8181101561338f575f88600161333c8486614011565b6133469190614011565b8151811061335657613356614180565b016020015160f81c9050838061336e5761336e614194565b8587099550838061338157613381614194565b818708955050600101613326565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143cd5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361342d57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613446576134438382614011565b92505b808061345457613454614194565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361349c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143ed5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516134e691906141db565b5f60405180830381855af49150503d805f811461351e576040519150601f19603f3d011682016040523d82523d5f602084013e613523565b606091505b509150915061353385838361390d565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161359b92919061416c565b6040516020818303038152906040529050808460f81b6040516020016135c29291906141e6565b6040516020818303038152906040529050806040516020016135e49190614210565b60408051601f1981840301815290829052915061010160f01b9061360e9083908390602001614228565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561367d5761367d6139ff565b6040519080825280601f01601f1916602001820160405280156136a7576020820181803683370190505b5090505f826040516020016136be91815260200190565b60408051601f1981840301815291905290505f5b8151811015613728578181815181106136ed576136ed614180565b602001015160f81c60f81b83828151811061370a5761370a614180565b60200101906001600160f81b03191690815f1a9053506001016136d2565b505f8460405160200161373d91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156137cf575f83828151811061377657613776614180565b602001015160f81c60f81b83838151811061379357613793614180565b602001015160f81c60f81b18905088816040516020016137b492919061424c565b60408051601f1981840301815291905298505060010161375b565b508688876040516020016137e593929190614270565b6040516020818303038152906040529650868051906020012093508360405160200161381391815260200190565b60408051601f1981840301815291905291505f5b6138348a60ff8d16614011565b8110156138955782818151811061384d5761384d614180565b01602001516001600160f81b03191684613867838d613ffe565b8151811061387757613877614180565b60200101906001600160f81b03191690815f1a905350600101613827565b50919b9a5050505050505050505050565b5f80805b8351811015613906578381815181106138c5576138c5614180565b602002602001015160ff168160086138dd91906142a3565b6138e890600261439d565b6138f291906142a3565b6138fc9083613ffe565b91506001016138aa565b5092915050565b6060826139225761391d8261396c565b613965565b815115801561393957506001600160a01b0384163b155b1561396257604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b50805b9392505050565b80511561397c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156139a5575f5ffd5b81356001600160e01b031981168114613965575f5ffd5b80356001600160a01b03811681146139d2575f5ffd5b919050565b5f5f604083850312156139e8575f5ffd5b6139f1836139bc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613a3557613a356139ff565b60405290565b5f60808284031215613a4b575f5ffd5b604051608081016001600160401b0381118282101715613a6d57613a6d6139ff565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215613aab575f5ffd5b613ab3613a13565b823581526020928301359281019290925250919050565b803561ffff811681146139d2575f5ffd5b5f5f5f5f6101208587031215613aef575f5ffd5b613af98686613a3b565b9350613b088660808701613a9b565b9250613b178660c08701613a9b565b9150613b266101008601613aca565b905092959194509250565b5f60208284031215613b41575f5ffd5b81356001600160401b0381168114613965575f5ffd5b5f60208284031215613b67575f5ffd5b613965826139bc565b5f60208284031215613b80575f5ffd5b5035919050565b5f82601f830112613b96575f5ffd5b8135602083015f5f6001600160401b03841115613bb557613bb56139ff565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613be357613be36139ff565b604052838152905080828401871015613bfa575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613c2c575f5ffd5b613c368888613a3b565b9550613c458860808901613a9b565b9450613c548860c08901613a9b565b93506101008701356001600160401b03811115613c6f575f5ffd5b613c7b89828a01613b87565b935050613c8b6101208801613aca565b91506101408701356001600160401b03811115613ca6575f5ffd5b613cb289828a01613b87565b9150509295509295509295565b5f60208284031215613ccf575f5ffd5b61396582613aca565b5f5f60408385031215613ce9575f5ffd5b82359150613cf9602084016139bc565b90509250929050565b5f5f60408385031215613d13575f5ffd5b613d1c836139bc565b915060208301356001600160401b03811115613d36575f5ffd5b613d4285828601613b87565b9150509250929050565b5f5f5f5f5f60808688031215613d60575f5ffd5b613d69866139bc565b9450613d77602087016139bc565b93506040860135925060608601356001600160401b03811115613d98575f5ffd5b8601601f81018813613da8575f5ffd5b80356001600160401b03811115613dbd575f5ffd5b8860208260061b8401011115613dd1575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613df5575f5ffd5b613dff8585613a3b565b9250613e0e8560808601613a9b565b9150613e1d8560c08601613a9b565b90509250925092565b5f60208284031215613e36575f5ffd5b81356001600160401b03811115613e4b575f5ffd5b613e5784828501613b87565b949350505050565b5f60808284031215613e6f575f5ffd5b6139658383613a3b565b5f5f60408385031215613e8a575f5ffd5b613e93836139bc565b9150613cf9602084016139bc565b5f5f5f5f6101208587031215613eb5575f5ffd5b613ebf8686613a3b565b9350613ece8660808701613a9b565b9250613edd8660c08701613a9b565b91506101008501356001600160401b03811115613ef8575f5ffd5b613f0487828801613b87565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6139656020830184613f10565b5f5f5f5f60808587031215613f63575f5ffd5b613f6c856139bc565b9350613f7a602086016139bc565b925060408501359150613b26606086016139bc565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613fc657634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613fe3575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613fea565b81810381811115610b4c57610b4c613fea565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f61408b610160830185613f10565b82810361014084015261409e8185613f10565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613fea565b5f6001600160401b0382166001600160401b0381036140e6576140e6613fea565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f61414b610120830184613f10565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613e5761417a8386614155565b84614155565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826141c257634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6139658284614155565b5f6141f18285614155565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61421b8284614155565b5f81526001019392505050565b5f6142338285614155565b6001600160f01b03199390931683525050600201919050565b5f6142578285614155565b6001600160f81b03199390931683525050600101919050565b5f61427b8286614155565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613fea565b6001815b60018411156142f5578085048111156142d9576142d9613fea565b60018416156142e757908102905b60019390931c9280026142be565b935093915050565b5f8261430b57506001610b4c565b8161431757505f610b4c565b816001811461432d576002811461433757614353565b6001915050610b4c565b60ff84111561434857614348613fea565b50506001821b610b4c565b5060208310610133831016604e8410600b8410161715614376575081810a610b4c565b6143825f1984846142ba565b805f190482111561439557614395613fea565b029392505050565b5f61396583836142fd56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
3804    /// ```
3805    #[rustfmt::skip]
3806    #[allow(clippy::all)]
3807    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3808        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\x001V[a\0$a\x001V[a\0,a\x001V[a\0\xE3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0\x81W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xE0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80QaD\x99a\x01\t_9_\x81\x81a%J\x01R\x81\x81a%s\x01Ra*3\x01RaD\x99_\xF3\xFE`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a9\x95V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\xD7V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:\xDBV[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a;1V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a;WV[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a;pV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a<\x16V[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\xBFV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<\xD8V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<\xD8V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a;pV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\xBFV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a;pV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\xD7V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a=\x02V[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a=LV[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=\xE2V[4\x80\x15a\x06AW__\xFD[P_Q` aDM_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a;pV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a>&V[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<\xD8V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a>_V[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a;WV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a>yV[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a;WV[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a>\xA1V[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a?>V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a;pV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a;WV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a>yV[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a?PV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a>yV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<\xD8V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a>&V[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aD\r_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a;WV[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a;WV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a?\xA3V[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\xD3V[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?\xFEV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0C\xC6\x90\x84\x90a?\xFEV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?\xFEV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x0E\x90W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0E\xD4\x90\x84\x90a@\x11V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aD-_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#dV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x10=\x8Aa$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x10\x84Wa\x10\x84a?\x8FV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x10\xCAWa\x10\xCAa?\x8FV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a@$V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a$\x91V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a$\xADV[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?\xFEV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a@\xABV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\r\xD9V[_Q` aD\r_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\xE0V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x15\x05W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\xC5V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x15\xE3\x91\x90a@\x11V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?\xFEV[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x16\x87\x90\x84\x90a@\x11V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a@\x11V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x17\x08a%?V[a\x17\x11\x82a%\xE3V[a\x11\xFB\x82\x82a%\xEDV[a\x17#a&\xA9V[_Q` aDm_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\xDBV[a\x17\xF6a&\xE3V[a\x18\r_Q` aD\r_9_Q\x90_R\x88a&\xF3V[Pa\x18\x18_\x87a&\xF3V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a'\x94V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x18\x86\x85\x85a(\x04V[a\x18\x8F\x86a)\x99V[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x18\xE9a*(V[P_Q` aC\xED_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?\xFEV[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x19{\x90\x84\x90a@\x11V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa&\xA9V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aD\r_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca*qV[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x19\xB7\x91\x90a?>V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aD-_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x1A\xF8\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x1B\x1Da !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1BbW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1B\xAAW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\x1C\x1D\x91\x16\x84\x84a!\x82V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#dV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D2\x88a$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x1D\x94\x94\x93\x92\x91\x90a@\xEFV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a\x1D\xEFW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a*\xB9V[a\x1E\xE8a&\xDBV[a\x1E\xF0a*\xCAV[a\x1E\xFB\x89\x89\x89a+\xBBV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a,fV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a,\x82V[PPPV[a \x08_\x84a$\x91V[a \x11\x83a,\x82V[a \x1B_\x82a,\xBCV[PPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16\x15a QW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a \x84Wa \x84a?\x8FV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a?\x8FV[\x03a\x11\xFBW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!-WP\x83;\x15=\x17\x15[\x80a!qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0CCV[PPPPPV[a\x14\x8C\x813a-5V[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a?\x8FV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\"\xACWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\"\xCAW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x14\x8CW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\xF7\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a#'W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a#3\x83a$mV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a#\x8DW`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a#\x9EWP` \x81\x01Q\x15[\x80\x15a#\xACWP`@\x81\x01Q\x15[\x80\x15a#\xBAWP``\x81\x01Q\x15[\x15a#\xD8W`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xE1\x82a-nV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aC\xA9`$\x919\x90P_\x84\x82`@Q` \x01a$\x11\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a$,\x82a-\xD5V[\x90Pa$I\x81\x85a$<\x88a.\xC2V[a$Da/9V[a0\x06V[a$eW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a$\x9A\x82a\x0F5V[a$\xA3\x81a!xV[a \x1B\x83\x83a&\xF3V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\xD6W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a,\xBCV[a$\xE8a0\xB5V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a%\xC5WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a%\xB9_Q` aC\xED_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a&GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra&D\x91\x81\x01\x90a?\xD3V[`\x01[a&oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x81\x14a&\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a0\xE4V[3a&\xB2a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa19V[a&\xEBa19V[a Qa1oV[__Q` aD-_9_Q\x90_Ra'\x0C\x84\x84a\x1A\x85V[a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua'A3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0BLV[_\x91PPa\x0BLV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a\x1F\xF9W_\x83\x83\x83\x81\x81\x10a(!Wa(!aA\x80V[a(7\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa;WV[\x90P_\x84\x84\x84\x81\x81\x10a(LWa(LaA\x80V[\x90P`@\x02\x01` \x01` \x81\x01\x90a(d\x91\x90a<\xBFV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a(\x8DW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a(\xBEWa(\xBEa?\x8FV[\x03a(\xDCW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a)\x1DWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a)HW`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x0CCV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a(\x06V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a)\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a?\xD3V[\x81\x11\x15a*#W`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a*ya !V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a%!V[a*\xC1a19V[a\x14\x8C\x81a1\x8FV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*\xFBWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a+\x16WP0;\x15[\x90P\x81\x15\x80\x15a+$WP\x80\x15[\x15a+BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a+lW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\xE2W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a,\tW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a,^W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a,o\x82a\x0F5V[a,x\x81a!xV[a \x1B\x83\x83a,\xBCV[a,\x8Aa&\xA9V[`\x01`\x01`\xA0\x1B\x03\x81\x16a,\xB3W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a'\x94V[__Q` aD-_9_Q\x90_Ra,\xD5\x84\x84a\x1A\x85V[\x15a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0BLV[a-?\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q` \x82\x01Q_\x91_Q` aC\xCD_9_Q\x90_R\x91\x15\x90\x15\x16\x15a-\x94WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-\xF2\x83a1\x97V[\x90P_Q` aC\xCD_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a.\x19Wa.\x19aA\x94V[\x84\x82\t\x90P\x82\x80a.,Wa.,aA\x94V[\x82\x82\x08\x90P__a.<\x83a3\x9FV[\x92P\x90P[\x80a.\xA5W\x84\x80a.TWa.TaA\x94V[`\x01\x87\x08\x95P\x84\x80a.hWa.haA\x94V[\x86\x87\t\x92P\x84\x80a.{Wa.{aA\x94V[\x86\x84\t\x92P\x84\x80a.\x8EWa.\x8EaA\x94V[\x84\x84\x08\x92Pa.\x9C\x83a3\x9FV[\x92P\x90Pa.AV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a.\xE9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\xCD_9_Q\x90_R\x84` \x01Qa/\x1A\x91\x90aA\xA8V[a/1\x90_Q` aC\xCD_9_Q\x90_Ra@\x11V[\x90R\x92\x91PPV[a/``@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a0\xA9W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xED\x82a4gV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a11Wa\x1F\xF9\x82\x82a4\xCAV[a\x11\xFBa5<V[_Q` aDm_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a1wa19V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a,\x8Aa19V[__a1\xA2\x83a5[V[\x80Q\x90\x91P`0\x81\x14a1\xB7Wa1\xB7aA\xC7V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD0Wa1\xD0a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1\xFAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a2iW\x83`\x01a2\x14\x83\x86a@\x11V[a2\x1E\x91\x90a@\x11V[\x81Q\x81\x10a2.Wa2.aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a2KWa2KaA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1\xFFV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a2\xF9W\x83\x81a2\xA5\x85\x88a@\x11V[a2\xAF\x91\x90a?\xFEV[\x81Q\x81\x10a2\xBFWa2\xBFaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a2\xDFWa2\xDFaA\x80V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a2\x91V[P_a3\x04\x82a8\xA6V[\x90Pa\x01\0_Q` aC\xCD_9_Q\x90_R_a3\"\x86\x89a@\x11V[\x90P_[\x81\x81\x10\x15a3\x8FW_\x88`\x01a3<\x84\x86a@\x11V[a3F\x91\x90a@\x11V[\x81Q\x81\x10a3VWa3VaA\x80V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a3nWa3naA\x94V[\x85\x87\t\x95P\x83\x80a3\x81Wa3\x81aA\x94V[\x81\x87\x08\x95PP`\x01\x01a3&V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aC\xCD_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a4-W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a4FWa4C\x83\x82a@\x11V[\x92P[\x80\x80a4TWa4TaA\x94V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a4\x9CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa4\xE6\x91\x90aA\xDBV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a5\x1EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a5#V[``\x91P[P\x91P\x91Pa53\x85\x83\x83a9\rV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a5\x9B\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\xC2\x92\x91\x90aA\xE6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a5\xE4\x91\x90aB\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a6\x0E\x90\x83\x90\x83\x90` \x01aB(V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a6}Wa6}a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a6\xA7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\xBE\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a7(W\x81\x81\x81Q\x81\x10a6\xEDWa6\xEDaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a7\nWa7\naA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6\xD2V[P_\x84`@Q` \x01a7=\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7\xCFW_\x83\x82\x81Q\x81\x10a7vWa7vaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a7\x93Wa7\x93aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\xB4\x92\x91\x90aBLV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a7[V[P\x86\x88\x87`@Q` \x01a7\xE5\x93\x92\x91\x90aBpV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a8\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a84\x8A`\xFF\x8D\x16a@\x11V[\x81\x10\x15a8\x95W\x82\x81\x81Q\x81\x10a8MWa8MaA\x80V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a8g\x83\x8Da?\xFEV[\x81Q\x81\x10a8wWa8waA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8'V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a9\x06W\x83\x81\x81Q\x81\x10a8\xC5Wa8\xC5aA\x80V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a8\xDD\x91\x90aB\xA3V[a8\xE8\x90`\x02aC\x9DV[a8\xF2\x91\x90aB\xA3V[a8\xFC\x90\x83a?\xFEV[\x91P`\x01\x01a8\xAAV[P\x92\x91PPV[``\x82a9\"Wa9\x1D\x82a9lV[a9eV[\x81Q\x15\x80\x15a99WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a9bW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[P\x80[\x93\x92PPPV[\x80Q\x15a9|W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a9\xA5W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9eW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\xD2W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a9\xE8W__\xFD[a9\xF1\x83a9\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:5Wa:5a9\xFFV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a:KW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:mWa:ma9\xFFV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a:\xABW__\xFD[a:\xB3a:\x13V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\xD2W__\xFD[____a\x01 \x85\x87\x03\x12\x15a:\xEFW__\xFD[a:\xF9\x86\x86a:;V[\x93Pa;\x08\x86`\x80\x87\x01a:\x9BV[\x92Pa;\x17\x86`\xC0\x87\x01a:\x9BV[\x91Pa;&a\x01\0\x86\x01a:\xCAV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a;AW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a9eW__\xFD[_` \x82\x84\x03\x12\x15a;gW__\xFD[a9e\x82a9\xBCV[_` \x82\x84\x03\x12\x15a;\x80W__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a;\x96W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\xB5Wa;\xB5a9\xFFV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;\xE3Wa;\xE3a9\xFFV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;\xFAW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a<,W__\xFD[a<6\x88\x88a:;V[\x95Pa<E\x88`\x80\x89\x01a:\x9BV[\x94Pa<T\x88`\xC0\x89\x01a:\x9BV[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<oW__\xFD[a<{\x89\x82\x8A\x01a;\x87V[\x93PPa<\x8Ba\x01 \x88\x01a:\xCAV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xA6W__\xFD[a<\xB2\x89\x82\x8A\x01a;\x87V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\xCFW__\xFD[a9e\x82a:\xCAV[__`@\x83\x85\x03\x12\x15a<\xE9W__\xFD[\x825\x91Pa<\xF9` \x84\x01a9\xBCV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a=\x13W__\xFD[a=\x1C\x83a9\xBCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=6W__\xFD[a=B\x85\x82\x86\x01a;\x87V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a=`W__\xFD[a=i\x86a9\xBCV[\x94Pa=w` \x87\x01a9\xBCV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x98W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a=\xA8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\xBDW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\xD1W__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=\xF5W__\xFD[a=\xFF\x85\x85a:;V[\x92Pa>\x0E\x85`\x80\x86\x01a:\x9BV[\x91Pa>\x1D\x85`\xC0\x86\x01a:\x9BV[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a>6W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a>KW__\xFD[a>W\x84\x82\x85\x01a;\x87V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a>oW__\xFD[a9e\x83\x83a:;V[__`@\x83\x85\x03\x12\x15a>\x8AW__\xFD[a>\x93\x83a9\xBCV[\x91Pa<\xF9` \x84\x01a9\xBCV[____a\x01 \x85\x87\x03\x12\x15a>\xB5W__\xFD[a>\xBF\x86\x86a:;V[\x93Pa>\xCE\x86`\x80\x87\x01a:\x9BV[\x92Pa>\xDD\x86`\xC0\x87\x01a:\x9BV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xF8W__\xFD[a?\x04\x87\x82\x88\x01a;\x87V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a9e` \x83\x01\x84a?\x10V[____`\x80\x85\x87\x03\x12\x15a?cW__\xFD[a?l\x85a9\xBCV[\x93Pa?z` \x86\x01a9\xBCV[\x92P`@\x85\x015\x91Pa;&``\x86\x01a9\xBCV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\xC6WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?\xE3W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?\xEAV[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a@\x8Ba\x01`\x83\x01\x85a?\x10V[\x82\x81\x03a\x01@\x84\x01Ra@\x9E\x81\x85a?\x10V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@\xE6Wa@\xE6a?\xEAV[`\x01\x01\x92\x91PPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aAKa\x01 \x83\x01\x84a?\x10V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a>WaAz\x83\x86aAUV[\x84aAUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\xC2WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a9e\x82\x84aAUV[_aA\xF1\x82\x85aAUV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aB\x1B\x82\x84aAUV[_\x81R`\x01\x01\x93\x92PPPV[_aB3\x82\x85aAUV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aBW\x82\x85aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aB{\x82\x86aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?\xEAV[`\x01\x81[`\x01\x84\x11\x15aB\xF5W\x80\x85\x04\x81\x11\x15aB\xD9WaB\xD9a?\xEAV[`\x01\x84\x16\x15aB\xE7W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\xBEV[\x93P\x93\x91PPV[_\x82aC\x0BWP`\x01a\x0BLV[\x81aC\x17WP_a\x0BLV[\x81`\x01\x81\x14aC-W`\x02\x81\x14aC7WaCSV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aCHWaCHa?\xEAV[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aCvWP\x81\x81\na\x0BLV[aC\x82_\x19\x84\x84aB\xBAV[\x80_\x19\x04\x82\x11\x15aC\x95WaC\x95a?\xEAV[\x02\x93\x92PPPV[_a9e\x83\x83aB\xFDV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
3809    );
3810    /// The runtime bytecode of the contract, as deployed on the network.
3811    ///
3812    /// ```text
3813    ///0x608060405260043610610366575f3560e01c806372e9c934116101c8578063b5700e68116100fd578063d9cc7d261161009d578063e63ab1e91161006d578063e63ab1e914610a7b578063f2fde38b14610a9b578063fa52c7d814610aba578063fc0c546a14610afd575f5ffd5b8063d9cc7d2614610a1c578063e3f237e614610a31578063e4d1fb9414610a50578063e62977f814610a66575f5ffd5b8063bd49c35f116100d8578063bd49c35f14610993578063be203094146109a8578063c64814dd146109c7578063d547741f146109fd575f5ffd5b8063b5700e6814610905578063b5ecb34414610924578063bb60bfb01461094f575f5ffd5b80639ffb6b4311610168578063a3066aab11610143578063a3066aab1461085c578063ac5c2ad01461087b578063ad3cb1cc1461089a578063b3e6ebd5146108d7575f5ffd5b80639ffb6b43146107a4578063a217fddf146107f7578063a2d78dd51461080a575f5ffd5b80638da5cb5b116101a35780638da5cb5b1461072557806391d14854146107515780639b30a5e6146107705780639e9a8f311461078f575f5ffd5b806372e9c934146106dd5780638456cb59146106f2578063870c8f2614610706575f5ffd5b80633e732eba1161029e57806352d1902d1161023e5780635f8754a6116102195780635f8754a6146106595780636a911ccf146106875780636ad28e9f1461069b578063715018a6146106c9575f5ffd5b806352d1902d146106085780635544c2f11461061c5780635c975abb14610636575f5ffd5b80633f4ba83a116102795780633f4ba83a146105a35780634d99dd16146105b75780634f1ef286146105d657806352780b6e146105e9575f5ffd5b80633e732eba146105435780633e9df9b5146105625780633f3bb36614610576575f5ffd5b80632b9e5c8a116103095780632fe28759116102e45780632fe28759146104d157806336568abe146104e6578063394b348f146105055780633b2b7ffa14610524575f5ffd5b80632b9e5c8a146104745780632dc9bac6146104935780632f2ff15d146104b2575f5ffd5b806313b9057a1161034457806313b9057a146103ea5780631a20cd63146104095780632140fecd14610428578063248a9ca314610447575f5ffd5b806301ffc9a71461036a578063026e402b1461039e5780630d8e6e2c146103bf575b5f5ffd5b348015610375575f5ffd5b50610389610384366004613995565b610b1c565b60405190151581526020015b60405180910390f35b3480156103a9575f5ffd5b506103bd6103b83660046139d7565b610b52565b005b3480156103ca575f5ffd5b5060408051600281525f6020820181905291810191909152606001610395565b3480156103f5575f5ffd5b506103bd610404366004613adb565b610d38565b348015610414575f5ffd5b506103bd610423366004613b31565b610d51565b348015610433575f5ffd5b506103bd610442366004613b57565b610de5565b348015610452575f5ffd5b50610466610461366004613b70565b610f35565b604051908152602001610395565b34801561047f575f5ffd5b506103bd61048e366004613c16565b610f55565b34801561049e575f5ffd5b506103bd6104ad366004613cbf565b611169565b3480156104bd575f5ffd5b506103bd6104cc366004613cd8565b6111ed565b3480156104dc575f5ffd5b5061046661080081565b3480156104f1575f5ffd5b506103bd610500366004613cd8565b611209565b348015610510575f5ffd5b506103bd61051f366004613b70565b611231565b34801561052f575f5ffd5b506103bd61053e366004613cbf565b6112a0565b34801561054e575f5ffd5b506103bd61055d366004613b70565b61140c565b34801561056d575f5ffd5b506104665f5481565b348015610581575f5ffd5b50600a546105909061ffff1681565b60405161ffff9091168152602001610395565b3480156105ae575f5ffd5b506103bd61146d565b3480156105c2575f5ffd5b506103bd6105d13660046139d7565b61148f565b6103bd6105e4366004613d02565b611700565b3480156105f4575f5ffd5b506103bd610603366004613d4c565b61171b565b348015610613575f5ffd5b506104666118e0565b348015610627575f5ffd5b506103bd610404366004613de2565b348015610641575f5ffd5b505f51602061444d5f395f51905f525460ff16610389565b348015610664575f5ffd5b50610389610673366004613b70565b600e6020525f908152604090205460ff1681565b348015610692575f5ffd5b506103bd6118fb565b3480156106a6575f5ffd5b506106b16202a30081565b6040516001600160401b039091168152602001610395565b3480156106d4575f5ffd5b506103bd6119c3565b3480156106e8575f5ffd5b50610466600c5481565b3480156106fd575f5ffd5b506103bd6119e4565b348015610711575f5ffd5b506103bd610720366004613e26565b611a03565b348015610730575f5ffd5b50610739611a57565b6040516001600160a01b039091168152602001610395565b34801561075c575f5ffd5b5061038961076b366004613cd8565b611a85565b34801561077b575f5ffd5b5061046661078a366004613e5f565b611abb565b34801561079a575f5ffd5b5061046660085481565b3480156107af575f5ffd5b506107dd6107be366004613b57565b600d6020525f90815260409020805460019091015461ffff9091169082565b6040805161ffff9093168352602083019190915201610395565b348015610802575f5ffd5b506104665f81565b348015610815575f5ffd5b50610847610824366004613e79565b600760209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610395565b348015610867575f5ffd5b506103bd610876366004613b57565b611b15565b348015610886575f5ffd5b506103bd610895366004613ea1565b611c7a565b3480156108a5575f5ffd5b506108ca604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103959190613f3e565b3480156108e2575f5ffd5b506103896108f1366004613b70565b60046020525f908152604090205460ff1681565b348015610910575f5ffd5b50600154610739906001600160a01b031681565b34801561092f575f5ffd5b5061046661093e366004613b57565b60056020525f908152604090205481565b34801561095a575f5ffd5b5061096e610969366004613e79565b611da4565b604080516001600160401b039094168452602084019290925290820152606001610395565b34801561099e575f5ffd5b50610466600b5481565b3480156109b3575f5ffd5b506103bd6109c2366004613f50565b611e35565b3480156109d2575f5ffd5b506104666109e1366004613e79565b600660209081525f928352604080842090915290825290205481565b348015610a08575f5ffd5b506103bd610a17366004613cd8565b611f4c565b348015610a27575f5ffd5b5061046660095481565b348015610a3c575f5ffd5b506103bd610a4b366004613e26565b611f74565b348015610a5b575f5ffd5b506106b16212750081565b348015610a71575f5ffd5b5061059061271081565b348015610a86575f5ffd5b506104665f51602061440d5f395f51905f5281565b348015610aa6575f5ffd5b506103bd610ab5366004613b57565b611f99565b348015610ac5575f5ffd5b50610aef610ad4366004613b57565b60036020525f90815260409020805460019091015460ff1682565b604051610395929190613fa3565b348015610b08575f5ffd5b50600254610739906001600160a01b031681565b5f6001600160e01b03198216637965db0b60e01b1480610b4c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b610b5a612021565b610b6382612053565b335f829003610b8557604051631f2a200560e01b815260040160405180910390fd5b600c54821015610ba857604051637d29873160e01b815260040160405180910390fd5b600254604051636eb1769f60e11b81526001600160a01b0383811660048301523060248301525f92169063dd62ed3e90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190613fd3565b905082811015610c4c5760405163054365bb60e31b815260048101829052602481018490526044015b60405180910390fd5b600254610c64906001600160a01b03168330866120d4565b6001600160a01b0384165f9081526003602052604081208054859290610c8b908490613ffe565b90915550506001600160a01b038085165f90815260066020908152604080832093861683529290529081208054859290610cc6908490613ffe565b9250508190555082600b5f828254610cde9190613ffe565b92505081905550836001600160a01b0316826001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b85604051610d2a91815260200190565b60405180910390a350505050565b60405163c2d7f81360e01b815260040160405180910390fd5b5f610d5b81612178565b6202a3006001600160401b0383161080610d805750621275006001600160401b038316115b15610d9e5760405163b57e21df60e01b815260040160405180910390fd5b6001600160401b03821660088190556040519081527f793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde906020015b60405180910390a15050565b610ded612021565b6001600160a01b0381165f908152600560205260408120543391819003610e27576040516379298a5360e11b815260040160405180910390fd5b80421015610e4857604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038084165f90815260066020908152604080832093861683529290529081205490819003610e9057604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038085165f818152600660209081526040808320948816835293815283822082905591815260039091529081208054839290610ed4908490614011565b9091555050600254610ef0906001600160a01b03168483612182565b836001600160a01b0316836001600160a01b03167f8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad84483604051610d2a91815260200190565b5f9081525f51602061442d5f395f51905f52602052604090206001015490565b610f5d612021565b33610f678161220b565b610f7086612258565b610f7a87876122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050610fac81878a612364565b8451604014610fce57604051634247068760e01b815260040160405180910390fd5b61271061ffff85161115610ff55760405163dc81db8560e01b815260040160405180910390fd5b610ffe83611f74565b600160045f61100c8b611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f61103d8a61246d565b81526020019081526020015f205f6101000a81548160ff02191690831515021790555060405180604001604052805f81526020016001600281111561108457611084613f8f565b90526001600160a01b0383165f908152600360209081526040909120825181559082015160018083018054909160ff19909116908360028111156110ca576110ca613f8f565b02179055505060408051808201825261ffff87811682525f60208084018281526001600160a01b038916808452600d909252918590209351845461ffff191693169290921783555160019092019190915590519091507f26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b26848990611157908b908b9089908c908c908b90614024565b60405180910390a25050505050505050565b5f61117381612178565b5f8261ffff1611801561118c575061271061ffff831611155b6111a95760405163674e8ef360e01b815260040160405180910390fd5b600a805461ffff191661ffff84169081179091556040519081527fbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd90602001610dd9565b816111ff576111fb81611f99565b5050565b6111fb8282612491565b8161122757604051638b78631d60e01b815260040160405180910390fd5b6111fb82826124ad565b5f61123b81612178565b5f8211801561124e57506301e133808211155b61126b5760405163674e8ef360e01b815260040160405180910390fd5b60098290556040518281527f51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef25990602001610dd9565b6112a8612021565b336112b281612053565b61271061ffff831611156112d95760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0381165f908152600d60205260409020805461ffff90811690841681900361131b57604051633082eb2560e21b815260040160405180910390fd5b8061ffff168461ffff1611156113a757600182015480158061134957506009546113459082613ffe565b4210155b611366576040516316eb94cb60e01b815260040160405180910390fd5b600a546113779061ffff16836140ab565b61ffff168561ffff16111561139f576040516312d6a46560e11b815260040160405180910390fd5b504260018301555b815461ffff191661ffff85811691821784556040805142815291841660208301528101919091526001600160a01b038416907fbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd649060600160405180910390a250505050565b5f61141681612178565b60018210156114385760405163485c33c560e11b815260040160405180910390fd5b600c8290556040518281527f02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa590602001610dd9565b5f51602061440d5f395f51905f5261148481612178565b61148c6124e0565b50565b611497612021565b6114a082612053565b335f8290036114c257604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093851683529290522054156115055760405163d423a4f160e01b815260040160405180910390fd5b6001600160a01b038084165f908152600660209081526040808320938516835292905220548281101561154e57604051639266535160e01b815260048101829052602401610c43565b600f80545f916001600160401b03909116908261156a836140c5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555090508360065f876001600160a01b03166001600160a01b031681526020019081526020015f205f856001600160a01b03166001600160a01b031681526020019081526020015f205f8282546115e39190614011565b90915550506008545f906115f79042613ffe565b60408051808201825287815260208082018481526001600160a01b038b81165f81815260078552868120928c16808252928552868120955186559251600190950194909455838252601083528482209082528252838120805467ffffffffffffffff19166001600160401b0389161790559182526003905290812080549293508792909190611687908490614011565b9250508190555084600b5f82825461169f9190614011565b909155505060408051868152602081018390526001600160401b038416916001600160a01b03808a1692908816917f708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da910160405180910390a4505050505050565b61170861253f565b611711826125e3565b6111fb82826125ed565b6117236126a9565b5f51602061446d5f395f51905f52805460029190600160401b900460ff1680611759575080546001600160401b03808416911610155b156117775760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556001600160a01b0386166117bf5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166117e65760405163d92e233d60e01b815260040160405180910390fd5b6117ee6126db565b6117f66126e3565b61180d5f51602061440d5f395f51905f52886126f3565b506118185f876126f3565b505f611822611a57565b9050806001600160a01b0316876001600160a01b0316146118465761184687612794565b62093a80600955600a805461ffff19166101f4179055600f805467ffffffffffffffff19166001179055670de0b6b3a7640000600c556118868585612804565b61188f86612999565b50805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b5f6118e9612a28565b505f5160206143ed5f395f51905f5290565b611903612021565b3361190d81612053565b6001600160a01b0381165f908152600360205260408120600101805460ff1916600217905560085461193f9042613ffe565b6001600160a01b0383165f9081526005602090815260408083208490556003909152812054600b8054939450909290919061197b908490614011565b90915550506040518181526001600160a01b038316907f4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab906020015b60405180910390a25050565b6119cb6126a9565b6040516317d5c96560e11b815260040160405180910390fd5b5f51602061440d5f395f51905f526119fb81612178565b61148c612a71565b611a0b612021565b33611a1581612053565b611a1e82611f74565b806001600160a01b03167f20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34836040516119b79190613f3e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f9182525f51602061442d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f815f0151826020015183604001518460600151604051602001611af8949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b611b1d612021565b6001600160a01b0381165f9081526007602090815260408083203380855292528220549091819003611b6257604051630686827b60e51b815260040160405180910390fd5b6001600160a01b038084165f90815260076020908152604080832093861683529290522060010154421015611baa57604051635a77435760e01b815260040160405180910390fd5b6001600160a01b038381165f81815260106020908152604080832087861680855281845282852080549686526007855283862091865290845291842084815560010193909355919052805467ffffffffffffffff191690556002546001600160401b0390911691611c1d91168484612182565b806001600160401b0316846001600160a01b0316846001600160a01b03167fb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a852285604051611c6c91815260200190565b60405180910390a450505050565b611c82612021565b33611c8c81612053565b611c9584612258565b611c9f85856122eb565b604080516001600160a01b03831660208201525f91016040516020818303038152906040529050611cd1818588612364565b8251604014611cf357604051634247068760e01b815260040160405180910390fd5b600160045f611d0189611abb565b81526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f611d328861246d565b81526020019081526020015f205f6101000a81548160ff021916908315150217905550816001600160a01b03167fc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e587878787604051611d9494939291906140ef565b60405180910390a2505050505050565b6001600160a01b038083165f90815260076020908152604080832093851683529290529081208054829182918203611def57604051635a927eb560e11b815260040160405180910390fd5b6001600160a01b039586165f90815260106020908152604080832097909816825295909552949093205484546001909501546001600160401b0390911695909350915050565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015611e665750825b90505f826001600160401b03166001148015611e815750303b155b905081158015611e8f575080155b15611ead5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611ed757845460ff60401b1916600160401b1785555b611ee086612ab9565b611ee86126db565b611ef0612aca565b611efb898989612bbb565b8315611f4157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b81611f6a5760405163b0b5fb9960e01b815260040160405180910390fd5b6111fb8282612c66565b80516108008111156111fb5760405163239ff57f60e01b815260040160405180910390fd5b5f611fa381612178565b6001600160a01b038216611fcc57604051631e4fbdf760e01b81525f6004820152602401610c43565b5f611fd5611a57565b9050826001600160a01b0316816001600160a01b031603611ffe57611ff983612c82565b505050565b6120085f84612491565b61201183612c82565b61201b5f82612cbc565b50505050565b5f51602061444d5f395f51905f525460ff16156120515760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b0381165f9081526003602052604081206001015460ff169081600281111561208457612084613f8f565b036120a25760405163508a793f60e01b815260040160405180910390fd5b60028160028111156120b6576120b6613f8f565b036111fb5760405163eab4a96360e01b815260040160405180910390fd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f51141615161561212d5750833b153d17155b806121715760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610c43565b5050505050565b61148c8133612d35565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f5114161516156121cc5750823b153d17155b8061201b5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610c43565b6001600160a01b0381165f9081526003602052604081206001015460ff16600281111561223a5761223a613f8f565b1461148c5760405163132e7efb60e31b815260040160405180910390fd5b80517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000011115806122ac57507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001816020015110155b156122ca576040516306cf438f60e01b815260040160405180910390fd5b80515f0361148c576040516306cf438f60e01b815260040160405180910390fd5b60045f6122f784611abb565b815260208101919091526040015f205460ff16156123275760405162da8a5760e11b815260040160405180910390fd5b600e5f6123338361246d565b815260208101919091526040015f205460ff16156111fb5760405163ae493b0360e01b815260040160405180910390fd5b81516020830151159015161561238d57604051633a13919960e11b815260040160405180910390fd5b805115801561239e57506020810151155b80156123ac57506040810151155b80156123ba57506060810151155b156123d857604051635e4362cd60e11b815260040160405180910390fd5b6123e182612d6e565b5f6040518060600160405280602481526020016143a96024913990505f848260405160200161241192919061416c565b60405160208183030381529060405290505f61242c82612dd5565b9050612449818561243c88612ec2565b612444612f39565b613006565b6124655760405162ced3e560e41b815260040160405180910390fd5b505050505050565b5f815f01518260200151604051602001611af8929190918252602082015260400190565b61249a82610f35565b6124a381612178565b61201b83836126f3565b6001600160a01b03811633146124d65760405163334bd91960e11b815260040160405180910390fd5b611ff98282612cbc565b6124e86130b5565b5f51602061444d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806125c557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166125b95f5160206143ed5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156120515760405163703e46dd60e11b815260040160405180910390fd5b5f6111fb81612178565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612647575060408051601f3d908101601f1916820190925261264491810190613fd3565b60015b61266f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610c43565b5f5160206143ed5f395f51905f52811461269f57604051632a87526960e21b815260048101829052602401610c43565b611ff983836130e4565b336126b2611a57565b6001600160a01b0316146120515760405163118cdaa760e01b8152336004820152602401610c43565b612051613139565b6126eb613139565b61205161316f565b5f5f51602061442d5f395f51905f5261270c8484611a85565b61278b575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556127413390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b4c565b5f915050610b4c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f5b81811015611ff9575f83838381811061282157612821614180565b6128379260206040909202019081019150613b57565b90505f84848481811061284c5761284c614180565b90506040020160200160208101906128649190613cbf565b905061271061ffff8216111561288d5760405163dc81db8560e01b815260040160405180910390fd5b6001600160a01b0382165f9081526003602052604081206001015460ff16908160028111156128be576128be613f8f565b036128dc5760405163508a793f60e01b815260040160405180910390fd5b6001600160a01b0383165f908152600d602052604090206001015415801561291d57506001600160a01b0383165f908152600d602052604090205461ffff16155b83906129485760405163050814e160e41b81526001600160a01b039091166004820152602401610c43565b505060408051808201825261ffff92831681525f60208083018281526001600160a01b03969096168252600d9052919091209051815461ffff19169216919091178155905160019182015501612806565b6002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156129df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190613fd3565b811115612a2357604051633d934f4960e11b815260040160405180910390fd5b600b55565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120515760405163703e46dd60e11b815260040160405180910390fd5b612a79612021565b5f51602061444d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612521565b612ac1613139565b61148c8161318f565b5f51602061446d5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015612afb5750825b90505f826001600160401b03166001148015612b165750303b155b905081158015612b24575080155b15612b425760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b6c57845460ff60401b1916600160401b1785555b435f55831561217157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6001600160a01b038316612be25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216612c095760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790556202a30080821015612c5e5760405163b57e21df60e01b815260040160405180910390fd5b506008555050565b612c6f82610f35565b612c7881612178565b61201b8383612cbc565b612c8a6126a9565b6001600160a01b038116612cb357604051631e4fbdf760e01b81525f6004820152602401610c43565b61148c81612794565b5f5f51602061442d5f395f51905f52612cd58484611a85565b1561278b575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b4c565b612d3f8282611a85565b6111fb5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610c43565b805160208201515f915f5160206143cd5f395f51905f52911590151615612d9457505050565b825160208401518260038485858609850908838283091483821084841016169350505081611ff95760405163279e345360e21b815260040160405180910390fd5b604080518082019091525f80825260208201525f612df283613197565b90505f5160206143cd5f395f51905f5260035f8284850990508280612e1957612e19614194565b84820990508280612e2c57612e2c614194565b82820890505f5f612e3c8361339f565b925090505b80612ea5578480612e5457612e54614194565b6001870895508480612e6857612e68614194565b86870992508480612e7b57612e7b614194565b86840992508480612e8e57612e8e614194565b8484089250612e9c8361339f565b92509050612e41565b506040805180820190915294855260208501525091949350505050565b604080518082019091525f8082526020820152815160208301511590151615612ee9575090565b6040518060400160405280835f015181526020015f5160206143cd5f395f51905f528460200151612f1a91906141a8565b612f31905f5160206143cd5f395f51905f52614011565b905292915050565b612f6060405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f519150806130a95760405163c206334f60e01b815260040160405180910390fd5b50151595945050505050565b5f51602061444d5f395f51905f525460ff1661205157604051638dfc202b60e01b815260040160405180910390fd5b6130ed82613467565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561313157611ff982826134ca565b6111fb61353c565b5f51602061446d5f395f51905f5254600160401b900460ff1661205157604051631afcd79f60e31b815260040160405180910390fd5b613177613139565b5f51602061444d5f395f51905f52805460ff19169055565b612c8a613139565b5f5f6131a28361355b565b8051909150603081146131b7576131b76141c7565b5f816001600160401b038111156131d0576131d06139ff565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b5090505f5b82811015613269578360016132148386614011565b61321e9190614011565b8151811061322e5761322e614180565b602001015160f81c60f81b82828151811061324b5761324b614180565b60200101906001600160f81b03191690815f1a9053506001016131ff565b5060408051601f80825261040082019092525f9082602082016103e0803683370190505090505f5b828110156132f95783816132a58588614011565b6132af9190613ffe565b815181106132bf576132bf614180565b602001015160f81c60f81b60f81c8282815181106132df576132df614180565b60ff90921660209283029190910190910152600101613291565b505f613304826138a6565b90506101005f5160206143cd5f395f51905f525f6133228689614011565b90505f5b8181101561338f575f88600161333c8486614011565b6133469190614011565b8151811061335657613356614180565b016020015160f81c9050838061336e5761336e614194565b8587099550838061338157613381614194565b818708955050600101613326565b50929a9950505050505050505050565b5f5f5f5f5f7f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5290505f5f5160206143cd5f395f51905f52905060405160208152602080820152602060408201528760608201528260808201528160a082015260205f60c08360055afa9450505f5192508361342d57604051630c9d3e9960e21b815260040160405180910390fd5b80600184901b1115613446576134438382614011565b92505b808061345457613454614194565b8384099690961496919550909350505050565b806001600160a01b03163b5f0361349c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610c43565b5f5160206143ed5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516134e691906141db565b5f60405180830381855af49150503d805f811461351e576040519150601f19603f3d011682016040523d82523d5f602084013e613523565b606091505b509150915061353385838361390d565b95945050505050565b34156120515760405163b398979f60e01b815260040160405180910390fd5b604080516030808252606082810190935290602090600160f91b905f9084602082018180368337019050509050808660405160200161359b92919061416c565b6040516020818303038152906040529050808460f81b6040516020016135c29291906141e6565b6040516020818303038152906040529050806040516020016135e49190614210565b60408051601f1981840301815290829052915061010160f01b9061360e9083908390602001614228565b60408051808303601f190181528282528051602091820120818401819052600160f81b848401526001600160f01b031985166041850152825160238186030181526043909401909252825190830120919350905f60ff88166001600160401b0381111561367d5761367d6139ff565b6040519080825280601f01601f1916602001820160405280156136a7576020820181803683370190505b5090505f826040516020016136be91815260200190565b60408051601f1981840301815291905290505f5b8151811015613728578181815181106136ed576136ed614180565b602001015160f81c60f81b83828151811061370a5761370a614180565b60200101906001600160f81b03191690815f1a9053506001016136d2565b505f8460405160200161373d91815260200190565b60408051601f19818403018152602083019091525f80835291985091505b898110156137cf575f83828151811061377657613776614180565b602001015160f81c60f81b83838151811061379357613793614180565b602001015160f81c60f81b18905088816040516020016137b492919061424c565b60408051601f1981840301815291905298505060010161375b565b508688876040516020016137e593929190614270565b6040516020818303038152906040529650868051906020012093508360405160200161381391815260200190565b60408051601f1981840301815291905291505f5b6138348a60ff8d16614011565b8110156138955782818151811061384d5761384d614180565b01602001516001600160f81b03191684613867838d613ffe565b8151811061387757613877614180565b60200101906001600160f81b03191690815f1a905350600101613827565b50919b9a5050505050505050505050565b5f80805b8351811015613906578381815181106138c5576138c5614180565b602002602001015160ff168160086138dd91906142a3565b6138e890600261439d565b6138f291906142a3565b6138fc9083613ffe565b91506001016138aa565b5092915050565b6060826139225761391d8261396c565b613965565b815115801561393957506001600160a01b0384163b155b1561396257604051639996b31560e01b81526001600160a01b0385166004820152602401610c43565b50805b9392505050565b80511561397c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156139a5575f5ffd5b81356001600160e01b031981168114613965575f5ffd5b80356001600160a01b03811681146139d2575f5ffd5b919050565b5f5f604083850312156139e8575f5ffd5b6139f1836139bc565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715613a3557613a356139ff565b60405290565b5f60808284031215613a4b575f5ffd5b604051608081016001600160401b0381118282101715613a6d57613a6d6139ff565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f60408284031215613aab575f5ffd5b613ab3613a13565b823581526020928301359281019290925250919050565b803561ffff811681146139d2575f5ffd5b5f5f5f5f6101208587031215613aef575f5ffd5b613af98686613a3b565b9350613b088660808701613a9b565b9250613b178660c08701613a9b565b9150613b266101008601613aca565b905092959194509250565b5f60208284031215613b41575f5ffd5b81356001600160401b0381168114613965575f5ffd5b5f60208284031215613b67575f5ffd5b613965826139bc565b5f60208284031215613b80575f5ffd5b5035919050565b5f82601f830112613b96575f5ffd5b8135602083015f5f6001600160401b03841115613bb557613bb56139ff565b50604051601f19601f85018116603f011681018181106001600160401b0382111715613be357613be36139ff565b604052838152905080828401871015613bfa575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f5f5f5f5f6101608789031215613c2c575f5ffd5b613c368888613a3b565b9550613c458860808901613a9b565b9450613c548860c08901613a9b565b93506101008701356001600160401b03811115613c6f575f5ffd5b613c7b89828a01613b87565b935050613c8b6101208801613aca565b91506101408701356001600160401b03811115613ca6575f5ffd5b613cb289828a01613b87565b9150509295509295509295565b5f60208284031215613ccf575f5ffd5b61396582613aca565b5f5f60408385031215613ce9575f5ffd5b82359150613cf9602084016139bc565b90509250929050565b5f5f60408385031215613d13575f5ffd5b613d1c836139bc565b915060208301356001600160401b03811115613d36575f5ffd5b613d4285828601613b87565b9150509250929050565b5f5f5f5f5f60808688031215613d60575f5ffd5b613d69866139bc565b9450613d77602087016139bc565b93506040860135925060608601356001600160401b03811115613d98575f5ffd5b8601601f81018813613da8575f5ffd5b80356001600160401b03811115613dbd575f5ffd5b8860208260061b8401011115613dd1575f5ffd5b959894975092955050506020019190565b5f5f5f6101008486031215613df5575f5ffd5b613dff8585613a3b565b9250613e0e8560808601613a9b565b9150613e1d8560c08601613a9b565b90509250925092565b5f60208284031215613e36575f5ffd5b81356001600160401b03811115613e4b575f5ffd5b613e5784828501613b87565b949350505050565b5f60808284031215613e6f575f5ffd5b6139658383613a3b565b5f5f60408385031215613e8a575f5ffd5b613e93836139bc565b9150613cf9602084016139bc565b5f5f5f5f6101208587031215613eb5575f5ffd5b613ebf8686613a3b565b9350613ece8660808701613a9b565b9250613edd8660c08701613a9b565b91506101008501356001600160401b03811115613ef8575f5ffd5b613f0487828801613b87565b91505092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6139656020830184613f10565b5f5f5f5f60808587031215613f63575f5ffd5b613f6c856139bc565b9350613f7a602086016139bc565b925060408501359150613b26606086016139bc565b634e487b7160e01b5f52602160045260245ffd5b8281526040810160038310613fc657634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f60208284031215613fe3575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b4c57610b4c613fea565b81810381811115610b4c57610b4c613fea565b8651815260208088015190820152604080880151908201526060808801519082015285516080820152602086015160a082015261ffff851660c0820152835160e082015260208401516101008201526101606101208201525f61408b610160830185613f10565b82810361014084015261409e8185613f10565b9998505050505050505050565b61ffff8181168382160190811115610b4c57610b4c613fea565b5f6001600160401b0382166001600160401b0381036140e6576140e6613fea565b60010192915050565b8451815260208086015190820152604080860151908201526060808601519082015283516080820152602084015160a0820152825160c0820152602083015160e08201526101206101008201525f61414b610120830184613f10565b9695505050505050565b5f81518060208401855e5f93019283525090919050565b5f613e5761417a8386614155565b84614155565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826141c257634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52600160045260245ffd5b5f6139658284614155565b5f6141f18285614155565b5f81526001600160f81b03199390931660018401525050600201919050565b5f61421b8284614155565b5f81526001019392505050565b5f6142338285614155565b6001600160f01b03199390931683525050600201919050565b5f6142578285614155565b6001600160f81b03199390931683525050600101919050565b5f61427b8286614155565b6001600160f81b031994909416845250506001600160f01b0319166001820152600301919050565b8082028115828204841417610b4c57610b4c613fea565b6001815b60018411156142f5578085048111156142d9576142d9613fea565b60018416156142e757908102905b60019390931c9280026142be565b935093915050565b5f8261430b57506001610b4c565b8161431757505f610b4c565b816001811461432d576002811461433757614353565b6001915050610b4c565b60ff84111561434857614348613fea565b50506001821b610b4c565b5060208310610133831016604e8410600b8410161715614376575081810a610b4c565b6143825f1984846142ba565b805f190482111561439557614395613fea565b029392505050565b5f61396583836142fd56fe424c535f5349475f424e32353447315f584d443a4b454343414b5f4e4354485f4e554c5f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
3814    /// ```
3815    #[rustfmt::skip]
3816    #[allow(clippy::all)]
3817    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3818        b"`\x80`@R`\x046\x10a\x03fW_5`\xE0\x1C\x80cr\xE9\xC94\x11a\x01\xC8W\x80c\xB5p\x0Eh\x11a\0\xFDW\x80c\xD9\xCC}&\x11a\0\x9DW\x80c\xE6:\xB1\xE9\x11a\0mW\x80c\xE6:\xB1\xE9\x14a\n{W\x80c\xF2\xFD\xE3\x8B\x14a\n\x9BW\x80c\xFAR\xC7\xD8\x14a\n\xBAW\x80c\xFC\x0CTj\x14a\n\xFDW__\xFD[\x80c\xD9\xCC}&\x14a\n\x1CW\x80c\xE3\xF27\xE6\x14a\n1W\x80c\xE4\xD1\xFB\x94\x14a\nPW\x80c\xE6)w\xF8\x14a\nfW__\xFD[\x80c\xBDI\xC3_\x11a\0\xD8W\x80c\xBDI\xC3_\x14a\t\x93W\x80c\xBE 0\x94\x14a\t\xA8W\x80c\xC6H\x14\xDD\x14a\t\xC7W\x80c\xD5Gt\x1F\x14a\t\xFDW__\xFD[\x80c\xB5p\x0Eh\x14a\t\x05W\x80c\xB5\xEC\xB3D\x14a\t$W\x80c\xBB`\xBF\xB0\x14a\tOW__\xFD[\x80c\x9F\xFBkC\x11a\x01hW\x80c\xA3\x06j\xAB\x11a\x01CW\x80c\xA3\x06j\xAB\x14a\x08\\W\x80c\xAC\\*\xD0\x14a\x08{W\x80c\xAD<\xB1\xCC\x14a\x08\x9AW\x80c\xB3\xE6\xEB\xD5\x14a\x08\xD7W__\xFD[\x80c\x9F\xFBkC\x14a\x07\xA4W\x80c\xA2\x17\xFD\xDF\x14a\x07\xF7W\x80c\xA2\xD7\x8D\xD5\x14a\x08\nW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\xA3W\x80c\x8D\xA5\xCB[\x14a\x07%W\x80c\x91\xD1HT\x14a\x07QW\x80c\x9B0\xA5\xE6\x14a\x07pW\x80c\x9E\x9A\x8F1\x14a\x07\x8FW__\xFD[\x80cr\xE9\xC94\x14a\x06\xDDW\x80c\x84V\xCBY\x14a\x06\xF2W\x80c\x87\x0C\x8F&\x14a\x07\x06W__\xFD[\x80c>s.\xBA\x11a\x02\x9EW\x80cR\xD1\x90-\x11a\x02>W\x80c_\x87T\xA6\x11a\x02\x19W\x80c_\x87T\xA6\x14a\x06YW\x80cj\x91\x1C\xCF\x14a\x06\x87W\x80cj\xD2\x8E\x9F\x14a\x06\x9BW\x80cqP\x18\xA6\x14a\x06\xC9W__\xFD[\x80cR\xD1\x90-\x14a\x06\x08W\x80cUD\xC2\xF1\x14a\x06\x1CW\x80c\\\x97Z\xBB\x14a\x066W__\xFD[\x80c?K\xA8:\x11a\x02yW\x80c?K\xA8:\x14a\x05\xA3W\x80cM\x99\xDD\x16\x14a\x05\xB7W\x80cO\x1E\xF2\x86\x14a\x05\xD6W\x80cRx\x0Bn\x14a\x05\xE9W__\xFD[\x80c>s.\xBA\x14a\x05CW\x80c>\x9D\xF9\xB5\x14a\x05bW\x80c?;\xB3f\x14a\x05vW__\xFD[\x80c+\x9E\\\x8A\x11a\x03\tW\x80c/\xE2\x87Y\x11a\x02\xE4W\x80c/\xE2\x87Y\x14a\x04\xD1W\x80c6V\x8A\xBE\x14a\x04\xE6W\x80c9K4\x8F\x14a\x05\x05W\x80c;+\x7F\xFA\x14a\x05$W__\xFD[\x80c+\x9E\\\x8A\x14a\x04tW\x80c-\xC9\xBA\xC6\x14a\x04\x93W\x80c//\xF1]\x14a\x04\xB2W__\xFD[\x80c\x13\xB9\x05z\x11a\x03DW\x80c\x13\xB9\x05z\x14a\x03\xEAW\x80c\x1A \xCDc\x14a\x04\tW\x80c!@\xFE\xCD\x14a\x04(W\x80c$\x8A\x9C\xA3\x14a\x04GW__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x03jW\x80c\x02n@+\x14a\x03\x9EW\x80c\r\x8En,\x14a\x03\xBFW[__\xFD[4\x80\x15a\x03uW__\xFD[Pa\x03\x89a\x03\x846`\x04a9\x95V[a\x0B\x1CV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x03\xA9W__\xFD[Pa\x03\xBDa\x03\xB86`\x04a9\xD7V[a\x0BRV[\0[4\x80\x15a\x03\xCAW__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x03\x95V[4\x80\x15a\x03\xF5W__\xFD[Pa\x03\xBDa\x04\x046`\x04a:\xDBV[a\r8V[4\x80\x15a\x04\x14W__\xFD[Pa\x03\xBDa\x04#6`\x04a;1V[a\rQV[4\x80\x15a\x043W__\xFD[Pa\x03\xBDa\x04B6`\x04a;WV[a\r\xE5V[4\x80\x15a\x04RW__\xFD[Pa\x04fa\x04a6`\x04a;pV[a\x0F5V[`@Q\x90\x81R` \x01a\x03\x95V[4\x80\x15a\x04\x7FW__\xFD[Pa\x03\xBDa\x04\x8E6`\x04a<\x16V[a\x0FUV[4\x80\x15a\x04\x9EW__\xFD[Pa\x03\xBDa\x04\xAD6`\x04a<\xBFV[a\x11iV[4\x80\x15a\x04\xBDW__\xFD[Pa\x03\xBDa\x04\xCC6`\x04a<\xD8V[a\x11\xEDV[4\x80\x15a\x04\xDCW__\xFD[Pa\x04fa\x08\0\x81V[4\x80\x15a\x04\xF1W__\xFD[Pa\x03\xBDa\x05\x006`\x04a<\xD8V[a\x12\tV[4\x80\x15a\x05\x10W__\xFD[Pa\x03\xBDa\x05\x1F6`\x04a;pV[a\x121V[4\x80\x15a\x05/W__\xFD[Pa\x03\xBDa\x05>6`\x04a<\xBFV[a\x12\xA0V[4\x80\x15a\x05NW__\xFD[Pa\x03\xBDa\x05]6`\x04a;pV[a\x14\x0CV[4\x80\x15a\x05mW__\xFD[Pa\x04f_T\x81V[4\x80\x15a\x05\x81W__\xFD[P`\nTa\x05\x90\x90a\xFF\xFF\x16\x81V[`@Qa\xFF\xFF\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x05\xAEW__\xFD[Pa\x03\xBDa\x14mV[4\x80\x15a\x05\xC2W__\xFD[Pa\x03\xBDa\x05\xD16`\x04a9\xD7V[a\x14\x8FV[a\x03\xBDa\x05\xE46`\x04a=\x02V[a\x17\0V[4\x80\x15a\x05\xF4W__\xFD[Pa\x03\xBDa\x06\x036`\x04a=LV[a\x17\x1BV[4\x80\x15a\x06\x13W__\xFD[Pa\x04fa\x18\xE0V[4\x80\x15a\x06'W__\xFD[Pa\x03\xBDa\x04\x046`\x04a=\xE2V[4\x80\x15a\x06AW__\xFD[P_Q` aDM_9_Q\x90_RT`\xFF\x16a\x03\x89V[4\x80\x15a\x06dW__\xFD[Pa\x03\x89a\x06s6`\x04a;pV[`\x0E` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\x06\x92W__\xFD[Pa\x03\xBDa\x18\xFBV[4\x80\x15a\x06\xA6W__\xFD[Pa\x06\xB1b\x02\xA3\0\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x06\xD4W__\xFD[Pa\x03\xBDa\x19\xC3V[4\x80\x15a\x06\xE8W__\xFD[Pa\x04f`\x0CT\x81V[4\x80\x15a\x06\xFDW__\xFD[Pa\x03\xBDa\x19\xE4V[4\x80\x15a\x07\x11W__\xFD[Pa\x03\xBDa\x07 6`\x04a>&V[a\x1A\x03V[4\x80\x15a\x070W__\xFD[Pa\x079a\x1AWV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x03\x95V[4\x80\x15a\x07\\W__\xFD[Pa\x03\x89a\x07k6`\x04a<\xD8V[a\x1A\x85V[4\x80\x15a\x07{W__\xFD[Pa\x04fa\x07\x8A6`\x04a>_V[a\x1A\xBBV[4\x80\x15a\x07\x9AW__\xFD[Pa\x04f`\x08T\x81V[4\x80\x15a\x07\xAFW__\xFD[Pa\x07\xDDa\x07\xBE6`\x04a;WV[`\r` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01Ta\xFF\xFF\x90\x91\x16\x90\x82V[`@\x80Qa\xFF\xFF\x90\x93\x16\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08\x02W__\xFD[Pa\x04f_\x81V[4\x80\x15a\x08\x15W__\xFD[Pa\x08Ga\x08$6`\x04a>yV[`\x07` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01a\x03\x95V[4\x80\x15a\x08gW__\xFD[Pa\x03\xBDa\x08v6`\x04a;WV[a\x1B\x15V[4\x80\x15a\x08\x86W__\xFD[Pa\x03\xBDa\x08\x956`\x04a>\xA1V[a\x1CzV[4\x80\x15a\x08\xA5W__\xFD[Pa\x08\xCA`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x03\x95\x91\x90a?>V[4\x80\x15a\x08\xE2W__\xFD[Pa\x03\x89a\x08\xF16`\x04a;pV[`\x04` R_\x90\x81R`@\x90 T`\xFF\x16\x81V[4\x80\x15a\t\x10W__\xFD[P`\x01Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\t/W__\xFD[Pa\x04fa\t>6`\x04a;WV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\tZW__\xFD[Pa\tna\ti6`\x04a>yV[a\x1D\xA4V[`@\x80Q`\x01`\x01`@\x1B\x03\x90\x94\x16\x84R` \x84\x01\x92\x90\x92R\x90\x82\x01R``\x01a\x03\x95V[4\x80\x15a\t\x9EW__\xFD[Pa\x04f`\x0BT\x81V[4\x80\x15a\t\xB3W__\xFD[Pa\x03\xBDa\t\xC26`\x04a?PV[a\x1E5V[4\x80\x15a\t\xD2W__\xFD[Pa\x04fa\t\xE16`\x04a>yV[`\x06` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[4\x80\x15a\n\x08W__\xFD[Pa\x03\xBDa\n\x176`\x04a<\xD8V[a\x1FLV[4\x80\x15a\n'W__\xFD[Pa\x04f`\tT\x81V[4\x80\x15a\n<W__\xFD[Pa\x03\xBDa\nK6`\x04a>&V[a\x1FtV[4\x80\x15a\n[W__\xFD[Pa\x06\xB1b\x12u\0\x81V[4\x80\x15a\nqW__\xFD[Pa\x05\x90a'\x10\x81V[4\x80\x15a\n\x86W__\xFD[Pa\x04f_Q` aD\r_9_Q\x90_R\x81V[4\x80\x15a\n\xA6W__\xFD[Pa\x03\xBDa\n\xB56`\x04a;WV[a\x1F\x99V[4\x80\x15a\n\xC5W__\xFD[Pa\n\xEFa\n\xD46`\x04a;WV[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T`\xFF\x16\x82V[`@Qa\x03\x95\x92\x91\x90a?\xA3V[4\x80\x15a\x0B\x08W__\xFD[P`\x02Ta\x079\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x0BLWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[a\x0BZa !V[a\x0Bc\x82a SV[3_\x82\x90\x03a\x0B\x85W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0CT\x82\x10\x15a\x0B\xA8W`@Qc})\x871`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Qcn\xB1v\x9F`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x04\x83\x01R0`$\x83\x01R_\x92\x16\x90c\xDDb\xED>\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xF6W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0C\x1A\x91\x90a?\xD3V[\x90P\x82\x81\x10\x15a\x0CLW`@Qc\x05Ce\xBB`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x81\x01\x84\x90R`D\x01[`@Q\x80\x91\x03\x90\xFD[`\x02Ta\x0Cd\x90`\x01`\x01`\xA0\x1B\x03\x16\x830\x86a \xD4V[`\x01`\x01`\xA0\x1B\x03\x84\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x0C\x8B\x90\x84\x90a?\xFEV[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 \x80T\x85\x92\x90a\x0C\xC6\x90\x84\x90a?\xFEV[\x92PP\x81\x90UP\x82`\x0B_\x82\x82Ta\x0C\xDE\x91\x90a?\xFEV[\x92PP\x81\x90UP\x83`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\xE5T\x1Aka\x03\xD4\xFA~\x02\x1E\xD5O\xAD9\xC6o'\xA7k\xD1=7L\xF6$\n\xE6\xBD\x0B\xB7+\x85`@Qa\r*\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`@Qc\xC2\xD7\xF8\x13`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\r[\x81a!xV[b\x02\xA3\0`\x01`\x01`@\x1B\x03\x83\x16\x10\x80a\r\x80WPb\x12u\0`\x01`\x01`@\x1B\x03\x83\x16\x11[\x15a\r\x9EW`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`@\x1B\x03\x82\x16`\x08\x81\x90U`@Q\x90\x81R\x7Fy>;\x1E\x1B\xCDg{\xB1\x19\0\xC81$\xD3\xC4L\x99F\xEA\x8D\xDF\x97\x8A\x0C\xA2P\xB04\xEC\x9D\xDE\x90` \x01[`@Q\x80\x91\x03\x90\xA1PPV[a\r\xEDa !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x05` R`@\x81 T3\x91\x81\x90\x03a\x0E'W`@Qcy)\x8AS`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80B\x10\x15a\x0EHW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R\x90\x81 T\x90\x81\x90\x03a\x0E\x90W`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16_\x81\x81R`\x06` \x90\x81R`@\x80\x83 \x94\x88\x16\x83R\x93\x81R\x83\x82 \x82\x90U\x91\x81R`\x03\x90\x91R\x90\x81 \x80T\x83\x92\x90a\x0E\xD4\x90\x84\x90a@\x11V[\x90\x91UPP`\x02Ta\x0E\xF0\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a!\x82V[\x83`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8A\xDA\x12\x0F\x82$\xDB\x80Ce\xAD\xF6N\xB2\xECg\xFDLt\xB1\xE7\x0B.A2\xF63\0J\xDA\xD8D\x83`@Qa\r*\x91\x81R` \x01\x90V[_\x90\x81R_Q` aD-_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x0F]a !V[3a\x0Fg\x81a\"\x0BV[a\x0Fp\x86a\"XV[a\x0Fz\x87\x87a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x0F\xAC\x81\x87\x8Aa#dV[\x84Q`@\x14a\x0F\xCEW`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a'\x10a\xFF\xFF\x85\x16\x11\x15a\x0F\xF5W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0F\xFE\x83a\x1FtV[`\x01`\x04_a\x10\x0C\x8Ba\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x10=\x8Aa$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`@Q\x80`@\x01`@R\x80_\x81R` \x01`\x01`\x02\x81\x11\x15a\x10\x84Wa\x10\x84a?\x8FV[\x90R`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x03` \x90\x81R`@\x90\x91 \x82Q\x81U\x90\x82\x01Q`\x01\x80\x83\x01\x80T\x90\x91`\xFF\x19\x90\x91\x16\x90\x83`\x02\x81\x11\x15a\x10\xCAWa\x10\xCAa?\x8FV[\x02\x17\x90UPP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x87\x81\x16\x82R_` \x80\x84\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x89\x16\x80\x84R`\r\x90\x92R\x91\x85\x90 \x93Q\x84Ta\xFF\xFF\x19\x16\x93\x16\x92\x90\x92\x17\x83UQ`\x01\x90\x92\x01\x91\x90\x91U\x90Q\x90\x91P\x7F&\xDE\xF1t\xFC\xE8\x14\x7FV\x01}\t[\xF3\x9C\xDF+\x97(\xF9\x1A\xB2\xF2t\x97J/\xD9{&\x84\x89\x90a\x11W\x90\x8B\x90\x8B\x90\x89\x90\x8C\x90\x8C\x90\x8B\x90a@$V[`@Q\x80\x91\x03\x90\xA2PPPPPPPPV[_a\x11s\x81a!xV[_\x82a\xFF\xFF\x16\x11\x80\x15a\x11\x8CWPa'\x10a\xFF\xFF\x83\x16\x11\x15[a\x11\xA9W`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\n\x80Ta\xFF\xFF\x19\x16a\xFF\xFF\x84\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\xBE[G\xBEvP\x0F\xEAQ\x0C\xE2\x19\x17\x8Bnci[fA\xDA\xD0\xD3\xA0HdU\xCE\xA1\n\xED\xFD\x90` \x01a\r\xD9V[\x81a\x11\xFFWa\x11\xFB\x81a\x1F\x99V[PPV[a\x11\xFB\x82\x82a$\x91V[\x81a\x12'W`@Qc\x8Bxc\x1D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a$\xADV[_a\x12;\x81a!xV[_\x82\x11\x80\x15a\x12NWPc\x01\xE13\x80\x82\x11\x15[a\x12kW`@QcgN\x8E\xF3`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x82\x90U`@Q\x82\x81R\x7FQ\xD9\xFE\xFD\xD4\x81\x91\xBCu\xAB\x12\x11m^Q\x81\x96G\x99\xA69\xE1\xEE1\xB0\x99\x8F\xFA\xAF\x9E\xF2Y\x90` \x01a\r\xD9V[a\x12\xA8a !V[3a\x12\xB2\x81a SV[a'\x10a\xFF\xFF\x83\x16\x11\x15a\x12\xD9W`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\r` R`@\x90 \x80Ta\xFF\xFF\x90\x81\x16\x90\x84\x16\x81\x90\x03a\x13\x1BW`@Qc0\x82\xEB%`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80a\xFF\xFF\x16\x84a\xFF\xFF\x16\x11\x15a\x13\xA7W`\x01\x82\x01T\x80\x15\x80a\x13IWP`\tTa\x13E\x90\x82a?\xFEV[B\x10\x15[a\x13fW`@Qc\x16\xEB\x94\xCB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nTa\x13w\x90a\xFF\xFF\x16\x83a@\xABV[a\xFF\xFF\x16\x85a\xFF\xFF\x16\x11\x15a\x13\x9FW`@Qc\x12\xD6\xA4e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PB`\x01\x83\x01U[\x81Ta\xFF\xFF\x19\x16a\xFF\xFF\x85\x81\x16\x91\x82\x17\x84U`@\x80QB\x81R\x91\x84\x16` \x83\x01R\x81\x01\x91\x90\x91R`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xBD\x8Dv\xFC\xCA\xB3\x9D\xB7\x06K\xC0\x07\xD9\xA2\xC8:\x98$}\xCB\x10\x87\xCC\x12\xF3C\xB8\xBE\x90\xAE\xFDd\x90``\x01`@Q\x80\x91\x03\x90\xA2PPPPV[_a\x14\x16\x81a!xV[`\x01\x82\x10\x15a\x148W`@QcH\\3\xC5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0C\x82\x90U`@Q\x82\x81R\x7F\x02\xCD\x8E\xF3\x16VL\xA7\x8Bu\xBF#\x9C\nc\0\x087L\x1F\xB1\xD2m\x94\x1An\x9B\x19\xE4+*\xA5\x90` \x01a\r\xD9V[_Q` aD\r_9_Q\x90_Ra\x14\x84\x81a!xV[a\x14\x8Ca$\xE0V[PV[a\x14\x97a !V[a\x14\xA0\x82a SV[3_\x82\x90\x03a\x14\xC2W`@Qc\x1F* \x05`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x15a\x15\x05W`@Qc\xD4#\xA4\xF1`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x06` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R T\x82\x81\x10\x15a\x15NW`@Qc\x92fSQ`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[`\x0F\x80T_\x91`\x01`\x01`@\x1B\x03\x90\x91\x16\x90\x82a\x15j\x83a@\xC5V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UP\x90P\x83`\x06_\x87`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x85`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x01\x90\x81R` \x01_ _\x82\x82Ta\x15\xE3\x91\x90a@\x11V[\x90\x91UPP`\x08T_\x90a\x15\xF7\x90Ba?\xFEV[`@\x80Q\x80\x82\x01\x82R\x87\x81R` \x80\x82\x01\x84\x81R`\x01`\x01`\xA0\x1B\x03\x8B\x81\x16_\x81\x81R`\x07\x85R\x86\x81 \x92\x8C\x16\x80\x82R\x92\x85R\x86\x81 \x95Q\x86U\x92Q`\x01\x90\x95\x01\x94\x90\x94U\x83\x82R`\x10\x83R\x84\x82 \x90\x82R\x82R\x83\x81 \x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x89\x16\x17\x90U\x91\x82R`\x03\x90R\x90\x81 \x80T\x92\x93P\x87\x92\x90\x91\x90a\x16\x87\x90\x84\x90a@\x11V[\x92PP\x81\x90UP\x84`\x0B_\x82\x82Ta\x16\x9F\x91\x90a@\x11V[\x90\x91UPP`@\x80Q\x86\x81R` \x81\x01\x83\x90R`\x01`\x01`@\x1B\x03\x84\x16\x91`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16\x92\x90\x88\x16\x91\x7Fp\x83F\xD7RC0\xF8AN \x11\x04\x92\x1AJ\xB330M\xBEV3\n\xC2-\xD3z\xF8\x141\xDA\x91\x01`@Q\x80\x91\x03\x90\xA4PPPPPPV[a\x17\x08a%?V[a\x17\x11\x82a%\xE3V[a\x11\xFB\x82\x82a%\xEDV[a\x17#a&\xA9V[_Q` aDm_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x17YWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x17wW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x83\x16\x17`\x01`@\x1B\x17\x81U`\x01`\x01`\xA0\x1B\x03\x86\x16a\x17\xBFW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x87\x16a\x17\xE6W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xEEa&\xDBV[a\x17\xF6a&\xE3V[a\x18\r_Q` aD\r_9_Q\x90_R\x88a&\xF3V[Pa\x18\x18_\x87a&\xF3V[P_a\x18\"a\x1AWV[\x90P\x80`\x01`\x01`\xA0\x1B\x03\x16\x87`\x01`\x01`\xA0\x1B\x03\x16\x14a\x18FWa\x18F\x87a'\x94V[b\t:\x80`\tU`\n\x80Ta\xFF\xFF\x19\x16a\x01\xF4\x17\x90U`\x0F\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x90Ug\r\xE0\xB6\xB3\xA7d\0\0`\x0CUa\x18\x86\x85\x85a(\x04V[a\x18\x8F\x86a)\x99V[P\x80T`\xFF`@\x1B\x19\x16\x81U`@Q`\x01`\x01`@\x1B\x03\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPPPV[_a\x18\xE9a*(V[P_Q` aC\xED_9_Q\x90_R\x90V[a\x19\x03a !V[3a\x19\r\x81a SV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01\x80T`\xFF\x19\x16`\x02\x17\x90U`\x08Ta\x19?\x90Ba?\xFEV[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x84\x90U`\x03\x90\x91R\x81 T`\x0B\x80T\x93\x94P\x90\x92\x90\x91\x90a\x19{\x90\x84\x90a@\x11V[\x90\x91UPP`@Q\x81\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7FNa\xE8r\xCA\x9F\nC\x13\xEB\x81\xC3\xE8\xAE\xD27\x0C\x89\xD6CY9\x11\xAF\xDD3\x0Eq\xF0\xC4~\xAB\x90` \x01[`@Q\x80\x91\x03\x90\xA2PPV[a\x19\xCBa&\xA9V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` aD\r_9_Q\x90_Ra\x19\xFB\x81a!xV[a\x14\x8Ca*qV[a\x1A\x0Ba !V[3a\x1A\x15\x81a SV[a\x1A\x1E\x82a\x1FtV[\x80`\x01`\x01`\xA0\x1B\x03\x16\x7F \xCCE\xD5\xC7\xC8\x91l\xE9\xFD3\xF0\x96aD\x97\xE0\xB2\x89}\x9A\xB5\x03\x92j\xFAA\x15'\xC9l4\x83`@Qa\x19\xB7\x91\x90a?>V[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[_\x91\x82R_Q` aD-_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x81_\x01Q\x82` \x01Q\x83`@\x01Q\x84``\x01Q`@Q` \x01a\x1A\xF8\x94\x93\x92\x91\x90\x93\x84R` \x84\x01\x92\x90\x92R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x1B\x1Da !V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 3\x80\x85R\x92R\x82 T\x90\x91\x81\x90\x03a\x1BbW`@Qc\x06\x86\x82{`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x80\x84\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R `\x01\x01TB\x10\x15a\x1B\xAAW`@QcZwCW`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16_\x81\x81R`\x10` \x90\x81R`@\x80\x83 \x87\x86\x16\x80\x85R\x81\x84R\x82\x85 \x80T\x96\x86R`\x07\x85R\x83\x86 \x91\x86R\x90\x84R\x91\x84 \x84\x81U`\x01\x01\x93\x90\x93U\x91\x90R\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90U`\x02T`\x01`\x01`@\x1B\x03\x90\x91\x16\x91a\x1C\x1D\x91\x16\x84\x84a!\x82V[\x80`\x01`\x01`@\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\xB7\x9D\xF4\n\xB5\xA5B\x87\x8B\xCA@r\x95\x04-\xD1\x82\x96\xFC\xC1\x15\xD5\xCA\x8D\x9D\xB2\x9A\xCB\xF7J\x85\"\x85`@Qa\x1Cl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PPPPV[a\x1C\x82a !V[3a\x1C\x8C\x81a SV[a\x1C\x95\x84a\"XV[a\x1C\x9F\x85\x85a\"\xEBV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R_\x91\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\x1C\xD1\x81\x85\x88a#dV[\x82Q`@\x14a\x1C\xF3W`@QcBG\x06\x87`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x04_a\x1D\x01\x89a\x1A\xBBV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP`\x01`\x0E_a\x1D2\x88a$mV[\x81R` \x01\x90\x81R` \x01_ _a\x01\0\n\x81T\x81`\xFF\x02\x19\x16\x90\x83\x15\x15\x02\x17\x90UP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xC8\xC5\xB3z\xEC\x7F-\xDB\xD3\xA1<Q6\x1ET\xA0\xA8\xDF;\xCA%j\xB7X\xA7\x7FZ\xD7A\xD2\x81\xE5\x87\x87\x87\x87`@Qa\x1D\x94\x94\x93\x92\x91\x90a@\xEFV[`@Q\x80\x91\x03\x90\xA2PPPPPPV[`\x01`\x01`\xA0\x1B\x03\x80\x83\x16_\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x93\x85\x16\x83R\x92\x90R\x90\x81 \x80T\x82\x91\x82\x91\x82\x03a\x1D\xEFW`@QcZ\x92~\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x95\x86\x16_\x90\x81R`\x10` \x90\x81R`@\x80\x83 \x97\x90\x98\x16\x82R\x95\x90\x95R\x94\x90\x93 T\x84T`\x01\x90\x95\x01T`\x01`\x01`@\x1B\x03\x90\x91\x16\x95\x90\x93P\x91PPV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x1EfWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x1E\x81WP0;\x15[\x90P\x81\x15\x80\x15a\x1E\x8FWP\x80\x15[\x15a\x1E\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x1E\xD7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x1E\xE0\x86a*\xB9V[a\x1E\xE8a&\xDBV[a\x1E\xF0a*\xCAV[a\x1E\xFB\x89\x89\x89a+\xBBV[\x83\x15a\x1FAW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x81a\x1FjW`@Qc\xB0\xB5\xFB\x99`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xFB\x82\x82a,fV[\x80Qa\x08\0\x81\x11\x15a\x11\xFBW`@Qc#\x9F\xF5\x7F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xA3\x81a!xV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x1F\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[_a\x1F\xD5a\x1AWV[\x90P\x82`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x03a\x1F\xFEWa\x1F\xF9\x83a,\x82V[PPPV[a \x08_\x84a$\x91V[a \x11\x83a,\x82V[a \x1B_\x82a,\xBCV[PPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16\x15a QW`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a \x84Wa \x84a?\x8FV[\x03a \xA2W`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x81`\x02\x81\x11\x15a \xB6Wa \xB6a?\x8FV[\x03a\x11\xFBW`@Qc\xEA\xB4\xA9c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Qc#\xB8r\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!-WP\x83;\x15=\x17\x15[\x80a!qW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x14`$\x82\x01Rs\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x94\x93\xD3W\xD1\x90RS\x11Q`b\x1B`D\x82\x01R`d\x01a\x0CCV[PPPPPV[a\x14\x8C\x813a-5V[_`@Qc\xA9\x05\x9C\xBB`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1\x91PP\x80`\x1F=\x11`\x01_Q\x14\x16\x15\x16\x15a!\xCCWP\x82;\x15=\x17\x15[\x80a \x1BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0F`$\x82\x01Rn\x15\x14\x90S\x94\xD1\x91T\x97\xD1\x90RS\x11Q`\x8A\x1B`D\x82\x01R`d\x01a\x0CCV[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16`\x02\x81\x11\x15a\":Wa\":a?\x8FV[\x14a\x14\x8CW`@Qc\x13.~\xFB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x11\x15\x80a\"\xACWP\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81` \x01Q\x10\x15[\x15a\"\xCAW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q_\x03a\x14\x8CW`@Qc\x06\xCFC\x8F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x04_a\"\xF7\x84a\x1A\xBBV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a#'W`@Qb\xDA\x8AW`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0E_a#3\x83a$mV[\x81R` \x81\x01\x91\x90\x91R`@\x01_ T`\xFF\x16\x15a\x11\xFBW`@Qc\xAEI;\x03`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a#\x8DW`@Qc:\x13\x91\x99`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Q\x15\x80\x15a#\x9EWP` \x81\x01Q\x15[\x80\x15a#\xACWP`@\x81\x01Q\x15[\x80\x15a#\xBAWP``\x81\x01Q\x15[\x15a#\xD8W`@Qc^Cb\xCD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a#\xE1\x82a-nV[_`@Q\x80``\x01`@R\x80`$\x81R` \x01aC\xA9`$\x919\x90P_\x84\x82`@Q` \x01a$\x11\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P_a$,\x82a-\xD5V[\x90Pa$I\x81\x85a$<\x88a.\xC2V[a$Da/9V[a0\x06V[a$eW`@Qb\xCE\xD3\xE5`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[_\x81_\x01Q\x82` \x01Q`@Q` \x01a\x1A\xF8\x92\x91\x90\x91\x82R` \x82\x01R`@\x01\x90V[a$\x9A\x82a\x0F5V[a$\xA3\x81a!xV[a \x1B\x83\x83a&\xF3V[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a$\xD6W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xF9\x82\x82a,\xBCV[a$\xE8a0\xB5V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a%\xC5WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a%\xB9_Q` aC\xED_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x11\xFB\x81a!xV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a&GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra&D\x91\x81\x01\x90a?\xD3V[`\x01[a&oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x81\x14a&\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x0CCV[a\x1F\xF9\x83\x83a0\xE4V[3a&\xB2a\x1AWV[`\x01`\x01`\xA0\x1B\x03\x16\x14a QW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x0CCV[a Qa19V[a&\xEBa19V[a Qa1oV[__Q` aD-_9_Q\x90_Ra'\x0C\x84\x84a\x1A\x85V[a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua'A3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x0BLV[_\x91PPa\x0BLV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[_[\x81\x81\x10\x15a\x1F\xF9W_\x83\x83\x83\x81\x81\x10a(!Wa(!aA\x80V[a(7\x92` `@\x90\x92\x02\x01\x90\x81\x01\x91Pa;WV[\x90P_\x84\x84\x84\x81\x81\x10a(LWa(LaA\x80V[\x90P`@\x02\x01` \x01` \x81\x01\x90a(d\x91\x90a<\xBFV[\x90Pa'\x10a\xFF\xFF\x82\x16\x11\x15a(\x8DW`@Qc\xDC\x81\xDB\x85`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x03` R`@\x81 `\x01\x01T`\xFF\x16\x90\x81`\x02\x81\x11\x15a(\xBEWa(\xBEa?\x8FV[\x03a(\xDCW`@QcP\x8Ay?`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 `\x01\x01T\x15\x80\x15a)\x1DWP`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\r` R`@\x90 Ta\xFF\xFF\x16\x15[\x83\x90a)HW`@Qc\x05\x08\x14\xE1`\xE4\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R`$\x01a\x0CCV[PP`@\x80Q\x80\x82\x01\x82Ra\xFF\xFF\x92\x83\x16\x81R_` \x80\x83\x01\x82\x81R`\x01`\x01`\xA0\x1B\x03\x96\x90\x96\x16\x82R`\r\x90R\x91\x90\x91 \x90Q\x81Ta\xFF\xFF\x19\x16\x92\x16\x91\x90\x91\x17\x81U\x90Q`\x01\x91\x82\x01U\x01a(\x06V[`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a)\xDFW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a*\x03\x91\x90a?\xD3V[\x81\x11\x15a*#W`@Qc=\x93OI`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x0BUV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a QW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a*ya !V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a%!V[a*\xC1a19V[a\x14\x8C\x81a1\x8FV[_Q` aDm_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a*\xFBWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a+\x16WP0;\x15[\x90P\x81\x15\x80\x15a+$WP\x80\x15[\x15a+BW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a+lW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[C_U\x83\x15a!qW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a+\xE2W`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x16a,\tW`@Qc\xD9.#=`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x85\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90Ub\x02\xA3\0\x80\x82\x10\x15a,^W`@Qc\xB5~!\xDF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x08UPPV[a,o\x82a\x0F5V[a,x\x81a!xV[a \x1B\x83\x83a,\xBCV[a,\x8Aa&\xA9V[`\x01`\x01`\xA0\x1B\x03\x81\x16a,\xB3W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01a\x0CCV[a\x14\x8C\x81a'\x94V[__Q` aD-_9_Q\x90_Ra,\xD5\x84\x84a\x1A\x85V[\x15a'\x8BW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x0BLV[a-?\x82\x82a\x1A\x85V[a\x11\xFBW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x0CCV[\x80Q` \x82\x01Q_\x91_Q` aC\xCD_9_Q\x90_R\x91\x15\x90\x15\x16\x15a-\x94WPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x1F\xF9W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a-\xF2\x83a1\x97V[\x90P_Q` aC\xCD_9_Q\x90_R`\x03_\x82\x84\x85\t\x90P\x82\x80a.\x19Wa.\x19aA\x94V[\x84\x82\t\x90P\x82\x80a.,Wa.,aA\x94V[\x82\x82\x08\x90P__a.<\x83a3\x9FV[\x92P\x90P[\x80a.\xA5W\x84\x80a.TWa.TaA\x94V[`\x01\x87\x08\x95P\x84\x80a.hWa.haA\x94V[\x86\x87\t\x92P\x84\x80a.{Wa.{aA\x94V[\x86\x84\t\x92P\x84\x80a.\x8EWa.\x8EaA\x94V[\x84\x84\x08\x92Pa.\x9C\x83a3\x9FV[\x92P\x90Pa.AV[P`@\x80Q\x80\x82\x01\x90\x91R\x94\x85R` \x85\x01RP\x91\x94\x93PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a.\xE9WP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01_Q` aC\xCD_9_Q\x90_R\x84` \x01Qa/\x1A\x91\x90aA\xA8V[a/1\x90_Q` aC\xCD_9_Q\x90_Ra@\x11V[\x90R\x92\x91PPV[a/``@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a0\xA9W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x95\x94PPPPPV[_Q` aDM_9_Q\x90_RT`\xFF\x16a QW`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a0\xED\x82a4gV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a11Wa\x1F\xF9\x82\x82a4\xCAV[a\x11\xFBa5<V[_Q` aDm_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a QW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a1wa19V[_Q` aDM_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a,\x8Aa19V[__a1\xA2\x83a5[V[\x80Q\x90\x91P`0\x81\x14a1\xB7Wa1\xB7aA\xC7V[_\x81`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD0Wa1\xD0a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a1\xFAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x82\x81\x10\x15a2iW\x83`\x01a2\x14\x83\x86a@\x11V[a2\x1E\x91\x90a@\x11V[\x81Q\x81\x10a2.Wa2.aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x82\x82\x81Q\x81\x10a2KWa2KaA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a1\xFFV[P`@\x80Q`\x1F\x80\x82Ra\x04\0\x82\x01\x90\x92R_\x90\x82` \x82\x01a\x03\xE0\x806\x837\x01\x90PP\x90P_[\x82\x81\x10\x15a2\xF9W\x83\x81a2\xA5\x85\x88a@\x11V[a2\xAF\x91\x90a?\xFEV[\x81Q\x81\x10a2\xBFWa2\xBFaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x82\x82\x81Q\x81\x10a2\xDFWa2\xDFaA\x80V[`\xFF\x90\x92\x16` \x92\x83\x02\x91\x90\x91\x01\x90\x91\x01R`\x01\x01a2\x91V[P_a3\x04\x82a8\xA6V[\x90Pa\x01\0_Q` aC\xCD_9_Q\x90_R_a3\"\x86\x89a@\x11V[\x90P_[\x81\x81\x10\x15a3\x8FW_\x88`\x01a3<\x84\x86a@\x11V[a3F\x91\x90a@\x11V[\x81Q\x81\x10a3VWa3VaA\x80V[\x01` \x01Q`\xF8\x1C\x90P\x83\x80a3nWa3naA\x94V[\x85\x87\t\x95P\x83\x80a3\x81Wa3\x81aA\x94V[\x81\x87\x08\x95PP`\x01\x01a3&V[P\x92\x9A\x99PPPPPPPPPPV[_____\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R\x90P__Q` aC\xCD_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x87``\x82\x01R\x82`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x94PP_Q\x92P\x83a4-W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80`\x01\x84\x90\x1B\x11\x15a4FWa4C\x83\x82a@\x11V[\x92P[\x80\x80a4TWa4TaA\x94V[\x83\x84\t\x96\x90\x96\x14\x96\x91\x95P\x90\x93PPPPV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a4\x9CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x0CCV[_Q` aC\xED_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa4\xE6\x91\x90aA\xDBV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a5\x1EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a5#V[``\x91P[P\x91P\x91Pa53\x85\x83\x83a9\rV[\x95\x94PPPPPV[4\x15a QW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q`0\x80\x82R``\x82\x81\x01\x90\x93R\x90` \x90`\x01`\xF9\x1B\x90_\x90\x84` \x82\x01\x81\x806\x837\x01\x90PP\x90P\x80\x86`@Q` \x01a5\x9B\x92\x91\x90aAlV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80\x84`\xF8\x1B`@Q` \x01a5\xC2\x92\x91\x90aA\xE6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80`@Q` \x01a5\xE4\x91\x90aB\x10V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90R\x91Pa\x01\x01`\xF0\x1B\x90a6\x0E\x90\x83\x90\x83\x90` \x01aB(V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01\x81\x90R`\x01`\xF8\x1B\x84\x84\x01R`\x01`\x01`\xF0\x1B\x03\x19\x85\x16`A\x85\x01R\x82Q`#\x81\x86\x03\x01\x81R`C\x90\x94\x01\x90\x92R\x82Q\x90\x83\x01 \x91\x93P\x90_`\xFF\x88\x16`\x01`\x01`@\x1B\x03\x81\x11\x15a6}Wa6}a9\xFFV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a6\xA7W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_\x82`@Q` \x01a6\xBE\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x90P_[\x81Q\x81\x10\x15a7(W\x81\x81\x81Q\x81\x10a6\xEDWa6\xEDaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x82\x81Q\x81\x10a7\nWa7\naA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a6\xD2V[P_\x84`@Q` \x01a7=\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R` \x83\x01\x90\x91R_\x80\x83R\x91\x98P\x91P[\x89\x81\x10\x15a7\xCFW_\x83\x82\x81Q\x81\x10a7vWa7vaA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x83\x83\x81Q\x81\x10a7\x93Wa7\x93aA\x80V[` \x01\x01Q`\xF8\x1C`\xF8\x1B\x18\x90P\x88\x81`@Q` \x01a7\xB4\x92\x91\x90aBLV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x98PP`\x01\x01a7[V[P\x86\x88\x87`@Q` \x01a7\xE5\x93\x92\x91\x90aBpV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x96P\x86\x80Q\x90` \x01 \x93P\x83`@Q` \x01a8\x13\x91\x81R` \x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x91P_[a84\x8A`\xFF\x8D\x16a@\x11V[\x81\x10\x15a8\x95W\x82\x81\x81Q\x81\x10a8MWa8MaA\x80V[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x84a8g\x83\x8Da?\xFEV[\x81Q\x81\x10a8wWa8waA\x80V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81_\x1A\x90SP`\x01\x01a8'V[P\x91\x9B\x9APPPPPPPPPPPV[_\x80\x80[\x83Q\x81\x10\x15a9\x06W\x83\x81\x81Q\x81\x10a8\xC5Wa8\xC5aA\x80V[` \x02` \x01\x01Q`\xFF\x16\x81`\x08a8\xDD\x91\x90aB\xA3V[a8\xE8\x90`\x02aC\x9DV[a8\xF2\x91\x90aB\xA3V[a8\xFC\x90\x83a?\xFEV[\x91P`\x01\x01a8\xAAV[P\x92\x91PPV[``\x82a9\"Wa9\x1D\x82a9lV[a9eV[\x81Q\x15\x80\x15a99WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a9bW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x0CCV[P\x80[\x93\x92PPPV[\x80Q\x15a9|W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a9\xA5W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a9eW__\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a9\xD2W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a9\xE8W__\xFD[a9\xF1\x83a9\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:5Wa:5a9\xFFV[`@R\x90V[_`\x80\x82\x84\x03\x12\x15a:KW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a:mWa:ma9\xFFV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`@\x82\x84\x03\x12\x15a:\xABW__\xFD[a:\xB3a:\x13V[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x805a\xFF\xFF\x81\x16\x81\x14a9\xD2W__\xFD[____a\x01 \x85\x87\x03\x12\x15a:\xEFW__\xFD[a:\xF9\x86\x86a:;V[\x93Pa;\x08\x86`\x80\x87\x01a:\x9BV[\x92Pa;\x17\x86`\xC0\x87\x01a:\x9BV[\x91Pa;&a\x01\0\x86\x01a:\xCAV[\x90P\x92\x95\x91\x94P\x92PV[_` \x82\x84\x03\x12\x15a;AW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a9eW__\xFD[_` \x82\x84\x03\x12\x15a;gW__\xFD[a9e\x82a9\xBCV[_` \x82\x84\x03\x12\x15a;\x80W__\xFD[P5\x91\x90PV[_\x82`\x1F\x83\x01\x12a;\x96W__\xFD[\x815` \x83\x01__`\x01`\x01`@\x1B\x03\x84\x11\x15a;\xB5Wa;\xB5a9\xFFV[P`@Q`\x1F\x19`\x1F\x85\x01\x81\x16`?\x01\x16\x81\x01\x81\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17\x15a;\xE3Wa;\xE3a9\xFFV[`@R\x83\x81R\x90P\x80\x82\x84\x01\x87\x10\x15a;\xFAW__\xFD[\x83\x83` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[______a\x01`\x87\x89\x03\x12\x15a<,W__\xFD[a<6\x88\x88a:;V[\x95Pa<E\x88`\x80\x89\x01a:\x9BV[\x94Pa<T\x88`\xC0\x89\x01a:\x9BV[\x93Pa\x01\0\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<oW__\xFD[a<{\x89\x82\x8A\x01a;\x87V[\x93PPa<\x8Ba\x01 \x88\x01a:\xCAV[\x91Pa\x01@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a<\xA6W__\xFD[a<\xB2\x89\x82\x8A\x01a;\x87V[\x91PP\x92\x95P\x92\x95P\x92\x95V[_` \x82\x84\x03\x12\x15a<\xCFW__\xFD[a9e\x82a:\xCAV[__`@\x83\x85\x03\x12\x15a<\xE9W__\xFD[\x825\x91Pa<\xF9` \x84\x01a9\xBCV[\x90P\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a=\x13W__\xFD[a=\x1C\x83a9\xBCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=6W__\xFD[a=B\x85\x82\x86\x01a;\x87V[\x91PP\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a=`W__\xFD[a=i\x86a9\xBCV[\x94Pa=w` \x87\x01a9\xBCV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a=\x98W__\xFD[\x86\x01`\x1F\x81\x01\x88\x13a=\xA8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a=\xBDW__\xFD[\x88` \x82`\x06\x1B\x84\x01\x01\x11\x15a=\xD1W__\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[___a\x01\0\x84\x86\x03\x12\x15a=\xF5W__\xFD[a=\xFF\x85\x85a:;V[\x92Pa>\x0E\x85`\x80\x86\x01a:\x9BV[\x91Pa>\x1D\x85`\xC0\x86\x01a:\x9BV[\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a>6W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a>KW__\xFD[a>W\x84\x82\x85\x01a;\x87V[\x94\x93PPPPV[_`\x80\x82\x84\x03\x12\x15a>oW__\xFD[a9e\x83\x83a:;V[__`@\x83\x85\x03\x12\x15a>\x8AW__\xFD[a>\x93\x83a9\xBCV[\x91Pa<\xF9` \x84\x01a9\xBCV[____a\x01 \x85\x87\x03\x12\x15a>\xB5W__\xFD[a>\xBF\x86\x86a:;V[\x93Pa>\xCE\x86`\x80\x87\x01a:\x9BV[\x92Pa>\xDD\x86`\xC0\x87\x01a:\x9BV[\x91Pa\x01\0\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a>\xF8W__\xFD[a?\x04\x87\x82\x88\x01a;\x87V[\x91PP\x92\x95\x91\x94P\x92PV[_\x81Q\x80\x84R\x80` \x84\x01` \x86\x01^_` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a9e` \x83\x01\x84a?\x10V[____`\x80\x85\x87\x03\x12\x15a?cW__\xFD[a?l\x85a9\xBCV[\x93Pa?z` \x86\x01a9\xBCV[\x92P`@\x85\x015\x91Pa;&``\x86\x01a9\xBCV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82\x81R`@\x81\x01`\x03\x83\x10a?\xC6WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x82` \x83\x01R\x93\x92PPPV[_` \x82\x84\x03\x12\x15a?\xE3W__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x0BLWa\x0BLa?\xEAV[\x81\x81\x03\x81\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[\x86Q\x81R` \x80\x88\x01Q\x90\x82\x01R`@\x80\x88\x01Q\x90\x82\x01R``\x80\x88\x01Q\x90\x82\x01R\x85Q`\x80\x82\x01R` \x86\x01Q`\xA0\x82\x01Ra\xFF\xFF\x85\x16`\xC0\x82\x01R\x83Q`\xE0\x82\x01R` \x84\x01Qa\x01\0\x82\x01Ra\x01`a\x01 \x82\x01R_a@\x8Ba\x01`\x83\x01\x85a?\x10V[\x82\x81\x03a\x01@\x84\x01Ra@\x9E\x81\x85a?\x10V[\x99\x98PPPPPPPPPV[a\xFF\xFF\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x0BLWa\x0BLa?\xEAV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a@\xE6Wa@\xE6a?\xEAV[`\x01\x01\x92\x91PPV[\x84Q\x81R` \x80\x86\x01Q\x90\x82\x01R`@\x80\x86\x01Q\x90\x82\x01R``\x80\x86\x01Q\x90\x82\x01R\x83Q`\x80\x82\x01R` \x84\x01Q`\xA0\x82\x01R\x82Q`\xC0\x82\x01R` \x83\x01Q`\xE0\x82\x01Ra\x01 a\x01\0\x82\x01R_aAKa\x01 \x83\x01\x84a?\x10V[\x96\x95PPPPPPV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a>WaAz\x83\x86aAUV[\x84aAUV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82aA\xC2WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[cNH{q`\xE0\x1B_R`\x01`\x04R`$_\xFD[_a9e\x82\x84aAUV[_aA\xF1\x82\x85aAUV[_\x81R`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16`\x01\x84\x01RPP`\x02\x01\x91\x90PV[_aB\x1B\x82\x84aAUV[_\x81R`\x01\x01\x93\x92PPPV[_aB3\x82\x85aAUV[`\x01`\x01`\xF0\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x02\x01\x91\x90PV[_aBW\x82\x85aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x93\x90\x93\x16\x83RPP`\x01\x01\x91\x90PV[_aB{\x82\x86aAUV[`\x01`\x01`\xF8\x1B\x03\x19\x94\x90\x94\x16\x84RPP`\x01`\x01`\xF0\x1B\x03\x19\x16`\x01\x82\x01R`\x03\x01\x91\x90PV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0BLWa\x0BLa?\xEAV[`\x01\x81[`\x01\x84\x11\x15aB\xF5W\x80\x85\x04\x81\x11\x15aB\xD9WaB\xD9a?\xEAV[`\x01\x84\x16\x15aB\xE7W\x90\x81\x02\x90[`\x01\x93\x90\x93\x1C\x92\x80\x02aB\xBEV[\x93P\x93\x91PPV[_\x82aC\x0BWP`\x01a\x0BLV[\x81aC\x17WP_a\x0BLV[\x81`\x01\x81\x14aC-W`\x02\x81\x14aC7WaCSV[`\x01\x91PPa\x0BLV[`\xFF\x84\x11\x15aCHWaCHa?\xEAV[PP`\x01\x82\x1Ba\x0BLV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15aCvWP\x81\x81\na\x0BLV[aC\x82_\x19\x84\x84aB\xBAV[\x80_\x19\x04\x82\x11\x15aC\x95WaC\x95a?\xEAV[\x02\x93\x92PPPV[_a9e\x83\x83aB\xFDV\xFEBLS_SIG_BN254G1_XMD:KECCAK_NCTH_NUL_0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08#\0\n",
3819    );
3820    #[derive(serde::Serialize, serde::Deserialize)]
3821    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3822    /**```solidity
3823struct InitialCommission { address validator; uint16 commission; }
3824```*/
3825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3826    #[derive(Clone)]
3827    pub struct InitialCommission {
3828        #[allow(missing_docs)]
3829        pub validator: alloy::sol_types::private::Address,
3830        #[allow(missing_docs)]
3831        pub commission: u16,
3832    }
3833    #[allow(
3834        non_camel_case_types,
3835        non_snake_case,
3836        clippy::pub_underscore_fields,
3837        clippy::style
3838    )]
3839    const _: () = {
3840        use alloy::sol_types as alloy_sol_types;
3841        #[doc(hidden)]
3842        #[allow(dead_code)]
3843        type UnderlyingSolTuple<'a> = (
3844            alloy::sol_types::sol_data::Address,
3845            alloy::sol_types::sol_data::Uint<16>,
3846        );
3847        #[doc(hidden)]
3848        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, u16);
3849        #[cfg(test)]
3850        #[allow(dead_code, unreachable_patterns)]
3851        fn _type_assertion(
3852            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3853        ) {
3854            match _t {
3855                alloy_sol_types::private::AssertTypeEq::<
3856                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3857                >(_) => {}
3858            }
3859        }
3860        #[automatically_derived]
3861        #[doc(hidden)]
3862        impl ::core::convert::From<InitialCommission> for UnderlyingRustTuple<'_> {
3863            fn from(value: InitialCommission) -> Self {
3864                (value.validator, value.commission)
3865            }
3866        }
3867        #[automatically_derived]
3868        #[doc(hidden)]
3869        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InitialCommission {
3870            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3871                Self {
3872                    validator: tuple.0,
3873                    commission: tuple.1,
3874                }
3875            }
3876        }
3877        #[automatically_derived]
3878        impl alloy_sol_types::SolValue for InitialCommission {
3879            type SolType = Self;
3880        }
3881        #[automatically_derived]
3882        impl alloy_sol_types::private::SolTypeValue<Self> for InitialCommission {
3883            #[inline]
3884            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3885                (
3886                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3887                        &self.validator,
3888                    ),
3889                    <alloy::sol_types::sol_data::Uint<
3890                        16,
3891                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
3892                )
3893            }
3894            #[inline]
3895            fn stv_abi_encoded_size(&self) -> usize {
3896                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3897                    return size;
3898                }
3899                let tuple = <UnderlyingRustTuple<
3900                    '_,
3901                > as ::core::convert::From<Self>>::from(self.clone());
3902                <UnderlyingSolTuple<
3903                    '_,
3904                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3905            }
3906            #[inline]
3907            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3908                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3909            }
3910            #[inline]
3911            fn stv_abi_encode_packed_to(
3912                &self,
3913                out: &mut alloy_sol_types::private::Vec<u8>,
3914            ) {
3915                let tuple = <UnderlyingRustTuple<
3916                    '_,
3917                > as ::core::convert::From<Self>>::from(self.clone());
3918                <UnderlyingSolTuple<
3919                    '_,
3920                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3921            }
3922            #[inline]
3923            fn stv_abi_packed_encoded_size(&self) -> usize {
3924                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3925                    return size;
3926                }
3927                let tuple = <UnderlyingRustTuple<
3928                    '_,
3929                > as ::core::convert::From<Self>>::from(self.clone());
3930                <UnderlyingSolTuple<
3931                    '_,
3932                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3933            }
3934        }
3935        #[automatically_derived]
3936        impl alloy_sol_types::SolType for InitialCommission {
3937            type RustType = Self;
3938            type Token<'a> = <UnderlyingSolTuple<
3939                'a,
3940            > as alloy_sol_types::SolType>::Token<'a>;
3941            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3942            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3943                '_,
3944            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3945            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3946                '_,
3947            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3948            #[inline]
3949            fn valid_token(token: &Self::Token<'_>) -> bool {
3950                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3951            }
3952            #[inline]
3953            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3954                let tuple = <UnderlyingSolTuple<
3955                    '_,
3956                > as alloy_sol_types::SolType>::detokenize(token);
3957                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3958            }
3959        }
3960        #[automatically_derived]
3961        impl alloy_sol_types::SolStruct for InitialCommission {
3962            const NAME: &'static str = "InitialCommission";
3963            #[inline]
3964            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3965                alloy_sol_types::private::Cow::Borrowed(
3966                    "InitialCommission(address validator,uint16 commission)",
3967                )
3968            }
3969            #[inline]
3970            fn eip712_components() -> alloy_sol_types::private::Vec<
3971                alloy_sol_types::private::Cow<'static, str>,
3972            > {
3973                alloy_sol_types::private::Vec::new()
3974            }
3975            #[inline]
3976            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3977                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3978            }
3979            #[inline]
3980            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3981                [
3982                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
3983                            &self.validator,
3984                        )
3985                        .0,
3986                    <alloy::sol_types::sol_data::Uint<
3987                        16,
3988                    > as alloy_sol_types::SolType>::eip712_data_word(&self.commission)
3989                        .0,
3990                ]
3991                    .concat()
3992            }
3993        }
3994        #[automatically_derived]
3995        impl alloy_sol_types::EventTopic for InitialCommission {
3996            #[inline]
3997            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3998                0usize
3999                    + <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
4000                        &rust.validator,
4001                    )
4002                    + <alloy::sol_types::sol_data::Uint<
4003                        16,
4004                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4005                        &rust.commission,
4006                    )
4007            }
4008            #[inline]
4009            fn encode_topic_preimage(
4010                rust: &Self::RustType,
4011                out: &mut alloy_sol_types::private::Vec<u8>,
4012            ) {
4013                out.reserve(
4014                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4015                );
4016                <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
4017                    &rust.validator,
4018                    out,
4019                );
4020                <alloy::sol_types::sol_data::Uint<
4021                    16,
4022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4023                    &rust.commission,
4024                    out,
4025                );
4026            }
4027            #[inline]
4028            fn encode_topic(
4029                rust: &Self::RustType,
4030            ) -> alloy_sol_types::abi::token::WordToken {
4031                let mut out = alloy_sol_types::private::Vec::new();
4032                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4033                    rust,
4034                    &mut out,
4035                );
4036                alloy_sol_types::abi::token::WordToken(
4037                    alloy_sol_types::private::keccak256(out),
4038                )
4039            }
4040        }
4041    };
4042    #[derive(serde::Serialize, serde::Deserialize)]
4043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4044    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
4045```solidity
4046error AccessControlBadConfirmation();
4047```*/
4048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4049    #[derive(Clone)]
4050    pub struct AccessControlBadConfirmation;
4051    #[allow(
4052        non_camel_case_types,
4053        non_snake_case,
4054        clippy::pub_underscore_fields,
4055        clippy::style
4056    )]
4057    const _: () = {
4058        use alloy::sol_types as alloy_sol_types;
4059        #[doc(hidden)]
4060        #[allow(dead_code)]
4061        type UnderlyingSolTuple<'a> = ();
4062        #[doc(hidden)]
4063        type UnderlyingRustTuple<'a> = ();
4064        #[cfg(test)]
4065        #[allow(dead_code, unreachable_patterns)]
4066        fn _type_assertion(
4067            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4068        ) {
4069            match _t {
4070                alloy_sol_types::private::AssertTypeEq::<
4071                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4072                >(_) => {}
4073            }
4074        }
4075        #[automatically_derived]
4076        #[doc(hidden)]
4077        impl ::core::convert::From<AccessControlBadConfirmation>
4078        for UnderlyingRustTuple<'_> {
4079            fn from(value: AccessControlBadConfirmation) -> Self {
4080                ()
4081            }
4082        }
4083        #[automatically_derived]
4084        #[doc(hidden)]
4085        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4086        for AccessControlBadConfirmation {
4087            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4088                Self
4089            }
4090        }
4091        #[automatically_derived]
4092        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
4093            type Parameters<'a> = UnderlyingSolTuple<'a>;
4094            type Token<'a> = <Self::Parameters<
4095                'a,
4096            > as alloy_sol_types::SolType>::Token<'a>;
4097            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
4098            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
4099            #[inline]
4100            fn new<'a>(
4101                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4102            ) -> Self {
4103                tuple.into()
4104            }
4105            #[inline]
4106            fn tokenize(&self) -> Self::Token<'_> {
4107                ()
4108            }
4109            #[inline]
4110            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4111                Self::abi_decode_raw_with_config(
4112                    data,
4113                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4114                )
4115            }
4116        }
4117    };
4118    #[derive(serde::Serialize, serde::Deserialize)]
4119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4120    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
4121```solidity
4122error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
4123```*/
4124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4125    #[derive(Clone)]
4126    pub struct AccessControlUnauthorizedAccount {
4127        #[allow(missing_docs)]
4128        pub account: alloy::sol_types::private::Address,
4129        #[allow(missing_docs)]
4130        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
4131    }
4132    #[allow(
4133        non_camel_case_types,
4134        non_snake_case,
4135        clippy::pub_underscore_fields,
4136        clippy::style
4137    )]
4138    const _: () = {
4139        use alloy::sol_types as alloy_sol_types;
4140        #[doc(hidden)]
4141        #[allow(dead_code)]
4142        type UnderlyingSolTuple<'a> = (
4143            alloy::sol_types::sol_data::Address,
4144            alloy::sol_types::sol_data::FixedBytes<32>,
4145        );
4146        #[doc(hidden)]
4147        type UnderlyingRustTuple<'a> = (
4148            alloy::sol_types::private::Address,
4149            alloy::sol_types::private::FixedBytes<32>,
4150        );
4151        #[cfg(test)]
4152        #[allow(dead_code, unreachable_patterns)]
4153        fn _type_assertion(
4154            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4155        ) {
4156            match _t {
4157                alloy_sol_types::private::AssertTypeEq::<
4158                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4159                >(_) => {}
4160            }
4161        }
4162        #[automatically_derived]
4163        #[doc(hidden)]
4164        impl ::core::convert::From<AccessControlUnauthorizedAccount>
4165        for UnderlyingRustTuple<'_> {
4166            fn from(value: AccessControlUnauthorizedAccount) -> Self {
4167                (value.account, value.neededRole)
4168            }
4169        }
4170        #[automatically_derived]
4171        #[doc(hidden)]
4172        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4173        for AccessControlUnauthorizedAccount {
4174            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4175                Self {
4176                    account: tuple.0,
4177                    neededRole: tuple.1,
4178                }
4179            }
4180        }
4181        #[automatically_derived]
4182        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
4183            type Parameters<'a> = UnderlyingSolTuple<'a>;
4184            type Token<'a> = <Self::Parameters<
4185                'a,
4186            > as alloy_sol_types::SolType>::Token<'a>;
4187            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
4188            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
4189            #[inline]
4190            fn new<'a>(
4191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4192            ) -> Self {
4193                tuple.into()
4194            }
4195            #[inline]
4196            fn tokenize(&self) -> Self::Token<'_> {
4197                (
4198                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4199                        &self.account,
4200                    ),
4201                    <alloy::sol_types::sol_data::FixedBytes<
4202                        32,
4203                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
4204                )
4205            }
4206            #[inline]
4207            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4208                Self::abi_decode_raw_with_config(
4209                    data,
4210                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4211                )
4212            }
4213        }
4214    };
4215    #[derive(serde::Serialize, serde::Deserialize)]
4216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4217    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4218```solidity
4219error AddressEmptyCode(address target);
4220```*/
4221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4222    #[derive(Clone)]
4223    pub struct AddressEmptyCode {
4224        #[allow(missing_docs)]
4225        pub target: alloy::sol_types::private::Address,
4226    }
4227    #[allow(
4228        non_camel_case_types,
4229        non_snake_case,
4230        clippy::pub_underscore_fields,
4231        clippy::style
4232    )]
4233    const _: () = {
4234        use alloy::sol_types as alloy_sol_types;
4235        #[doc(hidden)]
4236        #[allow(dead_code)]
4237        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4238        #[doc(hidden)]
4239        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4240        #[cfg(test)]
4241        #[allow(dead_code, unreachable_patterns)]
4242        fn _type_assertion(
4243            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4244        ) {
4245            match _t {
4246                alloy_sol_types::private::AssertTypeEq::<
4247                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4248                >(_) => {}
4249            }
4250        }
4251        #[automatically_derived]
4252        #[doc(hidden)]
4253        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4254            fn from(value: AddressEmptyCode) -> Self {
4255                (value.target,)
4256            }
4257        }
4258        #[automatically_derived]
4259        #[doc(hidden)]
4260        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4261            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4262                Self { target: tuple.0 }
4263            }
4264        }
4265        #[automatically_derived]
4266        impl alloy_sol_types::SolError for AddressEmptyCode {
4267            type Parameters<'a> = UnderlyingSolTuple<'a>;
4268            type Token<'a> = <Self::Parameters<
4269                'a,
4270            > as alloy_sol_types::SolType>::Token<'a>;
4271            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4272            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4273            #[inline]
4274            fn new<'a>(
4275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4276            ) -> Self {
4277                tuple.into()
4278            }
4279            #[inline]
4280            fn tokenize(&self) -> Self::Token<'_> {
4281                (
4282                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4283                        &self.target,
4284                    ),
4285                )
4286            }
4287            #[inline]
4288            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4289                Self::abi_decode_raw_with_config(
4290                    data,
4291                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4292                )
4293            }
4294        }
4295    };
4296    #[derive(serde::Serialize, serde::Deserialize)]
4297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4298    /**Custom error with signature `BLSSigIsInfinity()` and selector `0x74272332`.
4299```solidity
4300error BLSSigIsInfinity();
4301```*/
4302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4303    #[derive(Clone)]
4304    pub struct BLSSigIsInfinity;
4305    #[allow(
4306        non_camel_case_types,
4307        non_snake_case,
4308        clippy::pub_underscore_fields,
4309        clippy::style
4310    )]
4311    const _: () = {
4312        use alloy::sol_types as alloy_sol_types;
4313        #[doc(hidden)]
4314        #[allow(dead_code)]
4315        type UnderlyingSolTuple<'a> = ();
4316        #[doc(hidden)]
4317        type UnderlyingRustTuple<'a> = ();
4318        #[cfg(test)]
4319        #[allow(dead_code, unreachable_patterns)]
4320        fn _type_assertion(
4321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4322        ) {
4323            match _t {
4324                alloy_sol_types::private::AssertTypeEq::<
4325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4326                >(_) => {}
4327            }
4328        }
4329        #[automatically_derived]
4330        #[doc(hidden)]
4331        impl ::core::convert::From<BLSSigIsInfinity> for UnderlyingRustTuple<'_> {
4332            fn from(value: BLSSigIsInfinity) -> Self {
4333                ()
4334            }
4335        }
4336        #[automatically_derived]
4337        #[doc(hidden)]
4338        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSSigIsInfinity {
4339            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4340                Self
4341            }
4342        }
4343        #[automatically_derived]
4344        impl alloy_sol_types::SolError for BLSSigIsInfinity {
4345            type Parameters<'a> = UnderlyingSolTuple<'a>;
4346            type Token<'a> = <Self::Parameters<
4347                'a,
4348            > as alloy_sol_types::SolType>::Token<'a>;
4349            const SIGNATURE: &'static str = "BLSSigIsInfinity()";
4350            const SELECTOR: [u8; 4] = [116u8, 39u8, 35u8, 50u8];
4351            #[inline]
4352            fn new<'a>(
4353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4354            ) -> Self {
4355                tuple.into()
4356            }
4357            #[inline]
4358            fn tokenize(&self) -> Self::Token<'_> {
4359                ()
4360            }
4361            #[inline]
4362            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4363                Self::abi_decode_raw_with_config(
4364                    data,
4365                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4366                )
4367            }
4368        }
4369    };
4370    #[derive(serde::Serialize, serde::Deserialize)]
4371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4372    /**Custom error with signature `BLSSigVerificationFailed()` and selector `0x0ced3e50`.
4373```solidity
4374error BLSSigVerificationFailed();
4375```*/
4376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4377    #[derive(Clone)]
4378    pub struct BLSSigVerificationFailed;
4379    #[allow(
4380        non_camel_case_types,
4381        non_snake_case,
4382        clippy::pub_underscore_fields,
4383        clippy::style
4384    )]
4385    const _: () = {
4386        use alloy::sol_types as alloy_sol_types;
4387        #[doc(hidden)]
4388        #[allow(dead_code)]
4389        type UnderlyingSolTuple<'a> = ();
4390        #[doc(hidden)]
4391        type UnderlyingRustTuple<'a> = ();
4392        #[cfg(test)]
4393        #[allow(dead_code, unreachable_patterns)]
4394        fn _type_assertion(
4395            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4396        ) {
4397            match _t {
4398                alloy_sol_types::private::AssertTypeEq::<
4399                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4400                >(_) => {}
4401            }
4402        }
4403        #[automatically_derived]
4404        #[doc(hidden)]
4405        impl ::core::convert::From<BLSSigVerificationFailed>
4406        for UnderlyingRustTuple<'_> {
4407            fn from(value: BLSSigVerificationFailed) -> Self {
4408                ()
4409            }
4410        }
4411        #[automatically_derived]
4412        #[doc(hidden)]
4413        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4414        for BLSSigVerificationFailed {
4415            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4416                Self
4417            }
4418        }
4419        #[automatically_derived]
4420        impl alloy_sol_types::SolError for BLSSigVerificationFailed {
4421            type Parameters<'a> = UnderlyingSolTuple<'a>;
4422            type Token<'a> = <Self::Parameters<
4423                'a,
4424            > as alloy_sol_types::SolType>::Token<'a>;
4425            const SIGNATURE: &'static str = "BLSSigVerificationFailed()";
4426            const SELECTOR: [u8; 4] = [12u8, 237u8, 62u8, 80u8];
4427            #[inline]
4428            fn new<'a>(
4429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4430            ) -> Self {
4431                tuple.into()
4432            }
4433            #[inline]
4434            fn tokenize(&self) -> Self::Token<'_> {
4435                ()
4436            }
4437            #[inline]
4438            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4439                Self::abi_decode_raw_with_config(
4440                    data,
4441                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4442                )
4443            }
4444        }
4445    };
4446    #[derive(serde::Serialize, serde::Deserialize)]
4447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4448    /**Custom error with signature `BLSVKIsInfinity()` and selector `0xbc86c59a`.
4449```solidity
4450error BLSVKIsInfinity();
4451```*/
4452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4453    #[derive(Clone)]
4454    pub struct BLSVKIsInfinity;
4455    #[allow(
4456        non_camel_case_types,
4457        non_snake_case,
4458        clippy::pub_underscore_fields,
4459        clippy::style
4460    )]
4461    const _: () = {
4462        use alloy::sol_types as alloy_sol_types;
4463        #[doc(hidden)]
4464        #[allow(dead_code)]
4465        type UnderlyingSolTuple<'a> = ();
4466        #[doc(hidden)]
4467        type UnderlyingRustTuple<'a> = ();
4468        #[cfg(test)]
4469        #[allow(dead_code, unreachable_patterns)]
4470        fn _type_assertion(
4471            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4472        ) {
4473            match _t {
4474                alloy_sol_types::private::AssertTypeEq::<
4475                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4476                >(_) => {}
4477            }
4478        }
4479        #[automatically_derived]
4480        #[doc(hidden)]
4481        impl ::core::convert::From<BLSVKIsInfinity> for UnderlyingRustTuple<'_> {
4482            fn from(value: BLSVKIsInfinity) -> Self {
4483                ()
4484            }
4485        }
4486        #[automatically_derived]
4487        #[doc(hidden)]
4488        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSVKIsInfinity {
4489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4490                Self
4491            }
4492        }
4493        #[automatically_derived]
4494        impl alloy_sol_types::SolError for BLSVKIsInfinity {
4495            type Parameters<'a> = UnderlyingSolTuple<'a>;
4496            type Token<'a> = <Self::Parameters<
4497                'a,
4498            > as alloy_sol_types::SolType>::Token<'a>;
4499            const SIGNATURE: &'static str = "BLSVKIsInfinity()";
4500            const SELECTOR: [u8; 4] = [188u8, 134u8, 197u8, 154u8];
4501            #[inline]
4502            fn new<'a>(
4503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4504            ) -> Self {
4505                tuple.into()
4506            }
4507            #[inline]
4508            fn tokenize(&self) -> Self::Token<'_> {
4509                ()
4510            }
4511            #[inline]
4512            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4513                Self::abi_decode_raw_with_config(
4514                    data,
4515                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4516                )
4517            }
4518        }
4519    };
4520    #[derive(serde::Serialize, serde::Deserialize)]
4521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4522    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
4523```solidity
4524error BN254PairingProdFailed();
4525```*/
4526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4527    #[derive(Clone)]
4528    pub struct BN254PairingProdFailed;
4529    #[allow(
4530        non_camel_case_types,
4531        non_snake_case,
4532        clippy::pub_underscore_fields,
4533        clippy::style
4534    )]
4535    const _: () = {
4536        use alloy::sol_types as alloy_sol_types;
4537        #[doc(hidden)]
4538        #[allow(dead_code)]
4539        type UnderlyingSolTuple<'a> = ();
4540        #[doc(hidden)]
4541        type UnderlyingRustTuple<'a> = ();
4542        #[cfg(test)]
4543        #[allow(dead_code, unreachable_patterns)]
4544        fn _type_assertion(
4545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4546        ) {
4547            match _t {
4548                alloy_sol_types::private::AssertTypeEq::<
4549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4550                >(_) => {}
4551            }
4552        }
4553        #[automatically_derived]
4554        #[doc(hidden)]
4555        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
4556            fn from(value: BN254PairingProdFailed) -> Self {
4557                ()
4558            }
4559        }
4560        #[automatically_derived]
4561        #[doc(hidden)]
4562        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
4563            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4564                Self
4565            }
4566        }
4567        #[automatically_derived]
4568        impl alloy_sol_types::SolError for BN254PairingProdFailed {
4569            type Parameters<'a> = UnderlyingSolTuple<'a>;
4570            type Token<'a> = <Self::Parameters<
4571                'a,
4572            > as alloy_sol_types::SolType>::Token<'a>;
4573            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
4574            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
4575            #[inline]
4576            fn new<'a>(
4577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4578            ) -> Self {
4579                tuple.into()
4580            }
4581            #[inline]
4582            fn tokenize(&self) -> Self::Token<'_> {
4583                ()
4584            }
4585            #[inline]
4586            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4587                Self::abi_decode_raw_with_config(
4588                    data,
4589                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4590                )
4591            }
4592        }
4593    };
4594    #[derive(serde::Serialize, serde::Deserialize)]
4595    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4596    /**Custom error with signature `BlsKeyAlreadyUsed()` and selector `0x01b514ae`.
4597```solidity
4598error BlsKeyAlreadyUsed();
4599```*/
4600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4601    #[derive(Clone)]
4602    pub struct BlsKeyAlreadyUsed;
4603    #[allow(
4604        non_camel_case_types,
4605        non_snake_case,
4606        clippy::pub_underscore_fields,
4607        clippy::style
4608    )]
4609    const _: () = {
4610        use alloy::sol_types as alloy_sol_types;
4611        #[doc(hidden)]
4612        #[allow(dead_code)]
4613        type UnderlyingSolTuple<'a> = ();
4614        #[doc(hidden)]
4615        type UnderlyingRustTuple<'a> = ();
4616        #[cfg(test)]
4617        #[allow(dead_code, unreachable_patterns)]
4618        fn _type_assertion(
4619            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4620        ) {
4621            match _t {
4622                alloy_sol_types::private::AssertTypeEq::<
4623                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4624                >(_) => {}
4625            }
4626        }
4627        #[automatically_derived]
4628        #[doc(hidden)]
4629        impl ::core::convert::From<BlsKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
4630            fn from(value: BlsKeyAlreadyUsed) -> Self {
4631                ()
4632            }
4633        }
4634        #[automatically_derived]
4635        #[doc(hidden)]
4636        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlsKeyAlreadyUsed {
4637            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4638                Self
4639            }
4640        }
4641        #[automatically_derived]
4642        impl alloy_sol_types::SolError for BlsKeyAlreadyUsed {
4643            type Parameters<'a> = UnderlyingSolTuple<'a>;
4644            type Token<'a> = <Self::Parameters<
4645                'a,
4646            > as alloy_sol_types::SolType>::Token<'a>;
4647            const SIGNATURE: &'static str = "BlsKeyAlreadyUsed()";
4648            const SELECTOR: [u8; 4] = [1u8, 181u8, 20u8, 174u8];
4649            #[inline]
4650            fn new<'a>(
4651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4652            ) -> Self {
4653                tuple.into()
4654            }
4655            #[inline]
4656            fn tokenize(&self) -> Self::Token<'_> {
4657                ()
4658            }
4659            #[inline]
4660            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4661                Self::abi_decode_raw_with_config(
4662                    data,
4663                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4664                )
4665            }
4666        }
4667    };
4668    #[derive(serde::Serialize, serde::Deserialize)]
4669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4670    /**Custom error with signature `CommissionAlreadyInitialized(address)` and selector `0x50814e10`.
4671```solidity
4672error CommissionAlreadyInitialized(address validator);
4673```*/
4674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4675    #[derive(Clone)]
4676    pub struct CommissionAlreadyInitialized {
4677        #[allow(missing_docs)]
4678        pub validator: alloy::sol_types::private::Address,
4679    }
4680    #[allow(
4681        non_camel_case_types,
4682        non_snake_case,
4683        clippy::pub_underscore_fields,
4684        clippy::style
4685    )]
4686    const _: () = {
4687        use alloy::sol_types as alloy_sol_types;
4688        #[doc(hidden)]
4689        #[allow(dead_code)]
4690        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4691        #[doc(hidden)]
4692        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4693        #[cfg(test)]
4694        #[allow(dead_code, unreachable_patterns)]
4695        fn _type_assertion(
4696            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4697        ) {
4698            match _t {
4699                alloy_sol_types::private::AssertTypeEq::<
4700                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4701                >(_) => {}
4702            }
4703        }
4704        #[automatically_derived]
4705        #[doc(hidden)]
4706        impl ::core::convert::From<CommissionAlreadyInitialized>
4707        for UnderlyingRustTuple<'_> {
4708            fn from(value: CommissionAlreadyInitialized) -> Self {
4709                (value.validator,)
4710            }
4711        }
4712        #[automatically_derived]
4713        #[doc(hidden)]
4714        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4715        for CommissionAlreadyInitialized {
4716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4717                Self { validator: tuple.0 }
4718            }
4719        }
4720        #[automatically_derived]
4721        impl alloy_sol_types::SolError for CommissionAlreadyInitialized {
4722            type Parameters<'a> = UnderlyingSolTuple<'a>;
4723            type Token<'a> = <Self::Parameters<
4724                'a,
4725            > as alloy_sol_types::SolType>::Token<'a>;
4726            const SIGNATURE: &'static str = "CommissionAlreadyInitialized(address)";
4727            const SELECTOR: [u8; 4] = [80u8, 129u8, 78u8, 16u8];
4728            #[inline]
4729            fn new<'a>(
4730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4731            ) -> Self {
4732                tuple.into()
4733            }
4734            #[inline]
4735            fn tokenize(&self) -> Self::Token<'_> {
4736                (
4737                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4738                        &self.validator,
4739                    ),
4740                )
4741            }
4742            #[inline]
4743            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4744                Self::abi_decode_raw_with_config(
4745                    data,
4746                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4747                )
4748            }
4749        }
4750    };
4751    #[derive(serde::Serialize, serde::Deserialize)]
4752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4753    /**Custom error with signature `CommissionIncreaseExceedsMax()` and selector `0x25ad48ca`.
4754```solidity
4755error CommissionIncreaseExceedsMax();
4756```*/
4757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4758    #[derive(Clone)]
4759    pub struct CommissionIncreaseExceedsMax;
4760    #[allow(
4761        non_camel_case_types,
4762        non_snake_case,
4763        clippy::pub_underscore_fields,
4764        clippy::style
4765    )]
4766    const _: () = {
4767        use alloy::sol_types as alloy_sol_types;
4768        #[doc(hidden)]
4769        #[allow(dead_code)]
4770        type UnderlyingSolTuple<'a> = ();
4771        #[doc(hidden)]
4772        type UnderlyingRustTuple<'a> = ();
4773        #[cfg(test)]
4774        #[allow(dead_code, unreachable_patterns)]
4775        fn _type_assertion(
4776            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4777        ) {
4778            match _t {
4779                alloy_sol_types::private::AssertTypeEq::<
4780                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4781                >(_) => {}
4782            }
4783        }
4784        #[automatically_derived]
4785        #[doc(hidden)]
4786        impl ::core::convert::From<CommissionIncreaseExceedsMax>
4787        for UnderlyingRustTuple<'_> {
4788            fn from(value: CommissionIncreaseExceedsMax) -> Self {
4789                ()
4790            }
4791        }
4792        #[automatically_derived]
4793        #[doc(hidden)]
4794        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4795        for CommissionIncreaseExceedsMax {
4796            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4797                Self
4798            }
4799        }
4800        #[automatically_derived]
4801        impl alloy_sol_types::SolError for CommissionIncreaseExceedsMax {
4802            type Parameters<'a> = UnderlyingSolTuple<'a>;
4803            type Token<'a> = <Self::Parameters<
4804                'a,
4805            > as alloy_sol_types::SolType>::Token<'a>;
4806            const SIGNATURE: &'static str = "CommissionIncreaseExceedsMax()";
4807            const SELECTOR: [u8; 4] = [37u8, 173u8, 72u8, 202u8];
4808            #[inline]
4809            fn new<'a>(
4810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4811            ) -> Self {
4812                tuple.into()
4813            }
4814            #[inline]
4815            fn tokenize(&self) -> Self::Token<'_> {
4816                ()
4817            }
4818            #[inline]
4819            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4820                Self::abi_decode_raw_with_config(
4821                    data,
4822                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4823                )
4824            }
4825        }
4826    };
4827    #[derive(serde::Serialize, serde::Deserialize)]
4828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4829    /**Custom error with signature `CommissionUnchanged()` and selector `0xc20bac94`.
4830```solidity
4831error CommissionUnchanged();
4832```*/
4833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4834    #[derive(Clone)]
4835    pub struct CommissionUnchanged;
4836    #[allow(
4837        non_camel_case_types,
4838        non_snake_case,
4839        clippy::pub_underscore_fields,
4840        clippy::style
4841    )]
4842    const _: () = {
4843        use alloy::sol_types as alloy_sol_types;
4844        #[doc(hidden)]
4845        #[allow(dead_code)]
4846        type UnderlyingSolTuple<'a> = ();
4847        #[doc(hidden)]
4848        type UnderlyingRustTuple<'a> = ();
4849        #[cfg(test)]
4850        #[allow(dead_code, unreachable_patterns)]
4851        fn _type_assertion(
4852            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4853        ) {
4854            match _t {
4855                alloy_sol_types::private::AssertTypeEq::<
4856                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4857                >(_) => {}
4858            }
4859        }
4860        #[automatically_derived]
4861        #[doc(hidden)]
4862        impl ::core::convert::From<CommissionUnchanged> for UnderlyingRustTuple<'_> {
4863            fn from(value: CommissionUnchanged) -> Self {
4864                ()
4865            }
4866        }
4867        #[automatically_derived]
4868        #[doc(hidden)]
4869        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUnchanged {
4870            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4871                Self
4872            }
4873        }
4874        #[automatically_derived]
4875        impl alloy_sol_types::SolError for CommissionUnchanged {
4876            type Parameters<'a> = UnderlyingSolTuple<'a>;
4877            type Token<'a> = <Self::Parameters<
4878                'a,
4879            > as alloy_sol_types::SolType>::Token<'a>;
4880            const SIGNATURE: &'static str = "CommissionUnchanged()";
4881            const SELECTOR: [u8; 4] = [194u8, 11u8, 172u8, 148u8];
4882            #[inline]
4883            fn new<'a>(
4884                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4885            ) -> Self {
4886                tuple.into()
4887            }
4888            #[inline]
4889            fn tokenize(&self) -> Self::Token<'_> {
4890                ()
4891            }
4892            #[inline]
4893            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4894                Self::abi_decode_raw_with_config(
4895                    data,
4896                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4897                )
4898            }
4899        }
4900    };
4901    #[derive(serde::Serialize, serde::Deserialize)]
4902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4903    /**Custom error with signature `CommissionUpdateTooSoon()` and selector `0x16eb94cb`.
4904```solidity
4905error CommissionUpdateTooSoon();
4906```*/
4907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4908    #[derive(Clone)]
4909    pub struct CommissionUpdateTooSoon;
4910    #[allow(
4911        non_camel_case_types,
4912        non_snake_case,
4913        clippy::pub_underscore_fields,
4914        clippy::style
4915    )]
4916    const _: () = {
4917        use alloy::sol_types as alloy_sol_types;
4918        #[doc(hidden)]
4919        #[allow(dead_code)]
4920        type UnderlyingSolTuple<'a> = ();
4921        #[doc(hidden)]
4922        type UnderlyingRustTuple<'a> = ();
4923        #[cfg(test)]
4924        #[allow(dead_code, unreachable_patterns)]
4925        fn _type_assertion(
4926            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4927        ) {
4928            match _t {
4929                alloy_sol_types::private::AssertTypeEq::<
4930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4931                >(_) => {}
4932            }
4933        }
4934        #[automatically_derived]
4935        #[doc(hidden)]
4936        impl ::core::convert::From<CommissionUpdateTooSoon> for UnderlyingRustTuple<'_> {
4937            fn from(value: CommissionUpdateTooSoon) -> Self {
4938                ()
4939            }
4940        }
4941        #[automatically_derived]
4942        #[doc(hidden)]
4943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for CommissionUpdateTooSoon {
4944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4945                Self
4946            }
4947        }
4948        #[automatically_derived]
4949        impl alloy_sol_types::SolError for CommissionUpdateTooSoon {
4950            type Parameters<'a> = UnderlyingSolTuple<'a>;
4951            type Token<'a> = <Self::Parameters<
4952                'a,
4953            > as alloy_sol_types::SolType>::Token<'a>;
4954            const SIGNATURE: &'static str = "CommissionUpdateTooSoon()";
4955            const SELECTOR: [u8; 4] = [22u8, 235u8, 148u8, 203u8];
4956            #[inline]
4957            fn new<'a>(
4958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4959            ) -> Self {
4960                tuple.into()
4961            }
4962            #[inline]
4963            fn tokenize(&self) -> Self::Token<'_> {
4964                ()
4965            }
4966            #[inline]
4967            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4968                Self::abi_decode_raw_with_config(
4969                    data,
4970                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4971                )
4972            }
4973        }
4974    };
4975    #[derive(serde::Serialize, serde::Deserialize)]
4976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4977    /**Custom error with signature `DefaultAdminCannotBeRenounced()` and selector `0x8b78631d`.
4978```solidity
4979error DefaultAdminCannotBeRenounced();
4980```*/
4981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4982    #[derive(Clone)]
4983    pub struct DefaultAdminCannotBeRenounced;
4984    #[allow(
4985        non_camel_case_types,
4986        non_snake_case,
4987        clippy::pub_underscore_fields,
4988        clippy::style
4989    )]
4990    const _: () = {
4991        use alloy::sol_types as alloy_sol_types;
4992        #[doc(hidden)]
4993        #[allow(dead_code)]
4994        type UnderlyingSolTuple<'a> = ();
4995        #[doc(hidden)]
4996        type UnderlyingRustTuple<'a> = ();
4997        #[cfg(test)]
4998        #[allow(dead_code, unreachable_patterns)]
4999        fn _type_assertion(
5000            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5001        ) {
5002            match _t {
5003                alloy_sol_types::private::AssertTypeEq::<
5004                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5005                >(_) => {}
5006            }
5007        }
5008        #[automatically_derived]
5009        #[doc(hidden)]
5010        impl ::core::convert::From<DefaultAdminCannotBeRenounced>
5011        for UnderlyingRustTuple<'_> {
5012            fn from(value: DefaultAdminCannotBeRenounced) -> Self {
5013                ()
5014            }
5015        }
5016        #[automatically_derived]
5017        #[doc(hidden)]
5018        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5019        for DefaultAdminCannotBeRenounced {
5020            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5021                Self
5022            }
5023        }
5024        #[automatically_derived]
5025        impl alloy_sol_types::SolError for DefaultAdminCannotBeRenounced {
5026            type Parameters<'a> = UnderlyingSolTuple<'a>;
5027            type Token<'a> = <Self::Parameters<
5028                'a,
5029            > as alloy_sol_types::SolType>::Token<'a>;
5030            const SIGNATURE: &'static str = "DefaultAdminCannotBeRenounced()";
5031            const SELECTOR: [u8; 4] = [139u8, 120u8, 99u8, 29u8];
5032            #[inline]
5033            fn new<'a>(
5034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5035            ) -> Self {
5036                tuple.into()
5037            }
5038            #[inline]
5039            fn tokenize(&self) -> Self::Token<'_> {
5040                ()
5041            }
5042            #[inline]
5043            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5044                Self::abi_decode_raw_with_config(
5045                    data,
5046                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5047                )
5048            }
5049        }
5050    };
5051    #[derive(serde::Serialize, serde::Deserialize)]
5052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5053    /**Custom error with signature `DefaultAdminCannotBeRevoked()` and selector `0xb0b5fb99`.
5054```solidity
5055error DefaultAdminCannotBeRevoked();
5056```*/
5057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5058    #[derive(Clone)]
5059    pub struct DefaultAdminCannotBeRevoked;
5060    #[allow(
5061        non_camel_case_types,
5062        non_snake_case,
5063        clippy::pub_underscore_fields,
5064        clippy::style
5065    )]
5066    const _: () = {
5067        use alloy::sol_types as alloy_sol_types;
5068        #[doc(hidden)]
5069        #[allow(dead_code)]
5070        type UnderlyingSolTuple<'a> = ();
5071        #[doc(hidden)]
5072        type UnderlyingRustTuple<'a> = ();
5073        #[cfg(test)]
5074        #[allow(dead_code, unreachable_patterns)]
5075        fn _type_assertion(
5076            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5077        ) {
5078            match _t {
5079                alloy_sol_types::private::AssertTypeEq::<
5080                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5081                >(_) => {}
5082            }
5083        }
5084        #[automatically_derived]
5085        #[doc(hidden)]
5086        impl ::core::convert::From<DefaultAdminCannotBeRevoked>
5087        for UnderlyingRustTuple<'_> {
5088            fn from(value: DefaultAdminCannotBeRevoked) -> Self {
5089                ()
5090            }
5091        }
5092        #[automatically_derived]
5093        #[doc(hidden)]
5094        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5095        for DefaultAdminCannotBeRevoked {
5096            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5097                Self
5098            }
5099        }
5100        #[automatically_derived]
5101        impl alloy_sol_types::SolError for DefaultAdminCannotBeRevoked {
5102            type Parameters<'a> = UnderlyingSolTuple<'a>;
5103            type Token<'a> = <Self::Parameters<
5104                'a,
5105            > as alloy_sol_types::SolType>::Token<'a>;
5106            const SIGNATURE: &'static str = "DefaultAdminCannotBeRevoked()";
5107            const SELECTOR: [u8; 4] = [176u8, 181u8, 251u8, 153u8];
5108            #[inline]
5109            fn new<'a>(
5110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5111            ) -> Self {
5112                tuple.into()
5113            }
5114            #[inline]
5115            fn tokenize(&self) -> Self::Token<'_> {
5116                ()
5117            }
5118            #[inline]
5119            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5120                Self::abi_decode_raw_with_config(
5121                    data,
5122                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5123                )
5124            }
5125        }
5126    };
5127    #[derive(serde::Serialize, serde::Deserialize)]
5128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5129    /**Custom error with signature `DelegateAmountTooSmall()` and selector `0x7d298731`.
5130```solidity
5131error DelegateAmountTooSmall();
5132```*/
5133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5134    #[derive(Clone)]
5135    pub struct DelegateAmountTooSmall;
5136    #[allow(
5137        non_camel_case_types,
5138        non_snake_case,
5139        clippy::pub_underscore_fields,
5140        clippy::style
5141    )]
5142    const _: () = {
5143        use alloy::sol_types as alloy_sol_types;
5144        #[doc(hidden)]
5145        #[allow(dead_code)]
5146        type UnderlyingSolTuple<'a> = ();
5147        #[doc(hidden)]
5148        type UnderlyingRustTuple<'a> = ();
5149        #[cfg(test)]
5150        #[allow(dead_code, unreachable_patterns)]
5151        fn _type_assertion(
5152            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5153        ) {
5154            match _t {
5155                alloy_sol_types::private::AssertTypeEq::<
5156                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5157                >(_) => {}
5158            }
5159        }
5160        #[automatically_derived]
5161        #[doc(hidden)]
5162        impl ::core::convert::From<DelegateAmountTooSmall> for UnderlyingRustTuple<'_> {
5163            fn from(value: DelegateAmountTooSmall) -> Self {
5164                ()
5165            }
5166        }
5167        #[automatically_derived]
5168        #[doc(hidden)]
5169        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DelegateAmountTooSmall {
5170            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5171                Self
5172            }
5173        }
5174        #[automatically_derived]
5175        impl alloy_sol_types::SolError for DelegateAmountTooSmall {
5176            type Parameters<'a> = UnderlyingSolTuple<'a>;
5177            type Token<'a> = <Self::Parameters<
5178                'a,
5179            > as alloy_sol_types::SolType>::Token<'a>;
5180            const SIGNATURE: &'static str = "DelegateAmountTooSmall()";
5181            const SELECTOR: [u8; 4] = [125u8, 41u8, 135u8, 49u8];
5182            #[inline]
5183            fn new<'a>(
5184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5185            ) -> Self {
5186                tuple.into()
5187            }
5188            #[inline]
5189            fn tokenize(&self) -> Self::Token<'_> {
5190                ()
5191            }
5192            #[inline]
5193            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5194                Self::abi_decode_raw_with_config(
5195                    data,
5196                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5197                )
5198            }
5199        }
5200    };
5201    #[derive(serde::Serialize, serde::Deserialize)]
5202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5203    /**Custom error with signature `DeprecatedFunction()` and selector `0xc2d7f813`.
5204```solidity
5205error DeprecatedFunction();
5206```*/
5207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5208    #[derive(Clone)]
5209    pub struct DeprecatedFunction;
5210    #[allow(
5211        non_camel_case_types,
5212        non_snake_case,
5213        clippy::pub_underscore_fields,
5214        clippy::style
5215    )]
5216    const _: () = {
5217        use alloy::sol_types as alloy_sol_types;
5218        #[doc(hidden)]
5219        #[allow(dead_code)]
5220        type UnderlyingSolTuple<'a> = ();
5221        #[doc(hidden)]
5222        type UnderlyingRustTuple<'a> = ();
5223        #[cfg(test)]
5224        #[allow(dead_code, unreachable_patterns)]
5225        fn _type_assertion(
5226            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5227        ) {
5228            match _t {
5229                alloy_sol_types::private::AssertTypeEq::<
5230                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5231                >(_) => {}
5232            }
5233        }
5234        #[automatically_derived]
5235        #[doc(hidden)]
5236        impl ::core::convert::From<DeprecatedFunction> for UnderlyingRustTuple<'_> {
5237            fn from(value: DeprecatedFunction) -> Self {
5238                ()
5239            }
5240        }
5241        #[automatically_derived]
5242        #[doc(hidden)]
5243        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedFunction {
5244            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5245                Self
5246            }
5247        }
5248        #[automatically_derived]
5249        impl alloy_sol_types::SolError for DeprecatedFunction {
5250            type Parameters<'a> = UnderlyingSolTuple<'a>;
5251            type Token<'a> = <Self::Parameters<
5252                'a,
5253            > as alloy_sol_types::SolType>::Token<'a>;
5254            const SIGNATURE: &'static str = "DeprecatedFunction()";
5255            const SELECTOR: [u8; 4] = [194u8, 215u8, 248u8, 19u8];
5256            #[inline]
5257            fn new<'a>(
5258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5259            ) -> Self {
5260                tuple.into()
5261            }
5262            #[inline]
5263            fn tokenize(&self) -> Self::Token<'_> {
5264                ()
5265            }
5266            #[inline]
5267            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5268                Self::abi_decode_raw_with_config(
5269                    data,
5270                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5271                )
5272            }
5273        }
5274    };
5275    #[derive(serde::Serialize, serde::Deserialize)]
5276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5277    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5278```solidity
5279error ERC1967InvalidImplementation(address implementation);
5280```*/
5281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5282    #[derive(Clone)]
5283    pub struct ERC1967InvalidImplementation {
5284        #[allow(missing_docs)]
5285        pub implementation: alloy::sol_types::private::Address,
5286    }
5287    #[allow(
5288        non_camel_case_types,
5289        non_snake_case,
5290        clippy::pub_underscore_fields,
5291        clippy::style
5292    )]
5293    const _: () = {
5294        use alloy::sol_types as alloy_sol_types;
5295        #[doc(hidden)]
5296        #[allow(dead_code)]
5297        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5298        #[doc(hidden)]
5299        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5300        #[cfg(test)]
5301        #[allow(dead_code, unreachable_patterns)]
5302        fn _type_assertion(
5303            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5304        ) {
5305            match _t {
5306                alloy_sol_types::private::AssertTypeEq::<
5307                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5308                >(_) => {}
5309            }
5310        }
5311        #[automatically_derived]
5312        #[doc(hidden)]
5313        impl ::core::convert::From<ERC1967InvalidImplementation>
5314        for UnderlyingRustTuple<'_> {
5315            fn from(value: ERC1967InvalidImplementation) -> Self {
5316                (value.implementation,)
5317            }
5318        }
5319        #[automatically_derived]
5320        #[doc(hidden)]
5321        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5322        for ERC1967InvalidImplementation {
5323            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5324                Self { implementation: tuple.0 }
5325            }
5326        }
5327        #[automatically_derived]
5328        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5329            type Parameters<'a> = UnderlyingSolTuple<'a>;
5330            type Token<'a> = <Self::Parameters<
5331                'a,
5332            > as alloy_sol_types::SolType>::Token<'a>;
5333            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5334            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5335            #[inline]
5336            fn new<'a>(
5337                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5338            ) -> Self {
5339                tuple.into()
5340            }
5341            #[inline]
5342            fn tokenize(&self) -> Self::Token<'_> {
5343                (
5344                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5345                        &self.implementation,
5346                    ),
5347                )
5348            }
5349            #[inline]
5350            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5351                Self::abi_decode_raw_with_config(
5352                    data,
5353                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5354                )
5355            }
5356        }
5357    };
5358    #[derive(serde::Serialize, serde::Deserialize)]
5359    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5360    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5361```solidity
5362error ERC1967NonPayable();
5363```*/
5364    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5365    #[derive(Clone)]
5366    pub struct ERC1967NonPayable;
5367    #[allow(
5368        non_camel_case_types,
5369        non_snake_case,
5370        clippy::pub_underscore_fields,
5371        clippy::style
5372    )]
5373    const _: () = {
5374        use alloy::sol_types as alloy_sol_types;
5375        #[doc(hidden)]
5376        #[allow(dead_code)]
5377        type UnderlyingSolTuple<'a> = ();
5378        #[doc(hidden)]
5379        type UnderlyingRustTuple<'a> = ();
5380        #[cfg(test)]
5381        #[allow(dead_code, unreachable_patterns)]
5382        fn _type_assertion(
5383            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5384        ) {
5385            match _t {
5386                alloy_sol_types::private::AssertTypeEq::<
5387                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5388                >(_) => {}
5389            }
5390        }
5391        #[automatically_derived]
5392        #[doc(hidden)]
5393        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5394            fn from(value: ERC1967NonPayable) -> Self {
5395                ()
5396            }
5397        }
5398        #[automatically_derived]
5399        #[doc(hidden)]
5400        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5401            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5402                Self
5403            }
5404        }
5405        #[automatically_derived]
5406        impl alloy_sol_types::SolError for ERC1967NonPayable {
5407            type Parameters<'a> = UnderlyingSolTuple<'a>;
5408            type Token<'a> = <Self::Parameters<
5409                'a,
5410            > as alloy_sol_types::SolType>::Token<'a>;
5411            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5412            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5413            #[inline]
5414            fn new<'a>(
5415                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5416            ) -> Self {
5417                tuple.into()
5418            }
5419            #[inline]
5420            fn tokenize(&self) -> Self::Token<'_> {
5421                ()
5422            }
5423            #[inline]
5424            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5425                Self::abi_decode_raw_with_config(
5426                    data,
5427                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5428                )
5429            }
5430        }
5431    };
5432    #[derive(serde::Serialize, serde::Deserialize)]
5433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5434    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
5435```solidity
5436error EnforcedPause();
5437```*/
5438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5439    #[derive(Clone)]
5440    pub struct EnforcedPause;
5441    #[allow(
5442        non_camel_case_types,
5443        non_snake_case,
5444        clippy::pub_underscore_fields,
5445        clippy::style
5446    )]
5447    const _: () = {
5448        use alloy::sol_types as alloy_sol_types;
5449        #[doc(hidden)]
5450        #[allow(dead_code)]
5451        type UnderlyingSolTuple<'a> = ();
5452        #[doc(hidden)]
5453        type UnderlyingRustTuple<'a> = ();
5454        #[cfg(test)]
5455        #[allow(dead_code, unreachable_patterns)]
5456        fn _type_assertion(
5457            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5458        ) {
5459            match _t {
5460                alloy_sol_types::private::AssertTypeEq::<
5461                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5462                >(_) => {}
5463            }
5464        }
5465        #[automatically_derived]
5466        #[doc(hidden)]
5467        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
5468            fn from(value: EnforcedPause) -> Self {
5469                ()
5470            }
5471        }
5472        #[automatically_derived]
5473        #[doc(hidden)]
5474        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
5475            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5476                Self
5477            }
5478        }
5479        #[automatically_derived]
5480        impl alloy_sol_types::SolError for EnforcedPause {
5481            type Parameters<'a> = UnderlyingSolTuple<'a>;
5482            type Token<'a> = <Self::Parameters<
5483                'a,
5484            > as alloy_sol_types::SolType>::Token<'a>;
5485            const SIGNATURE: &'static str = "EnforcedPause()";
5486            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
5487            #[inline]
5488            fn new<'a>(
5489                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5490            ) -> Self {
5491                tuple.into()
5492            }
5493            #[inline]
5494            fn tokenize(&self) -> Self::Token<'_> {
5495                ()
5496            }
5497            #[inline]
5498            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5499                Self::abi_decode_raw_with_config(
5500                    data,
5501                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5502                )
5503            }
5504        }
5505    };
5506    #[derive(serde::Serialize, serde::Deserialize)]
5507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5508    /**Custom error with signature `ExitEscrowPeriodInvalid()` and selector `0xb57e21df`.
5509```solidity
5510error ExitEscrowPeriodInvalid();
5511```*/
5512    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5513    #[derive(Clone)]
5514    pub struct ExitEscrowPeriodInvalid;
5515    #[allow(
5516        non_camel_case_types,
5517        non_snake_case,
5518        clippy::pub_underscore_fields,
5519        clippy::style
5520    )]
5521    const _: () = {
5522        use alloy::sol_types as alloy_sol_types;
5523        #[doc(hidden)]
5524        #[allow(dead_code)]
5525        type UnderlyingSolTuple<'a> = ();
5526        #[doc(hidden)]
5527        type UnderlyingRustTuple<'a> = ();
5528        #[cfg(test)]
5529        #[allow(dead_code, unreachable_patterns)]
5530        fn _type_assertion(
5531            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5532        ) {
5533            match _t {
5534                alloy_sol_types::private::AssertTypeEq::<
5535                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5536                >(_) => {}
5537            }
5538        }
5539        #[automatically_derived]
5540        #[doc(hidden)]
5541        impl ::core::convert::From<ExitEscrowPeriodInvalid> for UnderlyingRustTuple<'_> {
5542            fn from(value: ExitEscrowPeriodInvalid) -> Self {
5543                ()
5544            }
5545        }
5546        #[automatically_derived]
5547        #[doc(hidden)]
5548        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExitEscrowPeriodInvalid {
5549            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5550                Self
5551            }
5552        }
5553        #[automatically_derived]
5554        impl alloy_sol_types::SolError for ExitEscrowPeriodInvalid {
5555            type Parameters<'a> = UnderlyingSolTuple<'a>;
5556            type Token<'a> = <Self::Parameters<
5557                'a,
5558            > as alloy_sol_types::SolType>::Token<'a>;
5559            const SIGNATURE: &'static str = "ExitEscrowPeriodInvalid()";
5560            const SELECTOR: [u8; 4] = [181u8, 126u8, 33u8, 223u8];
5561            #[inline]
5562            fn new<'a>(
5563                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5564            ) -> Self {
5565                tuple.into()
5566            }
5567            #[inline]
5568            fn tokenize(&self) -> Self::Token<'_> {
5569                ()
5570            }
5571            #[inline]
5572            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5573                Self::abi_decode_raw_with_config(
5574                    data,
5575                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5576                )
5577            }
5578        }
5579    };
5580    #[derive(serde::Serialize, serde::Deserialize)]
5581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5582    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
5583```solidity
5584error ExpectedPause();
5585```*/
5586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5587    #[derive(Clone)]
5588    pub struct ExpectedPause;
5589    #[allow(
5590        non_camel_case_types,
5591        non_snake_case,
5592        clippy::pub_underscore_fields,
5593        clippy::style
5594    )]
5595    const _: () = {
5596        use alloy::sol_types as alloy_sol_types;
5597        #[doc(hidden)]
5598        #[allow(dead_code)]
5599        type UnderlyingSolTuple<'a> = ();
5600        #[doc(hidden)]
5601        type UnderlyingRustTuple<'a> = ();
5602        #[cfg(test)]
5603        #[allow(dead_code, unreachable_patterns)]
5604        fn _type_assertion(
5605            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5606        ) {
5607            match _t {
5608                alloy_sol_types::private::AssertTypeEq::<
5609                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5610                >(_) => {}
5611            }
5612        }
5613        #[automatically_derived]
5614        #[doc(hidden)]
5615        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
5616            fn from(value: ExpectedPause) -> Self {
5617                ()
5618            }
5619        }
5620        #[automatically_derived]
5621        #[doc(hidden)]
5622        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
5623            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5624                Self
5625            }
5626        }
5627        #[automatically_derived]
5628        impl alloy_sol_types::SolError for ExpectedPause {
5629            type Parameters<'a> = UnderlyingSolTuple<'a>;
5630            type Token<'a> = <Self::Parameters<
5631                'a,
5632            > as alloy_sol_types::SolType>::Token<'a>;
5633            const SIGNATURE: &'static str = "ExpectedPause()";
5634            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
5635            #[inline]
5636            fn new<'a>(
5637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5638            ) -> Self {
5639                tuple.into()
5640            }
5641            #[inline]
5642            fn tokenize(&self) -> Self::Token<'_> {
5643                ()
5644            }
5645            #[inline]
5646            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5647                Self::abi_decode_raw_with_config(
5648                    data,
5649                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5650                )
5651            }
5652        }
5653    };
5654    #[derive(serde::Serialize, serde::Deserialize)]
5655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5656    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5657```solidity
5658error FailedInnerCall();
5659```*/
5660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5661    #[derive(Clone)]
5662    pub struct FailedInnerCall;
5663    #[allow(
5664        non_camel_case_types,
5665        non_snake_case,
5666        clippy::pub_underscore_fields,
5667        clippy::style
5668    )]
5669    const _: () = {
5670        use alloy::sol_types as alloy_sol_types;
5671        #[doc(hidden)]
5672        #[allow(dead_code)]
5673        type UnderlyingSolTuple<'a> = ();
5674        #[doc(hidden)]
5675        type UnderlyingRustTuple<'a> = ();
5676        #[cfg(test)]
5677        #[allow(dead_code, unreachable_patterns)]
5678        fn _type_assertion(
5679            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5680        ) {
5681            match _t {
5682                alloy_sol_types::private::AssertTypeEq::<
5683                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5684                >(_) => {}
5685            }
5686        }
5687        #[automatically_derived]
5688        #[doc(hidden)]
5689        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5690            fn from(value: FailedInnerCall) -> Self {
5691                ()
5692            }
5693        }
5694        #[automatically_derived]
5695        #[doc(hidden)]
5696        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5697            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5698                Self
5699            }
5700        }
5701        #[automatically_derived]
5702        impl alloy_sol_types::SolError for FailedInnerCall {
5703            type Parameters<'a> = UnderlyingSolTuple<'a>;
5704            type Token<'a> = <Self::Parameters<
5705                'a,
5706            > as alloy_sol_types::SolType>::Token<'a>;
5707            const SIGNATURE: &'static str = "FailedInnerCall()";
5708            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5709            #[inline]
5710            fn new<'a>(
5711                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5712            ) -> Self {
5713                tuple.into()
5714            }
5715            #[inline]
5716            fn tokenize(&self) -> Self::Token<'_> {
5717                ()
5718            }
5719            #[inline]
5720            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5721                Self::abi_decode_raw_with_config(
5722                    data,
5723                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5724                )
5725            }
5726        }
5727    };
5728    #[derive(serde::Serialize, serde::Deserialize)]
5729    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5730    /**Custom error with signature `InitialActiveStakeExceedsBalance()` and selector `0x7b269e92`.
5731```solidity
5732error InitialActiveStakeExceedsBalance();
5733```*/
5734    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5735    #[derive(Clone)]
5736    pub struct InitialActiveStakeExceedsBalance;
5737    #[allow(
5738        non_camel_case_types,
5739        non_snake_case,
5740        clippy::pub_underscore_fields,
5741        clippy::style
5742    )]
5743    const _: () = {
5744        use alloy::sol_types as alloy_sol_types;
5745        #[doc(hidden)]
5746        #[allow(dead_code)]
5747        type UnderlyingSolTuple<'a> = ();
5748        #[doc(hidden)]
5749        type UnderlyingRustTuple<'a> = ();
5750        #[cfg(test)]
5751        #[allow(dead_code, unreachable_patterns)]
5752        fn _type_assertion(
5753            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5754        ) {
5755            match _t {
5756                alloy_sol_types::private::AssertTypeEq::<
5757                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5758                >(_) => {}
5759            }
5760        }
5761        #[automatically_derived]
5762        #[doc(hidden)]
5763        impl ::core::convert::From<InitialActiveStakeExceedsBalance>
5764        for UnderlyingRustTuple<'_> {
5765            fn from(value: InitialActiveStakeExceedsBalance) -> Self {
5766                ()
5767            }
5768        }
5769        #[automatically_derived]
5770        #[doc(hidden)]
5771        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5772        for InitialActiveStakeExceedsBalance {
5773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5774                Self
5775            }
5776        }
5777        #[automatically_derived]
5778        impl alloy_sol_types::SolError for InitialActiveStakeExceedsBalance {
5779            type Parameters<'a> = UnderlyingSolTuple<'a>;
5780            type Token<'a> = <Self::Parameters<
5781                'a,
5782            > as alloy_sol_types::SolType>::Token<'a>;
5783            const SIGNATURE: &'static str = "InitialActiveStakeExceedsBalance()";
5784            const SELECTOR: [u8; 4] = [123u8, 38u8, 158u8, 146u8];
5785            #[inline]
5786            fn new<'a>(
5787                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5788            ) -> Self {
5789                tuple.into()
5790            }
5791            #[inline]
5792            fn tokenize(&self) -> Self::Token<'_> {
5793                ()
5794            }
5795            #[inline]
5796            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5797                Self::abi_decode_raw_with_config(
5798                    data,
5799                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5800                )
5801            }
5802        }
5803    };
5804    #[derive(serde::Serialize, serde::Deserialize)]
5805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5806    /**Custom error with signature `InsufficientAllowance(uint256,uint256)` and selector `0x2a1b2dd8`.
5807```solidity
5808error InsufficientAllowance(uint256, uint256);
5809```*/
5810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5811    #[derive(Clone)]
5812    pub struct InsufficientAllowance {
5813        #[allow(missing_docs)]
5814        pub _0: alloy::sol_types::private::primitives::aliases::U256,
5815        #[allow(missing_docs)]
5816        pub _1: alloy::sol_types::private::primitives::aliases::U256,
5817    }
5818    #[allow(
5819        non_camel_case_types,
5820        non_snake_case,
5821        clippy::pub_underscore_fields,
5822        clippy::style
5823    )]
5824    const _: () = {
5825        use alloy::sol_types as alloy_sol_types;
5826        #[doc(hidden)]
5827        #[allow(dead_code)]
5828        type UnderlyingSolTuple<'a> = (
5829            alloy::sol_types::sol_data::Uint<256>,
5830            alloy::sol_types::sol_data::Uint<256>,
5831        );
5832        #[doc(hidden)]
5833        type UnderlyingRustTuple<'a> = (
5834            alloy::sol_types::private::primitives::aliases::U256,
5835            alloy::sol_types::private::primitives::aliases::U256,
5836        );
5837        #[cfg(test)]
5838        #[allow(dead_code, unreachable_patterns)]
5839        fn _type_assertion(
5840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5841        ) {
5842            match _t {
5843                alloy_sol_types::private::AssertTypeEq::<
5844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5845                >(_) => {}
5846            }
5847        }
5848        #[automatically_derived]
5849        #[doc(hidden)]
5850        impl ::core::convert::From<InsufficientAllowance> for UnderlyingRustTuple<'_> {
5851            fn from(value: InsufficientAllowance) -> Self {
5852                (value._0, value._1)
5853            }
5854        }
5855        #[automatically_derived]
5856        #[doc(hidden)]
5857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientAllowance {
5858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5859                Self { _0: tuple.0, _1: tuple.1 }
5860            }
5861        }
5862        #[automatically_derived]
5863        impl alloy_sol_types::SolError for InsufficientAllowance {
5864            type Parameters<'a> = UnderlyingSolTuple<'a>;
5865            type Token<'a> = <Self::Parameters<
5866                'a,
5867            > as alloy_sol_types::SolType>::Token<'a>;
5868            const SIGNATURE: &'static str = "InsufficientAllowance(uint256,uint256)";
5869            const SELECTOR: [u8; 4] = [42u8, 27u8, 45u8, 216u8];
5870            #[inline]
5871            fn new<'a>(
5872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5873            ) -> Self {
5874                tuple.into()
5875            }
5876            #[inline]
5877            fn tokenize(&self) -> Self::Token<'_> {
5878                (
5879                    <alloy::sol_types::sol_data::Uint<
5880                        256,
5881                    > as alloy_sol_types::SolType>::tokenize(&self._0),
5882                    <alloy::sol_types::sol_data::Uint<
5883                        256,
5884                    > as alloy_sol_types::SolType>::tokenize(&self._1),
5885                )
5886            }
5887            #[inline]
5888            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5889                Self::abi_decode_raw_with_config(
5890                    data,
5891                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5892                )
5893            }
5894        }
5895    };
5896    #[derive(serde::Serialize, serde::Deserialize)]
5897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5898    /**Custom error with signature `InsufficientBalance(uint256)` and selector `0x92665351`.
5899```solidity
5900error InsufficientBalance(uint256);
5901```*/
5902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5903    #[derive(Clone)]
5904    pub struct InsufficientBalance(
5905        pub alloy::sol_types::private::primitives::aliases::U256,
5906    );
5907    #[allow(
5908        non_camel_case_types,
5909        non_snake_case,
5910        clippy::pub_underscore_fields,
5911        clippy::style
5912    )]
5913    const _: () = {
5914        use alloy::sol_types as alloy_sol_types;
5915        #[doc(hidden)]
5916        #[allow(dead_code)]
5917        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5918        #[doc(hidden)]
5919        type UnderlyingRustTuple<'a> = (
5920            alloy::sol_types::private::primitives::aliases::U256,
5921        );
5922        #[cfg(test)]
5923        #[allow(dead_code, unreachable_patterns)]
5924        fn _type_assertion(
5925            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5926        ) {
5927            match _t {
5928                alloy_sol_types::private::AssertTypeEq::<
5929                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5930                >(_) => {}
5931            }
5932        }
5933        #[automatically_derived]
5934        #[doc(hidden)]
5935        impl ::core::convert::From<InsufficientBalance> for UnderlyingRustTuple<'_> {
5936            fn from(value: InsufficientBalance) -> Self {
5937                (value.0,)
5938            }
5939        }
5940        #[automatically_derived]
5941        #[doc(hidden)]
5942        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientBalance {
5943            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5944                Self(tuple.0)
5945            }
5946        }
5947        #[automatically_derived]
5948        impl alloy_sol_types::SolError for InsufficientBalance {
5949            type Parameters<'a> = UnderlyingSolTuple<'a>;
5950            type Token<'a> = <Self::Parameters<
5951                'a,
5952            > as alloy_sol_types::SolType>::Token<'a>;
5953            const SIGNATURE: &'static str = "InsufficientBalance(uint256)";
5954            const SELECTOR: [u8; 4] = [146u8, 102u8, 83u8, 81u8];
5955            #[inline]
5956            fn new<'a>(
5957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5958            ) -> Self {
5959                tuple.into()
5960            }
5961            #[inline]
5962            fn tokenize(&self) -> Self::Token<'_> {
5963                (
5964                    <alloy::sol_types::sol_data::Uint<
5965                        256,
5966                    > as alloy_sol_types::SolType>::tokenize(&self.0),
5967                )
5968            }
5969            #[inline]
5970            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5971                Self::abi_decode_raw_with_config(
5972                    data,
5973                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5974                )
5975            }
5976        }
5977    };
5978    #[derive(serde::Serialize, serde::Deserialize)]
5979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5980    /**Custom error with signature `InvalidCommission()` and selector `0xdc81db85`.
5981```solidity
5982error InvalidCommission();
5983```*/
5984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5985    #[derive(Clone)]
5986    pub struct InvalidCommission;
5987    #[allow(
5988        non_camel_case_types,
5989        non_snake_case,
5990        clippy::pub_underscore_fields,
5991        clippy::style
5992    )]
5993    const _: () = {
5994        use alloy::sol_types as alloy_sol_types;
5995        #[doc(hidden)]
5996        #[allow(dead_code)]
5997        type UnderlyingSolTuple<'a> = ();
5998        #[doc(hidden)]
5999        type UnderlyingRustTuple<'a> = ();
6000        #[cfg(test)]
6001        #[allow(dead_code, unreachable_patterns)]
6002        fn _type_assertion(
6003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6004        ) {
6005            match _t {
6006                alloy_sol_types::private::AssertTypeEq::<
6007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6008                >(_) => {}
6009            }
6010        }
6011        #[automatically_derived]
6012        #[doc(hidden)]
6013        impl ::core::convert::From<InvalidCommission> for UnderlyingRustTuple<'_> {
6014            fn from(value: InvalidCommission) -> Self {
6015                ()
6016            }
6017        }
6018        #[automatically_derived]
6019        #[doc(hidden)]
6020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidCommission {
6021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6022                Self
6023            }
6024        }
6025        #[automatically_derived]
6026        impl alloy_sol_types::SolError for InvalidCommission {
6027            type Parameters<'a> = UnderlyingSolTuple<'a>;
6028            type Token<'a> = <Self::Parameters<
6029                'a,
6030            > as alloy_sol_types::SolType>::Token<'a>;
6031            const SIGNATURE: &'static str = "InvalidCommission()";
6032            const SELECTOR: [u8; 4] = [220u8, 129u8, 219u8, 133u8];
6033            #[inline]
6034            fn new<'a>(
6035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6036            ) -> Self {
6037                tuple.into()
6038            }
6039            #[inline]
6040            fn tokenize(&self) -> Self::Token<'_> {
6041                ()
6042            }
6043            #[inline]
6044            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6045                Self::abi_decode_raw_with_config(
6046                    data,
6047                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6048                )
6049            }
6050        }
6051    };
6052    #[derive(serde::Serialize, serde::Deserialize)]
6053    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6054    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
6055```solidity
6056error InvalidG1();
6057```*/
6058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6059    #[derive(Clone)]
6060    pub struct InvalidG1;
6061    #[allow(
6062        non_camel_case_types,
6063        non_snake_case,
6064        clippy::pub_underscore_fields,
6065        clippy::style
6066    )]
6067    const _: () = {
6068        use alloy::sol_types as alloy_sol_types;
6069        #[doc(hidden)]
6070        #[allow(dead_code)]
6071        type UnderlyingSolTuple<'a> = ();
6072        #[doc(hidden)]
6073        type UnderlyingRustTuple<'a> = ();
6074        #[cfg(test)]
6075        #[allow(dead_code, unreachable_patterns)]
6076        fn _type_assertion(
6077            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6078        ) {
6079            match _t {
6080                alloy_sol_types::private::AssertTypeEq::<
6081                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6082                >(_) => {}
6083            }
6084        }
6085        #[automatically_derived]
6086        #[doc(hidden)]
6087        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
6088            fn from(value: InvalidG1) -> Self {
6089                ()
6090            }
6091        }
6092        #[automatically_derived]
6093        #[doc(hidden)]
6094        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
6095            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6096                Self
6097            }
6098        }
6099        #[automatically_derived]
6100        impl alloy_sol_types::SolError for InvalidG1 {
6101            type Parameters<'a> = UnderlyingSolTuple<'a>;
6102            type Token<'a> = <Self::Parameters<
6103                'a,
6104            > as alloy_sol_types::SolType>::Token<'a>;
6105            const SIGNATURE: &'static str = "InvalidG1()";
6106            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
6107            #[inline]
6108            fn new<'a>(
6109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6110            ) -> Self {
6111                tuple.into()
6112            }
6113            #[inline]
6114            fn tokenize(&self) -> Self::Token<'_> {
6115                ()
6116            }
6117            #[inline]
6118            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6119                Self::abi_decode_raw_with_config(
6120                    data,
6121                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6122                )
6123            }
6124        }
6125    };
6126    #[derive(serde::Serialize, serde::Deserialize)]
6127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6128    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6129```solidity
6130error InvalidInitialization();
6131```*/
6132    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6133    #[derive(Clone)]
6134    pub struct InvalidInitialization;
6135    #[allow(
6136        non_camel_case_types,
6137        non_snake_case,
6138        clippy::pub_underscore_fields,
6139        clippy::style
6140    )]
6141    const _: () = {
6142        use alloy::sol_types as alloy_sol_types;
6143        #[doc(hidden)]
6144        #[allow(dead_code)]
6145        type UnderlyingSolTuple<'a> = ();
6146        #[doc(hidden)]
6147        type UnderlyingRustTuple<'a> = ();
6148        #[cfg(test)]
6149        #[allow(dead_code, unreachable_patterns)]
6150        fn _type_assertion(
6151            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6152        ) {
6153            match _t {
6154                alloy_sol_types::private::AssertTypeEq::<
6155                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6156                >(_) => {}
6157            }
6158        }
6159        #[automatically_derived]
6160        #[doc(hidden)]
6161        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6162            fn from(value: InvalidInitialization) -> Self {
6163                ()
6164            }
6165        }
6166        #[automatically_derived]
6167        #[doc(hidden)]
6168        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6169            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6170                Self
6171            }
6172        }
6173        #[automatically_derived]
6174        impl alloy_sol_types::SolError for InvalidInitialization {
6175            type Parameters<'a> = UnderlyingSolTuple<'a>;
6176            type Token<'a> = <Self::Parameters<
6177                'a,
6178            > as alloy_sol_types::SolType>::Token<'a>;
6179            const SIGNATURE: &'static str = "InvalidInitialization()";
6180            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6181            #[inline]
6182            fn new<'a>(
6183                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6184            ) -> Self {
6185                tuple.into()
6186            }
6187            #[inline]
6188            fn tokenize(&self) -> Self::Token<'_> {
6189                ()
6190            }
6191            #[inline]
6192            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6193                Self::abi_decode_raw_with_config(
6194                    data,
6195                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6196                )
6197            }
6198        }
6199    };
6200    #[derive(serde::Serialize, serde::Deserialize)]
6201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6202    /**Custom error with signature `InvalidMetadataUriLength()` and selector `0x239ff57f`.
6203```solidity
6204error InvalidMetadataUriLength();
6205```*/
6206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6207    #[derive(Clone)]
6208    pub struct InvalidMetadataUriLength;
6209    #[allow(
6210        non_camel_case_types,
6211        non_snake_case,
6212        clippy::pub_underscore_fields,
6213        clippy::style
6214    )]
6215    const _: () = {
6216        use alloy::sol_types as alloy_sol_types;
6217        #[doc(hidden)]
6218        #[allow(dead_code)]
6219        type UnderlyingSolTuple<'a> = ();
6220        #[doc(hidden)]
6221        type UnderlyingRustTuple<'a> = ();
6222        #[cfg(test)]
6223        #[allow(dead_code, unreachable_patterns)]
6224        fn _type_assertion(
6225            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6226        ) {
6227            match _t {
6228                alloy_sol_types::private::AssertTypeEq::<
6229                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6230                >(_) => {}
6231            }
6232        }
6233        #[automatically_derived]
6234        #[doc(hidden)]
6235        impl ::core::convert::From<InvalidMetadataUriLength>
6236        for UnderlyingRustTuple<'_> {
6237            fn from(value: InvalidMetadataUriLength) -> Self {
6238                ()
6239            }
6240        }
6241        #[automatically_derived]
6242        #[doc(hidden)]
6243        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6244        for InvalidMetadataUriLength {
6245            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6246                Self
6247            }
6248        }
6249        #[automatically_derived]
6250        impl alloy_sol_types::SolError for InvalidMetadataUriLength {
6251            type Parameters<'a> = UnderlyingSolTuple<'a>;
6252            type Token<'a> = <Self::Parameters<
6253                'a,
6254            > as alloy_sol_types::SolType>::Token<'a>;
6255            const SIGNATURE: &'static str = "InvalidMetadataUriLength()";
6256            const SELECTOR: [u8; 4] = [35u8, 159u8, 245u8, 127u8];
6257            #[inline]
6258            fn new<'a>(
6259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6260            ) -> Self {
6261                tuple.into()
6262            }
6263            #[inline]
6264            fn tokenize(&self) -> Self::Token<'_> {
6265                ()
6266            }
6267            #[inline]
6268            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6269                Self::abi_decode_raw_with_config(
6270                    data,
6271                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6272                )
6273            }
6274        }
6275    };
6276    #[derive(serde::Serialize, serde::Deserialize)]
6277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6278    /**Custom error with signature `InvalidRateLimitParameters()` and selector `0x674e8ef3`.
6279```solidity
6280error InvalidRateLimitParameters();
6281```*/
6282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6283    #[derive(Clone)]
6284    pub struct InvalidRateLimitParameters;
6285    #[allow(
6286        non_camel_case_types,
6287        non_snake_case,
6288        clippy::pub_underscore_fields,
6289        clippy::style
6290    )]
6291    const _: () = {
6292        use alloy::sol_types as alloy_sol_types;
6293        #[doc(hidden)]
6294        #[allow(dead_code)]
6295        type UnderlyingSolTuple<'a> = ();
6296        #[doc(hidden)]
6297        type UnderlyingRustTuple<'a> = ();
6298        #[cfg(test)]
6299        #[allow(dead_code, unreachable_patterns)]
6300        fn _type_assertion(
6301            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6302        ) {
6303            match _t {
6304                alloy_sol_types::private::AssertTypeEq::<
6305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6306                >(_) => {}
6307            }
6308        }
6309        #[automatically_derived]
6310        #[doc(hidden)]
6311        impl ::core::convert::From<InvalidRateLimitParameters>
6312        for UnderlyingRustTuple<'_> {
6313            fn from(value: InvalidRateLimitParameters) -> Self {
6314                ()
6315            }
6316        }
6317        #[automatically_derived]
6318        #[doc(hidden)]
6319        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6320        for InvalidRateLimitParameters {
6321            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6322                Self
6323            }
6324        }
6325        #[automatically_derived]
6326        impl alloy_sol_types::SolError for InvalidRateLimitParameters {
6327            type Parameters<'a> = UnderlyingSolTuple<'a>;
6328            type Token<'a> = <Self::Parameters<
6329                'a,
6330            > as alloy_sol_types::SolType>::Token<'a>;
6331            const SIGNATURE: &'static str = "InvalidRateLimitParameters()";
6332            const SELECTOR: [u8; 4] = [103u8, 78u8, 142u8, 243u8];
6333            #[inline]
6334            fn new<'a>(
6335                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6336            ) -> Self {
6337                tuple.into()
6338            }
6339            #[inline]
6340            fn tokenize(&self) -> Self::Token<'_> {
6341                ()
6342            }
6343            #[inline]
6344            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6345                Self::abi_decode_raw_with_config(
6346                    data,
6347                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6348                )
6349            }
6350        }
6351    };
6352    #[derive(serde::Serialize, serde::Deserialize)]
6353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6354    /**Custom error with signature `InvalidSchnorrSig()` and selector `0x42470687`.
6355```solidity
6356error InvalidSchnorrSig();
6357```*/
6358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6359    #[derive(Clone)]
6360    pub struct InvalidSchnorrSig;
6361    #[allow(
6362        non_camel_case_types,
6363        non_snake_case,
6364        clippy::pub_underscore_fields,
6365        clippy::style
6366    )]
6367    const _: () = {
6368        use alloy::sol_types as alloy_sol_types;
6369        #[doc(hidden)]
6370        #[allow(dead_code)]
6371        type UnderlyingSolTuple<'a> = ();
6372        #[doc(hidden)]
6373        type UnderlyingRustTuple<'a> = ();
6374        #[cfg(test)]
6375        #[allow(dead_code, unreachable_patterns)]
6376        fn _type_assertion(
6377            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6378        ) {
6379            match _t {
6380                alloy_sol_types::private::AssertTypeEq::<
6381                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6382                >(_) => {}
6383            }
6384        }
6385        #[automatically_derived]
6386        #[doc(hidden)]
6387        impl ::core::convert::From<InvalidSchnorrSig> for UnderlyingRustTuple<'_> {
6388            fn from(value: InvalidSchnorrSig) -> Self {
6389                ()
6390            }
6391        }
6392        #[automatically_derived]
6393        #[doc(hidden)]
6394        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrSig {
6395            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6396                Self
6397            }
6398        }
6399        #[automatically_derived]
6400        impl alloy_sol_types::SolError for InvalidSchnorrSig {
6401            type Parameters<'a> = UnderlyingSolTuple<'a>;
6402            type Token<'a> = <Self::Parameters<
6403                'a,
6404            > as alloy_sol_types::SolType>::Token<'a>;
6405            const SIGNATURE: &'static str = "InvalidSchnorrSig()";
6406            const SELECTOR: [u8; 4] = [66u8, 71u8, 6u8, 135u8];
6407            #[inline]
6408            fn new<'a>(
6409                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6410            ) -> Self {
6411                tuple.into()
6412            }
6413            #[inline]
6414            fn tokenize(&self) -> Self::Token<'_> {
6415                ()
6416            }
6417            #[inline]
6418            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6419                Self::abi_decode_raw_with_config(
6420                    data,
6421                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6422                )
6423            }
6424        }
6425    };
6426    #[derive(serde::Serialize, serde::Deserialize)]
6427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6428    /**Custom error with signature `InvalidSchnorrVK()` and selector `0x06cf438f`.
6429```solidity
6430error InvalidSchnorrVK();
6431```*/
6432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6433    #[derive(Clone)]
6434    pub struct InvalidSchnorrVK;
6435    #[allow(
6436        non_camel_case_types,
6437        non_snake_case,
6438        clippy::pub_underscore_fields,
6439        clippy::style
6440    )]
6441    const _: () = {
6442        use alloy::sol_types as alloy_sol_types;
6443        #[doc(hidden)]
6444        #[allow(dead_code)]
6445        type UnderlyingSolTuple<'a> = ();
6446        #[doc(hidden)]
6447        type UnderlyingRustTuple<'a> = ();
6448        #[cfg(test)]
6449        #[allow(dead_code, unreachable_patterns)]
6450        fn _type_assertion(
6451            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6452        ) {
6453            match _t {
6454                alloy_sol_types::private::AssertTypeEq::<
6455                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6456                >(_) => {}
6457            }
6458        }
6459        #[automatically_derived]
6460        #[doc(hidden)]
6461        impl ::core::convert::From<InvalidSchnorrVK> for UnderlyingRustTuple<'_> {
6462            fn from(value: InvalidSchnorrVK) -> Self {
6463                ()
6464            }
6465        }
6466        #[automatically_derived]
6467        #[doc(hidden)]
6468        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidSchnorrVK {
6469            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6470                Self
6471            }
6472        }
6473        #[automatically_derived]
6474        impl alloy_sol_types::SolError for InvalidSchnorrVK {
6475            type Parameters<'a> = UnderlyingSolTuple<'a>;
6476            type Token<'a> = <Self::Parameters<
6477                'a,
6478            > as alloy_sol_types::SolType>::Token<'a>;
6479            const SIGNATURE: &'static str = "InvalidSchnorrVK()";
6480            const SELECTOR: [u8; 4] = [6u8, 207u8, 67u8, 143u8];
6481            #[inline]
6482            fn new<'a>(
6483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6484            ) -> Self {
6485                tuple.into()
6486            }
6487            #[inline]
6488            fn tokenize(&self) -> Self::Token<'_> {
6489                ()
6490            }
6491            #[inline]
6492            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6493                Self::abi_decode_raw_with_config(
6494                    data,
6495                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6496                )
6497            }
6498        }
6499    };
6500    #[derive(serde::Serialize, serde::Deserialize)]
6501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6502    /**Custom error with signature `MinDelegateAmountTooSmall()` and selector `0x90b8678a`.
6503```solidity
6504error MinDelegateAmountTooSmall();
6505```*/
6506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6507    #[derive(Clone)]
6508    pub struct MinDelegateAmountTooSmall;
6509    #[allow(
6510        non_camel_case_types,
6511        non_snake_case,
6512        clippy::pub_underscore_fields,
6513        clippy::style
6514    )]
6515    const _: () = {
6516        use alloy::sol_types as alloy_sol_types;
6517        #[doc(hidden)]
6518        #[allow(dead_code)]
6519        type UnderlyingSolTuple<'a> = ();
6520        #[doc(hidden)]
6521        type UnderlyingRustTuple<'a> = ();
6522        #[cfg(test)]
6523        #[allow(dead_code, unreachable_patterns)]
6524        fn _type_assertion(
6525            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6526        ) {
6527            match _t {
6528                alloy_sol_types::private::AssertTypeEq::<
6529                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6530                >(_) => {}
6531            }
6532        }
6533        #[automatically_derived]
6534        #[doc(hidden)]
6535        impl ::core::convert::From<MinDelegateAmountTooSmall>
6536        for UnderlyingRustTuple<'_> {
6537            fn from(value: MinDelegateAmountTooSmall) -> Self {
6538                ()
6539            }
6540        }
6541        #[automatically_derived]
6542        #[doc(hidden)]
6543        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6544        for MinDelegateAmountTooSmall {
6545            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6546                Self
6547            }
6548        }
6549        #[automatically_derived]
6550        impl alloy_sol_types::SolError for MinDelegateAmountTooSmall {
6551            type Parameters<'a> = UnderlyingSolTuple<'a>;
6552            type Token<'a> = <Self::Parameters<
6553                'a,
6554            > as alloy_sol_types::SolType>::Token<'a>;
6555            const SIGNATURE: &'static str = "MinDelegateAmountTooSmall()";
6556            const SELECTOR: [u8; 4] = [144u8, 184u8, 103u8, 138u8];
6557            #[inline]
6558            fn new<'a>(
6559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6560            ) -> Self {
6561                tuple.into()
6562            }
6563            #[inline]
6564            fn tokenize(&self) -> Self::Token<'_> {
6565                ()
6566            }
6567            #[inline]
6568            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6569                Self::abi_decode_raw_with_config(
6570                    data,
6571                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6572                )
6573            }
6574        }
6575    };
6576    #[derive(serde::Serialize, serde::Deserialize)]
6577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6578    /**Custom error with signature `NoUndelegationFound()` and selector `0xb524fd6a`.
6579```solidity
6580error NoUndelegationFound();
6581```*/
6582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6583    #[derive(Clone)]
6584    pub struct NoUndelegationFound;
6585    #[allow(
6586        non_camel_case_types,
6587        non_snake_case,
6588        clippy::pub_underscore_fields,
6589        clippy::style
6590    )]
6591    const _: () = {
6592        use alloy::sol_types as alloy_sol_types;
6593        #[doc(hidden)]
6594        #[allow(dead_code)]
6595        type UnderlyingSolTuple<'a> = ();
6596        #[doc(hidden)]
6597        type UnderlyingRustTuple<'a> = ();
6598        #[cfg(test)]
6599        #[allow(dead_code, unreachable_patterns)]
6600        fn _type_assertion(
6601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6602        ) {
6603            match _t {
6604                alloy_sol_types::private::AssertTypeEq::<
6605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6606                >(_) => {}
6607            }
6608        }
6609        #[automatically_derived]
6610        #[doc(hidden)]
6611        impl ::core::convert::From<NoUndelegationFound> for UnderlyingRustTuple<'_> {
6612            fn from(value: NoUndelegationFound) -> Self {
6613                ()
6614            }
6615        }
6616        #[automatically_derived]
6617        #[doc(hidden)]
6618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoUndelegationFound {
6619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6620                Self
6621            }
6622        }
6623        #[automatically_derived]
6624        impl alloy_sol_types::SolError for NoUndelegationFound {
6625            type Parameters<'a> = UnderlyingSolTuple<'a>;
6626            type Token<'a> = <Self::Parameters<
6627                'a,
6628            > as alloy_sol_types::SolType>::Token<'a>;
6629            const SIGNATURE: &'static str = "NoUndelegationFound()";
6630            const SELECTOR: [u8; 4] = [181u8, 36u8, 253u8, 106u8];
6631            #[inline]
6632            fn new<'a>(
6633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6634            ) -> Self {
6635                tuple.into()
6636            }
6637            #[inline]
6638            fn tokenize(&self) -> Self::Token<'_> {
6639                ()
6640            }
6641            #[inline]
6642            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6643                Self::abi_decode_raw_with_config(
6644                    data,
6645                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6646                )
6647            }
6648        }
6649    };
6650    #[derive(serde::Serialize, serde::Deserialize)]
6651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6652    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6653```solidity
6654error NotInitializing();
6655```*/
6656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6657    #[derive(Clone)]
6658    pub struct NotInitializing;
6659    #[allow(
6660        non_camel_case_types,
6661        non_snake_case,
6662        clippy::pub_underscore_fields,
6663        clippy::style
6664    )]
6665    const _: () = {
6666        use alloy::sol_types as alloy_sol_types;
6667        #[doc(hidden)]
6668        #[allow(dead_code)]
6669        type UnderlyingSolTuple<'a> = ();
6670        #[doc(hidden)]
6671        type UnderlyingRustTuple<'a> = ();
6672        #[cfg(test)]
6673        #[allow(dead_code, unreachable_patterns)]
6674        fn _type_assertion(
6675            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6676        ) {
6677            match _t {
6678                alloy_sol_types::private::AssertTypeEq::<
6679                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6680                >(_) => {}
6681            }
6682        }
6683        #[automatically_derived]
6684        #[doc(hidden)]
6685        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6686            fn from(value: NotInitializing) -> Self {
6687                ()
6688            }
6689        }
6690        #[automatically_derived]
6691        #[doc(hidden)]
6692        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6693            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6694                Self
6695            }
6696        }
6697        #[automatically_derived]
6698        impl alloy_sol_types::SolError for NotInitializing {
6699            type Parameters<'a> = UnderlyingSolTuple<'a>;
6700            type Token<'a> = <Self::Parameters<
6701                'a,
6702            > as alloy_sol_types::SolType>::Token<'a>;
6703            const SIGNATURE: &'static str = "NotInitializing()";
6704            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6705            #[inline]
6706            fn new<'a>(
6707                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6708            ) -> Self {
6709                tuple.into()
6710            }
6711            #[inline]
6712            fn tokenize(&self) -> Self::Token<'_> {
6713                ()
6714            }
6715            #[inline]
6716            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6717                Self::abi_decode_raw_with_config(
6718                    data,
6719                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6720                )
6721            }
6722        }
6723    };
6724    #[derive(serde::Serialize, serde::Deserialize)]
6725    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6726    /**Custom error with signature `NothingToWithdraw()` and selector `0xd0d04f60`.
6727```solidity
6728error NothingToWithdraw();
6729```*/
6730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6731    #[derive(Clone)]
6732    pub struct NothingToWithdraw;
6733    #[allow(
6734        non_camel_case_types,
6735        non_snake_case,
6736        clippy::pub_underscore_fields,
6737        clippy::style
6738    )]
6739    const _: () = {
6740        use alloy::sol_types as alloy_sol_types;
6741        #[doc(hidden)]
6742        #[allow(dead_code)]
6743        type UnderlyingSolTuple<'a> = ();
6744        #[doc(hidden)]
6745        type UnderlyingRustTuple<'a> = ();
6746        #[cfg(test)]
6747        #[allow(dead_code, unreachable_patterns)]
6748        fn _type_assertion(
6749            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6750        ) {
6751            match _t {
6752                alloy_sol_types::private::AssertTypeEq::<
6753                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6754                >(_) => {}
6755            }
6756        }
6757        #[automatically_derived]
6758        #[doc(hidden)]
6759        impl ::core::convert::From<NothingToWithdraw> for UnderlyingRustTuple<'_> {
6760            fn from(value: NothingToWithdraw) -> Self {
6761                ()
6762            }
6763        }
6764        #[automatically_derived]
6765        #[doc(hidden)]
6766        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NothingToWithdraw {
6767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6768                Self
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::SolError for NothingToWithdraw {
6773            type Parameters<'a> = UnderlyingSolTuple<'a>;
6774            type Token<'a> = <Self::Parameters<
6775                'a,
6776            > as alloy_sol_types::SolType>::Token<'a>;
6777            const SIGNATURE: &'static str = "NothingToWithdraw()";
6778            const SELECTOR: [u8; 4] = [208u8, 208u8, 79u8, 96u8];
6779            #[inline]
6780            fn new<'a>(
6781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6782            ) -> Self {
6783                tuple.into()
6784            }
6785            #[inline]
6786            fn tokenize(&self) -> Self::Token<'_> {
6787                ()
6788            }
6789            #[inline]
6790            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6791                Self::abi_decode_raw_with_config(
6792                    data,
6793                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6794                )
6795            }
6796        }
6797    };
6798    #[derive(serde::Serialize, serde::Deserialize)]
6799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6800    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6801```solidity
6802error OwnableInvalidOwner(address owner);
6803```*/
6804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6805    #[derive(Clone)]
6806    pub struct OwnableInvalidOwner {
6807        #[allow(missing_docs)]
6808        pub owner: alloy::sol_types::private::Address,
6809    }
6810    #[allow(
6811        non_camel_case_types,
6812        non_snake_case,
6813        clippy::pub_underscore_fields,
6814        clippy::style
6815    )]
6816    const _: () = {
6817        use alloy::sol_types as alloy_sol_types;
6818        #[doc(hidden)]
6819        #[allow(dead_code)]
6820        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6821        #[doc(hidden)]
6822        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6823        #[cfg(test)]
6824        #[allow(dead_code, unreachable_patterns)]
6825        fn _type_assertion(
6826            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6827        ) {
6828            match _t {
6829                alloy_sol_types::private::AssertTypeEq::<
6830                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6831                >(_) => {}
6832            }
6833        }
6834        #[automatically_derived]
6835        #[doc(hidden)]
6836        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6837            fn from(value: OwnableInvalidOwner) -> Self {
6838                (value.owner,)
6839            }
6840        }
6841        #[automatically_derived]
6842        #[doc(hidden)]
6843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6845                Self { owner: tuple.0 }
6846            }
6847        }
6848        #[automatically_derived]
6849        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6850            type Parameters<'a> = UnderlyingSolTuple<'a>;
6851            type Token<'a> = <Self::Parameters<
6852                'a,
6853            > as alloy_sol_types::SolType>::Token<'a>;
6854            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6855            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6856            #[inline]
6857            fn new<'a>(
6858                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6859            ) -> Self {
6860                tuple.into()
6861            }
6862            #[inline]
6863            fn tokenize(&self) -> Self::Token<'_> {
6864                (
6865                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6866                        &self.owner,
6867                    ),
6868                )
6869            }
6870            #[inline]
6871            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6872                Self::abi_decode_raw_with_config(
6873                    data,
6874                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6875                )
6876            }
6877        }
6878    };
6879    #[derive(serde::Serialize, serde::Deserialize)]
6880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6881    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6882```solidity
6883error OwnableUnauthorizedAccount(address account);
6884```*/
6885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6886    #[derive(Clone)]
6887    pub struct OwnableUnauthorizedAccount {
6888        #[allow(missing_docs)]
6889        pub account: alloy::sol_types::private::Address,
6890    }
6891    #[allow(
6892        non_camel_case_types,
6893        non_snake_case,
6894        clippy::pub_underscore_fields,
6895        clippy::style
6896    )]
6897    const _: () = {
6898        use alloy::sol_types as alloy_sol_types;
6899        #[doc(hidden)]
6900        #[allow(dead_code)]
6901        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6902        #[doc(hidden)]
6903        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6904        #[cfg(test)]
6905        #[allow(dead_code, unreachable_patterns)]
6906        fn _type_assertion(
6907            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6908        ) {
6909            match _t {
6910                alloy_sol_types::private::AssertTypeEq::<
6911                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6912                >(_) => {}
6913            }
6914        }
6915        #[automatically_derived]
6916        #[doc(hidden)]
6917        impl ::core::convert::From<OwnableUnauthorizedAccount>
6918        for UnderlyingRustTuple<'_> {
6919            fn from(value: OwnableUnauthorizedAccount) -> Self {
6920                (value.account,)
6921            }
6922        }
6923        #[automatically_derived]
6924        #[doc(hidden)]
6925        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6926        for OwnableUnauthorizedAccount {
6927            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6928                Self { account: tuple.0 }
6929            }
6930        }
6931        #[automatically_derived]
6932        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6933            type Parameters<'a> = UnderlyingSolTuple<'a>;
6934            type Token<'a> = <Self::Parameters<
6935                'a,
6936            > as alloy_sol_types::SolType>::Token<'a>;
6937            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6938            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6939            #[inline]
6940            fn new<'a>(
6941                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6942            ) -> Self {
6943                tuple.into()
6944            }
6945            #[inline]
6946            fn tokenize(&self) -> Self::Token<'_> {
6947                (
6948                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6949                        &self.account,
6950                    ),
6951                )
6952            }
6953            #[inline]
6954            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6955                Self::abi_decode_raw_with_config(
6956                    data,
6957                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6958                )
6959            }
6960        }
6961    };
6962    #[derive(serde::Serialize, serde::Deserialize)]
6963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6964    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6965```solidity
6966error OwnershipCannotBeRenounced();
6967```*/
6968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6969    #[derive(Clone)]
6970    pub struct OwnershipCannotBeRenounced;
6971    #[allow(
6972        non_camel_case_types,
6973        non_snake_case,
6974        clippy::pub_underscore_fields,
6975        clippy::style
6976    )]
6977    const _: () = {
6978        use alloy::sol_types as alloy_sol_types;
6979        #[doc(hidden)]
6980        #[allow(dead_code)]
6981        type UnderlyingSolTuple<'a> = ();
6982        #[doc(hidden)]
6983        type UnderlyingRustTuple<'a> = ();
6984        #[cfg(test)]
6985        #[allow(dead_code, unreachable_patterns)]
6986        fn _type_assertion(
6987            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6988        ) {
6989            match _t {
6990                alloy_sol_types::private::AssertTypeEq::<
6991                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6992                >(_) => {}
6993            }
6994        }
6995        #[automatically_derived]
6996        #[doc(hidden)]
6997        impl ::core::convert::From<OwnershipCannotBeRenounced>
6998        for UnderlyingRustTuple<'_> {
6999            fn from(value: OwnershipCannotBeRenounced) -> Self {
7000                ()
7001            }
7002        }
7003        #[automatically_derived]
7004        #[doc(hidden)]
7005        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7006        for OwnershipCannotBeRenounced {
7007            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7008                Self
7009            }
7010        }
7011        #[automatically_derived]
7012        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7013            type Parameters<'a> = UnderlyingSolTuple<'a>;
7014            type Token<'a> = <Self::Parameters<
7015                'a,
7016            > as alloy_sol_types::SolType>::Token<'a>;
7017            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7018            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7019            #[inline]
7020            fn new<'a>(
7021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7022            ) -> Self {
7023                tuple.into()
7024            }
7025            #[inline]
7026            fn tokenize(&self) -> Self::Token<'_> {
7027                ()
7028            }
7029            #[inline]
7030            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7031                Self::abi_decode_raw_with_config(
7032                    data,
7033                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7034                )
7035            }
7036        }
7037    };
7038    #[derive(serde::Serialize, serde::Deserialize)]
7039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7040    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
7041```solidity
7042error PowPrecompileFailed();
7043```*/
7044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7045    #[derive(Clone)]
7046    pub struct PowPrecompileFailed;
7047    #[allow(
7048        non_camel_case_types,
7049        non_snake_case,
7050        clippy::pub_underscore_fields,
7051        clippy::style
7052    )]
7053    const _: () = {
7054        use alloy::sol_types as alloy_sol_types;
7055        #[doc(hidden)]
7056        #[allow(dead_code)]
7057        type UnderlyingSolTuple<'a> = ();
7058        #[doc(hidden)]
7059        type UnderlyingRustTuple<'a> = ();
7060        #[cfg(test)]
7061        #[allow(dead_code, unreachable_patterns)]
7062        fn _type_assertion(
7063            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7064        ) {
7065            match _t {
7066                alloy_sol_types::private::AssertTypeEq::<
7067                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7068                >(_) => {}
7069            }
7070        }
7071        #[automatically_derived]
7072        #[doc(hidden)]
7073        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
7074            fn from(value: PowPrecompileFailed) -> Self {
7075                ()
7076            }
7077        }
7078        #[automatically_derived]
7079        #[doc(hidden)]
7080        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
7081            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7082                Self
7083            }
7084        }
7085        #[automatically_derived]
7086        impl alloy_sol_types::SolError for PowPrecompileFailed {
7087            type Parameters<'a> = UnderlyingSolTuple<'a>;
7088            type Token<'a> = <Self::Parameters<
7089                'a,
7090            > as alloy_sol_types::SolType>::Token<'a>;
7091            const SIGNATURE: &'static str = "PowPrecompileFailed()";
7092            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
7093            #[inline]
7094            fn new<'a>(
7095                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7096            ) -> Self {
7097                tuple.into()
7098            }
7099            #[inline]
7100            fn tokenize(&self) -> Self::Token<'_> {
7101                ()
7102            }
7103            #[inline]
7104            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7105                Self::abi_decode_raw_with_config(
7106                    data,
7107                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7108                )
7109            }
7110        }
7111    };
7112    #[derive(serde::Serialize, serde::Deserialize)]
7113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7114    /**Custom error with signature `PrematureWithdrawal()` and selector `0x5a774357`.
7115```solidity
7116error PrematureWithdrawal();
7117```*/
7118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7119    #[derive(Clone)]
7120    pub struct PrematureWithdrawal;
7121    #[allow(
7122        non_camel_case_types,
7123        non_snake_case,
7124        clippy::pub_underscore_fields,
7125        clippy::style
7126    )]
7127    const _: () = {
7128        use alloy::sol_types as alloy_sol_types;
7129        #[doc(hidden)]
7130        #[allow(dead_code)]
7131        type UnderlyingSolTuple<'a> = ();
7132        #[doc(hidden)]
7133        type UnderlyingRustTuple<'a> = ();
7134        #[cfg(test)]
7135        #[allow(dead_code, unreachable_patterns)]
7136        fn _type_assertion(
7137            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7138        ) {
7139            match _t {
7140                alloy_sol_types::private::AssertTypeEq::<
7141                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7142                >(_) => {}
7143            }
7144        }
7145        #[automatically_derived]
7146        #[doc(hidden)]
7147        impl ::core::convert::From<PrematureWithdrawal> for UnderlyingRustTuple<'_> {
7148            fn from(value: PrematureWithdrawal) -> Self {
7149                ()
7150            }
7151        }
7152        #[automatically_derived]
7153        #[doc(hidden)]
7154        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PrematureWithdrawal {
7155            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7156                Self
7157            }
7158        }
7159        #[automatically_derived]
7160        impl alloy_sol_types::SolError for PrematureWithdrawal {
7161            type Parameters<'a> = UnderlyingSolTuple<'a>;
7162            type Token<'a> = <Self::Parameters<
7163                'a,
7164            > as alloy_sol_types::SolType>::Token<'a>;
7165            const SIGNATURE: &'static str = "PrematureWithdrawal()";
7166            const SELECTOR: [u8; 4] = [90u8, 119u8, 67u8, 87u8];
7167            #[inline]
7168            fn new<'a>(
7169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7170            ) -> Self {
7171                tuple.into()
7172            }
7173            #[inline]
7174            fn tokenize(&self) -> Self::Token<'_> {
7175                ()
7176            }
7177            #[inline]
7178            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7179                Self::abi_decode_raw_with_config(
7180                    data,
7181                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7182                )
7183            }
7184        }
7185    };
7186    #[derive(serde::Serialize, serde::Deserialize)]
7187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7188    /**Custom error with signature `SchnorrKeyAlreadyUsed()` and selector `0xae493b03`.
7189```solidity
7190error SchnorrKeyAlreadyUsed();
7191```*/
7192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7193    #[derive(Clone)]
7194    pub struct SchnorrKeyAlreadyUsed;
7195    #[allow(
7196        non_camel_case_types,
7197        non_snake_case,
7198        clippy::pub_underscore_fields,
7199        clippy::style
7200    )]
7201    const _: () = {
7202        use alloy::sol_types as alloy_sol_types;
7203        #[doc(hidden)]
7204        #[allow(dead_code)]
7205        type UnderlyingSolTuple<'a> = ();
7206        #[doc(hidden)]
7207        type UnderlyingRustTuple<'a> = ();
7208        #[cfg(test)]
7209        #[allow(dead_code, unreachable_patterns)]
7210        fn _type_assertion(
7211            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7212        ) {
7213            match _t {
7214                alloy_sol_types::private::AssertTypeEq::<
7215                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7216                >(_) => {}
7217            }
7218        }
7219        #[automatically_derived]
7220        #[doc(hidden)]
7221        impl ::core::convert::From<SchnorrKeyAlreadyUsed> for UnderlyingRustTuple<'_> {
7222            fn from(value: SchnorrKeyAlreadyUsed) -> Self {
7223                ()
7224            }
7225        }
7226        #[automatically_derived]
7227        #[doc(hidden)]
7228        impl ::core::convert::From<UnderlyingRustTuple<'_>> for SchnorrKeyAlreadyUsed {
7229            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7230                Self
7231            }
7232        }
7233        #[automatically_derived]
7234        impl alloy_sol_types::SolError for SchnorrKeyAlreadyUsed {
7235            type Parameters<'a> = UnderlyingSolTuple<'a>;
7236            type Token<'a> = <Self::Parameters<
7237                'a,
7238            > as alloy_sol_types::SolType>::Token<'a>;
7239            const SIGNATURE: &'static str = "SchnorrKeyAlreadyUsed()";
7240            const SELECTOR: [u8; 4] = [174u8, 73u8, 59u8, 3u8];
7241            #[inline]
7242            fn new<'a>(
7243                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7244            ) -> Self {
7245                tuple.into()
7246            }
7247            #[inline]
7248            fn tokenize(&self) -> Self::Token<'_> {
7249                ()
7250            }
7251            #[inline]
7252            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7253                Self::abi_decode_raw_with_config(
7254                    data,
7255                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7256                )
7257            }
7258        }
7259    };
7260    #[derive(serde::Serialize, serde::Deserialize)]
7261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7262    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7263```solidity
7264error UUPSUnauthorizedCallContext();
7265```*/
7266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7267    #[derive(Clone)]
7268    pub struct UUPSUnauthorizedCallContext;
7269    #[allow(
7270        non_camel_case_types,
7271        non_snake_case,
7272        clippy::pub_underscore_fields,
7273        clippy::style
7274    )]
7275    const _: () = {
7276        use alloy::sol_types as alloy_sol_types;
7277        #[doc(hidden)]
7278        #[allow(dead_code)]
7279        type UnderlyingSolTuple<'a> = ();
7280        #[doc(hidden)]
7281        type UnderlyingRustTuple<'a> = ();
7282        #[cfg(test)]
7283        #[allow(dead_code, unreachable_patterns)]
7284        fn _type_assertion(
7285            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7286        ) {
7287            match _t {
7288                alloy_sol_types::private::AssertTypeEq::<
7289                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7290                >(_) => {}
7291            }
7292        }
7293        #[automatically_derived]
7294        #[doc(hidden)]
7295        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7296        for UnderlyingRustTuple<'_> {
7297            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7298                ()
7299            }
7300        }
7301        #[automatically_derived]
7302        #[doc(hidden)]
7303        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7304        for UUPSUnauthorizedCallContext {
7305            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7306                Self
7307            }
7308        }
7309        #[automatically_derived]
7310        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7311            type Parameters<'a> = UnderlyingSolTuple<'a>;
7312            type Token<'a> = <Self::Parameters<
7313                'a,
7314            > as alloy_sol_types::SolType>::Token<'a>;
7315            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7316            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7317            #[inline]
7318            fn new<'a>(
7319                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7320            ) -> Self {
7321                tuple.into()
7322            }
7323            #[inline]
7324            fn tokenize(&self) -> Self::Token<'_> {
7325                ()
7326            }
7327            #[inline]
7328            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7329                Self::abi_decode_raw_with_config(
7330                    data,
7331                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7332                )
7333            }
7334        }
7335    };
7336    #[derive(serde::Serialize, serde::Deserialize)]
7337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7338    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7339```solidity
7340error UUPSUnsupportedProxiableUUID(bytes32 slot);
7341```*/
7342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7343    #[derive(Clone)]
7344    pub struct UUPSUnsupportedProxiableUUID {
7345        #[allow(missing_docs)]
7346        pub slot: alloy::sol_types::private::FixedBytes<32>,
7347    }
7348    #[allow(
7349        non_camel_case_types,
7350        non_snake_case,
7351        clippy::pub_underscore_fields,
7352        clippy::style
7353    )]
7354    const _: () = {
7355        use alloy::sol_types as alloy_sol_types;
7356        #[doc(hidden)]
7357        #[allow(dead_code)]
7358        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7359        #[doc(hidden)]
7360        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7361        #[cfg(test)]
7362        #[allow(dead_code, unreachable_patterns)]
7363        fn _type_assertion(
7364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7365        ) {
7366            match _t {
7367                alloy_sol_types::private::AssertTypeEq::<
7368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7369                >(_) => {}
7370            }
7371        }
7372        #[automatically_derived]
7373        #[doc(hidden)]
7374        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7375        for UnderlyingRustTuple<'_> {
7376            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7377                (value.slot,)
7378            }
7379        }
7380        #[automatically_derived]
7381        #[doc(hidden)]
7382        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7383        for UUPSUnsupportedProxiableUUID {
7384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7385                Self { slot: tuple.0 }
7386            }
7387        }
7388        #[automatically_derived]
7389        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7390            type Parameters<'a> = UnderlyingSolTuple<'a>;
7391            type Token<'a> = <Self::Parameters<
7392                'a,
7393            > as alloy_sol_types::SolType>::Token<'a>;
7394            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7395            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7396            #[inline]
7397            fn new<'a>(
7398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7399            ) -> Self {
7400                tuple.into()
7401            }
7402            #[inline]
7403            fn tokenize(&self) -> Self::Token<'_> {
7404                (
7405                    <alloy::sol_types::sol_data::FixedBytes<
7406                        32,
7407                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7408                )
7409            }
7410            #[inline]
7411            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7412                Self::abi_decode_raw_with_config(
7413                    data,
7414                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7415                )
7416            }
7417        }
7418    };
7419    #[derive(serde::Serialize, serde::Deserialize)]
7420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7421    /**Custom error with signature `UndelegationAlreadyExists()` and selector `0xd423a4f1`.
7422```solidity
7423error UndelegationAlreadyExists();
7424```*/
7425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7426    #[derive(Clone)]
7427    pub struct UndelegationAlreadyExists;
7428    #[allow(
7429        non_camel_case_types,
7430        non_snake_case,
7431        clippy::pub_underscore_fields,
7432        clippy::style
7433    )]
7434    const _: () = {
7435        use alloy::sol_types as alloy_sol_types;
7436        #[doc(hidden)]
7437        #[allow(dead_code)]
7438        type UnderlyingSolTuple<'a> = ();
7439        #[doc(hidden)]
7440        type UnderlyingRustTuple<'a> = ();
7441        #[cfg(test)]
7442        #[allow(dead_code, unreachable_patterns)]
7443        fn _type_assertion(
7444            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7445        ) {
7446            match _t {
7447                alloy_sol_types::private::AssertTypeEq::<
7448                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7449                >(_) => {}
7450            }
7451        }
7452        #[automatically_derived]
7453        #[doc(hidden)]
7454        impl ::core::convert::From<UndelegationAlreadyExists>
7455        for UnderlyingRustTuple<'_> {
7456            fn from(value: UndelegationAlreadyExists) -> Self {
7457                ()
7458            }
7459        }
7460        #[automatically_derived]
7461        #[doc(hidden)]
7462        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7463        for UndelegationAlreadyExists {
7464            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7465                Self
7466            }
7467        }
7468        #[automatically_derived]
7469        impl alloy_sol_types::SolError for UndelegationAlreadyExists {
7470            type Parameters<'a> = UnderlyingSolTuple<'a>;
7471            type Token<'a> = <Self::Parameters<
7472                'a,
7473            > as alloy_sol_types::SolType>::Token<'a>;
7474            const SIGNATURE: &'static str = "UndelegationAlreadyExists()";
7475            const SELECTOR: [u8; 4] = [212u8, 35u8, 164u8, 241u8];
7476            #[inline]
7477            fn new<'a>(
7478                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7479            ) -> Self {
7480                tuple.into()
7481            }
7482            #[inline]
7483            fn tokenize(&self) -> Self::Token<'_> {
7484                ()
7485            }
7486            #[inline]
7487            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7488                Self::abi_decode_raw_with_config(
7489                    data,
7490                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7491                )
7492            }
7493        }
7494    };
7495    #[derive(serde::Serialize, serde::Deserialize)]
7496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7497    /**Custom error with signature `ValidatorAlreadyExited()` and selector `0xeab4a963`.
7498```solidity
7499error ValidatorAlreadyExited();
7500```*/
7501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7502    #[derive(Clone)]
7503    pub struct ValidatorAlreadyExited;
7504    #[allow(
7505        non_camel_case_types,
7506        non_snake_case,
7507        clippy::pub_underscore_fields,
7508        clippy::style
7509    )]
7510    const _: () = {
7511        use alloy::sol_types as alloy_sol_types;
7512        #[doc(hidden)]
7513        #[allow(dead_code)]
7514        type UnderlyingSolTuple<'a> = ();
7515        #[doc(hidden)]
7516        type UnderlyingRustTuple<'a> = ();
7517        #[cfg(test)]
7518        #[allow(dead_code, unreachable_patterns)]
7519        fn _type_assertion(
7520            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7521        ) {
7522            match _t {
7523                alloy_sol_types::private::AssertTypeEq::<
7524                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7525                >(_) => {}
7526            }
7527        }
7528        #[automatically_derived]
7529        #[doc(hidden)]
7530        impl ::core::convert::From<ValidatorAlreadyExited> for UnderlyingRustTuple<'_> {
7531            fn from(value: ValidatorAlreadyExited) -> Self {
7532                ()
7533            }
7534        }
7535        #[automatically_derived]
7536        #[doc(hidden)]
7537        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorAlreadyExited {
7538            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7539                Self
7540            }
7541        }
7542        #[automatically_derived]
7543        impl alloy_sol_types::SolError for ValidatorAlreadyExited {
7544            type Parameters<'a> = UnderlyingSolTuple<'a>;
7545            type Token<'a> = <Self::Parameters<
7546                'a,
7547            > as alloy_sol_types::SolType>::Token<'a>;
7548            const SIGNATURE: &'static str = "ValidatorAlreadyExited()";
7549            const SELECTOR: [u8; 4] = [234u8, 180u8, 169u8, 99u8];
7550            #[inline]
7551            fn new<'a>(
7552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7553            ) -> Self {
7554                tuple.into()
7555            }
7556            #[inline]
7557            fn tokenize(&self) -> Self::Token<'_> {
7558                ()
7559            }
7560            #[inline]
7561            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7562                Self::abi_decode_raw_with_config(
7563                    data,
7564                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7565                )
7566            }
7567        }
7568    };
7569    #[derive(serde::Serialize, serde::Deserialize)]
7570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7571    /**Custom error with signature `ValidatorAlreadyRegistered()` and selector `0x9973f7d8`.
7572```solidity
7573error ValidatorAlreadyRegistered();
7574```*/
7575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7576    #[derive(Clone)]
7577    pub struct ValidatorAlreadyRegistered;
7578    #[allow(
7579        non_camel_case_types,
7580        non_snake_case,
7581        clippy::pub_underscore_fields,
7582        clippy::style
7583    )]
7584    const _: () = {
7585        use alloy::sol_types as alloy_sol_types;
7586        #[doc(hidden)]
7587        #[allow(dead_code)]
7588        type UnderlyingSolTuple<'a> = ();
7589        #[doc(hidden)]
7590        type UnderlyingRustTuple<'a> = ();
7591        #[cfg(test)]
7592        #[allow(dead_code, unreachable_patterns)]
7593        fn _type_assertion(
7594            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7595        ) {
7596            match _t {
7597                alloy_sol_types::private::AssertTypeEq::<
7598                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7599                >(_) => {}
7600            }
7601        }
7602        #[automatically_derived]
7603        #[doc(hidden)]
7604        impl ::core::convert::From<ValidatorAlreadyRegistered>
7605        for UnderlyingRustTuple<'_> {
7606            fn from(value: ValidatorAlreadyRegistered) -> Self {
7607                ()
7608            }
7609        }
7610        #[automatically_derived]
7611        #[doc(hidden)]
7612        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7613        for ValidatorAlreadyRegistered {
7614            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7615                Self
7616            }
7617        }
7618        #[automatically_derived]
7619        impl alloy_sol_types::SolError for ValidatorAlreadyRegistered {
7620            type Parameters<'a> = UnderlyingSolTuple<'a>;
7621            type Token<'a> = <Self::Parameters<
7622                'a,
7623            > as alloy_sol_types::SolType>::Token<'a>;
7624            const SIGNATURE: &'static str = "ValidatorAlreadyRegistered()";
7625            const SELECTOR: [u8; 4] = [153u8, 115u8, 247u8, 216u8];
7626            #[inline]
7627            fn new<'a>(
7628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7629            ) -> Self {
7630                tuple.into()
7631            }
7632            #[inline]
7633            fn tokenize(&self) -> Self::Token<'_> {
7634                ()
7635            }
7636            #[inline]
7637            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7638                Self::abi_decode_raw_with_config(
7639                    data,
7640                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7641                )
7642            }
7643        }
7644    };
7645    #[derive(serde::Serialize, serde::Deserialize)]
7646    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7647    /**Custom error with signature `ValidatorInactive()` and selector `0x508a793f`.
7648```solidity
7649error ValidatorInactive();
7650```*/
7651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7652    #[derive(Clone)]
7653    pub struct ValidatorInactive;
7654    #[allow(
7655        non_camel_case_types,
7656        non_snake_case,
7657        clippy::pub_underscore_fields,
7658        clippy::style
7659    )]
7660    const _: () = {
7661        use alloy::sol_types as alloy_sol_types;
7662        #[doc(hidden)]
7663        #[allow(dead_code)]
7664        type UnderlyingSolTuple<'a> = ();
7665        #[doc(hidden)]
7666        type UnderlyingRustTuple<'a> = ();
7667        #[cfg(test)]
7668        #[allow(dead_code, unreachable_patterns)]
7669        fn _type_assertion(
7670            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7671        ) {
7672            match _t {
7673                alloy_sol_types::private::AssertTypeEq::<
7674                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7675                >(_) => {}
7676            }
7677        }
7678        #[automatically_derived]
7679        #[doc(hidden)]
7680        impl ::core::convert::From<ValidatorInactive> for UnderlyingRustTuple<'_> {
7681            fn from(value: ValidatorInactive) -> Self {
7682                ()
7683            }
7684        }
7685        #[automatically_derived]
7686        #[doc(hidden)]
7687        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorInactive {
7688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7689                Self
7690            }
7691        }
7692        #[automatically_derived]
7693        impl alloy_sol_types::SolError for ValidatorInactive {
7694            type Parameters<'a> = UnderlyingSolTuple<'a>;
7695            type Token<'a> = <Self::Parameters<
7696                'a,
7697            > as alloy_sol_types::SolType>::Token<'a>;
7698            const SIGNATURE: &'static str = "ValidatorInactive()";
7699            const SELECTOR: [u8; 4] = [80u8, 138u8, 121u8, 63u8];
7700            #[inline]
7701            fn new<'a>(
7702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7703            ) -> Self {
7704                tuple.into()
7705            }
7706            #[inline]
7707            fn tokenize(&self) -> Self::Token<'_> {
7708                ()
7709            }
7710            #[inline]
7711            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7712                Self::abi_decode_raw_with_config(
7713                    data,
7714                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7715                )
7716            }
7717        }
7718    };
7719    #[derive(serde::Serialize, serde::Deserialize)]
7720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7721    /**Custom error with signature `ValidatorNotExited()` and selector `0xf25314a6`.
7722```solidity
7723error ValidatorNotExited();
7724```*/
7725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7726    #[derive(Clone)]
7727    pub struct ValidatorNotExited;
7728    #[allow(
7729        non_camel_case_types,
7730        non_snake_case,
7731        clippy::pub_underscore_fields,
7732        clippy::style
7733    )]
7734    const _: () = {
7735        use alloy::sol_types as alloy_sol_types;
7736        #[doc(hidden)]
7737        #[allow(dead_code)]
7738        type UnderlyingSolTuple<'a> = ();
7739        #[doc(hidden)]
7740        type UnderlyingRustTuple<'a> = ();
7741        #[cfg(test)]
7742        #[allow(dead_code, unreachable_patterns)]
7743        fn _type_assertion(
7744            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7745        ) {
7746            match _t {
7747                alloy_sol_types::private::AssertTypeEq::<
7748                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7749                >(_) => {}
7750            }
7751        }
7752        #[automatically_derived]
7753        #[doc(hidden)]
7754        impl ::core::convert::From<ValidatorNotExited> for UnderlyingRustTuple<'_> {
7755            fn from(value: ValidatorNotExited) -> Self {
7756                ()
7757            }
7758        }
7759        #[automatically_derived]
7760        #[doc(hidden)]
7761        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ValidatorNotExited {
7762            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7763                Self
7764            }
7765        }
7766        #[automatically_derived]
7767        impl alloy_sol_types::SolError for ValidatorNotExited {
7768            type Parameters<'a> = UnderlyingSolTuple<'a>;
7769            type Token<'a> = <Self::Parameters<
7770                'a,
7771            > as alloy_sol_types::SolType>::Token<'a>;
7772            const SIGNATURE: &'static str = "ValidatorNotExited()";
7773            const SELECTOR: [u8; 4] = [242u8, 83u8, 20u8, 166u8];
7774            #[inline]
7775            fn new<'a>(
7776                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7777            ) -> Self {
7778                tuple.into()
7779            }
7780            #[inline]
7781            fn tokenize(&self) -> Self::Token<'_> {
7782                ()
7783            }
7784            #[inline]
7785            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7786                Self::abi_decode_raw_with_config(
7787                    data,
7788                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7789                )
7790            }
7791        }
7792    };
7793    #[derive(serde::Serialize, serde::Deserialize)]
7794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7795    /**Custom error with signature `ZeroAddress()` and selector `0xd92e233d`.
7796```solidity
7797error ZeroAddress();
7798```*/
7799    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7800    #[derive(Clone)]
7801    pub struct ZeroAddress;
7802    #[allow(
7803        non_camel_case_types,
7804        non_snake_case,
7805        clippy::pub_underscore_fields,
7806        clippy::style
7807    )]
7808    const _: () = {
7809        use alloy::sol_types as alloy_sol_types;
7810        #[doc(hidden)]
7811        #[allow(dead_code)]
7812        type UnderlyingSolTuple<'a> = ();
7813        #[doc(hidden)]
7814        type UnderlyingRustTuple<'a> = ();
7815        #[cfg(test)]
7816        #[allow(dead_code, unreachable_patterns)]
7817        fn _type_assertion(
7818            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7819        ) {
7820            match _t {
7821                alloy_sol_types::private::AssertTypeEq::<
7822                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7823                >(_) => {}
7824            }
7825        }
7826        #[automatically_derived]
7827        #[doc(hidden)]
7828        impl ::core::convert::From<ZeroAddress> for UnderlyingRustTuple<'_> {
7829            fn from(value: ZeroAddress) -> Self {
7830                ()
7831            }
7832        }
7833        #[automatically_derived]
7834        #[doc(hidden)]
7835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAddress {
7836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7837                Self
7838            }
7839        }
7840        #[automatically_derived]
7841        impl alloy_sol_types::SolError for ZeroAddress {
7842            type Parameters<'a> = UnderlyingSolTuple<'a>;
7843            type Token<'a> = <Self::Parameters<
7844                'a,
7845            > as alloy_sol_types::SolType>::Token<'a>;
7846            const SIGNATURE: &'static str = "ZeroAddress()";
7847            const SELECTOR: [u8; 4] = [217u8, 46u8, 35u8, 61u8];
7848            #[inline]
7849            fn new<'a>(
7850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7851            ) -> Self {
7852                tuple.into()
7853            }
7854            #[inline]
7855            fn tokenize(&self) -> Self::Token<'_> {
7856                ()
7857            }
7858            #[inline]
7859            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7860                Self::abi_decode_raw_with_config(
7861                    data,
7862                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7863                )
7864            }
7865        }
7866    };
7867    #[derive(serde::Serialize, serde::Deserialize)]
7868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7869    /**Custom error with signature `ZeroAmount()` and selector `0x1f2a2005`.
7870```solidity
7871error ZeroAmount();
7872```*/
7873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7874    #[derive(Clone)]
7875    pub struct ZeroAmount;
7876    #[allow(
7877        non_camel_case_types,
7878        non_snake_case,
7879        clippy::pub_underscore_fields,
7880        clippy::style
7881    )]
7882    const _: () = {
7883        use alloy::sol_types as alloy_sol_types;
7884        #[doc(hidden)]
7885        #[allow(dead_code)]
7886        type UnderlyingSolTuple<'a> = ();
7887        #[doc(hidden)]
7888        type UnderlyingRustTuple<'a> = ();
7889        #[cfg(test)]
7890        #[allow(dead_code, unreachable_patterns)]
7891        fn _type_assertion(
7892            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7893        ) {
7894            match _t {
7895                alloy_sol_types::private::AssertTypeEq::<
7896                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7897                >(_) => {}
7898            }
7899        }
7900        #[automatically_derived]
7901        #[doc(hidden)]
7902        impl ::core::convert::From<ZeroAmount> for UnderlyingRustTuple<'_> {
7903            fn from(value: ZeroAmount) -> Self {
7904                ()
7905            }
7906        }
7907        #[automatically_derived]
7908        #[doc(hidden)]
7909        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroAmount {
7910            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7911                Self
7912            }
7913        }
7914        #[automatically_derived]
7915        impl alloy_sol_types::SolError for ZeroAmount {
7916            type Parameters<'a> = UnderlyingSolTuple<'a>;
7917            type Token<'a> = <Self::Parameters<
7918                'a,
7919            > as alloy_sol_types::SolType>::Token<'a>;
7920            const SIGNATURE: &'static str = "ZeroAmount()";
7921            const SELECTOR: [u8; 4] = [31u8, 42u8, 32u8, 5u8];
7922            #[inline]
7923            fn new<'a>(
7924                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7925            ) -> Self {
7926                tuple.into()
7927            }
7928            #[inline]
7929            fn tokenize(&self) -> Self::Token<'_> {
7930                ()
7931            }
7932            #[inline]
7933            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7934                Self::abi_decode_raw_with_config(
7935                    data,
7936                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7937                )
7938            }
7939        }
7940    };
7941    #[derive(serde::Serialize, serde::Deserialize)]
7942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7943    /**Event with signature `CommissionUpdated(address,uint256,uint16,uint16)` and selector `0xbd8d76fccab39db7064bc007d9a2c83a98247dcb1087cc12f343b8be90aefd64`.
7944```solidity
7945event CommissionUpdated(address indexed validator, uint256 timestamp, uint16 oldCommission, uint16 newCommission);
7946```*/
7947    #[allow(
7948        non_camel_case_types,
7949        non_snake_case,
7950        clippy::pub_underscore_fields,
7951        clippy::style
7952    )]
7953    #[derive(Clone)]
7954    pub struct CommissionUpdated {
7955        #[allow(missing_docs)]
7956        pub validator: alloy::sol_types::private::Address,
7957        #[allow(missing_docs)]
7958        pub timestamp: alloy::sol_types::private::primitives::aliases::U256,
7959        #[allow(missing_docs)]
7960        pub oldCommission: u16,
7961        #[allow(missing_docs)]
7962        pub newCommission: u16,
7963    }
7964    #[allow(
7965        non_camel_case_types,
7966        non_snake_case,
7967        clippy::pub_underscore_fields,
7968        clippy::style
7969    )]
7970    const _: () = {
7971        use alloy::sol_types as alloy_sol_types;
7972        #[automatically_derived]
7973        impl alloy_sol_types::SolEvent for CommissionUpdated {
7974            type DataTuple<'a> = (
7975                alloy::sol_types::sol_data::Uint<256>,
7976                alloy::sol_types::sol_data::Uint<16>,
7977                alloy::sol_types::sol_data::Uint<16>,
7978            );
7979            type DataToken<'a> = <Self::DataTuple<
7980                'a,
7981            > as alloy_sol_types::SolType>::Token<'a>;
7982            type TopicList = (
7983                alloy_sol_types::sol_data::FixedBytes<32>,
7984                alloy::sol_types::sol_data::Address,
7985            );
7986            const SIGNATURE: &'static str = "CommissionUpdated(address,uint256,uint16,uint16)";
7987            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7988                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
7989                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
7990                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
7991            ]);
7992            const ANONYMOUS: bool = false;
7993            #[allow(unused_variables)]
7994            #[inline]
7995            fn new(
7996                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7997                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7998            ) -> Self {
7999                Self {
8000                    validator: topics.1,
8001                    timestamp: data.0,
8002                    oldCommission: data.1,
8003                    newCommission: data.2,
8004                }
8005            }
8006            #[inline]
8007            fn check_signature(
8008                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8009            ) -> alloy_sol_types::Result<()> {
8010                if topics.0 != Self::SIGNATURE_HASH {
8011                    return Err(
8012                        alloy_sol_types::Error::invalid_event_signature_hash(
8013                            Self::SIGNATURE,
8014                            topics.0,
8015                            Self::SIGNATURE_HASH,
8016                        ),
8017                    );
8018                }
8019                Ok(())
8020            }
8021            #[inline]
8022            fn tokenize_body(&self) -> Self::DataToken<'_> {
8023                (
8024                    <alloy::sol_types::sol_data::Uint<
8025                        256,
8026                    > as alloy_sol_types::SolType>::tokenize(&self.timestamp),
8027                    <alloy::sol_types::sol_data::Uint<
8028                        16,
8029                    > as alloy_sol_types::SolType>::tokenize(&self.oldCommission),
8030                    <alloy::sol_types::sol_data::Uint<
8031                        16,
8032                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
8033                )
8034            }
8035            #[inline]
8036            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8037                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8038            }
8039            #[inline]
8040            fn encode_topics_raw(
8041                &self,
8042                out: &mut [alloy_sol_types::abi::token::WordToken],
8043            ) -> alloy_sol_types::Result<()> {
8044                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8045                    return Err(alloy_sol_types::Error::Overrun);
8046                }
8047                out[0usize] = alloy_sol_types::abi::token::WordToken(
8048                    Self::SIGNATURE_HASH,
8049                );
8050                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8051                    &self.validator,
8052                );
8053                Ok(())
8054            }
8055        }
8056        #[automatically_derived]
8057        impl alloy_sol_types::private::IntoLogData for CommissionUpdated {
8058            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8059                From::from(self)
8060            }
8061            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8062                From::from(&self)
8063            }
8064        }
8065        #[automatically_derived]
8066        impl From<&CommissionUpdated> for alloy_sol_types::private::LogData {
8067            #[inline]
8068            fn from(this: &CommissionUpdated) -> alloy_sol_types::private::LogData {
8069                alloy_sol_types::SolEvent::encode_log_data(this)
8070            }
8071        }
8072    };
8073    #[derive(serde::Serialize, serde::Deserialize)]
8074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8075    /**Event with signature `ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))` and selector `0x80d8a4a1663328a998d4555ba21d8bba6ef1576a8c5e9d27f9c545f1a3d52b1d`.
8076```solidity
8077event ConsensusKeysUpdated(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK);
8078```*/
8079    #[allow(
8080        non_camel_case_types,
8081        non_snake_case,
8082        clippy::pub_underscore_fields,
8083        clippy::style
8084    )]
8085    #[derive(Clone)]
8086    pub struct ConsensusKeysUpdated {
8087        #[allow(missing_docs)]
8088        pub account: alloy::sol_types::private::Address,
8089        #[allow(missing_docs)]
8090        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8091        #[allow(missing_docs)]
8092        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8093    }
8094    #[allow(
8095        non_camel_case_types,
8096        non_snake_case,
8097        clippy::pub_underscore_fields,
8098        clippy::style
8099    )]
8100    const _: () = {
8101        use alloy::sol_types as alloy_sol_types;
8102        #[automatically_derived]
8103        impl alloy_sol_types::SolEvent for ConsensusKeysUpdated {
8104            type DataTuple<'a> = (BN254::G2Point, EdOnBN254::EdOnBN254Point);
8105            type DataToken<'a> = <Self::DataTuple<
8106                'a,
8107            > as alloy_sol_types::SolType>::Token<'a>;
8108            type TopicList = (
8109                alloy_sol_types::sol_data::FixedBytes<32>,
8110                alloy::sol_types::sol_data::Address,
8111            );
8112            const SIGNATURE: &'static str = "ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))";
8113            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8114                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
8115                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
8116                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
8117            ]);
8118            const ANONYMOUS: bool = false;
8119            #[allow(unused_variables)]
8120            #[inline]
8121            fn new(
8122                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8123                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8124            ) -> Self {
8125                Self {
8126                    account: topics.1,
8127                    blsVK: data.0,
8128                    schnorrVK: data.1,
8129                }
8130            }
8131            #[inline]
8132            fn check_signature(
8133                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8134            ) -> alloy_sol_types::Result<()> {
8135                if topics.0 != Self::SIGNATURE_HASH {
8136                    return Err(
8137                        alloy_sol_types::Error::invalid_event_signature_hash(
8138                            Self::SIGNATURE,
8139                            topics.0,
8140                            Self::SIGNATURE_HASH,
8141                        ),
8142                    );
8143                }
8144                Ok(())
8145            }
8146            #[inline]
8147            fn tokenize_body(&self) -> Self::DataToken<'_> {
8148                (
8149                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8150                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8151                        &self.schnorrVK,
8152                    ),
8153                )
8154            }
8155            #[inline]
8156            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8157                (Self::SIGNATURE_HASH.into(), self.account.clone())
8158            }
8159            #[inline]
8160            fn encode_topics_raw(
8161                &self,
8162                out: &mut [alloy_sol_types::abi::token::WordToken],
8163            ) -> alloy_sol_types::Result<()> {
8164                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8165                    return Err(alloy_sol_types::Error::Overrun);
8166                }
8167                out[0usize] = alloy_sol_types::abi::token::WordToken(
8168                    Self::SIGNATURE_HASH,
8169                );
8170                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8171                    &self.account,
8172                );
8173                Ok(())
8174            }
8175        }
8176        #[automatically_derived]
8177        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdated {
8178            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8179                From::from(self)
8180            }
8181            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8182                From::from(&self)
8183            }
8184        }
8185        #[automatically_derived]
8186        impl From<&ConsensusKeysUpdated> for alloy_sol_types::private::LogData {
8187            #[inline]
8188            fn from(this: &ConsensusKeysUpdated) -> alloy_sol_types::private::LogData {
8189                alloy_sol_types::SolEvent::encode_log_data(this)
8190            }
8191        }
8192    };
8193    #[derive(serde::Serialize, serde::Deserialize)]
8194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8195    /**Event with signature `ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xc8c5b37aec7f2ddbd3a13c51361e54a0a8df3bca256ab758a77f5ad741d281e5`.
8196```solidity
8197event ConsensusKeysUpdatedV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, BN254.G1Point blsSig, bytes schnorrSig);
8198```*/
8199    #[allow(
8200        non_camel_case_types,
8201        non_snake_case,
8202        clippy::pub_underscore_fields,
8203        clippy::style
8204    )]
8205    #[derive(Clone)]
8206    pub struct ConsensusKeysUpdatedV2 {
8207        #[allow(missing_docs)]
8208        pub account: alloy::sol_types::private::Address,
8209        #[allow(missing_docs)]
8210        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
8211        #[allow(missing_docs)]
8212        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
8213        #[allow(missing_docs)]
8214        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
8215        #[allow(missing_docs)]
8216        pub schnorrSig: alloy::sol_types::private::Bytes,
8217    }
8218    #[allow(
8219        non_camel_case_types,
8220        non_snake_case,
8221        clippy::pub_underscore_fields,
8222        clippy::style
8223    )]
8224    const _: () = {
8225        use alloy::sol_types as alloy_sol_types;
8226        #[automatically_derived]
8227        impl alloy_sol_types::SolEvent for ConsensusKeysUpdatedV2 {
8228            type DataTuple<'a> = (
8229                BN254::G2Point,
8230                EdOnBN254::EdOnBN254Point,
8231                BN254::G1Point,
8232                alloy::sol_types::sol_data::Bytes,
8233            );
8234            type DataToken<'a> = <Self::DataTuple<
8235                'a,
8236            > as alloy_sol_types::SolType>::Token<'a>;
8237            type TopicList = (
8238                alloy_sol_types::sol_data::FixedBytes<32>,
8239                alloy::sol_types::sol_data::Address,
8240            );
8241            const SIGNATURE: &'static str = "ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
8242            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8243                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
8244                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
8245                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
8246            ]);
8247            const ANONYMOUS: bool = false;
8248            #[allow(unused_variables)]
8249            #[inline]
8250            fn new(
8251                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8252                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8253            ) -> Self {
8254                Self {
8255                    account: topics.1,
8256                    blsVK: data.0,
8257                    schnorrVK: data.1,
8258                    blsSig: data.2,
8259                    schnorrSig: data.3,
8260                }
8261            }
8262            #[inline]
8263            fn check_signature(
8264                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8265            ) -> alloy_sol_types::Result<()> {
8266                if topics.0 != Self::SIGNATURE_HASH {
8267                    return Err(
8268                        alloy_sol_types::Error::invalid_event_signature_hash(
8269                            Self::SIGNATURE,
8270                            topics.0,
8271                            Self::SIGNATURE_HASH,
8272                        ),
8273                    );
8274                }
8275                Ok(())
8276            }
8277            #[inline]
8278            fn tokenize_body(&self) -> Self::DataToken<'_> {
8279                (
8280                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
8281                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
8282                        &self.schnorrVK,
8283                    ),
8284                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
8285                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8286                        &self.schnorrSig,
8287                    ),
8288                )
8289            }
8290            #[inline]
8291            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8292                (Self::SIGNATURE_HASH.into(), self.account.clone())
8293            }
8294            #[inline]
8295            fn encode_topics_raw(
8296                &self,
8297                out: &mut [alloy_sol_types::abi::token::WordToken],
8298            ) -> alloy_sol_types::Result<()> {
8299                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8300                    return Err(alloy_sol_types::Error::Overrun);
8301                }
8302                out[0usize] = alloy_sol_types::abi::token::WordToken(
8303                    Self::SIGNATURE_HASH,
8304                );
8305                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8306                    &self.account,
8307                );
8308                Ok(())
8309            }
8310        }
8311        #[automatically_derived]
8312        impl alloy_sol_types::private::IntoLogData for ConsensusKeysUpdatedV2 {
8313            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8314                From::from(self)
8315            }
8316            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8317                From::from(&self)
8318            }
8319        }
8320        #[automatically_derived]
8321        impl From<&ConsensusKeysUpdatedV2> for alloy_sol_types::private::LogData {
8322            #[inline]
8323            fn from(this: &ConsensusKeysUpdatedV2) -> alloy_sol_types::private::LogData {
8324                alloy_sol_types::SolEvent::encode_log_data(this)
8325            }
8326        }
8327    };
8328    #[derive(serde::Serialize, serde::Deserialize)]
8329    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8330    /**Event with signature `Delegated(address,address,uint256)` and selector `0xe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b`.
8331```solidity
8332event Delegated(address indexed delegator, address indexed validator, uint256 amount);
8333```*/
8334    #[allow(
8335        non_camel_case_types,
8336        non_snake_case,
8337        clippy::pub_underscore_fields,
8338        clippy::style
8339    )]
8340    #[derive(Clone)]
8341    pub struct Delegated {
8342        #[allow(missing_docs)]
8343        pub delegator: alloy::sol_types::private::Address,
8344        #[allow(missing_docs)]
8345        pub validator: alloy::sol_types::private::Address,
8346        #[allow(missing_docs)]
8347        pub amount: alloy::sol_types::private::primitives::aliases::U256,
8348    }
8349    #[allow(
8350        non_camel_case_types,
8351        non_snake_case,
8352        clippy::pub_underscore_fields,
8353        clippy::style
8354    )]
8355    const _: () = {
8356        use alloy::sol_types as alloy_sol_types;
8357        #[automatically_derived]
8358        impl alloy_sol_types::SolEvent for Delegated {
8359            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8360            type DataToken<'a> = <Self::DataTuple<
8361                'a,
8362            > as alloy_sol_types::SolType>::Token<'a>;
8363            type TopicList = (
8364                alloy_sol_types::sol_data::FixedBytes<32>,
8365                alloy::sol_types::sol_data::Address,
8366                alloy::sol_types::sol_data::Address,
8367            );
8368            const SIGNATURE: &'static str = "Delegated(address,address,uint256)";
8369            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8370                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
8371                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
8372                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
8373            ]);
8374            const ANONYMOUS: bool = false;
8375            #[allow(unused_variables)]
8376            #[inline]
8377            fn new(
8378                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8379                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8380            ) -> Self {
8381                Self {
8382                    delegator: topics.1,
8383                    validator: topics.2,
8384                    amount: data.0,
8385                }
8386            }
8387            #[inline]
8388            fn check_signature(
8389                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8390            ) -> alloy_sol_types::Result<()> {
8391                if topics.0 != Self::SIGNATURE_HASH {
8392                    return Err(
8393                        alloy_sol_types::Error::invalid_event_signature_hash(
8394                            Self::SIGNATURE,
8395                            topics.0,
8396                            Self::SIGNATURE_HASH,
8397                        ),
8398                    );
8399                }
8400                Ok(())
8401            }
8402            #[inline]
8403            fn tokenize_body(&self) -> Self::DataToken<'_> {
8404                (
8405                    <alloy::sol_types::sol_data::Uint<
8406                        256,
8407                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
8408                )
8409            }
8410            #[inline]
8411            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8412                (
8413                    Self::SIGNATURE_HASH.into(),
8414                    self.delegator.clone(),
8415                    self.validator.clone(),
8416                )
8417            }
8418            #[inline]
8419            fn encode_topics_raw(
8420                &self,
8421                out: &mut [alloy_sol_types::abi::token::WordToken],
8422            ) -> alloy_sol_types::Result<()> {
8423                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8424                    return Err(alloy_sol_types::Error::Overrun);
8425                }
8426                out[0usize] = alloy_sol_types::abi::token::WordToken(
8427                    Self::SIGNATURE_HASH,
8428                );
8429                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8430                    &self.delegator,
8431                );
8432                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8433                    &self.validator,
8434                );
8435                Ok(())
8436            }
8437        }
8438        #[automatically_derived]
8439        impl alloy_sol_types::private::IntoLogData for Delegated {
8440            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8441                From::from(self)
8442            }
8443            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8444                From::from(&self)
8445            }
8446        }
8447        #[automatically_derived]
8448        impl From<&Delegated> for alloy_sol_types::private::LogData {
8449            #[inline]
8450            fn from(this: &Delegated) -> alloy_sol_types::private::LogData {
8451                alloy_sol_types::SolEvent::encode_log_data(this)
8452            }
8453        }
8454    };
8455    #[derive(serde::Serialize, serde::Deserialize)]
8456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8457    /**Event with signature `ExitEscrowPeriodUpdated(uint64)` and selector `0x793e3b1e1bcd677bb11900c83124d3c44c9946ea8ddf978a0ca250b034ec9dde`.
8458```solidity
8459event ExitEscrowPeriodUpdated(uint64 newExitEscrowPeriod);
8460```*/
8461    #[allow(
8462        non_camel_case_types,
8463        non_snake_case,
8464        clippy::pub_underscore_fields,
8465        clippy::style
8466    )]
8467    #[derive(Clone)]
8468    pub struct ExitEscrowPeriodUpdated {
8469        #[allow(missing_docs)]
8470        pub newExitEscrowPeriod: u64,
8471    }
8472    #[allow(
8473        non_camel_case_types,
8474        non_snake_case,
8475        clippy::pub_underscore_fields,
8476        clippy::style
8477    )]
8478    const _: () = {
8479        use alloy::sol_types as alloy_sol_types;
8480        #[automatically_derived]
8481        impl alloy_sol_types::SolEvent for ExitEscrowPeriodUpdated {
8482            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8483            type DataToken<'a> = <Self::DataTuple<
8484                'a,
8485            > as alloy_sol_types::SolType>::Token<'a>;
8486            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8487            const SIGNATURE: &'static str = "ExitEscrowPeriodUpdated(uint64)";
8488            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8489                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
8490                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
8491                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
8492            ]);
8493            const ANONYMOUS: bool = false;
8494            #[allow(unused_variables)]
8495            #[inline]
8496            fn new(
8497                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8498                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8499            ) -> Self {
8500                Self {
8501                    newExitEscrowPeriod: data.0,
8502                }
8503            }
8504            #[inline]
8505            fn check_signature(
8506                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8507            ) -> alloy_sol_types::Result<()> {
8508                if topics.0 != Self::SIGNATURE_HASH {
8509                    return Err(
8510                        alloy_sol_types::Error::invalid_event_signature_hash(
8511                            Self::SIGNATURE,
8512                            topics.0,
8513                            Self::SIGNATURE_HASH,
8514                        ),
8515                    );
8516                }
8517                Ok(())
8518            }
8519            #[inline]
8520            fn tokenize_body(&self) -> Self::DataToken<'_> {
8521                (
8522                    <alloy::sol_types::sol_data::Uint<
8523                        64,
8524                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
8525                )
8526            }
8527            #[inline]
8528            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8529                (Self::SIGNATURE_HASH.into(),)
8530            }
8531            #[inline]
8532            fn encode_topics_raw(
8533                &self,
8534                out: &mut [alloy_sol_types::abi::token::WordToken],
8535            ) -> alloy_sol_types::Result<()> {
8536                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8537                    return Err(alloy_sol_types::Error::Overrun);
8538                }
8539                out[0usize] = alloy_sol_types::abi::token::WordToken(
8540                    Self::SIGNATURE_HASH,
8541                );
8542                Ok(())
8543            }
8544        }
8545        #[automatically_derived]
8546        impl alloy_sol_types::private::IntoLogData for ExitEscrowPeriodUpdated {
8547            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8548                From::from(self)
8549            }
8550            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8551                From::from(&self)
8552            }
8553        }
8554        #[automatically_derived]
8555        impl From<&ExitEscrowPeriodUpdated> for alloy_sol_types::private::LogData {
8556            #[inline]
8557            fn from(
8558                this: &ExitEscrowPeriodUpdated,
8559            ) -> alloy_sol_types::private::LogData {
8560                alloy_sol_types::SolEvent::encode_log_data(this)
8561            }
8562        }
8563    };
8564    #[derive(serde::Serialize, serde::Deserialize)]
8565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8566    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
8567```solidity
8568event Initialized(uint64 version);
8569```*/
8570    #[allow(
8571        non_camel_case_types,
8572        non_snake_case,
8573        clippy::pub_underscore_fields,
8574        clippy::style
8575    )]
8576    #[derive(Clone)]
8577    pub struct Initialized {
8578        #[allow(missing_docs)]
8579        pub version: u64,
8580    }
8581    #[allow(
8582        non_camel_case_types,
8583        non_snake_case,
8584        clippy::pub_underscore_fields,
8585        clippy::style
8586    )]
8587    const _: () = {
8588        use alloy::sol_types as alloy_sol_types;
8589        #[automatically_derived]
8590        impl alloy_sol_types::SolEvent for Initialized {
8591            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8592            type DataToken<'a> = <Self::DataTuple<
8593                'a,
8594            > as alloy_sol_types::SolType>::Token<'a>;
8595            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8596            const SIGNATURE: &'static str = "Initialized(uint64)";
8597            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8598                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
8599                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
8600                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
8601            ]);
8602            const ANONYMOUS: bool = false;
8603            #[allow(unused_variables)]
8604            #[inline]
8605            fn new(
8606                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8607                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8608            ) -> Self {
8609                Self { version: data.0 }
8610            }
8611            #[inline]
8612            fn check_signature(
8613                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8614            ) -> alloy_sol_types::Result<()> {
8615                if topics.0 != Self::SIGNATURE_HASH {
8616                    return Err(
8617                        alloy_sol_types::Error::invalid_event_signature_hash(
8618                            Self::SIGNATURE,
8619                            topics.0,
8620                            Self::SIGNATURE_HASH,
8621                        ),
8622                    );
8623                }
8624                Ok(())
8625            }
8626            #[inline]
8627            fn tokenize_body(&self) -> Self::DataToken<'_> {
8628                (
8629                    <alloy::sol_types::sol_data::Uint<
8630                        64,
8631                    > as alloy_sol_types::SolType>::tokenize(&self.version),
8632                )
8633            }
8634            #[inline]
8635            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8636                (Self::SIGNATURE_HASH.into(),)
8637            }
8638            #[inline]
8639            fn encode_topics_raw(
8640                &self,
8641                out: &mut [alloy_sol_types::abi::token::WordToken],
8642            ) -> alloy_sol_types::Result<()> {
8643                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8644                    return Err(alloy_sol_types::Error::Overrun);
8645                }
8646                out[0usize] = alloy_sol_types::abi::token::WordToken(
8647                    Self::SIGNATURE_HASH,
8648                );
8649                Ok(())
8650            }
8651        }
8652        #[automatically_derived]
8653        impl alloy_sol_types::private::IntoLogData for Initialized {
8654            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8655                From::from(self)
8656            }
8657            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8658                From::from(&self)
8659            }
8660        }
8661        #[automatically_derived]
8662        impl From<&Initialized> for alloy_sol_types::private::LogData {
8663            #[inline]
8664            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
8665                alloy_sol_types::SolEvent::encode_log_data(this)
8666            }
8667        }
8668    };
8669    #[derive(serde::Serialize, serde::Deserialize)]
8670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8671    /**Event with signature `MaxCommissionIncreaseUpdated(uint16)` and selector `0xbe5b47be76500fea510ce219178b6e63695b6641dad0d3a0486455cea10aedfd`.
8672```solidity
8673event MaxCommissionIncreaseUpdated(uint16 newMaxIncrease);
8674```*/
8675    #[allow(
8676        non_camel_case_types,
8677        non_snake_case,
8678        clippy::pub_underscore_fields,
8679        clippy::style
8680    )]
8681    #[derive(Clone)]
8682    pub struct MaxCommissionIncreaseUpdated {
8683        #[allow(missing_docs)]
8684        pub newMaxIncrease: u16,
8685    }
8686    #[allow(
8687        non_camel_case_types,
8688        non_snake_case,
8689        clippy::pub_underscore_fields,
8690        clippy::style
8691    )]
8692    const _: () = {
8693        use alloy::sol_types as alloy_sol_types;
8694        #[automatically_derived]
8695        impl alloy_sol_types::SolEvent for MaxCommissionIncreaseUpdated {
8696            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
8697            type DataToken<'a> = <Self::DataTuple<
8698                'a,
8699            > as alloy_sol_types::SolType>::Token<'a>;
8700            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8701            const SIGNATURE: &'static str = "MaxCommissionIncreaseUpdated(uint16)";
8702            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8703                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
8704                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
8705                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
8706            ]);
8707            const ANONYMOUS: bool = false;
8708            #[allow(unused_variables)]
8709            #[inline]
8710            fn new(
8711                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8712                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8713            ) -> Self {
8714                Self { newMaxIncrease: data.0 }
8715            }
8716            #[inline]
8717            fn check_signature(
8718                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8719            ) -> alloy_sol_types::Result<()> {
8720                if topics.0 != Self::SIGNATURE_HASH {
8721                    return Err(
8722                        alloy_sol_types::Error::invalid_event_signature_hash(
8723                            Self::SIGNATURE,
8724                            topics.0,
8725                            Self::SIGNATURE_HASH,
8726                        ),
8727                    );
8728                }
8729                Ok(())
8730            }
8731            #[inline]
8732            fn tokenize_body(&self) -> Self::DataToken<'_> {
8733                (
8734                    <alloy::sol_types::sol_data::Uint<
8735                        16,
8736                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
8737                )
8738            }
8739            #[inline]
8740            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8741                (Self::SIGNATURE_HASH.into(),)
8742            }
8743            #[inline]
8744            fn encode_topics_raw(
8745                &self,
8746                out: &mut [alloy_sol_types::abi::token::WordToken],
8747            ) -> alloy_sol_types::Result<()> {
8748                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8749                    return Err(alloy_sol_types::Error::Overrun);
8750                }
8751                out[0usize] = alloy_sol_types::abi::token::WordToken(
8752                    Self::SIGNATURE_HASH,
8753                );
8754                Ok(())
8755            }
8756        }
8757        #[automatically_derived]
8758        impl alloy_sol_types::private::IntoLogData for MaxCommissionIncreaseUpdated {
8759            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8760                From::from(self)
8761            }
8762            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8763                From::from(&self)
8764            }
8765        }
8766        #[automatically_derived]
8767        impl From<&MaxCommissionIncreaseUpdated> for alloy_sol_types::private::LogData {
8768            #[inline]
8769            fn from(
8770                this: &MaxCommissionIncreaseUpdated,
8771            ) -> alloy_sol_types::private::LogData {
8772                alloy_sol_types::SolEvent::encode_log_data(this)
8773            }
8774        }
8775    };
8776    #[derive(serde::Serialize, serde::Deserialize)]
8777    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8778    /**Event with signature `MetadataUriUpdated(address,string)` and selector `0x20cc45d5c7c8916ce9fd33f096614497e0b2897d9ab503926afa411527c96c34`.
8779```solidity
8780event MetadataUriUpdated(address indexed validator, string metadataUri);
8781```*/
8782    #[allow(
8783        non_camel_case_types,
8784        non_snake_case,
8785        clippy::pub_underscore_fields,
8786        clippy::style
8787    )]
8788    #[derive(Clone)]
8789    pub struct MetadataUriUpdated {
8790        #[allow(missing_docs)]
8791        pub validator: alloy::sol_types::private::Address,
8792        #[allow(missing_docs)]
8793        pub metadataUri: alloy::sol_types::private::String,
8794    }
8795    #[allow(
8796        non_camel_case_types,
8797        non_snake_case,
8798        clippy::pub_underscore_fields,
8799        clippy::style
8800    )]
8801    const _: () = {
8802        use alloy::sol_types as alloy_sol_types;
8803        #[automatically_derived]
8804        impl alloy_sol_types::SolEvent for MetadataUriUpdated {
8805            type DataTuple<'a> = (alloy::sol_types::sol_data::String,);
8806            type DataToken<'a> = <Self::DataTuple<
8807                'a,
8808            > as alloy_sol_types::SolType>::Token<'a>;
8809            type TopicList = (
8810                alloy_sol_types::sol_data::FixedBytes<32>,
8811                alloy::sol_types::sol_data::Address,
8812            );
8813            const SIGNATURE: &'static str = "MetadataUriUpdated(address,string)";
8814            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8815                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
8816                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
8817                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
8818            ]);
8819            const ANONYMOUS: bool = false;
8820            #[allow(unused_variables)]
8821            #[inline]
8822            fn new(
8823                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8824                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8825            ) -> Self {
8826                Self {
8827                    validator: topics.1,
8828                    metadataUri: data.0,
8829                }
8830            }
8831            #[inline]
8832            fn check_signature(
8833                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8834            ) -> alloy_sol_types::Result<()> {
8835                if topics.0 != Self::SIGNATURE_HASH {
8836                    return Err(
8837                        alloy_sol_types::Error::invalid_event_signature_hash(
8838                            Self::SIGNATURE,
8839                            topics.0,
8840                            Self::SIGNATURE_HASH,
8841                        ),
8842                    );
8843                }
8844                Ok(())
8845            }
8846            #[inline]
8847            fn tokenize_body(&self) -> Self::DataToken<'_> {
8848                (
8849                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8850                        &self.metadataUri,
8851                    ),
8852                )
8853            }
8854            #[inline]
8855            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8856                (Self::SIGNATURE_HASH.into(), self.validator.clone())
8857            }
8858            #[inline]
8859            fn encode_topics_raw(
8860                &self,
8861                out: &mut [alloy_sol_types::abi::token::WordToken],
8862            ) -> alloy_sol_types::Result<()> {
8863                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8864                    return Err(alloy_sol_types::Error::Overrun);
8865                }
8866                out[0usize] = alloy_sol_types::abi::token::WordToken(
8867                    Self::SIGNATURE_HASH,
8868                );
8869                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8870                    &self.validator,
8871                );
8872                Ok(())
8873            }
8874        }
8875        #[automatically_derived]
8876        impl alloy_sol_types::private::IntoLogData for MetadataUriUpdated {
8877            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8878                From::from(self)
8879            }
8880            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8881                From::from(&self)
8882            }
8883        }
8884        #[automatically_derived]
8885        impl From<&MetadataUriUpdated> for alloy_sol_types::private::LogData {
8886            #[inline]
8887            fn from(this: &MetadataUriUpdated) -> alloy_sol_types::private::LogData {
8888                alloy_sol_types::SolEvent::encode_log_data(this)
8889            }
8890        }
8891    };
8892    #[derive(serde::Serialize, serde::Deserialize)]
8893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8894    /**Event with signature `MinCommissionUpdateIntervalUpdated(uint256)` and selector `0x51d9fefdd48191bc75ab12116d5e5181964799a639e1ee31b0998ffaaf9ef259`.
8895```solidity
8896event MinCommissionUpdateIntervalUpdated(uint256 newInterval);
8897```*/
8898    #[allow(
8899        non_camel_case_types,
8900        non_snake_case,
8901        clippy::pub_underscore_fields,
8902        clippy::style
8903    )]
8904    #[derive(Clone)]
8905    pub struct MinCommissionUpdateIntervalUpdated {
8906        #[allow(missing_docs)]
8907        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
8908    }
8909    #[allow(
8910        non_camel_case_types,
8911        non_snake_case,
8912        clippy::pub_underscore_fields,
8913        clippy::style
8914    )]
8915    const _: () = {
8916        use alloy::sol_types as alloy_sol_types;
8917        #[automatically_derived]
8918        impl alloy_sol_types::SolEvent for MinCommissionUpdateIntervalUpdated {
8919            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8920            type DataToken<'a> = <Self::DataTuple<
8921                'a,
8922            > as alloy_sol_types::SolType>::Token<'a>;
8923            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8924            const SIGNATURE: &'static str = "MinCommissionUpdateIntervalUpdated(uint256)";
8925            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8926                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
8927                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
8928                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
8929            ]);
8930            const ANONYMOUS: bool = false;
8931            #[allow(unused_variables)]
8932            #[inline]
8933            fn new(
8934                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8935                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8936            ) -> Self {
8937                Self { newInterval: data.0 }
8938            }
8939            #[inline]
8940            fn check_signature(
8941                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8942            ) -> alloy_sol_types::Result<()> {
8943                if topics.0 != Self::SIGNATURE_HASH {
8944                    return Err(
8945                        alloy_sol_types::Error::invalid_event_signature_hash(
8946                            Self::SIGNATURE,
8947                            topics.0,
8948                            Self::SIGNATURE_HASH,
8949                        ),
8950                    );
8951                }
8952                Ok(())
8953            }
8954            #[inline]
8955            fn tokenize_body(&self) -> Self::DataToken<'_> {
8956                (
8957                    <alloy::sol_types::sol_data::Uint<
8958                        256,
8959                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
8960                )
8961            }
8962            #[inline]
8963            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8964                (Self::SIGNATURE_HASH.into(),)
8965            }
8966            #[inline]
8967            fn encode_topics_raw(
8968                &self,
8969                out: &mut [alloy_sol_types::abi::token::WordToken],
8970            ) -> alloy_sol_types::Result<()> {
8971                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8972                    return Err(alloy_sol_types::Error::Overrun);
8973                }
8974                out[0usize] = alloy_sol_types::abi::token::WordToken(
8975                    Self::SIGNATURE_HASH,
8976                );
8977                Ok(())
8978            }
8979        }
8980        #[automatically_derived]
8981        impl alloy_sol_types::private::IntoLogData
8982        for MinCommissionUpdateIntervalUpdated {
8983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8984                From::from(self)
8985            }
8986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8987                From::from(&self)
8988            }
8989        }
8990        #[automatically_derived]
8991        impl From<&MinCommissionUpdateIntervalUpdated>
8992        for alloy_sol_types::private::LogData {
8993            #[inline]
8994            fn from(
8995                this: &MinCommissionUpdateIntervalUpdated,
8996            ) -> alloy_sol_types::private::LogData {
8997                alloy_sol_types::SolEvent::encode_log_data(this)
8998            }
8999        }
9000    };
9001    #[derive(serde::Serialize, serde::Deserialize)]
9002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9003    /**Event with signature `MinDelegateAmountUpdated(uint256)` and selector `0x02cd8ef316564ca78b75bf239c0a630008374c1fb1d26d941a6e9b19e42b2aa5`.
9004```solidity
9005event MinDelegateAmountUpdated(uint256 newMinDelegateAmount);
9006```*/
9007    #[allow(
9008        non_camel_case_types,
9009        non_snake_case,
9010        clippy::pub_underscore_fields,
9011        clippy::style
9012    )]
9013    #[derive(Clone)]
9014    pub struct MinDelegateAmountUpdated {
9015        #[allow(missing_docs)]
9016        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
9017    }
9018    #[allow(
9019        non_camel_case_types,
9020        non_snake_case,
9021        clippy::pub_underscore_fields,
9022        clippy::style
9023    )]
9024    const _: () = {
9025        use alloy::sol_types as alloy_sol_types;
9026        #[automatically_derived]
9027        impl alloy_sol_types::SolEvent for MinDelegateAmountUpdated {
9028            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9029            type DataToken<'a> = <Self::DataTuple<
9030                'a,
9031            > as alloy_sol_types::SolType>::Token<'a>;
9032            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9033            const SIGNATURE: &'static str = "MinDelegateAmountUpdated(uint256)";
9034            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9035                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
9036                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
9037                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
9038            ]);
9039            const ANONYMOUS: bool = false;
9040            #[allow(unused_variables)]
9041            #[inline]
9042            fn new(
9043                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9044                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9045            ) -> Self {
9046                Self {
9047                    newMinDelegateAmount: data.0,
9048                }
9049            }
9050            #[inline]
9051            fn check_signature(
9052                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9053            ) -> alloy_sol_types::Result<()> {
9054                if topics.0 != Self::SIGNATURE_HASH {
9055                    return Err(
9056                        alloy_sol_types::Error::invalid_event_signature_hash(
9057                            Self::SIGNATURE,
9058                            topics.0,
9059                            Self::SIGNATURE_HASH,
9060                        ),
9061                    );
9062                }
9063                Ok(())
9064            }
9065            #[inline]
9066            fn tokenize_body(&self) -> Self::DataToken<'_> {
9067                (
9068                    <alloy::sol_types::sol_data::Uint<
9069                        256,
9070                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
9071                )
9072            }
9073            #[inline]
9074            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9075                (Self::SIGNATURE_HASH.into(),)
9076            }
9077            #[inline]
9078            fn encode_topics_raw(
9079                &self,
9080                out: &mut [alloy_sol_types::abi::token::WordToken],
9081            ) -> alloy_sol_types::Result<()> {
9082                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9083                    return Err(alloy_sol_types::Error::Overrun);
9084                }
9085                out[0usize] = alloy_sol_types::abi::token::WordToken(
9086                    Self::SIGNATURE_HASH,
9087                );
9088                Ok(())
9089            }
9090        }
9091        #[automatically_derived]
9092        impl alloy_sol_types::private::IntoLogData for MinDelegateAmountUpdated {
9093            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9094                From::from(self)
9095            }
9096            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9097                From::from(&self)
9098            }
9099        }
9100        #[automatically_derived]
9101        impl From<&MinDelegateAmountUpdated> for alloy_sol_types::private::LogData {
9102            #[inline]
9103            fn from(
9104                this: &MinDelegateAmountUpdated,
9105            ) -> alloy_sol_types::private::LogData {
9106                alloy_sol_types::SolEvent::encode_log_data(this)
9107            }
9108        }
9109    };
9110    #[derive(serde::Serialize, serde::Deserialize)]
9111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9112    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
9113```solidity
9114event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
9115```*/
9116    #[allow(
9117        non_camel_case_types,
9118        non_snake_case,
9119        clippy::pub_underscore_fields,
9120        clippy::style
9121    )]
9122    #[derive(Clone)]
9123    pub struct OwnershipTransferred {
9124        #[allow(missing_docs)]
9125        pub previousOwner: alloy::sol_types::private::Address,
9126        #[allow(missing_docs)]
9127        pub newOwner: alloy::sol_types::private::Address,
9128    }
9129    #[allow(
9130        non_camel_case_types,
9131        non_snake_case,
9132        clippy::pub_underscore_fields,
9133        clippy::style
9134    )]
9135    const _: () = {
9136        use alloy::sol_types as alloy_sol_types;
9137        #[automatically_derived]
9138        impl alloy_sol_types::SolEvent for OwnershipTransferred {
9139            type DataTuple<'a> = ();
9140            type DataToken<'a> = <Self::DataTuple<
9141                'a,
9142            > as alloy_sol_types::SolType>::Token<'a>;
9143            type TopicList = (
9144                alloy_sol_types::sol_data::FixedBytes<32>,
9145                alloy::sol_types::sol_data::Address,
9146                alloy::sol_types::sol_data::Address,
9147            );
9148            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
9149            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9150                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9151                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9152                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9153            ]);
9154            const ANONYMOUS: bool = false;
9155            #[allow(unused_variables)]
9156            #[inline]
9157            fn new(
9158                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9159                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9160            ) -> Self {
9161                Self {
9162                    previousOwner: topics.1,
9163                    newOwner: topics.2,
9164                }
9165            }
9166            #[inline]
9167            fn check_signature(
9168                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9169            ) -> alloy_sol_types::Result<()> {
9170                if topics.0 != Self::SIGNATURE_HASH {
9171                    return Err(
9172                        alloy_sol_types::Error::invalid_event_signature_hash(
9173                            Self::SIGNATURE,
9174                            topics.0,
9175                            Self::SIGNATURE_HASH,
9176                        ),
9177                    );
9178                }
9179                Ok(())
9180            }
9181            #[inline]
9182            fn tokenize_body(&self) -> Self::DataToken<'_> {
9183                ()
9184            }
9185            #[inline]
9186            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9187                (
9188                    Self::SIGNATURE_HASH.into(),
9189                    self.previousOwner.clone(),
9190                    self.newOwner.clone(),
9191                )
9192            }
9193            #[inline]
9194            fn encode_topics_raw(
9195                &self,
9196                out: &mut [alloy_sol_types::abi::token::WordToken],
9197            ) -> alloy_sol_types::Result<()> {
9198                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9199                    return Err(alloy_sol_types::Error::Overrun);
9200                }
9201                out[0usize] = alloy_sol_types::abi::token::WordToken(
9202                    Self::SIGNATURE_HASH,
9203                );
9204                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9205                    &self.previousOwner,
9206                );
9207                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9208                    &self.newOwner,
9209                );
9210                Ok(())
9211            }
9212        }
9213        #[automatically_derived]
9214        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
9215            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9216                From::from(self)
9217            }
9218            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9219                From::from(&self)
9220            }
9221        }
9222        #[automatically_derived]
9223        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
9224            #[inline]
9225            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
9226                alloy_sol_types::SolEvent::encode_log_data(this)
9227            }
9228        }
9229    };
9230    #[derive(serde::Serialize, serde::Deserialize)]
9231    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9232    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
9233```solidity
9234event Paused(address account);
9235```*/
9236    #[allow(
9237        non_camel_case_types,
9238        non_snake_case,
9239        clippy::pub_underscore_fields,
9240        clippy::style
9241    )]
9242    #[derive(Clone)]
9243    pub struct Paused {
9244        #[allow(missing_docs)]
9245        pub account: alloy::sol_types::private::Address,
9246    }
9247    #[allow(
9248        non_camel_case_types,
9249        non_snake_case,
9250        clippy::pub_underscore_fields,
9251        clippy::style
9252    )]
9253    const _: () = {
9254        use alloy::sol_types as alloy_sol_types;
9255        #[automatically_derived]
9256        impl alloy_sol_types::SolEvent for Paused {
9257            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
9258            type DataToken<'a> = <Self::DataTuple<
9259                'a,
9260            > as alloy_sol_types::SolType>::Token<'a>;
9261            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
9262            const SIGNATURE: &'static str = "Paused(address)";
9263            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9264                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9265                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9266                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9267            ]);
9268            const ANONYMOUS: bool = false;
9269            #[allow(unused_variables)]
9270            #[inline]
9271            fn new(
9272                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9273                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9274            ) -> Self {
9275                Self { account: data.0 }
9276            }
9277            #[inline]
9278            fn check_signature(
9279                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9280            ) -> alloy_sol_types::Result<()> {
9281                if topics.0 != Self::SIGNATURE_HASH {
9282                    return Err(
9283                        alloy_sol_types::Error::invalid_event_signature_hash(
9284                            Self::SIGNATURE,
9285                            topics.0,
9286                            Self::SIGNATURE_HASH,
9287                        ),
9288                    );
9289                }
9290                Ok(())
9291            }
9292            #[inline]
9293            fn tokenize_body(&self) -> Self::DataToken<'_> {
9294                (
9295                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9296                        &self.account,
9297                    ),
9298                )
9299            }
9300            #[inline]
9301            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9302                (Self::SIGNATURE_HASH.into(),)
9303            }
9304            #[inline]
9305            fn encode_topics_raw(
9306                &self,
9307                out: &mut [alloy_sol_types::abi::token::WordToken],
9308            ) -> alloy_sol_types::Result<()> {
9309                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9310                    return Err(alloy_sol_types::Error::Overrun);
9311                }
9312                out[0usize] = alloy_sol_types::abi::token::WordToken(
9313                    Self::SIGNATURE_HASH,
9314                );
9315                Ok(())
9316            }
9317        }
9318        #[automatically_derived]
9319        impl alloy_sol_types::private::IntoLogData for Paused {
9320            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9321                From::from(self)
9322            }
9323            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9324                From::from(&self)
9325            }
9326        }
9327        #[automatically_derived]
9328        impl From<&Paused> for alloy_sol_types::private::LogData {
9329            #[inline]
9330            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
9331                alloy_sol_types::SolEvent::encode_log_data(this)
9332            }
9333        }
9334    };
9335    #[derive(serde::Serialize, serde::Deserialize)]
9336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9337    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
9338```solidity
9339event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
9340```*/
9341    #[allow(
9342        non_camel_case_types,
9343        non_snake_case,
9344        clippy::pub_underscore_fields,
9345        clippy::style
9346    )]
9347    #[derive(Clone)]
9348    pub struct RoleAdminChanged {
9349        #[allow(missing_docs)]
9350        pub role: alloy::sol_types::private::FixedBytes<32>,
9351        #[allow(missing_docs)]
9352        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
9353        #[allow(missing_docs)]
9354        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
9355    }
9356    #[allow(
9357        non_camel_case_types,
9358        non_snake_case,
9359        clippy::pub_underscore_fields,
9360        clippy::style
9361    )]
9362    const _: () = {
9363        use alloy::sol_types as alloy_sol_types;
9364        #[automatically_derived]
9365        impl alloy_sol_types::SolEvent for RoleAdminChanged {
9366            type DataTuple<'a> = ();
9367            type DataToken<'a> = <Self::DataTuple<
9368                'a,
9369            > as alloy_sol_types::SolType>::Token<'a>;
9370            type TopicList = (
9371                alloy_sol_types::sol_data::FixedBytes<32>,
9372                alloy::sol_types::sol_data::FixedBytes<32>,
9373                alloy::sol_types::sol_data::FixedBytes<32>,
9374                alloy::sol_types::sol_data::FixedBytes<32>,
9375            );
9376            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
9377            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9378                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9379                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9380                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9381            ]);
9382            const ANONYMOUS: bool = false;
9383            #[allow(unused_variables)]
9384            #[inline]
9385            fn new(
9386                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9387                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9388            ) -> Self {
9389                Self {
9390                    role: topics.1,
9391                    previousAdminRole: topics.2,
9392                    newAdminRole: topics.3,
9393                }
9394            }
9395            #[inline]
9396            fn check_signature(
9397                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9398            ) -> alloy_sol_types::Result<()> {
9399                if topics.0 != Self::SIGNATURE_HASH {
9400                    return Err(
9401                        alloy_sol_types::Error::invalid_event_signature_hash(
9402                            Self::SIGNATURE,
9403                            topics.0,
9404                            Self::SIGNATURE_HASH,
9405                        ),
9406                    );
9407                }
9408                Ok(())
9409            }
9410            #[inline]
9411            fn tokenize_body(&self) -> Self::DataToken<'_> {
9412                ()
9413            }
9414            #[inline]
9415            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9416                (
9417                    Self::SIGNATURE_HASH.into(),
9418                    self.role.clone(),
9419                    self.previousAdminRole.clone(),
9420                    self.newAdminRole.clone(),
9421                )
9422            }
9423            #[inline]
9424            fn encode_topics_raw(
9425                &self,
9426                out: &mut [alloy_sol_types::abi::token::WordToken],
9427            ) -> alloy_sol_types::Result<()> {
9428                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9429                    return Err(alloy_sol_types::Error::Overrun);
9430                }
9431                out[0usize] = alloy_sol_types::abi::token::WordToken(
9432                    Self::SIGNATURE_HASH,
9433                );
9434                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9435                    32,
9436                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9437                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
9438                    32,
9439                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
9440                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
9441                    32,
9442                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
9443                Ok(())
9444            }
9445        }
9446        #[automatically_derived]
9447        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
9448            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9449                From::from(self)
9450            }
9451            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9452                From::from(&self)
9453            }
9454        }
9455        #[automatically_derived]
9456        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
9457            #[inline]
9458            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
9459                alloy_sol_types::SolEvent::encode_log_data(this)
9460            }
9461        }
9462    };
9463    #[derive(serde::Serialize, serde::Deserialize)]
9464    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9465    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
9466```solidity
9467event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
9468```*/
9469    #[allow(
9470        non_camel_case_types,
9471        non_snake_case,
9472        clippy::pub_underscore_fields,
9473        clippy::style
9474    )]
9475    #[derive(Clone)]
9476    pub struct RoleGranted {
9477        #[allow(missing_docs)]
9478        pub role: alloy::sol_types::private::FixedBytes<32>,
9479        #[allow(missing_docs)]
9480        pub account: alloy::sol_types::private::Address,
9481        #[allow(missing_docs)]
9482        pub sender: alloy::sol_types::private::Address,
9483    }
9484    #[allow(
9485        non_camel_case_types,
9486        non_snake_case,
9487        clippy::pub_underscore_fields,
9488        clippy::style
9489    )]
9490    const _: () = {
9491        use alloy::sol_types as alloy_sol_types;
9492        #[automatically_derived]
9493        impl alloy_sol_types::SolEvent for RoleGranted {
9494            type DataTuple<'a> = ();
9495            type DataToken<'a> = <Self::DataTuple<
9496                'a,
9497            > as alloy_sol_types::SolType>::Token<'a>;
9498            type TopicList = (
9499                alloy_sol_types::sol_data::FixedBytes<32>,
9500                alloy::sol_types::sol_data::FixedBytes<32>,
9501                alloy::sol_types::sol_data::Address,
9502                alloy::sol_types::sol_data::Address,
9503            );
9504            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
9505            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9506                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9507                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9508                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9509            ]);
9510            const ANONYMOUS: bool = false;
9511            #[allow(unused_variables)]
9512            #[inline]
9513            fn new(
9514                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9515                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9516            ) -> Self {
9517                Self {
9518                    role: topics.1,
9519                    account: topics.2,
9520                    sender: topics.3,
9521                }
9522            }
9523            #[inline]
9524            fn check_signature(
9525                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9526            ) -> alloy_sol_types::Result<()> {
9527                if topics.0 != Self::SIGNATURE_HASH {
9528                    return Err(
9529                        alloy_sol_types::Error::invalid_event_signature_hash(
9530                            Self::SIGNATURE,
9531                            topics.0,
9532                            Self::SIGNATURE_HASH,
9533                        ),
9534                    );
9535                }
9536                Ok(())
9537            }
9538            #[inline]
9539            fn tokenize_body(&self) -> Self::DataToken<'_> {
9540                ()
9541            }
9542            #[inline]
9543            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9544                (
9545                    Self::SIGNATURE_HASH.into(),
9546                    self.role.clone(),
9547                    self.account.clone(),
9548                    self.sender.clone(),
9549                )
9550            }
9551            #[inline]
9552            fn encode_topics_raw(
9553                &self,
9554                out: &mut [alloy_sol_types::abi::token::WordToken],
9555            ) -> alloy_sol_types::Result<()> {
9556                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9557                    return Err(alloy_sol_types::Error::Overrun);
9558                }
9559                out[0usize] = alloy_sol_types::abi::token::WordToken(
9560                    Self::SIGNATURE_HASH,
9561                );
9562                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9563                    32,
9564                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9565                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9566                    &self.account,
9567                );
9568                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9569                    &self.sender,
9570                );
9571                Ok(())
9572            }
9573        }
9574        #[automatically_derived]
9575        impl alloy_sol_types::private::IntoLogData for RoleGranted {
9576            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9577                From::from(self)
9578            }
9579            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9580                From::from(&self)
9581            }
9582        }
9583        #[automatically_derived]
9584        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
9585            #[inline]
9586            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
9587                alloy_sol_types::SolEvent::encode_log_data(this)
9588            }
9589        }
9590    };
9591    #[derive(serde::Serialize, serde::Deserialize)]
9592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9593    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
9594```solidity
9595event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
9596```*/
9597    #[allow(
9598        non_camel_case_types,
9599        non_snake_case,
9600        clippy::pub_underscore_fields,
9601        clippy::style
9602    )]
9603    #[derive(Clone)]
9604    pub struct RoleRevoked {
9605        #[allow(missing_docs)]
9606        pub role: alloy::sol_types::private::FixedBytes<32>,
9607        #[allow(missing_docs)]
9608        pub account: alloy::sol_types::private::Address,
9609        #[allow(missing_docs)]
9610        pub sender: alloy::sol_types::private::Address,
9611    }
9612    #[allow(
9613        non_camel_case_types,
9614        non_snake_case,
9615        clippy::pub_underscore_fields,
9616        clippy::style
9617    )]
9618    const _: () = {
9619        use alloy::sol_types as alloy_sol_types;
9620        #[automatically_derived]
9621        impl alloy_sol_types::SolEvent for RoleRevoked {
9622            type DataTuple<'a> = ();
9623            type DataToken<'a> = <Self::DataTuple<
9624                'a,
9625            > as alloy_sol_types::SolType>::Token<'a>;
9626            type TopicList = (
9627                alloy_sol_types::sol_data::FixedBytes<32>,
9628                alloy::sol_types::sol_data::FixedBytes<32>,
9629                alloy::sol_types::sol_data::Address,
9630                alloy::sol_types::sol_data::Address,
9631            );
9632            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
9633            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9634                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9635                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9636                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9637            ]);
9638            const ANONYMOUS: bool = false;
9639            #[allow(unused_variables)]
9640            #[inline]
9641            fn new(
9642                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9643                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9644            ) -> Self {
9645                Self {
9646                    role: topics.1,
9647                    account: topics.2,
9648                    sender: topics.3,
9649                }
9650            }
9651            #[inline]
9652            fn check_signature(
9653                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9654            ) -> alloy_sol_types::Result<()> {
9655                if topics.0 != Self::SIGNATURE_HASH {
9656                    return Err(
9657                        alloy_sol_types::Error::invalid_event_signature_hash(
9658                            Self::SIGNATURE,
9659                            topics.0,
9660                            Self::SIGNATURE_HASH,
9661                        ),
9662                    );
9663                }
9664                Ok(())
9665            }
9666            #[inline]
9667            fn tokenize_body(&self) -> Self::DataToken<'_> {
9668                ()
9669            }
9670            #[inline]
9671            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9672                (
9673                    Self::SIGNATURE_HASH.into(),
9674                    self.role.clone(),
9675                    self.account.clone(),
9676                    self.sender.clone(),
9677                )
9678            }
9679            #[inline]
9680            fn encode_topics_raw(
9681                &self,
9682                out: &mut [alloy_sol_types::abi::token::WordToken],
9683            ) -> alloy_sol_types::Result<()> {
9684                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9685                    return Err(alloy_sol_types::Error::Overrun);
9686                }
9687                out[0usize] = alloy_sol_types::abi::token::WordToken(
9688                    Self::SIGNATURE_HASH,
9689                );
9690                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
9691                    32,
9692                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
9693                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9694                    &self.account,
9695                );
9696                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9697                    &self.sender,
9698                );
9699                Ok(())
9700            }
9701        }
9702        #[automatically_derived]
9703        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
9704            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9705                From::from(self)
9706            }
9707            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9708                From::from(&self)
9709            }
9710        }
9711        #[automatically_derived]
9712        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
9713            #[inline]
9714            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
9715                alloy_sol_types::SolEvent::encode_log_data(this)
9716            }
9717        }
9718    };
9719    #[derive(serde::Serialize, serde::Deserialize)]
9720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9721    /**Event with signature `Undelegated(address,address,uint256)` and selector `0x4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c`.
9722```solidity
9723event Undelegated(address indexed delegator, address indexed validator, uint256 amount);
9724```*/
9725    #[allow(
9726        non_camel_case_types,
9727        non_snake_case,
9728        clippy::pub_underscore_fields,
9729        clippy::style
9730    )]
9731    #[derive(Clone)]
9732    pub struct Undelegated {
9733        #[allow(missing_docs)]
9734        pub delegator: alloy::sol_types::private::Address,
9735        #[allow(missing_docs)]
9736        pub validator: alloy::sol_types::private::Address,
9737        #[allow(missing_docs)]
9738        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9739    }
9740    #[allow(
9741        non_camel_case_types,
9742        non_snake_case,
9743        clippy::pub_underscore_fields,
9744        clippy::style
9745    )]
9746    const _: () = {
9747        use alloy::sol_types as alloy_sol_types;
9748        #[automatically_derived]
9749        impl alloy_sol_types::SolEvent for Undelegated {
9750            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9751            type DataToken<'a> = <Self::DataTuple<
9752                'a,
9753            > as alloy_sol_types::SolType>::Token<'a>;
9754            type TopicList = (
9755                alloy_sol_types::sol_data::FixedBytes<32>,
9756                alloy::sol_types::sol_data::Address,
9757                alloy::sol_types::sol_data::Address,
9758            );
9759            const SIGNATURE: &'static str = "Undelegated(address,address,uint256)";
9760            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9761                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
9762                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
9763                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
9764            ]);
9765            const ANONYMOUS: bool = false;
9766            #[allow(unused_variables)]
9767            #[inline]
9768            fn new(
9769                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9770                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9771            ) -> Self {
9772                Self {
9773                    delegator: topics.1,
9774                    validator: topics.2,
9775                    amount: data.0,
9776                }
9777            }
9778            #[inline]
9779            fn check_signature(
9780                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9781            ) -> alloy_sol_types::Result<()> {
9782                if topics.0 != Self::SIGNATURE_HASH {
9783                    return Err(
9784                        alloy_sol_types::Error::invalid_event_signature_hash(
9785                            Self::SIGNATURE,
9786                            topics.0,
9787                            Self::SIGNATURE_HASH,
9788                        ),
9789                    );
9790                }
9791                Ok(())
9792            }
9793            #[inline]
9794            fn tokenize_body(&self) -> Self::DataToken<'_> {
9795                (
9796                    <alloy::sol_types::sol_data::Uint<
9797                        256,
9798                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9799                )
9800            }
9801            #[inline]
9802            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9803                (
9804                    Self::SIGNATURE_HASH.into(),
9805                    self.delegator.clone(),
9806                    self.validator.clone(),
9807                )
9808            }
9809            #[inline]
9810            fn encode_topics_raw(
9811                &self,
9812                out: &mut [alloy_sol_types::abi::token::WordToken],
9813            ) -> alloy_sol_types::Result<()> {
9814                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9815                    return Err(alloy_sol_types::Error::Overrun);
9816                }
9817                out[0usize] = alloy_sol_types::abi::token::WordToken(
9818                    Self::SIGNATURE_HASH,
9819                );
9820                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9821                    &self.delegator,
9822                );
9823                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9824                    &self.validator,
9825                );
9826                Ok(())
9827            }
9828        }
9829        #[automatically_derived]
9830        impl alloy_sol_types::private::IntoLogData for Undelegated {
9831            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9832                From::from(self)
9833            }
9834            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9835                From::from(&self)
9836            }
9837        }
9838        #[automatically_derived]
9839        impl From<&Undelegated> for alloy_sol_types::private::LogData {
9840            #[inline]
9841            fn from(this: &Undelegated) -> alloy_sol_types::private::LogData {
9842                alloy_sol_types::SolEvent::encode_log_data(this)
9843            }
9844        }
9845    };
9846    #[derive(serde::Serialize, serde::Deserialize)]
9847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9848    /**Event with signature `UndelegatedV2(address,address,uint64,uint256,uint256)` and selector `0x708346d7524330f8414e201104921a4ab333304dbe56330ac22dd37af81431da`.
9849```solidity
9850event UndelegatedV2(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount, uint256 unlocksAt);
9851```*/
9852    #[allow(
9853        non_camel_case_types,
9854        non_snake_case,
9855        clippy::pub_underscore_fields,
9856        clippy::style
9857    )]
9858    #[derive(Clone)]
9859    pub struct UndelegatedV2 {
9860        #[allow(missing_docs)]
9861        pub delegator: alloy::sol_types::private::Address,
9862        #[allow(missing_docs)]
9863        pub validator: alloy::sol_types::private::Address,
9864        #[allow(missing_docs)]
9865        pub undelegationId: u64,
9866        #[allow(missing_docs)]
9867        pub amount: alloy::sol_types::private::primitives::aliases::U256,
9868        #[allow(missing_docs)]
9869        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
9870    }
9871    #[allow(
9872        non_camel_case_types,
9873        non_snake_case,
9874        clippy::pub_underscore_fields,
9875        clippy::style
9876    )]
9877    const _: () = {
9878        use alloy::sol_types as alloy_sol_types;
9879        #[automatically_derived]
9880        impl alloy_sol_types::SolEvent for UndelegatedV2 {
9881            type DataTuple<'a> = (
9882                alloy::sol_types::sol_data::Uint<256>,
9883                alloy::sol_types::sol_data::Uint<256>,
9884            );
9885            type DataToken<'a> = <Self::DataTuple<
9886                'a,
9887            > as alloy_sol_types::SolType>::Token<'a>;
9888            type TopicList = (
9889                alloy_sol_types::sol_data::FixedBytes<32>,
9890                alloy::sol_types::sol_data::Address,
9891                alloy::sol_types::sol_data::Address,
9892                alloy::sol_types::sol_data::Uint<64>,
9893            );
9894            const SIGNATURE: &'static str = "UndelegatedV2(address,address,uint64,uint256,uint256)";
9895            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
9896                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
9897                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
9898                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
9899            ]);
9900            const ANONYMOUS: bool = false;
9901            #[allow(unused_variables)]
9902            #[inline]
9903            fn new(
9904                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
9905                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
9906            ) -> Self {
9907                Self {
9908                    delegator: topics.1,
9909                    validator: topics.2,
9910                    undelegationId: topics.3,
9911                    amount: data.0,
9912                    unlocksAt: data.1,
9913                }
9914            }
9915            #[inline]
9916            fn check_signature(
9917                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
9918            ) -> alloy_sol_types::Result<()> {
9919                if topics.0 != Self::SIGNATURE_HASH {
9920                    return Err(
9921                        alloy_sol_types::Error::invalid_event_signature_hash(
9922                            Self::SIGNATURE,
9923                            topics.0,
9924                            Self::SIGNATURE_HASH,
9925                        ),
9926                    );
9927                }
9928                Ok(())
9929            }
9930            #[inline]
9931            fn tokenize_body(&self) -> Self::DataToken<'_> {
9932                (
9933                    <alloy::sol_types::sol_data::Uint<
9934                        256,
9935                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
9936                    <alloy::sol_types::sol_data::Uint<
9937                        256,
9938                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
9939                )
9940            }
9941            #[inline]
9942            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
9943                (
9944                    Self::SIGNATURE_HASH.into(),
9945                    self.delegator.clone(),
9946                    self.validator.clone(),
9947                    self.undelegationId.clone(),
9948                )
9949            }
9950            #[inline]
9951            fn encode_topics_raw(
9952                &self,
9953                out: &mut [alloy_sol_types::abi::token::WordToken],
9954            ) -> alloy_sol_types::Result<()> {
9955                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
9956                    return Err(alloy_sol_types::Error::Overrun);
9957                }
9958                out[0usize] = alloy_sol_types::abi::token::WordToken(
9959                    Self::SIGNATURE_HASH,
9960                );
9961                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9962                    &self.delegator,
9963                );
9964                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
9965                    &self.validator,
9966                );
9967                out[3usize] = <alloy::sol_types::sol_data::Uint<
9968                    64,
9969                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
9970                Ok(())
9971            }
9972        }
9973        #[automatically_derived]
9974        impl alloy_sol_types::private::IntoLogData for UndelegatedV2 {
9975            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9976                From::from(self)
9977            }
9978            fn into_log_data(self) -> alloy_sol_types::private::LogData {
9979                From::from(&self)
9980            }
9981        }
9982        #[automatically_derived]
9983        impl From<&UndelegatedV2> for alloy_sol_types::private::LogData {
9984            #[inline]
9985            fn from(this: &UndelegatedV2) -> alloy_sol_types::private::LogData {
9986                alloy_sol_types::SolEvent::encode_log_data(this)
9987            }
9988        }
9989    };
9990    #[derive(serde::Serialize, serde::Deserialize)]
9991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9992    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
9993```solidity
9994event Unpaused(address account);
9995```*/
9996    #[allow(
9997        non_camel_case_types,
9998        non_snake_case,
9999        clippy::pub_underscore_fields,
10000        clippy::style
10001    )]
10002    #[derive(Clone)]
10003    pub struct Unpaused {
10004        #[allow(missing_docs)]
10005        pub account: alloy::sol_types::private::Address,
10006    }
10007    #[allow(
10008        non_camel_case_types,
10009        non_snake_case,
10010        clippy::pub_underscore_fields,
10011        clippy::style
10012    )]
10013    const _: () = {
10014        use alloy::sol_types as alloy_sol_types;
10015        #[automatically_derived]
10016        impl alloy_sol_types::SolEvent for Unpaused {
10017            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
10018            type DataToken<'a> = <Self::DataTuple<
10019                'a,
10020            > as alloy_sol_types::SolType>::Token<'a>;
10021            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
10022            const SIGNATURE: &'static str = "Unpaused(address)";
10023            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10024                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
10025                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
10026                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
10027            ]);
10028            const ANONYMOUS: bool = false;
10029            #[allow(unused_variables)]
10030            #[inline]
10031            fn new(
10032                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10033                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10034            ) -> Self {
10035                Self { account: data.0 }
10036            }
10037            #[inline]
10038            fn check_signature(
10039                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10040            ) -> alloy_sol_types::Result<()> {
10041                if topics.0 != Self::SIGNATURE_HASH {
10042                    return Err(
10043                        alloy_sol_types::Error::invalid_event_signature_hash(
10044                            Self::SIGNATURE,
10045                            topics.0,
10046                            Self::SIGNATURE_HASH,
10047                        ),
10048                    );
10049                }
10050                Ok(())
10051            }
10052            #[inline]
10053            fn tokenize_body(&self) -> Self::DataToken<'_> {
10054                (
10055                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10056                        &self.account,
10057                    ),
10058                )
10059            }
10060            #[inline]
10061            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10062                (Self::SIGNATURE_HASH.into(),)
10063            }
10064            #[inline]
10065            fn encode_topics_raw(
10066                &self,
10067                out: &mut [alloy_sol_types::abi::token::WordToken],
10068            ) -> alloy_sol_types::Result<()> {
10069                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10070                    return Err(alloy_sol_types::Error::Overrun);
10071                }
10072                out[0usize] = alloy_sol_types::abi::token::WordToken(
10073                    Self::SIGNATURE_HASH,
10074                );
10075                Ok(())
10076            }
10077        }
10078        #[automatically_derived]
10079        impl alloy_sol_types::private::IntoLogData for Unpaused {
10080            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10081                From::from(self)
10082            }
10083            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10084                From::from(&self)
10085            }
10086        }
10087        #[automatically_derived]
10088        impl From<&Unpaused> for alloy_sol_types::private::LogData {
10089            #[inline]
10090            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
10091                alloy_sol_types::SolEvent::encode_log_data(this)
10092            }
10093        }
10094    };
10095    #[derive(serde::Serialize, serde::Deserialize)]
10096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10097    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
10098```solidity
10099event Upgraded(address indexed implementation);
10100```*/
10101    #[allow(
10102        non_camel_case_types,
10103        non_snake_case,
10104        clippy::pub_underscore_fields,
10105        clippy::style
10106    )]
10107    #[derive(Clone)]
10108    pub struct Upgraded {
10109        #[allow(missing_docs)]
10110        pub implementation: alloy::sol_types::private::Address,
10111    }
10112    #[allow(
10113        non_camel_case_types,
10114        non_snake_case,
10115        clippy::pub_underscore_fields,
10116        clippy::style
10117    )]
10118    const _: () = {
10119        use alloy::sol_types as alloy_sol_types;
10120        #[automatically_derived]
10121        impl alloy_sol_types::SolEvent for Upgraded {
10122            type DataTuple<'a> = ();
10123            type DataToken<'a> = <Self::DataTuple<
10124                'a,
10125            > as alloy_sol_types::SolType>::Token<'a>;
10126            type TopicList = (
10127                alloy_sol_types::sol_data::FixedBytes<32>,
10128                alloy::sol_types::sol_data::Address,
10129            );
10130            const SIGNATURE: &'static str = "Upgraded(address)";
10131            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10132                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
10133                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
10134                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10135            ]);
10136            const ANONYMOUS: bool = false;
10137            #[allow(unused_variables)]
10138            #[inline]
10139            fn new(
10140                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10141                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10142            ) -> Self {
10143                Self { implementation: topics.1 }
10144            }
10145            #[inline]
10146            fn check_signature(
10147                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10148            ) -> alloy_sol_types::Result<()> {
10149                if topics.0 != Self::SIGNATURE_HASH {
10150                    return Err(
10151                        alloy_sol_types::Error::invalid_event_signature_hash(
10152                            Self::SIGNATURE,
10153                            topics.0,
10154                            Self::SIGNATURE_HASH,
10155                        ),
10156                    );
10157                }
10158                Ok(())
10159            }
10160            #[inline]
10161            fn tokenize_body(&self) -> Self::DataToken<'_> {
10162                ()
10163            }
10164            #[inline]
10165            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10166                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
10167            }
10168            #[inline]
10169            fn encode_topics_raw(
10170                &self,
10171                out: &mut [alloy_sol_types::abi::token::WordToken],
10172            ) -> alloy_sol_types::Result<()> {
10173                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10174                    return Err(alloy_sol_types::Error::Overrun);
10175                }
10176                out[0usize] = alloy_sol_types::abi::token::WordToken(
10177                    Self::SIGNATURE_HASH,
10178                );
10179                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10180                    &self.implementation,
10181                );
10182                Ok(())
10183            }
10184        }
10185        #[automatically_derived]
10186        impl alloy_sol_types::private::IntoLogData for Upgraded {
10187            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10188                From::from(self)
10189            }
10190            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10191                From::from(&self)
10192            }
10193        }
10194        #[automatically_derived]
10195        impl From<&Upgraded> for alloy_sol_types::private::LogData {
10196            #[inline]
10197            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
10198                alloy_sol_types::SolEvent::encode_log_data(this)
10199            }
10200        }
10201    };
10202    #[derive(serde::Serialize, serde::Deserialize)]
10203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10204    /**Event with signature `ValidatorExit(address)` and selector `0xfb24305354c87762d557487ae4a564e8d03ecbb9a97dd8afff8e1f6fcaf0dd16`.
10205```solidity
10206event ValidatorExit(address indexed validator);
10207```*/
10208    #[allow(
10209        non_camel_case_types,
10210        non_snake_case,
10211        clippy::pub_underscore_fields,
10212        clippy::style
10213    )]
10214    #[derive(Clone)]
10215    pub struct ValidatorExit {
10216        #[allow(missing_docs)]
10217        pub validator: alloy::sol_types::private::Address,
10218    }
10219    #[allow(
10220        non_camel_case_types,
10221        non_snake_case,
10222        clippy::pub_underscore_fields,
10223        clippy::style
10224    )]
10225    const _: () = {
10226        use alloy::sol_types as alloy_sol_types;
10227        #[automatically_derived]
10228        impl alloy_sol_types::SolEvent for ValidatorExit {
10229            type DataTuple<'a> = ();
10230            type DataToken<'a> = <Self::DataTuple<
10231                'a,
10232            > as alloy_sol_types::SolType>::Token<'a>;
10233            type TopicList = (
10234                alloy_sol_types::sol_data::FixedBytes<32>,
10235                alloy::sol_types::sol_data::Address,
10236            );
10237            const SIGNATURE: &'static str = "ValidatorExit(address)";
10238            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10239                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
10240                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
10241                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
10242            ]);
10243            const ANONYMOUS: bool = false;
10244            #[allow(unused_variables)]
10245            #[inline]
10246            fn new(
10247                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10248                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10249            ) -> Self {
10250                Self { validator: topics.1 }
10251            }
10252            #[inline]
10253            fn check_signature(
10254                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10255            ) -> alloy_sol_types::Result<()> {
10256                if topics.0 != Self::SIGNATURE_HASH {
10257                    return Err(
10258                        alloy_sol_types::Error::invalid_event_signature_hash(
10259                            Self::SIGNATURE,
10260                            topics.0,
10261                            Self::SIGNATURE_HASH,
10262                        ),
10263                    );
10264                }
10265                Ok(())
10266            }
10267            #[inline]
10268            fn tokenize_body(&self) -> Self::DataToken<'_> {
10269                ()
10270            }
10271            #[inline]
10272            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10273                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10274            }
10275            #[inline]
10276            fn encode_topics_raw(
10277                &self,
10278                out: &mut [alloy_sol_types::abi::token::WordToken],
10279            ) -> alloy_sol_types::Result<()> {
10280                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10281                    return Err(alloy_sol_types::Error::Overrun);
10282                }
10283                out[0usize] = alloy_sol_types::abi::token::WordToken(
10284                    Self::SIGNATURE_HASH,
10285                );
10286                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10287                    &self.validator,
10288                );
10289                Ok(())
10290            }
10291        }
10292        #[automatically_derived]
10293        impl alloy_sol_types::private::IntoLogData for ValidatorExit {
10294            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10295                From::from(self)
10296            }
10297            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10298                From::from(&self)
10299            }
10300        }
10301        #[automatically_derived]
10302        impl From<&ValidatorExit> for alloy_sol_types::private::LogData {
10303            #[inline]
10304            fn from(this: &ValidatorExit) -> alloy_sol_types::private::LogData {
10305                alloy_sol_types::SolEvent::encode_log_data(this)
10306            }
10307        }
10308    };
10309    #[derive(serde::Serialize, serde::Deserialize)]
10310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10311    /**Event with signature `ValidatorExitClaimed(address,address,uint256)` and selector `0x8ada120f8224db804365adf64eb2ec67fd4c74b1e70b2e4132f633004adad844`.
10312```solidity
10313event ValidatorExitClaimed(address indexed delegator, address indexed validator, uint256 amount);
10314```*/
10315    #[allow(
10316        non_camel_case_types,
10317        non_snake_case,
10318        clippy::pub_underscore_fields,
10319        clippy::style
10320    )]
10321    #[derive(Clone)]
10322    pub struct ValidatorExitClaimed {
10323        #[allow(missing_docs)]
10324        pub delegator: alloy::sol_types::private::Address,
10325        #[allow(missing_docs)]
10326        pub validator: alloy::sol_types::private::Address,
10327        #[allow(missing_docs)]
10328        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10329    }
10330    #[allow(
10331        non_camel_case_types,
10332        non_snake_case,
10333        clippy::pub_underscore_fields,
10334        clippy::style
10335    )]
10336    const _: () = {
10337        use alloy::sol_types as alloy_sol_types;
10338        #[automatically_derived]
10339        impl alloy_sol_types::SolEvent for ValidatorExitClaimed {
10340            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10341            type DataToken<'a> = <Self::DataTuple<
10342                'a,
10343            > as alloy_sol_types::SolType>::Token<'a>;
10344            type TopicList = (
10345                alloy_sol_types::sol_data::FixedBytes<32>,
10346                alloy::sol_types::sol_data::Address,
10347                alloy::sol_types::sol_data::Address,
10348            );
10349            const SIGNATURE: &'static str = "ValidatorExitClaimed(address,address,uint256)";
10350            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10351                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
10352                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
10353                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
10354            ]);
10355            const ANONYMOUS: bool = false;
10356            #[allow(unused_variables)]
10357            #[inline]
10358            fn new(
10359                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10360                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10361            ) -> Self {
10362                Self {
10363                    delegator: topics.1,
10364                    validator: topics.2,
10365                    amount: data.0,
10366                }
10367            }
10368            #[inline]
10369            fn check_signature(
10370                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10371            ) -> alloy_sol_types::Result<()> {
10372                if topics.0 != Self::SIGNATURE_HASH {
10373                    return Err(
10374                        alloy_sol_types::Error::invalid_event_signature_hash(
10375                            Self::SIGNATURE,
10376                            topics.0,
10377                            Self::SIGNATURE_HASH,
10378                        ),
10379                    );
10380                }
10381                Ok(())
10382            }
10383            #[inline]
10384            fn tokenize_body(&self) -> Self::DataToken<'_> {
10385                (
10386                    <alloy::sol_types::sol_data::Uint<
10387                        256,
10388                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10389                )
10390            }
10391            #[inline]
10392            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10393                (
10394                    Self::SIGNATURE_HASH.into(),
10395                    self.delegator.clone(),
10396                    self.validator.clone(),
10397                )
10398            }
10399            #[inline]
10400            fn encode_topics_raw(
10401                &self,
10402                out: &mut [alloy_sol_types::abi::token::WordToken],
10403            ) -> alloy_sol_types::Result<()> {
10404                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10405                    return Err(alloy_sol_types::Error::Overrun);
10406                }
10407                out[0usize] = alloy_sol_types::abi::token::WordToken(
10408                    Self::SIGNATURE_HASH,
10409                );
10410                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10411                    &self.delegator,
10412                );
10413                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10414                    &self.validator,
10415                );
10416                Ok(())
10417            }
10418        }
10419        #[automatically_derived]
10420        impl alloy_sol_types::private::IntoLogData for ValidatorExitClaimed {
10421            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10422                From::from(self)
10423            }
10424            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10425                From::from(&self)
10426            }
10427        }
10428        #[automatically_derived]
10429        impl From<&ValidatorExitClaimed> for alloy_sol_types::private::LogData {
10430            #[inline]
10431            fn from(this: &ValidatorExitClaimed) -> alloy_sol_types::private::LogData {
10432                alloy_sol_types::SolEvent::encode_log_data(this)
10433            }
10434        }
10435    };
10436    #[derive(serde::Serialize, serde::Deserialize)]
10437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10438    /**Event with signature `ValidatorExitV2(address,uint256)` and selector `0x4e61e872ca9f0a4313eb81c3e8aed2370c89d643593911afdd330e71f0c47eab`.
10439```solidity
10440event ValidatorExitV2(address indexed validator, uint256 unlocksAt);
10441```*/
10442    #[allow(
10443        non_camel_case_types,
10444        non_snake_case,
10445        clippy::pub_underscore_fields,
10446        clippy::style
10447    )]
10448    #[derive(Clone)]
10449    pub struct ValidatorExitV2 {
10450        #[allow(missing_docs)]
10451        pub validator: alloy::sol_types::private::Address,
10452        #[allow(missing_docs)]
10453        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
10454    }
10455    #[allow(
10456        non_camel_case_types,
10457        non_snake_case,
10458        clippy::pub_underscore_fields,
10459        clippy::style
10460    )]
10461    const _: () = {
10462        use alloy::sol_types as alloy_sol_types;
10463        #[automatically_derived]
10464        impl alloy_sol_types::SolEvent for ValidatorExitV2 {
10465            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10466            type DataToken<'a> = <Self::DataTuple<
10467                'a,
10468            > as alloy_sol_types::SolType>::Token<'a>;
10469            type TopicList = (
10470                alloy_sol_types::sol_data::FixedBytes<32>,
10471                alloy::sol_types::sol_data::Address,
10472            );
10473            const SIGNATURE: &'static str = "ValidatorExitV2(address,uint256)";
10474            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10475                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
10476                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
10477                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
10478            ]);
10479            const ANONYMOUS: bool = false;
10480            #[allow(unused_variables)]
10481            #[inline]
10482            fn new(
10483                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10484                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10485            ) -> Self {
10486                Self {
10487                    validator: topics.1,
10488                    unlocksAt: data.0,
10489                }
10490            }
10491            #[inline]
10492            fn check_signature(
10493                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10494            ) -> alloy_sol_types::Result<()> {
10495                if topics.0 != Self::SIGNATURE_HASH {
10496                    return Err(
10497                        alloy_sol_types::Error::invalid_event_signature_hash(
10498                            Self::SIGNATURE,
10499                            topics.0,
10500                            Self::SIGNATURE_HASH,
10501                        ),
10502                    );
10503                }
10504                Ok(())
10505            }
10506            #[inline]
10507            fn tokenize_body(&self) -> Self::DataToken<'_> {
10508                (
10509                    <alloy::sol_types::sol_data::Uint<
10510                        256,
10511                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
10512                )
10513            }
10514            #[inline]
10515            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10516                (Self::SIGNATURE_HASH.into(), self.validator.clone())
10517            }
10518            #[inline]
10519            fn encode_topics_raw(
10520                &self,
10521                out: &mut [alloy_sol_types::abi::token::WordToken],
10522            ) -> alloy_sol_types::Result<()> {
10523                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10524                    return Err(alloy_sol_types::Error::Overrun);
10525                }
10526                out[0usize] = alloy_sol_types::abi::token::WordToken(
10527                    Self::SIGNATURE_HASH,
10528                );
10529                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10530                    &self.validator,
10531                );
10532                Ok(())
10533            }
10534        }
10535        #[automatically_derived]
10536        impl alloy_sol_types::private::IntoLogData for ValidatorExitV2 {
10537            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10538                From::from(self)
10539            }
10540            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10541                From::from(&self)
10542            }
10543        }
10544        #[automatically_derived]
10545        impl From<&ValidatorExitV2> for alloy_sol_types::private::LogData {
10546            #[inline]
10547            fn from(this: &ValidatorExitV2) -> alloy_sol_types::private::LogData {
10548                alloy_sol_types::SolEvent::encode_log_data(this)
10549            }
10550        }
10551    };
10552    #[derive(serde::Serialize, serde::Deserialize)]
10553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10554    /**Event with signature `ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)` and selector `0xf6e8359c57520b469634736bfc3bb7ec5cbd1a0bd28b10a8275793bb730b797f`.
10555```solidity
10556event ValidatorRegistered(address indexed account, BN254.G2Point blsVk, EdOnBN254.EdOnBN254Point schnorrVk, uint16 commission);
10557```*/
10558    #[allow(
10559        non_camel_case_types,
10560        non_snake_case,
10561        clippy::pub_underscore_fields,
10562        clippy::style
10563    )]
10564    #[derive(Clone)]
10565    pub struct ValidatorRegistered {
10566        #[allow(missing_docs)]
10567        pub account: alloy::sol_types::private::Address,
10568        #[allow(missing_docs)]
10569        pub blsVk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10570        #[allow(missing_docs)]
10571        pub schnorrVk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10572        #[allow(missing_docs)]
10573        pub commission: u16,
10574    }
10575    #[allow(
10576        non_camel_case_types,
10577        non_snake_case,
10578        clippy::pub_underscore_fields,
10579        clippy::style
10580    )]
10581    const _: () = {
10582        use alloy::sol_types as alloy_sol_types;
10583        #[automatically_derived]
10584        impl alloy_sol_types::SolEvent for ValidatorRegistered {
10585            type DataTuple<'a> = (
10586                BN254::G2Point,
10587                EdOnBN254::EdOnBN254Point,
10588                alloy::sol_types::sol_data::Uint<16>,
10589            );
10590            type DataToken<'a> = <Self::DataTuple<
10591                'a,
10592            > as alloy_sol_types::SolType>::Token<'a>;
10593            type TopicList = (
10594                alloy_sol_types::sol_data::FixedBytes<32>,
10595                alloy::sol_types::sol_data::Address,
10596            );
10597            const SIGNATURE: &'static str = "ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)";
10598            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10599                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
10600                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
10601                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
10602            ]);
10603            const ANONYMOUS: bool = false;
10604            #[allow(unused_variables)]
10605            #[inline]
10606            fn new(
10607                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10608                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10609            ) -> Self {
10610                Self {
10611                    account: topics.1,
10612                    blsVk: data.0,
10613                    schnorrVk: data.1,
10614                    commission: data.2,
10615                }
10616            }
10617            #[inline]
10618            fn check_signature(
10619                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10620            ) -> alloy_sol_types::Result<()> {
10621                if topics.0 != Self::SIGNATURE_HASH {
10622                    return Err(
10623                        alloy_sol_types::Error::invalid_event_signature_hash(
10624                            Self::SIGNATURE,
10625                            topics.0,
10626                            Self::SIGNATURE_HASH,
10627                        ),
10628                    );
10629                }
10630                Ok(())
10631            }
10632            #[inline]
10633            fn tokenize_body(&self) -> Self::DataToken<'_> {
10634                (
10635                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVk),
10636                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10637                        &self.schnorrVk,
10638                    ),
10639                    <alloy::sol_types::sol_data::Uint<
10640                        16,
10641                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10642                )
10643            }
10644            #[inline]
10645            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10646                (Self::SIGNATURE_HASH.into(), self.account.clone())
10647            }
10648            #[inline]
10649            fn encode_topics_raw(
10650                &self,
10651                out: &mut [alloy_sol_types::abi::token::WordToken],
10652            ) -> alloy_sol_types::Result<()> {
10653                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10654                    return Err(alloy_sol_types::Error::Overrun);
10655                }
10656                out[0usize] = alloy_sol_types::abi::token::WordToken(
10657                    Self::SIGNATURE_HASH,
10658                );
10659                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10660                    &self.account,
10661                );
10662                Ok(())
10663            }
10664        }
10665        #[automatically_derived]
10666        impl alloy_sol_types::private::IntoLogData for ValidatorRegistered {
10667            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10668                From::from(self)
10669            }
10670            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10671                From::from(&self)
10672            }
10673        }
10674        #[automatically_derived]
10675        impl From<&ValidatorRegistered> for alloy_sol_types::private::LogData {
10676            #[inline]
10677            fn from(this: &ValidatorRegistered) -> alloy_sol_types::private::LogData {
10678                alloy_sol_types::SolEvent::encode_log_data(this)
10679            }
10680        }
10681    };
10682    #[derive(serde::Serialize, serde::Deserialize)]
10683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10684    /**Event with signature `ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)` and selector `0x26def174fce8147f56017d095bf39cdf2b9728f91ab2f274974a2fd97b268489`.
10685```solidity
10686event ValidatorRegisteredV2(address indexed account, BN254.G2Point blsVK, EdOnBN254.EdOnBN254Point schnorrVK, uint16 commission, BN254.G1Point blsSig, bytes schnorrSig, string metadataUri);
10687```*/
10688    #[allow(
10689        non_camel_case_types,
10690        non_snake_case,
10691        clippy::pub_underscore_fields,
10692        clippy::style
10693    )]
10694    #[derive(Clone)]
10695    pub struct ValidatorRegisteredV2 {
10696        #[allow(missing_docs)]
10697        pub account: alloy::sol_types::private::Address,
10698        #[allow(missing_docs)]
10699        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
10700        #[allow(missing_docs)]
10701        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
10702        #[allow(missing_docs)]
10703        pub commission: u16,
10704        #[allow(missing_docs)]
10705        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
10706        #[allow(missing_docs)]
10707        pub schnorrSig: alloy::sol_types::private::Bytes,
10708        #[allow(missing_docs)]
10709        pub metadataUri: alloy::sol_types::private::String,
10710    }
10711    #[allow(
10712        non_camel_case_types,
10713        non_snake_case,
10714        clippy::pub_underscore_fields,
10715        clippy::style
10716    )]
10717    const _: () = {
10718        use alloy::sol_types as alloy_sol_types;
10719        #[automatically_derived]
10720        impl alloy_sol_types::SolEvent for ValidatorRegisteredV2 {
10721            type DataTuple<'a> = (
10722                BN254::G2Point,
10723                EdOnBN254::EdOnBN254Point,
10724                alloy::sol_types::sol_data::Uint<16>,
10725                BN254::G1Point,
10726                alloy::sol_types::sol_data::Bytes,
10727                alloy::sol_types::sol_data::String,
10728            );
10729            type DataToken<'a> = <Self::DataTuple<
10730                'a,
10731            > as alloy_sol_types::SolType>::Token<'a>;
10732            type TopicList = (
10733                alloy_sol_types::sol_data::FixedBytes<32>,
10734                alloy::sol_types::sol_data::Address,
10735            );
10736            const SIGNATURE: &'static str = "ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)";
10737            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10738                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
10739                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
10740                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
10741            ]);
10742            const ANONYMOUS: bool = false;
10743            #[allow(unused_variables)]
10744            #[inline]
10745            fn new(
10746                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10747                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10748            ) -> Self {
10749                Self {
10750                    account: topics.1,
10751                    blsVK: data.0,
10752                    schnorrVK: data.1,
10753                    commission: data.2,
10754                    blsSig: data.3,
10755                    schnorrSig: data.4,
10756                    metadataUri: data.5,
10757                }
10758            }
10759            #[inline]
10760            fn check_signature(
10761                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10762            ) -> alloy_sol_types::Result<()> {
10763                if topics.0 != Self::SIGNATURE_HASH {
10764                    return Err(
10765                        alloy_sol_types::Error::invalid_event_signature_hash(
10766                            Self::SIGNATURE,
10767                            topics.0,
10768                            Self::SIGNATURE_HASH,
10769                        ),
10770                    );
10771                }
10772                Ok(())
10773            }
10774            #[inline]
10775            fn tokenize_body(&self) -> Self::DataToken<'_> {
10776                (
10777                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
10778                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
10779                        &self.schnorrVK,
10780                    ),
10781                    <alloy::sol_types::sol_data::Uint<
10782                        16,
10783                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
10784                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
10785                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10786                        &self.schnorrSig,
10787                    ),
10788                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
10789                        &self.metadataUri,
10790                    ),
10791                )
10792            }
10793            #[inline]
10794            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10795                (Self::SIGNATURE_HASH.into(), self.account.clone())
10796            }
10797            #[inline]
10798            fn encode_topics_raw(
10799                &self,
10800                out: &mut [alloy_sol_types::abi::token::WordToken],
10801            ) -> alloy_sol_types::Result<()> {
10802                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10803                    return Err(alloy_sol_types::Error::Overrun);
10804                }
10805                out[0usize] = alloy_sol_types::abi::token::WordToken(
10806                    Self::SIGNATURE_HASH,
10807                );
10808                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10809                    &self.account,
10810                );
10811                Ok(())
10812            }
10813        }
10814        #[automatically_derived]
10815        impl alloy_sol_types::private::IntoLogData for ValidatorRegisteredV2 {
10816            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10817                From::from(self)
10818            }
10819            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10820                From::from(&self)
10821            }
10822        }
10823        #[automatically_derived]
10824        impl From<&ValidatorRegisteredV2> for alloy_sol_types::private::LogData {
10825            #[inline]
10826            fn from(this: &ValidatorRegisteredV2) -> alloy_sol_types::private::LogData {
10827                alloy_sol_types::SolEvent::encode_log_data(this)
10828            }
10829        }
10830    };
10831    #[derive(serde::Serialize, serde::Deserialize)]
10832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10833    /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`.
10834```solidity
10835event Withdrawal(address indexed account, uint256 amount);
10836```*/
10837    #[allow(
10838        non_camel_case_types,
10839        non_snake_case,
10840        clippy::pub_underscore_fields,
10841        clippy::style
10842    )]
10843    #[derive(Clone)]
10844    pub struct Withdrawal {
10845        #[allow(missing_docs)]
10846        pub account: alloy::sol_types::private::Address,
10847        #[allow(missing_docs)]
10848        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10849    }
10850    #[allow(
10851        non_camel_case_types,
10852        non_snake_case,
10853        clippy::pub_underscore_fields,
10854        clippy::style
10855    )]
10856    const _: () = {
10857        use alloy::sol_types as alloy_sol_types;
10858        #[automatically_derived]
10859        impl alloy_sol_types::SolEvent for Withdrawal {
10860            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10861            type DataToken<'a> = <Self::DataTuple<
10862                'a,
10863            > as alloy_sol_types::SolType>::Token<'a>;
10864            type TopicList = (
10865                alloy_sol_types::sol_data::FixedBytes<32>,
10866                alloy::sol_types::sol_data::Address,
10867            );
10868            const SIGNATURE: &'static str = "Withdrawal(address,uint256)";
10869            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10870                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
10871                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
10872                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
10873            ]);
10874            const ANONYMOUS: bool = false;
10875            #[allow(unused_variables)]
10876            #[inline]
10877            fn new(
10878                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
10879                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
10880            ) -> Self {
10881                Self {
10882                    account: topics.1,
10883                    amount: data.0,
10884                }
10885            }
10886            #[inline]
10887            fn check_signature(
10888                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
10889            ) -> alloy_sol_types::Result<()> {
10890                if topics.0 != Self::SIGNATURE_HASH {
10891                    return Err(
10892                        alloy_sol_types::Error::invalid_event_signature_hash(
10893                            Self::SIGNATURE,
10894                            topics.0,
10895                            Self::SIGNATURE_HASH,
10896                        ),
10897                    );
10898                }
10899                Ok(())
10900            }
10901            #[inline]
10902            fn tokenize_body(&self) -> Self::DataToken<'_> {
10903                (
10904                    <alloy::sol_types::sol_data::Uint<
10905                        256,
10906                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
10907                )
10908            }
10909            #[inline]
10910            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
10911                (Self::SIGNATURE_HASH.into(), self.account.clone())
10912            }
10913            #[inline]
10914            fn encode_topics_raw(
10915                &self,
10916                out: &mut [alloy_sol_types::abi::token::WordToken],
10917            ) -> alloy_sol_types::Result<()> {
10918                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
10919                    return Err(alloy_sol_types::Error::Overrun);
10920                }
10921                out[0usize] = alloy_sol_types::abi::token::WordToken(
10922                    Self::SIGNATURE_HASH,
10923                );
10924                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
10925                    &self.account,
10926                );
10927                Ok(())
10928            }
10929        }
10930        #[automatically_derived]
10931        impl alloy_sol_types::private::IntoLogData for Withdrawal {
10932            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10933                From::from(self)
10934            }
10935            fn into_log_data(self) -> alloy_sol_types::private::LogData {
10936                From::from(&self)
10937            }
10938        }
10939        #[automatically_derived]
10940        impl From<&Withdrawal> for alloy_sol_types::private::LogData {
10941            #[inline]
10942            fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData {
10943                alloy_sol_types::SolEvent::encode_log_data(this)
10944            }
10945        }
10946    };
10947    #[derive(serde::Serialize, serde::Deserialize)]
10948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10949    /**Event with signature `WithdrawalClaimed(address,address,uint64,uint256)` and selector `0xb79df40ab5a542878bca407295042dd18296fcc115d5ca8d9db29acbf74a8522`.
10950```solidity
10951event WithdrawalClaimed(address indexed delegator, address indexed validator, uint64 indexed undelegationId, uint256 amount);
10952```*/
10953    #[allow(
10954        non_camel_case_types,
10955        non_snake_case,
10956        clippy::pub_underscore_fields,
10957        clippy::style
10958    )]
10959    #[derive(Clone)]
10960    pub struct WithdrawalClaimed {
10961        #[allow(missing_docs)]
10962        pub delegator: alloy::sol_types::private::Address,
10963        #[allow(missing_docs)]
10964        pub validator: alloy::sol_types::private::Address,
10965        #[allow(missing_docs)]
10966        pub undelegationId: u64,
10967        #[allow(missing_docs)]
10968        pub amount: alloy::sol_types::private::primitives::aliases::U256,
10969    }
10970    #[allow(
10971        non_camel_case_types,
10972        non_snake_case,
10973        clippy::pub_underscore_fields,
10974        clippy::style
10975    )]
10976    const _: () = {
10977        use alloy::sol_types as alloy_sol_types;
10978        #[automatically_derived]
10979        impl alloy_sol_types::SolEvent for WithdrawalClaimed {
10980            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10981            type DataToken<'a> = <Self::DataTuple<
10982                'a,
10983            > as alloy_sol_types::SolType>::Token<'a>;
10984            type TopicList = (
10985                alloy_sol_types::sol_data::FixedBytes<32>,
10986                alloy::sol_types::sol_data::Address,
10987                alloy::sol_types::sol_data::Address,
10988                alloy::sol_types::sol_data::Uint<64>,
10989            );
10990            const SIGNATURE: &'static str = "WithdrawalClaimed(address,address,uint64,uint256)";
10991            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
10992                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
10993                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
10994                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
10995            ]);
10996            const ANONYMOUS: bool = false;
10997            #[allow(unused_variables)]
10998            #[inline]
10999            fn new(
11000                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
11001                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
11002            ) -> Self {
11003                Self {
11004                    delegator: topics.1,
11005                    validator: topics.2,
11006                    undelegationId: topics.3,
11007                    amount: data.0,
11008                }
11009            }
11010            #[inline]
11011            fn check_signature(
11012                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
11013            ) -> alloy_sol_types::Result<()> {
11014                if topics.0 != Self::SIGNATURE_HASH {
11015                    return Err(
11016                        alloy_sol_types::Error::invalid_event_signature_hash(
11017                            Self::SIGNATURE,
11018                            topics.0,
11019                            Self::SIGNATURE_HASH,
11020                        ),
11021                    );
11022                }
11023                Ok(())
11024            }
11025            #[inline]
11026            fn tokenize_body(&self) -> Self::DataToken<'_> {
11027                (
11028                    <alloy::sol_types::sol_data::Uint<
11029                        256,
11030                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
11031                )
11032            }
11033            #[inline]
11034            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
11035                (
11036                    Self::SIGNATURE_HASH.into(),
11037                    self.delegator.clone(),
11038                    self.validator.clone(),
11039                    self.undelegationId.clone(),
11040                )
11041            }
11042            #[inline]
11043            fn encode_topics_raw(
11044                &self,
11045                out: &mut [alloy_sol_types::abi::token::WordToken],
11046            ) -> alloy_sol_types::Result<()> {
11047                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
11048                    return Err(alloy_sol_types::Error::Overrun);
11049                }
11050                out[0usize] = alloy_sol_types::abi::token::WordToken(
11051                    Self::SIGNATURE_HASH,
11052                );
11053                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11054                    &self.delegator,
11055                );
11056                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
11057                    &self.validator,
11058                );
11059                out[3usize] = <alloy::sol_types::sol_data::Uint<
11060                    64,
11061                > as alloy_sol_types::EventTopic>::encode_topic(&self.undelegationId);
11062                Ok(())
11063            }
11064        }
11065        #[automatically_derived]
11066        impl alloy_sol_types::private::IntoLogData for WithdrawalClaimed {
11067            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11068                From::from(self)
11069            }
11070            fn into_log_data(self) -> alloy_sol_types::private::LogData {
11071                From::from(&self)
11072            }
11073        }
11074        #[automatically_derived]
11075        impl From<&WithdrawalClaimed> for alloy_sol_types::private::LogData {
11076            #[inline]
11077            fn from(this: &WithdrawalClaimed) -> alloy_sol_types::private::LogData {
11078                alloy_sol_types::SolEvent::encode_log_data(this)
11079            }
11080        }
11081    };
11082    /**Constructor`.
11083```solidity
11084constructor();
11085```*/
11086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11087    #[derive(Clone)]
11088    pub struct constructorCall {}
11089    const _: () = {
11090        use alloy::sol_types as alloy_sol_types;
11091        {
11092            #[doc(hidden)]
11093            #[allow(dead_code)]
11094            type UnderlyingSolTuple<'a> = ();
11095            #[doc(hidden)]
11096            type UnderlyingRustTuple<'a> = ();
11097            #[cfg(test)]
11098            #[allow(dead_code, unreachable_patterns)]
11099            fn _type_assertion(
11100                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11101            ) {
11102                match _t {
11103                    alloy_sol_types::private::AssertTypeEq::<
11104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11105                    >(_) => {}
11106                }
11107            }
11108            #[automatically_derived]
11109            #[doc(hidden)]
11110            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
11111                fn from(value: constructorCall) -> Self {
11112                    ()
11113                }
11114            }
11115            #[automatically_derived]
11116            #[doc(hidden)]
11117            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
11118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11119                    Self {}
11120                }
11121            }
11122        }
11123        #[automatically_derived]
11124        impl alloy_sol_types::SolConstructor for constructorCall {
11125            type Parameters<'a> = ();
11126            type Token<'a> = <Self::Parameters<
11127                'a,
11128            > as alloy_sol_types::SolType>::Token<'a>;
11129            #[inline]
11130            fn new<'a>(
11131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11132            ) -> Self {
11133                tuple.into()
11134            }
11135            #[inline]
11136            fn tokenize(&self) -> Self::Token<'_> {
11137                ()
11138            }
11139        }
11140    };
11141    #[derive(serde::Serialize, serde::Deserialize)]
11142    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11143    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
11144```solidity
11145function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
11146```*/
11147    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11148    #[derive(Clone)]
11149    pub struct DEFAULT_ADMIN_ROLECall;
11150    #[derive(serde::Serialize, serde::Deserialize)]
11151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11152    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
11153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11154    #[derive(Clone)]
11155    pub struct DEFAULT_ADMIN_ROLEReturn {
11156        #[allow(missing_docs)]
11157        pub _0: alloy::sol_types::private::FixedBytes<32>,
11158    }
11159    #[allow(
11160        non_camel_case_types,
11161        non_snake_case,
11162        clippy::pub_underscore_fields,
11163        clippy::style
11164    )]
11165    const _: () = {
11166        use alloy::sol_types as alloy_sol_types;
11167        {
11168            #[doc(hidden)]
11169            #[allow(dead_code)]
11170            type UnderlyingSolTuple<'a> = ();
11171            #[doc(hidden)]
11172            type UnderlyingRustTuple<'a> = ();
11173            #[cfg(test)]
11174            #[allow(dead_code, unreachable_patterns)]
11175            fn _type_assertion(
11176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11177            ) {
11178                match _t {
11179                    alloy_sol_types::private::AssertTypeEq::<
11180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11181                    >(_) => {}
11182                }
11183            }
11184            #[automatically_derived]
11185            #[doc(hidden)]
11186            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
11187            for UnderlyingRustTuple<'_> {
11188                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
11189                    ()
11190                }
11191            }
11192            #[automatically_derived]
11193            #[doc(hidden)]
11194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11195            for DEFAULT_ADMIN_ROLECall {
11196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11197                    Self
11198                }
11199            }
11200        }
11201        {
11202            #[doc(hidden)]
11203            #[allow(dead_code)]
11204            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11205            #[doc(hidden)]
11206            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11207            #[cfg(test)]
11208            #[allow(dead_code, unreachable_patterns)]
11209            fn _type_assertion(
11210                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11211            ) {
11212                match _t {
11213                    alloy_sol_types::private::AssertTypeEq::<
11214                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11215                    >(_) => {}
11216                }
11217            }
11218            #[automatically_derived]
11219            #[doc(hidden)]
11220            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
11221            for UnderlyingRustTuple<'_> {
11222                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
11223                    (value._0,)
11224                }
11225            }
11226            #[automatically_derived]
11227            #[doc(hidden)]
11228            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11229            for DEFAULT_ADMIN_ROLEReturn {
11230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11231                    Self { _0: tuple.0 }
11232                }
11233            }
11234        }
11235        #[automatically_derived]
11236        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
11237            type Parameters<'a> = ();
11238            type Token<'a> = <Self::Parameters<
11239                'a,
11240            > as alloy_sol_types::SolType>::Token<'a>;
11241            type Return = alloy::sol_types::private::FixedBytes<32>;
11242            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11243            type ReturnToken<'a> = <Self::ReturnTuple<
11244                'a,
11245            > as alloy_sol_types::SolType>::Token<'a>;
11246            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
11247            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
11248            #[inline]
11249            fn new<'a>(
11250                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11251            ) -> Self {
11252                tuple.into()
11253            }
11254            #[inline]
11255            fn tokenize(&self) -> Self::Token<'_> {
11256                ()
11257            }
11258            #[inline]
11259            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11260                (
11261                    <alloy::sol_types::sol_data::FixedBytes<
11262                        32,
11263                    > as alloy_sol_types::SolType>::tokenize(ret),
11264                )
11265            }
11266            #[inline]
11267            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11268                <Self::ReturnTuple<
11269                    '_,
11270                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11271                    .map(|r| {
11272                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11273                        r._0
11274                    })
11275            }
11276            #[inline]
11277            fn abi_decode_returns_with_config(
11278                data: &[u8],
11279                config: alloy_sol_types::abi::AbiDecoderConfig,
11280            ) -> alloy_sol_types::Result<Self::Return> {
11281                <Self::ReturnTuple<
11282                    '_,
11283                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11284                        data,
11285                        config,
11286                    )
11287                    .map(|r| {
11288                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
11289                        r._0
11290                    })
11291            }
11292            #[inline]
11293            fn abi_decode_returns_validate(
11294                data: &[u8],
11295            ) -> alloy_sol_types::Result<Self::Return> {
11296                Self::abi_decode_returns_with_config(
11297                    data,
11298                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11299                )
11300            }
11301        }
11302    };
11303    #[derive(serde::Serialize, serde::Deserialize)]
11304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11305    /**Function with signature `MAX_COMMISSION_BPS()` and selector `0xe62977f8`.
11306```solidity
11307function MAX_COMMISSION_BPS() external view returns (uint16);
11308```*/
11309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11310    #[derive(Clone)]
11311    pub struct MAX_COMMISSION_BPSCall;
11312    #[derive(serde::Serialize, serde::Deserialize)]
11313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11314    ///Container type for the return parameters of the [`MAX_COMMISSION_BPS()`](MAX_COMMISSION_BPSCall) function.
11315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11316    #[derive(Clone)]
11317    pub struct MAX_COMMISSION_BPSReturn {
11318        #[allow(missing_docs)]
11319        pub _0: u16,
11320    }
11321    #[allow(
11322        non_camel_case_types,
11323        non_snake_case,
11324        clippy::pub_underscore_fields,
11325        clippy::style
11326    )]
11327    const _: () = {
11328        use alloy::sol_types as alloy_sol_types;
11329        {
11330            #[doc(hidden)]
11331            #[allow(dead_code)]
11332            type UnderlyingSolTuple<'a> = ();
11333            #[doc(hidden)]
11334            type UnderlyingRustTuple<'a> = ();
11335            #[cfg(test)]
11336            #[allow(dead_code, unreachable_patterns)]
11337            fn _type_assertion(
11338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11339            ) {
11340                match _t {
11341                    alloy_sol_types::private::AssertTypeEq::<
11342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11343                    >(_) => {}
11344                }
11345            }
11346            #[automatically_derived]
11347            #[doc(hidden)]
11348            impl ::core::convert::From<MAX_COMMISSION_BPSCall>
11349            for UnderlyingRustTuple<'_> {
11350                fn from(value: MAX_COMMISSION_BPSCall) -> Self {
11351                    ()
11352                }
11353            }
11354            #[automatically_derived]
11355            #[doc(hidden)]
11356            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11357            for MAX_COMMISSION_BPSCall {
11358                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11359                    Self
11360                }
11361            }
11362        }
11363        {
11364            #[doc(hidden)]
11365            #[allow(dead_code)]
11366            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11367            #[doc(hidden)]
11368            type UnderlyingRustTuple<'a> = (u16,);
11369            #[cfg(test)]
11370            #[allow(dead_code, unreachable_patterns)]
11371            fn _type_assertion(
11372                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11373            ) {
11374                match _t {
11375                    alloy_sol_types::private::AssertTypeEq::<
11376                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11377                    >(_) => {}
11378                }
11379            }
11380            #[automatically_derived]
11381            #[doc(hidden)]
11382            impl ::core::convert::From<MAX_COMMISSION_BPSReturn>
11383            for UnderlyingRustTuple<'_> {
11384                fn from(value: MAX_COMMISSION_BPSReturn) -> Self {
11385                    (value._0,)
11386                }
11387            }
11388            #[automatically_derived]
11389            #[doc(hidden)]
11390            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11391            for MAX_COMMISSION_BPSReturn {
11392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11393                    Self { _0: tuple.0 }
11394                }
11395            }
11396        }
11397        #[automatically_derived]
11398        impl alloy_sol_types::SolCall for MAX_COMMISSION_BPSCall {
11399            type Parameters<'a> = ();
11400            type Token<'a> = <Self::Parameters<
11401                'a,
11402            > as alloy_sol_types::SolType>::Token<'a>;
11403            type Return = u16;
11404            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
11405            type ReturnToken<'a> = <Self::ReturnTuple<
11406                'a,
11407            > as alloy_sol_types::SolType>::Token<'a>;
11408            const SIGNATURE: &'static str = "MAX_COMMISSION_BPS()";
11409            const SELECTOR: [u8; 4] = [230u8, 41u8, 119u8, 248u8];
11410            #[inline]
11411            fn new<'a>(
11412                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11413            ) -> Self {
11414                tuple.into()
11415            }
11416            #[inline]
11417            fn tokenize(&self) -> Self::Token<'_> {
11418                ()
11419            }
11420            #[inline]
11421            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11422                (
11423                    <alloy::sol_types::sol_data::Uint<
11424                        16,
11425                    > as alloy_sol_types::SolType>::tokenize(ret),
11426                )
11427            }
11428            #[inline]
11429            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11430                <Self::ReturnTuple<
11431                    '_,
11432                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11433                    .map(|r| {
11434                        let r: MAX_COMMISSION_BPSReturn = r.into();
11435                        r._0
11436                    })
11437            }
11438            #[inline]
11439            fn abi_decode_returns_with_config(
11440                data: &[u8],
11441                config: alloy_sol_types::abi::AbiDecoderConfig,
11442            ) -> alloy_sol_types::Result<Self::Return> {
11443                <Self::ReturnTuple<
11444                    '_,
11445                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11446                        data,
11447                        config,
11448                    )
11449                    .map(|r| {
11450                        let r: MAX_COMMISSION_BPSReturn = r.into();
11451                        r._0
11452                    })
11453            }
11454            #[inline]
11455            fn abi_decode_returns_validate(
11456                data: &[u8],
11457            ) -> alloy_sol_types::Result<Self::Return> {
11458                Self::abi_decode_returns_with_config(
11459                    data,
11460                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11461                )
11462            }
11463        }
11464    };
11465    #[derive(serde::Serialize, serde::Deserialize)]
11466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11467    /**Function with signature `MAX_EXIT_ESCROW_PERIOD()` and selector `0xe4d1fb94`.
11468```solidity
11469function MAX_EXIT_ESCROW_PERIOD() external view returns (uint64);
11470```*/
11471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11472    #[derive(Clone)]
11473    pub struct MAX_EXIT_ESCROW_PERIODCall;
11474    #[derive(serde::Serialize, serde::Deserialize)]
11475    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11476    ///Container type for the return parameters of the [`MAX_EXIT_ESCROW_PERIOD()`](MAX_EXIT_ESCROW_PERIODCall) function.
11477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11478    #[derive(Clone)]
11479    pub struct MAX_EXIT_ESCROW_PERIODReturn {
11480        #[allow(missing_docs)]
11481        pub _0: u64,
11482    }
11483    #[allow(
11484        non_camel_case_types,
11485        non_snake_case,
11486        clippy::pub_underscore_fields,
11487        clippy::style
11488    )]
11489    const _: () = {
11490        use alloy::sol_types as alloy_sol_types;
11491        {
11492            #[doc(hidden)]
11493            #[allow(dead_code)]
11494            type UnderlyingSolTuple<'a> = ();
11495            #[doc(hidden)]
11496            type UnderlyingRustTuple<'a> = ();
11497            #[cfg(test)]
11498            #[allow(dead_code, unreachable_patterns)]
11499            fn _type_assertion(
11500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11501            ) {
11502                match _t {
11503                    alloy_sol_types::private::AssertTypeEq::<
11504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11505                    >(_) => {}
11506                }
11507            }
11508            #[automatically_derived]
11509            #[doc(hidden)]
11510            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODCall>
11511            for UnderlyingRustTuple<'_> {
11512                fn from(value: MAX_EXIT_ESCROW_PERIODCall) -> Self {
11513                    ()
11514                }
11515            }
11516            #[automatically_derived]
11517            #[doc(hidden)]
11518            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11519            for MAX_EXIT_ESCROW_PERIODCall {
11520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11521                    Self
11522                }
11523            }
11524        }
11525        {
11526            #[doc(hidden)]
11527            #[allow(dead_code)]
11528            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11529            #[doc(hidden)]
11530            type UnderlyingRustTuple<'a> = (u64,);
11531            #[cfg(test)]
11532            #[allow(dead_code, unreachable_patterns)]
11533            fn _type_assertion(
11534                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11535            ) {
11536                match _t {
11537                    alloy_sol_types::private::AssertTypeEq::<
11538                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11539                    >(_) => {}
11540                }
11541            }
11542            #[automatically_derived]
11543            #[doc(hidden)]
11544            impl ::core::convert::From<MAX_EXIT_ESCROW_PERIODReturn>
11545            for UnderlyingRustTuple<'_> {
11546                fn from(value: MAX_EXIT_ESCROW_PERIODReturn) -> Self {
11547                    (value._0,)
11548                }
11549            }
11550            #[automatically_derived]
11551            #[doc(hidden)]
11552            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11553            for MAX_EXIT_ESCROW_PERIODReturn {
11554                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11555                    Self { _0: tuple.0 }
11556                }
11557            }
11558        }
11559        #[automatically_derived]
11560        impl alloy_sol_types::SolCall for MAX_EXIT_ESCROW_PERIODCall {
11561            type Parameters<'a> = ();
11562            type Token<'a> = <Self::Parameters<
11563                'a,
11564            > as alloy_sol_types::SolType>::Token<'a>;
11565            type Return = u64;
11566            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11567            type ReturnToken<'a> = <Self::ReturnTuple<
11568                'a,
11569            > as alloy_sol_types::SolType>::Token<'a>;
11570            const SIGNATURE: &'static str = "MAX_EXIT_ESCROW_PERIOD()";
11571            const SELECTOR: [u8; 4] = [228u8, 209u8, 251u8, 148u8];
11572            #[inline]
11573            fn new<'a>(
11574                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11575            ) -> Self {
11576                tuple.into()
11577            }
11578            #[inline]
11579            fn tokenize(&self) -> Self::Token<'_> {
11580                ()
11581            }
11582            #[inline]
11583            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11584                (
11585                    <alloy::sol_types::sol_data::Uint<
11586                        64,
11587                    > as alloy_sol_types::SolType>::tokenize(ret),
11588                )
11589            }
11590            #[inline]
11591            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11592                <Self::ReturnTuple<
11593                    '_,
11594                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11595                    .map(|r| {
11596                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11597                        r._0
11598                    })
11599            }
11600            #[inline]
11601            fn abi_decode_returns_with_config(
11602                data: &[u8],
11603                config: alloy_sol_types::abi::AbiDecoderConfig,
11604            ) -> alloy_sol_types::Result<Self::Return> {
11605                <Self::ReturnTuple<
11606                    '_,
11607                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11608                        data,
11609                        config,
11610                    )
11611                    .map(|r| {
11612                        let r: MAX_EXIT_ESCROW_PERIODReturn = r.into();
11613                        r._0
11614                    })
11615            }
11616            #[inline]
11617            fn abi_decode_returns_validate(
11618                data: &[u8],
11619            ) -> alloy_sol_types::Result<Self::Return> {
11620                Self::abi_decode_returns_with_config(
11621                    data,
11622                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11623                )
11624            }
11625        }
11626    };
11627    #[derive(serde::Serialize, serde::Deserialize)]
11628    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11629    /**Function with signature `MAX_METADATA_URI_LENGTH()` and selector `0x2fe28759`.
11630```solidity
11631function MAX_METADATA_URI_LENGTH() external view returns (uint256);
11632```*/
11633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11634    #[derive(Clone)]
11635    pub struct MAX_METADATA_URI_LENGTHCall;
11636    #[derive(serde::Serialize, serde::Deserialize)]
11637    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11638    ///Container type for the return parameters of the [`MAX_METADATA_URI_LENGTH()`](MAX_METADATA_URI_LENGTHCall) function.
11639    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11640    #[derive(Clone)]
11641    pub struct MAX_METADATA_URI_LENGTHReturn {
11642        #[allow(missing_docs)]
11643        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11644    }
11645    #[allow(
11646        non_camel_case_types,
11647        non_snake_case,
11648        clippy::pub_underscore_fields,
11649        clippy::style
11650    )]
11651    const _: () = {
11652        use alloy::sol_types as alloy_sol_types;
11653        {
11654            #[doc(hidden)]
11655            #[allow(dead_code)]
11656            type UnderlyingSolTuple<'a> = ();
11657            #[doc(hidden)]
11658            type UnderlyingRustTuple<'a> = ();
11659            #[cfg(test)]
11660            #[allow(dead_code, unreachable_patterns)]
11661            fn _type_assertion(
11662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11663            ) {
11664                match _t {
11665                    alloy_sol_types::private::AssertTypeEq::<
11666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11667                    >(_) => {}
11668                }
11669            }
11670            #[automatically_derived]
11671            #[doc(hidden)]
11672            impl ::core::convert::From<MAX_METADATA_URI_LENGTHCall>
11673            for UnderlyingRustTuple<'_> {
11674                fn from(value: MAX_METADATA_URI_LENGTHCall) -> Self {
11675                    ()
11676                }
11677            }
11678            #[automatically_derived]
11679            #[doc(hidden)]
11680            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11681            for MAX_METADATA_URI_LENGTHCall {
11682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11683                    Self
11684                }
11685            }
11686        }
11687        {
11688            #[doc(hidden)]
11689            #[allow(dead_code)]
11690            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11691            #[doc(hidden)]
11692            type UnderlyingRustTuple<'a> = (
11693                alloy::sol_types::private::primitives::aliases::U256,
11694            );
11695            #[cfg(test)]
11696            #[allow(dead_code, unreachable_patterns)]
11697            fn _type_assertion(
11698                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11699            ) {
11700                match _t {
11701                    alloy_sol_types::private::AssertTypeEq::<
11702                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11703                    >(_) => {}
11704                }
11705            }
11706            #[automatically_derived]
11707            #[doc(hidden)]
11708            impl ::core::convert::From<MAX_METADATA_URI_LENGTHReturn>
11709            for UnderlyingRustTuple<'_> {
11710                fn from(value: MAX_METADATA_URI_LENGTHReturn) -> Self {
11711                    (value._0,)
11712                }
11713            }
11714            #[automatically_derived]
11715            #[doc(hidden)]
11716            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11717            for MAX_METADATA_URI_LENGTHReturn {
11718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11719                    Self { _0: tuple.0 }
11720                }
11721            }
11722        }
11723        #[automatically_derived]
11724        impl alloy_sol_types::SolCall for MAX_METADATA_URI_LENGTHCall {
11725            type Parameters<'a> = ();
11726            type Token<'a> = <Self::Parameters<
11727                'a,
11728            > as alloy_sol_types::SolType>::Token<'a>;
11729            type Return = alloy::sol_types::private::primitives::aliases::U256;
11730            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11731            type ReturnToken<'a> = <Self::ReturnTuple<
11732                'a,
11733            > as alloy_sol_types::SolType>::Token<'a>;
11734            const SIGNATURE: &'static str = "MAX_METADATA_URI_LENGTH()";
11735            const SELECTOR: [u8; 4] = [47u8, 226u8, 135u8, 89u8];
11736            #[inline]
11737            fn new<'a>(
11738                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11739            ) -> Self {
11740                tuple.into()
11741            }
11742            #[inline]
11743            fn tokenize(&self) -> Self::Token<'_> {
11744                ()
11745            }
11746            #[inline]
11747            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11748                (
11749                    <alloy::sol_types::sol_data::Uint<
11750                        256,
11751                    > as alloy_sol_types::SolType>::tokenize(ret),
11752                )
11753            }
11754            #[inline]
11755            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11756                <Self::ReturnTuple<
11757                    '_,
11758                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11759                    .map(|r| {
11760                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11761                        r._0
11762                    })
11763            }
11764            #[inline]
11765            fn abi_decode_returns_with_config(
11766                data: &[u8],
11767                config: alloy_sol_types::abi::AbiDecoderConfig,
11768            ) -> alloy_sol_types::Result<Self::Return> {
11769                <Self::ReturnTuple<
11770                    '_,
11771                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11772                        data,
11773                        config,
11774                    )
11775                    .map(|r| {
11776                        let r: MAX_METADATA_URI_LENGTHReturn = r.into();
11777                        r._0
11778                    })
11779            }
11780            #[inline]
11781            fn abi_decode_returns_validate(
11782                data: &[u8],
11783            ) -> alloy_sol_types::Result<Self::Return> {
11784                Self::abi_decode_returns_with_config(
11785                    data,
11786                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11787                )
11788            }
11789        }
11790    };
11791    #[derive(serde::Serialize, serde::Deserialize)]
11792    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11793    /**Function with signature `MIN_EXIT_ESCROW_PERIOD()` and selector `0x6ad28e9f`.
11794```solidity
11795function MIN_EXIT_ESCROW_PERIOD() external view returns (uint64);
11796```*/
11797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11798    #[derive(Clone)]
11799    pub struct MIN_EXIT_ESCROW_PERIODCall;
11800    #[derive(serde::Serialize, serde::Deserialize)]
11801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11802    ///Container type for the return parameters of the [`MIN_EXIT_ESCROW_PERIOD()`](MIN_EXIT_ESCROW_PERIODCall) function.
11803    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11804    #[derive(Clone)]
11805    pub struct MIN_EXIT_ESCROW_PERIODReturn {
11806        #[allow(missing_docs)]
11807        pub _0: u64,
11808    }
11809    #[allow(
11810        non_camel_case_types,
11811        non_snake_case,
11812        clippy::pub_underscore_fields,
11813        clippy::style
11814    )]
11815    const _: () = {
11816        use alloy::sol_types as alloy_sol_types;
11817        {
11818            #[doc(hidden)]
11819            #[allow(dead_code)]
11820            type UnderlyingSolTuple<'a> = ();
11821            #[doc(hidden)]
11822            type UnderlyingRustTuple<'a> = ();
11823            #[cfg(test)]
11824            #[allow(dead_code, unreachable_patterns)]
11825            fn _type_assertion(
11826                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11827            ) {
11828                match _t {
11829                    alloy_sol_types::private::AssertTypeEq::<
11830                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11831                    >(_) => {}
11832                }
11833            }
11834            #[automatically_derived]
11835            #[doc(hidden)]
11836            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODCall>
11837            for UnderlyingRustTuple<'_> {
11838                fn from(value: MIN_EXIT_ESCROW_PERIODCall) -> Self {
11839                    ()
11840                }
11841            }
11842            #[automatically_derived]
11843            #[doc(hidden)]
11844            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11845            for MIN_EXIT_ESCROW_PERIODCall {
11846                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11847                    Self
11848                }
11849            }
11850        }
11851        {
11852            #[doc(hidden)]
11853            #[allow(dead_code)]
11854            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11855            #[doc(hidden)]
11856            type UnderlyingRustTuple<'a> = (u64,);
11857            #[cfg(test)]
11858            #[allow(dead_code, unreachable_patterns)]
11859            fn _type_assertion(
11860                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11861            ) {
11862                match _t {
11863                    alloy_sol_types::private::AssertTypeEq::<
11864                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11865                    >(_) => {}
11866                }
11867            }
11868            #[automatically_derived]
11869            #[doc(hidden)]
11870            impl ::core::convert::From<MIN_EXIT_ESCROW_PERIODReturn>
11871            for UnderlyingRustTuple<'_> {
11872                fn from(value: MIN_EXIT_ESCROW_PERIODReturn) -> Self {
11873                    (value._0,)
11874                }
11875            }
11876            #[automatically_derived]
11877            #[doc(hidden)]
11878            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11879            for MIN_EXIT_ESCROW_PERIODReturn {
11880                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11881                    Self { _0: tuple.0 }
11882                }
11883            }
11884        }
11885        #[automatically_derived]
11886        impl alloy_sol_types::SolCall for MIN_EXIT_ESCROW_PERIODCall {
11887            type Parameters<'a> = ();
11888            type Token<'a> = <Self::Parameters<
11889                'a,
11890            > as alloy_sol_types::SolType>::Token<'a>;
11891            type Return = u64;
11892            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11893            type ReturnToken<'a> = <Self::ReturnTuple<
11894                'a,
11895            > as alloy_sol_types::SolType>::Token<'a>;
11896            const SIGNATURE: &'static str = "MIN_EXIT_ESCROW_PERIOD()";
11897            const SELECTOR: [u8; 4] = [106u8, 210u8, 142u8, 159u8];
11898            #[inline]
11899            fn new<'a>(
11900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11901            ) -> Self {
11902                tuple.into()
11903            }
11904            #[inline]
11905            fn tokenize(&self) -> Self::Token<'_> {
11906                ()
11907            }
11908            #[inline]
11909            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11910                (
11911                    <alloy::sol_types::sol_data::Uint<
11912                        64,
11913                    > as alloy_sol_types::SolType>::tokenize(ret),
11914                )
11915            }
11916            #[inline]
11917            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11918                <Self::ReturnTuple<
11919                    '_,
11920                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11921                    .map(|r| {
11922                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11923                        r._0
11924                    })
11925            }
11926            #[inline]
11927            fn abi_decode_returns_with_config(
11928                data: &[u8],
11929                config: alloy_sol_types::abi::AbiDecoderConfig,
11930            ) -> alloy_sol_types::Result<Self::Return> {
11931                <Self::ReturnTuple<
11932                    '_,
11933                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11934                        data,
11935                        config,
11936                    )
11937                    .map(|r| {
11938                        let r: MIN_EXIT_ESCROW_PERIODReturn = r.into();
11939                        r._0
11940                    })
11941            }
11942            #[inline]
11943            fn abi_decode_returns_validate(
11944                data: &[u8],
11945            ) -> alloy_sol_types::Result<Self::Return> {
11946                Self::abi_decode_returns_with_config(
11947                    data,
11948                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11949                )
11950            }
11951        }
11952    };
11953    #[derive(serde::Serialize, serde::Deserialize)]
11954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11955    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
11956```solidity
11957function PAUSER_ROLE() external view returns (bytes32);
11958```*/
11959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11960    #[derive(Clone)]
11961    pub struct PAUSER_ROLECall;
11962    #[derive(serde::Serialize, serde::Deserialize)]
11963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11964    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
11965    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11966    #[derive(Clone)]
11967    pub struct PAUSER_ROLEReturn {
11968        #[allow(missing_docs)]
11969        pub _0: alloy::sol_types::private::FixedBytes<32>,
11970    }
11971    #[allow(
11972        non_camel_case_types,
11973        non_snake_case,
11974        clippy::pub_underscore_fields,
11975        clippy::style
11976    )]
11977    const _: () = {
11978        use alloy::sol_types as alloy_sol_types;
11979        {
11980            #[doc(hidden)]
11981            #[allow(dead_code)]
11982            type UnderlyingSolTuple<'a> = ();
11983            #[doc(hidden)]
11984            type UnderlyingRustTuple<'a> = ();
11985            #[cfg(test)]
11986            #[allow(dead_code, unreachable_patterns)]
11987            fn _type_assertion(
11988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11989            ) {
11990                match _t {
11991                    alloy_sol_types::private::AssertTypeEq::<
11992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11993                    >(_) => {}
11994                }
11995            }
11996            #[automatically_derived]
11997            #[doc(hidden)]
11998            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
11999                fn from(value: PAUSER_ROLECall) -> Self {
12000                    ()
12001                }
12002            }
12003            #[automatically_derived]
12004            #[doc(hidden)]
12005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
12006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12007                    Self
12008                }
12009            }
12010        }
12011        {
12012            #[doc(hidden)]
12013            #[allow(dead_code)]
12014            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12015            #[doc(hidden)]
12016            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12017            #[cfg(test)]
12018            #[allow(dead_code, unreachable_patterns)]
12019            fn _type_assertion(
12020                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12021            ) {
12022                match _t {
12023                    alloy_sol_types::private::AssertTypeEq::<
12024                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12025                    >(_) => {}
12026                }
12027            }
12028            #[automatically_derived]
12029            #[doc(hidden)]
12030            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
12031                fn from(value: PAUSER_ROLEReturn) -> Self {
12032                    (value._0,)
12033                }
12034            }
12035            #[automatically_derived]
12036            #[doc(hidden)]
12037            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
12038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12039                    Self { _0: tuple.0 }
12040                }
12041            }
12042        }
12043        #[automatically_derived]
12044        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
12045            type Parameters<'a> = ();
12046            type Token<'a> = <Self::Parameters<
12047                'a,
12048            > as alloy_sol_types::SolType>::Token<'a>;
12049            type Return = alloy::sol_types::private::FixedBytes<32>;
12050            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12051            type ReturnToken<'a> = <Self::ReturnTuple<
12052                'a,
12053            > as alloy_sol_types::SolType>::Token<'a>;
12054            const SIGNATURE: &'static str = "PAUSER_ROLE()";
12055            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
12056            #[inline]
12057            fn new<'a>(
12058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12059            ) -> Self {
12060                tuple.into()
12061            }
12062            #[inline]
12063            fn tokenize(&self) -> Self::Token<'_> {
12064                ()
12065            }
12066            #[inline]
12067            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12068                (
12069                    <alloy::sol_types::sol_data::FixedBytes<
12070                        32,
12071                    > as alloy_sol_types::SolType>::tokenize(ret),
12072                )
12073            }
12074            #[inline]
12075            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12076                <Self::ReturnTuple<
12077                    '_,
12078                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12079                    .map(|r| {
12080                        let r: PAUSER_ROLEReturn = r.into();
12081                        r._0
12082                    })
12083            }
12084            #[inline]
12085            fn abi_decode_returns_with_config(
12086                data: &[u8],
12087                config: alloy_sol_types::abi::AbiDecoderConfig,
12088            ) -> alloy_sol_types::Result<Self::Return> {
12089                <Self::ReturnTuple<
12090                    '_,
12091                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12092                        data,
12093                        config,
12094                    )
12095                    .map(|r| {
12096                        let r: PAUSER_ROLEReturn = r.into();
12097                        r._0
12098                    })
12099            }
12100            #[inline]
12101            fn abi_decode_returns_validate(
12102                data: &[u8],
12103            ) -> alloy_sol_types::Result<Self::Return> {
12104                Self::abi_decode_returns_with_config(
12105                    data,
12106                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12107                )
12108            }
12109        }
12110    };
12111    #[derive(serde::Serialize, serde::Deserialize)]
12112    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12113    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
12114```solidity
12115function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
12116```*/
12117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12118    #[derive(Clone)]
12119    pub struct UPGRADE_INTERFACE_VERSIONCall;
12120    #[derive(serde::Serialize, serde::Deserialize)]
12121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12122    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
12123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12124    #[derive(Clone)]
12125    pub struct UPGRADE_INTERFACE_VERSIONReturn {
12126        #[allow(missing_docs)]
12127        pub _0: alloy::sol_types::private::String,
12128    }
12129    #[allow(
12130        non_camel_case_types,
12131        non_snake_case,
12132        clippy::pub_underscore_fields,
12133        clippy::style
12134    )]
12135    const _: () = {
12136        use alloy::sol_types as alloy_sol_types;
12137        {
12138            #[doc(hidden)]
12139            #[allow(dead_code)]
12140            type UnderlyingSolTuple<'a> = ();
12141            #[doc(hidden)]
12142            type UnderlyingRustTuple<'a> = ();
12143            #[cfg(test)]
12144            #[allow(dead_code, unreachable_patterns)]
12145            fn _type_assertion(
12146                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12147            ) {
12148                match _t {
12149                    alloy_sol_types::private::AssertTypeEq::<
12150                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12151                    >(_) => {}
12152                }
12153            }
12154            #[automatically_derived]
12155            #[doc(hidden)]
12156            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
12157            for UnderlyingRustTuple<'_> {
12158                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
12159                    ()
12160                }
12161            }
12162            #[automatically_derived]
12163            #[doc(hidden)]
12164            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12165            for UPGRADE_INTERFACE_VERSIONCall {
12166                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12167                    Self
12168                }
12169            }
12170        }
12171        {
12172            #[doc(hidden)]
12173            #[allow(dead_code)]
12174            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
12175            #[doc(hidden)]
12176            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
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<UPGRADE_INTERFACE_VERSIONReturn>
12191            for UnderlyingRustTuple<'_> {
12192                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
12193                    (value._0,)
12194                }
12195            }
12196            #[automatically_derived]
12197            #[doc(hidden)]
12198            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12199            for UPGRADE_INTERFACE_VERSIONReturn {
12200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12201                    Self { _0: tuple.0 }
12202                }
12203            }
12204        }
12205        #[automatically_derived]
12206        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
12207            type Parameters<'a> = ();
12208            type Token<'a> = <Self::Parameters<
12209                'a,
12210            > as alloy_sol_types::SolType>::Token<'a>;
12211            type Return = alloy::sol_types::private::String;
12212            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
12213            type ReturnToken<'a> = <Self::ReturnTuple<
12214                'a,
12215            > as alloy_sol_types::SolType>::Token<'a>;
12216            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
12217            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
12218            #[inline]
12219            fn new<'a>(
12220                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12221            ) -> Self {
12222                tuple.into()
12223            }
12224            #[inline]
12225            fn tokenize(&self) -> Self::Token<'_> {
12226                ()
12227            }
12228            #[inline]
12229            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12230                (
12231                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
12232                        ret,
12233                    ),
12234                )
12235            }
12236            #[inline]
12237            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12238                <Self::ReturnTuple<
12239                    '_,
12240                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12241                    .map(|r| {
12242                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12243                        r._0
12244                    })
12245            }
12246            #[inline]
12247            fn abi_decode_returns_with_config(
12248                data: &[u8],
12249                config: alloy_sol_types::abi::AbiDecoderConfig,
12250            ) -> alloy_sol_types::Result<Self::Return> {
12251                <Self::ReturnTuple<
12252                    '_,
12253                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12254                        data,
12255                        config,
12256                    )
12257                    .map(|r| {
12258                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
12259                        r._0
12260                    })
12261            }
12262            #[inline]
12263            fn abi_decode_returns_validate(
12264                data: &[u8],
12265            ) -> alloy_sol_types::Result<Self::Return> {
12266                Self::abi_decode_returns_with_config(
12267                    data,
12268                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12269                )
12270            }
12271        }
12272    };
12273    #[derive(serde::Serialize, serde::Deserialize)]
12274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12275    /**Function with signature `_hashBlsKey((uint256,uint256,uint256,uint256))` and selector `0x9b30a5e6`.
12276```solidity
12277function _hashBlsKey(BN254.G2Point memory blsVK) external pure returns (bytes32);
12278```*/
12279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12280    #[derive(Clone)]
12281    pub struct _hashBlsKeyCall {
12282        #[allow(missing_docs)]
12283        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12284    }
12285    #[derive(serde::Serialize, serde::Deserialize)]
12286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12287    ///Container type for the return parameters of the [`_hashBlsKey((uint256,uint256,uint256,uint256))`](_hashBlsKeyCall) function.
12288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12289    #[derive(Clone)]
12290    pub struct _hashBlsKeyReturn {
12291        #[allow(missing_docs)]
12292        pub _0: alloy::sol_types::private::FixedBytes<32>,
12293    }
12294    #[allow(
12295        non_camel_case_types,
12296        non_snake_case,
12297        clippy::pub_underscore_fields,
12298        clippy::style
12299    )]
12300    const _: () = {
12301        use alloy::sol_types as alloy_sol_types;
12302        {
12303            #[doc(hidden)]
12304            #[allow(dead_code)]
12305            type UnderlyingSolTuple<'a> = (BN254::G2Point,);
12306            #[doc(hidden)]
12307            type UnderlyingRustTuple<'a> = (
12308                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
12309            );
12310            #[cfg(test)]
12311            #[allow(dead_code, unreachable_patterns)]
12312            fn _type_assertion(
12313                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12314            ) {
12315                match _t {
12316                    alloy_sol_types::private::AssertTypeEq::<
12317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12318                    >(_) => {}
12319                }
12320            }
12321            #[automatically_derived]
12322            #[doc(hidden)]
12323            impl ::core::convert::From<_hashBlsKeyCall> for UnderlyingRustTuple<'_> {
12324                fn from(value: _hashBlsKeyCall) -> Self {
12325                    (value.blsVK,)
12326                }
12327            }
12328            #[automatically_derived]
12329            #[doc(hidden)]
12330            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyCall {
12331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12332                    Self { blsVK: tuple.0 }
12333                }
12334            }
12335        }
12336        {
12337            #[doc(hidden)]
12338            #[allow(dead_code)]
12339            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12340            #[doc(hidden)]
12341            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12342            #[cfg(test)]
12343            #[allow(dead_code, unreachable_patterns)]
12344            fn _type_assertion(
12345                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12346            ) {
12347                match _t {
12348                    alloy_sol_types::private::AssertTypeEq::<
12349                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12350                    >(_) => {}
12351                }
12352            }
12353            #[automatically_derived]
12354            #[doc(hidden)]
12355            impl ::core::convert::From<_hashBlsKeyReturn> for UnderlyingRustTuple<'_> {
12356                fn from(value: _hashBlsKeyReturn) -> Self {
12357                    (value._0,)
12358                }
12359            }
12360            #[automatically_derived]
12361            #[doc(hidden)]
12362            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _hashBlsKeyReturn {
12363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12364                    Self { _0: tuple.0 }
12365                }
12366            }
12367        }
12368        #[automatically_derived]
12369        impl alloy_sol_types::SolCall for _hashBlsKeyCall {
12370            type Parameters<'a> = (BN254::G2Point,);
12371            type Token<'a> = <Self::Parameters<
12372                'a,
12373            > as alloy_sol_types::SolType>::Token<'a>;
12374            type Return = alloy::sol_types::private::FixedBytes<32>;
12375            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12376            type ReturnToken<'a> = <Self::ReturnTuple<
12377                'a,
12378            > as alloy_sol_types::SolType>::Token<'a>;
12379            const SIGNATURE: &'static str = "_hashBlsKey((uint256,uint256,uint256,uint256))";
12380            const SELECTOR: [u8; 4] = [155u8, 48u8, 165u8, 230u8];
12381            #[inline]
12382            fn new<'a>(
12383                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12384            ) -> Self {
12385                tuple.into()
12386            }
12387            #[inline]
12388            fn tokenize(&self) -> Self::Token<'_> {
12389                (<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),)
12390            }
12391            #[inline]
12392            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12393                (
12394                    <alloy::sol_types::sol_data::FixedBytes<
12395                        32,
12396                    > as alloy_sol_types::SolType>::tokenize(ret),
12397                )
12398            }
12399            #[inline]
12400            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12401                <Self::ReturnTuple<
12402                    '_,
12403                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12404                    .map(|r| {
12405                        let r: _hashBlsKeyReturn = r.into();
12406                        r._0
12407                    })
12408            }
12409            #[inline]
12410            fn abi_decode_returns_with_config(
12411                data: &[u8],
12412                config: alloy_sol_types::abi::AbiDecoderConfig,
12413            ) -> alloy_sol_types::Result<Self::Return> {
12414                <Self::ReturnTuple<
12415                    '_,
12416                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12417                        data,
12418                        config,
12419                    )
12420                    .map(|r| {
12421                        let r: _hashBlsKeyReturn = r.into();
12422                        r._0
12423                    })
12424            }
12425            #[inline]
12426            fn abi_decode_returns_validate(
12427                data: &[u8],
12428            ) -> alloy_sol_types::Result<Self::Return> {
12429                Self::abi_decode_returns_with_config(
12430                    data,
12431                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12432                )
12433            }
12434        }
12435    };
12436    #[derive(serde::Serialize, serde::Deserialize)]
12437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12438    /**Function with signature `activeStake()` and selector `0xbd49c35f`.
12439```solidity
12440function activeStake() external view returns (uint256);
12441```*/
12442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12443    #[derive(Clone)]
12444    pub struct activeStakeCall;
12445    #[derive(serde::Serialize, serde::Deserialize)]
12446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12447    ///Container type for the return parameters of the [`activeStake()`](activeStakeCall) function.
12448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12449    #[derive(Clone)]
12450    pub struct activeStakeReturn {
12451        #[allow(missing_docs)]
12452        pub _0: alloy::sol_types::private::primitives::aliases::U256,
12453    }
12454    #[allow(
12455        non_camel_case_types,
12456        non_snake_case,
12457        clippy::pub_underscore_fields,
12458        clippy::style
12459    )]
12460    const _: () = {
12461        use alloy::sol_types as alloy_sol_types;
12462        {
12463            #[doc(hidden)]
12464            #[allow(dead_code)]
12465            type UnderlyingSolTuple<'a> = ();
12466            #[doc(hidden)]
12467            type UnderlyingRustTuple<'a> = ();
12468            #[cfg(test)]
12469            #[allow(dead_code, unreachable_patterns)]
12470            fn _type_assertion(
12471                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12472            ) {
12473                match _t {
12474                    alloy_sol_types::private::AssertTypeEq::<
12475                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12476                    >(_) => {}
12477                }
12478            }
12479            #[automatically_derived]
12480            #[doc(hidden)]
12481            impl ::core::convert::From<activeStakeCall> for UnderlyingRustTuple<'_> {
12482                fn from(value: activeStakeCall) -> Self {
12483                    ()
12484                }
12485            }
12486            #[automatically_derived]
12487            #[doc(hidden)]
12488            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeCall {
12489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12490                    Self
12491                }
12492            }
12493        }
12494        {
12495            #[doc(hidden)]
12496            #[allow(dead_code)]
12497            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12498            #[doc(hidden)]
12499            type UnderlyingRustTuple<'a> = (
12500                alloy::sol_types::private::primitives::aliases::U256,
12501            );
12502            #[cfg(test)]
12503            #[allow(dead_code, unreachable_patterns)]
12504            fn _type_assertion(
12505                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12506            ) {
12507                match _t {
12508                    alloy_sol_types::private::AssertTypeEq::<
12509                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12510                    >(_) => {}
12511                }
12512            }
12513            #[automatically_derived]
12514            #[doc(hidden)]
12515            impl ::core::convert::From<activeStakeReturn> for UnderlyingRustTuple<'_> {
12516                fn from(value: activeStakeReturn) -> Self {
12517                    (value._0,)
12518                }
12519            }
12520            #[automatically_derived]
12521            #[doc(hidden)]
12522            impl ::core::convert::From<UnderlyingRustTuple<'_>> for activeStakeReturn {
12523                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12524                    Self { _0: tuple.0 }
12525                }
12526            }
12527        }
12528        #[automatically_derived]
12529        impl alloy_sol_types::SolCall for activeStakeCall {
12530            type Parameters<'a> = ();
12531            type Token<'a> = <Self::Parameters<
12532                'a,
12533            > as alloy_sol_types::SolType>::Token<'a>;
12534            type Return = alloy::sol_types::private::primitives::aliases::U256;
12535            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12536            type ReturnToken<'a> = <Self::ReturnTuple<
12537                'a,
12538            > as alloy_sol_types::SolType>::Token<'a>;
12539            const SIGNATURE: &'static str = "activeStake()";
12540            const SELECTOR: [u8; 4] = [189u8, 73u8, 195u8, 95u8];
12541            #[inline]
12542            fn new<'a>(
12543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12544            ) -> Self {
12545                tuple.into()
12546            }
12547            #[inline]
12548            fn tokenize(&self) -> Self::Token<'_> {
12549                ()
12550            }
12551            #[inline]
12552            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12553                (
12554                    <alloy::sol_types::sol_data::Uint<
12555                        256,
12556                    > as alloy_sol_types::SolType>::tokenize(ret),
12557                )
12558            }
12559            #[inline]
12560            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12561                <Self::ReturnTuple<
12562                    '_,
12563                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12564                    .map(|r| {
12565                        let r: activeStakeReturn = r.into();
12566                        r._0
12567                    })
12568            }
12569            #[inline]
12570            fn abi_decode_returns_with_config(
12571                data: &[u8],
12572                config: alloy_sol_types::abi::AbiDecoderConfig,
12573            ) -> alloy_sol_types::Result<Self::Return> {
12574                <Self::ReturnTuple<
12575                    '_,
12576                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12577                        data,
12578                        config,
12579                    )
12580                    .map(|r| {
12581                        let r: activeStakeReturn = r.into();
12582                        r._0
12583                    })
12584            }
12585            #[inline]
12586            fn abi_decode_returns_validate(
12587                data: &[u8],
12588            ) -> alloy_sol_types::Result<Self::Return> {
12589                Self::abi_decode_returns_with_config(
12590                    data,
12591                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12592                )
12593            }
12594        }
12595    };
12596    #[derive(serde::Serialize, serde::Deserialize)]
12597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12598    /**Function with signature `blsKeys(bytes32)` and selector `0xb3e6ebd5`.
12599```solidity
12600function blsKeys(bytes32 blsKeyHash) external view returns (bool used);
12601```*/
12602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12603    #[derive(Clone)]
12604    pub struct blsKeysCall {
12605        #[allow(missing_docs)]
12606        pub blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
12607    }
12608    #[derive(serde::Serialize, serde::Deserialize)]
12609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12610    ///Container type for the return parameters of the [`blsKeys(bytes32)`](blsKeysCall) function.
12611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12612    #[derive(Clone)]
12613    pub struct blsKeysReturn {
12614        #[allow(missing_docs)]
12615        pub used: bool,
12616    }
12617    #[allow(
12618        non_camel_case_types,
12619        non_snake_case,
12620        clippy::pub_underscore_fields,
12621        clippy::style
12622    )]
12623    const _: () = {
12624        use alloy::sol_types as alloy_sol_types;
12625        {
12626            #[doc(hidden)]
12627            #[allow(dead_code)]
12628            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12629            #[doc(hidden)]
12630            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12631            #[cfg(test)]
12632            #[allow(dead_code, unreachable_patterns)]
12633            fn _type_assertion(
12634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12635            ) {
12636                match _t {
12637                    alloy_sol_types::private::AssertTypeEq::<
12638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12639                    >(_) => {}
12640                }
12641            }
12642            #[automatically_derived]
12643            #[doc(hidden)]
12644            impl ::core::convert::From<blsKeysCall> for UnderlyingRustTuple<'_> {
12645                fn from(value: blsKeysCall) -> Self {
12646                    (value.blsKeyHash,)
12647                }
12648            }
12649            #[automatically_derived]
12650            #[doc(hidden)]
12651            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysCall {
12652                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12653                    Self { blsKeyHash: tuple.0 }
12654                }
12655            }
12656        }
12657        {
12658            #[doc(hidden)]
12659            #[allow(dead_code)]
12660            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12661            #[doc(hidden)]
12662            type UnderlyingRustTuple<'a> = (bool,);
12663            #[cfg(test)]
12664            #[allow(dead_code, unreachable_patterns)]
12665            fn _type_assertion(
12666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12667            ) {
12668                match _t {
12669                    alloy_sol_types::private::AssertTypeEq::<
12670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12671                    >(_) => {}
12672                }
12673            }
12674            #[automatically_derived]
12675            #[doc(hidden)]
12676            impl ::core::convert::From<blsKeysReturn> for UnderlyingRustTuple<'_> {
12677                fn from(value: blsKeysReturn) -> Self {
12678                    (value.used,)
12679                }
12680            }
12681            #[automatically_derived]
12682            #[doc(hidden)]
12683            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsKeysReturn {
12684                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12685                    Self { used: tuple.0 }
12686                }
12687            }
12688        }
12689        #[automatically_derived]
12690        impl alloy_sol_types::SolCall for blsKeysCall {
12691            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12692            type Token<'a> = <Self::Parameters<
12693                'a,
12694            > as alloy_sol_types::SolType>::Token<'a>;
12695            type Return = bool;
12696            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12697            type ReturnToken<'a> = <Self::ReturnTuple<
12698                'a,
12699            > as alloy_sol_types::SolType>::Token<'a>;
12700            const SIGNATURE: &'static str = "blsKeys(bytes32)";
12701            const SELECTOR: [u8; 4] = [179u8, 230u8, 235u8, 213u8];
12702            #[inline]
12703            fn new<'a>(
12704                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12705            ) -> Self {
12706                tuple.into()
12707            }
12708            #[inline]
12709            fn tokenize(&self) -> Self::Token<'_> {
12710                (
12711                    <alloy::sol_types::sol_data::FixedBytes<
12712                        32,
12713                    > as alloy_sol_types::SolType>::tokenize(&self.blsKeyHash),
12714                )
12715            }
12716            #[inline]
12717            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12718                (
12719                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12720                        ret,
12721                    ),
12722                )
12723            }
12724            #[inline]
12725            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12726                <Self::ReturnTuple<
12727                    '_,
12728                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12729                    .map(|r| {
12730                        let r: blsKeysReturn = r.into();
12731                        r.used
12732                    })
12733            }
12734            #[inline]
12735            fn abi_decode_returns_with_config(
12736                data: &[u8],
12737                config: alloy_sol_types::abi::AbiDecoderConfig,
12738            ) -> alloy_sol_types::Result<Self::Return> {
12739                <Self::ReturnTuple<
12740                    '_,
12741                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12742                        data,
12743                        config,
12744                    )
12745                    .map(|r| {
12746                        let r: blsKeysReturn = r.into();
12747                        r.used
12748                    })
12749            }
12750            #[inline]
12751            fn abi_decode_returns_validate(
12752                data: &[u8],
12753            ) -> alloy_sol_types::Result<Self::Return> {
12754                Self::abi_decode_returns_with_config(
12755                    data,
12756                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12757                )
12758            }
12759        }
12760    };
12761    #[derive(serde::Serialize, serde::Deserialize)]
12762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12763    /**Function with signature `claimValidatorExit(address)` and selector `0x2140fecd`.
12764```solidity
12765function claimValidatorExit(address validator) external;
12766```*/
12767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12768    #[derive(Clone)]
12769    pub struct claimValidatorExitCall {
12770        #[allow(missing_docs)]
12771        pub validator: alloy::sol_types::private::Address,
12772    }
12773    ///Container type for the return parameters of the [`claimValidatorExit(address)`](claimValidatorExitCall) function.
12774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12775    #[derive(Clone)]
12776    pub struct claimValidatorExitReturn {}
12777    #[allow(
12778        non_camel_case_types,
12779        non_snake_case,
12780        clippy::pub_underscore_fields,
12781        clippy::style
12782    )]
12783    const _: () = {
12784        use alloy::sol_types as alloy_sol_types;
12785        {
12786            #[doc(hidden)]
12787            #[allow(dead_code)]
12788            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12789            #[doc(hidden)]
12790            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12791            #[cfg(test)]
12792            #[allow(dead_code, unreachable_patterns)]
12793            fn _type_assertion(
12794                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12795            ) {
12796                match _t {
12797                    alloy_sol_types::private::AssertTypeEq::<
12798                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12799                    >(_) => {}
12800                }
12801            }
12802            #[automatically_derived]
12803            #[doc(hidden)]
12804            impl ::core::convert::From<claimValidatorExitCall>
12805            for UnderlyingRustTuple<'_> {
12806                fn from(value: claimValidatorExitCall) -> Self {
12807                    (value.validator,)
12808                }
12809            }
12810            #[automatically_derived]
12811            #[doc(hidden)]
12812            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12813            for claimValidatorExitCall {
12814                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12815                    Self { validator: tuple.0 }
12816                }
12817            }
12818        }
12819        {
12820            #[doc(hidden)]
12821            #[allow(dead_code)]
12822            type UnderlyingSolTuple<'a> = ();
12823            #[doc(hidden)]
12824            type UnderlyingRustTuple<'a> = ();
12825            #[cfg(test)]
12826            #[allow(dead_code, unreachable_patterns)]
12827            fn _type_assertion(
12828                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12829            ) {
12830                match _t {
12831                    alloy_sol_types::private::AssertTypeEq::<
12832                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12833                    >(_) => {}
12834                }
12835            }
12836            #[automatically_derived]
12837            #[doc(hidden)]
12838            impl ::core::convert::From<claimValidatorExitReturn>
12839            for UnderlyingRustTuple<'_> {
12840                fn from(value: claimValidatorExitReturn) -> Self {
12841                    ()
12842                }
12843            }
12844            #[automatically_derived]
12845            #[doc(hidden)]
12846            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12847            for claimValidatorExitReturn {
12848                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12849                    Self {}
12850                }
12851            }
12852        }
12853        impl claimValidatorExitReturn {
12854            fn _tokenize(
12855                &self,
12856            ) -> <claimValidatorExitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12857                ()
12858            }
12859        }
12860        #[automatically_derived]
12861        impl alloy_sol_types::SolCall for claimValidatorExitCall {
12862            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12863            type Token<'a> = <Self::Parameters<
12864                'a,
12865            > as alloy_sol_types::SolType>::Token<'a>;
12866            type Return = claimValidatorExitReturn;
12867            type ReturnTuple<'a> = ();
12868            type ReturnToken<'a> = <Self::ReturnTuple<
12869                'a,
12870            > as alloy_sol_types::SolType>::Token<'a>;
12871            const SIGNATURE: &'static str = "claimValidatorExit(address)";
12872            const SELECTOR: [u8; 4] = [33u8, 64u8, 254u8, 205u8];
12873            #[inline]
12874            fn new<'a>(
12875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12876            ) -> Self {
12877                tuple.into()
12878            }
12879            #[inline]
12880            fn tokenize(&self) -> Self::Token<'_> {
12881                (
12882                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12883                        &self.validator,
12884                    ),
12885                )
12886            }
12887            #[inline]
12888            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12889                claimValidatorExitReturn::_tokenize(ret)
12890            }
12891            #[inline]
12892            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12893                <Self::ReturnTuple<
12894                    '_,
12895                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12896                    .map(Into::into)
12897            }
12898            #[inline]
12899            fn abi_decode_returns_with_config(
12900                data: &[u8],
12901                config: alloy_sol_types::abi::AbiDecoderConfig,
12902            ) -> alloy_sol_types::Result<Self::Return> {
12903                <Self::ReturnTuple<
12904                    '_,
12905                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12906                        data,
12907                        config,
12908                    )
12909                    .map(Into::into)
12910            }
12911            #[inline]
12912            fn abi_decode_returns_validate(
12913                data: &[u8],
12914            ) -> alloy_sol_types::Result<Self::Return> {
12915                Self::abi_decode_returns_with_config(
12916                    data,
12917                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12918                )
12919            }
12920        }
12921    };
12922    #[derive(serde::Serialize, serde::Deserialize)]
12923    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12924    /**Function with signature `claimWithdrawal(address)` and selector `0xa3066aab`.
12925```solidity
12926function claimWithdrawal(address validator) external;
12927```*/
12928    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12929    #[derive(Clone)]
12930    pub struct claimWithdrawalCall {
12931        #[allow(missing_docs)]
12932        pub validator: alloy::sol_types::private::Address,
12933    }
12934    ///Container type for the return parameters of the [`claimWithdrawal(address)`](claimWithdrawalCall) function.
12935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12936    #[derive(Clone)]
12937    pub struct claimWithdrawalReturn {}
12938    #[allow(
12939        non_camel_case_types,
12940        non_snake_case,
12941        clippy::pub_underscore_fields,
12942        clippy::style
12943    )]
12944    const _: () = {
12945        use alloy::sol_types as alloy_sol_types;
12946        {
12947            #[doc(hidden)]
12948            #[allow(dead_code)]
12949            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12950            #[doc(hidden)]
12951            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12952            #[cfg(test)]
12953            #[allow(dead_code, unreachable_patterns)]
12954            fn _type_assertion(
12955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12956            ) {
12957                match _t {
12958                    alloy_sol_types::private::AssertTypeEq::<
12959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12960                    >(_) => {}
12961                }
12962            }
12963            #[automatically_derived]
12964            #[doc(hidden)]
12965            impl ::core::convert::From<claimWithdrawalCall> for UnderlyingRustTuple<'_> {
12966                fn from(value: claimWithdrawalCall) -> Self {
12967                    (value.validator,)
12968                }
12969            }
12970            #[automatically_derived]
12971            #[doc(hidden)]
12972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimWithdrawalCall {
12973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12974                    Self { validator: tuple.0 }
12975                }
12976            }
12977        }
12978        {
12979            #[doc(hidden)]
12980            #[allow(dead_code)]
12981            type UnderlyingSolTuple<'a> = ();
12982            #[doc(hidden)]
12983            type UnderlyingRustTuple<'a> = ();
12984            #[cfg(test)]
12985            #[allow(dead_code, unreachable_patterns)]
12986            fn _type_assertion(
12987                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12988            ) {
12989                match _t {
12990                    alloy_sol_types::private::AssertTypeEq::<
12991                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12992                    >(_) => {}
12993                }
12994            }
12995            #[automatically_derived]
12996            #[doc(hidden)]
12997            impl ::core::convert::From<claimWithdrawalReturn>
12998            for UnderlyingRustTuple<'_> {
12999                fn from(value: claimWithdrawalReturn) -> Self {
13000                    ()
13001                }
13002            }
13003            #[automatically_derived]
13004            #[doc(hidden)]
13005            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13006            for claimWithdrawalReturn {
13007                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13008                    Self {}
13009                }
13010            }
13011        }
13012        impl claimWithdrawalReturn {
13013            fn _tokenize(
13014                &self,
13015            ) -> <claimWithdrawalCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13016                ()
13017            }
13018        }
13019        #[automatically_derived]
13020        impl alloy_sol_types::SolCall for claimWithdrawalCall {
13021            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13022            type Token<'a> = <Self::Parameters<
13023                'a,
13024            > as alloy_sol_types::SolType>::Token<'a>;
13025            type Return = claimWithdrawalReturn;
13026            type ReturnTuple<'a> = ();
13027            type ReturnToken<'a> = <Self::ReturnTuple<
13028                'a,
13029            > as alloy_sol_types::SolType>::Token<'a>;
13030            const SIGNATURE: &'static str = "claimWithdrawal(address)";
13031            const SELECTOR: [u8; 4] = [163u8, 6u8, 106u8, 171u8];
13032            #[inline]
13033            fn new<'a>(
13034                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13035            ) -> Self {
13036                tuple.into()
13037            }
13038            #[inline]
13039            fn tokenize(&self) -> Self::Token<'_> {
13040                (
13041                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13042                        &self.validator,
13043                    ),
13044                )
13045            }
13046            #[inline]
13047            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13048                claimWithdrawalReturn::_tokenize(ret)
13049            }
13050            #[inline]
13051            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13052                <Self::ReturnTuple<
13053                    '_,
13054                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13055                    .map(Into::into)
13056            }
13057            #[inline]
13058            fn abi_decode_returns_with_config(
13059                data: &[u8],
13060                config: alloy_sol_types::abi::AbiDecoderConfig,
13061            ) -> alloy_sol_types::Result<Self::Return> {
13062                <Self::ReturnTuple<
13063                    '_,
13064                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13065                        data,
13066                        config,
13067                    )
13068                    .map(Into::into)
13069            }
13070            #[inline]
13071            fn abi_decode_returns_validate(
13072                data: &[u8],
13073            ) -> alloy_sol_types::Result<Self::Return> {
13074                Self::abi_decode_returns_with_config(
13075                    data,
13076                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13077                )
13078            }
13079        }
13080    };
13081    #[derive(serde::Serialize, serde::Deserialize)]
13082    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13083    /**Function with signature `commissionTracking(address)` and selector `0x9ffb6b43`.
13084```solidity
13085function commissionTracking(address validator) external view returns (uint16 commission, uint256 lastIncreaseTime);
13086```*/
13087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13088    #[derive(Clone)]
13089    pub struct commissionTrackingCall {
13090        #[allow(missing_docs)]
13091        pub validator: alloy::sol_types::private::Address,
13092    }
13093    #[derive(serde::Serialize, serde::Deserialize)]
13094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13095    ///Container type for the return parameters of the [`commissionTracking(address)`](commissionTrackingCall) function.
13096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13097    #[derive(Clone)]
13098    pub struct commissionTrackingReturn {
13099        #[allow(missing_docs)]
13100        pub commission: u16,
13101        #[allow(missing_docs)]
13102        pub lastIncreaseTime: alloy::sol_types::private::primitives::aliases::U256,
13103    }
13104    #[allow(
13105        non_camel_case_types,
13106        non_snake_case,
13107        clippy::pub_underscore_fields,
13108        clippy::style
13109    )]
13110    const _: () = {
13111        use alloy::sol_types as alloy_sol_types;
13112        {
13113            #[doc(hidden)]
13114            #[allow(dead_code)]
13115            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13116            #[doc(hidden)]
13117            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13118            #[cfg(test)]
13119            #[allow(dead_code, unreachable_patterns)]
13120            fn _type_assertion(
13121                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13122            ) {
13123                match _t {
13124                    alloy_sol_types::private::AssertTypeEq::<
13125                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13126                    >(_) => {}
13127                }
13128            }
13129            #[automatically_derived]
13130            #[doc(hidden)]
13131            impl ::core::convert::From<commissionTrackingCall>
13132            for UnderlyingRustTuple<'_> {
13133                fn from(value: commissionTrackingCall) -> Self {
13134                    (value.validator,)
13135                }
13136            }
13137            #[automatically_derived]
13138            #[doc(hidden)]
13139            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13140            for commissionTrackingCall {
13141                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13142                    Self { validator: tuple.0 }
13143                }
13144            }
13145        }
13146        {
13147            #[doc(hidden)]
13148            #[allow(dead_code)]
13149            type UnderlyingSolTuple<'a> = (
13150                alloy::sol_types::sol_data::Uint<16>,
13151                alloy::sol_types::sol_data::Uint<256>,
13152            );
13153            #[doc(hidden)]
13154            type UnderlyingRustTuple<'a> = (
13155                u16,
13156                alloy::sol_types::private::primitives::aliases::U256,
13157            );
13158            #[cfg(test)]
13159            #[allow(dead_code, unreachable_patterns)]
13160            fn _type_assertion(
13161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13162            ) {
13163                match _t {
13164                    alloy_sol_types::private::AssertTypeEq::<
13165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13166                    >(_) => {}
13167                }
13168            }
13169            #[automatically_derived]
13170            #[doc(hidden)]
13171            impl ::core::convert::From<commissionTrackingReturn>
13172            for UnderlyingRustTuple<'_> {
13173                fn from(value: commissionTrackingReturn) -> Self {
13174                    (value.commission, value.lastIncreaseTime)
13175                }
13176            }
13177            #[automatically_derived]
13178            #[doc(hidden)]
13179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13180            for commissionTrackingReturn {
13181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13182                    Self {
13183                        commission: tuple.0,
13184                        lastIncreaseTime: tuple.1,
13185                    }
13186                }
13187            }
13188        }
13189        impl commissionTrackingReturn {
13190            fn _tokenize(
13191                &self,
13192            ) -> <commissionTrackingCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13193                (
13194                    <alloy::sol_types::sol_data::Uint<
13195                        16,
13196                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
13197                    <alloy::sol_types::sol_data::Uint<
13198                        256,
13199                    > as alloy_sol_types::SolType>::tokenize(&self.lastIncreaseTime),
13200                )
13201            }
13202        }
13203        #[automatically_derived]
13204        impl alloy_sol_types::SolCall for commissionTrackingCall {
13205            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13206            type Token<'a> = <Self::Parameters<
13207                'a,
13208            > as alloy_sol_types::SolType>::Token<'a>;
13209            type Return = commissionTrackingReturn;
13210            type ReturnTuple<'a> = (
13211                alloy::sol_types::sol_data::Uint<16>,
13212                alloy::sol_types::sol_data::Uint<256>,
13213            );
13214            type ReturnToken<'a> = <Self::ReturnTuple<
13215                'a,
13216            > as alloy_sol_types::SolType>::Token<'a>;
13217            const SIGNATURE: &'static str = "commissionTracking(address)";
13218            const SELECTOR: [u8; 4] = [159u8, 251u8, 107u8, 67u8];
13219            #[inline]
13220            fn new<'a>(
13221                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13222            ) -> Self {
13223                tuple.into()
13224            }
13225            #[inline]
13226            fn tokenize(&self) -> Self::Token<'_> {
13227                (
13228                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13229                        &self.validator,
13230                    ),
13231                )
13232            }
13233            #[inline]
13234            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13235                commissionTrackingReturn::_tokenize(ret)
13236            }
13237            #[inline]
13238            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13239                <Self::ReturnTuple<
13240                    '_,
13241                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13242                    .map(Into::into)
13243            }
13244            #[inline]
13245            fn abi_decode_returns_with_config(
13246                data: &[u8],
13247                config: alloy_sol_types::abi::AbiDecoderConfig,
13248            ) -> alloy_sol_types::Result<Self::Return> {
13249                <Self::ReturnTuple<
13250                    '_,
13251                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13252                        data,
13253                        config,
13254                    )
13255                    .map(Into::into)
13256            }
13257            #[inline]
13258            fn abi_decode_returns_validate(
13259                data: &[u8],
13260            ) -> alloy_sol_types::Result<Self::Return> {
13261                Self::abi_decode_returns_with_config(
13262                    data,
13263                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13264                )
13265            }
13266        }
13267    };
13268    #[derive(serde::Serialize, serde::Deserialize)]
13269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13270    /**Function with signature `delegate(address,uint256)` and selector `0x026e402b`.
13271```solidity
13272function delegate(address validator, uint256 amount) external;
13273```*/
13274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13275    #[derive(Clone)]
13276    pub struct delegateCall {
13277        #[allow(missing_docs)]
13278        pub validator: alloy::sol_types::private::Address,
13279        #[allow(missing_docs)]
13280        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13281    }
13282    ///Container type for the return parameters of the [`delegate(address,uint256)`](delegateCall) function.
13283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13284    #[derive(Clone)]
13285    pub struct delegateReturn {}
13286    #[allow(
13287        non_camel_case_types,
13288        non_snake_case,
13289        clippy::pub_underscore_fields,
13290        clippy::style
13291    )]
13292    const _: () = {
13293        use alloy::sol_types as alloy_sol_types;
13294        {
13295            #[doc(hidden)]
13296            #[allow(dead_code)]
13297            type UnderlyingSolTuple<'a> = (
13298                alloy::sol_types::sol_data::Address,
13299                alloy::sol_types::sol_data::Uint<256>,
13300            );
13301            #[doc(hidden)]
13302            type UnderlyingRustTuple<'a> = (
13303                alloy::sol_types::private::Address,
13304                alloy::sol_types::private::primitives::aliases::U256,
13305            );
13306            #[cfg(test)]
13307            #[allow(dead_code, unreachable_patterns)]
13308            fn _type_assertion(
13309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13310            ) {
13311                match _t {
13312                    alloy_sol_types::private::AssertTypeEq::<
13313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13314                    >(_) => {}
13315                }
13316            }
13317            #[automatically_derived]
13318            #[doc(hidden)]
13319            impl ::core::convert::From<delegateCall> for UnderlyingRustTuple<'_> {
13320                fn from(value: delegateCall) -> Self {
13321                    (value.validator, value.amount)
13322                }
13323            }
13324            #[automatically_derived]
13325            #[doc(hidden)]
13326            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateCall {
13327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13328                    Self {
13329                        validator: tuple.0,
13330                        amount: tuple.1,
13331                    }
13332                }
13333            }
13334        }
13335        {
13336            #[doc(hidden)]
13337            #[allow(dead_code)]
13338            type UnderlyingSolTuple<'a> = ();
13339            #[doc(hidden)]
13340            type UnderlyingRustTuple<'a> = ();
13341            #[cfg(test)]
13342            #[allow(dead_code, unreachable_patterns)]
13343            fn _type_assertion(
13344                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13345            ) {
13346                match _t {
13347                    alloy_sol_types::private::AssertTypeEq::<
13348                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13349                    >(_) => {}
13350                }
13351            }
13352            #[automatically_derived]
13353            #[doc(hidden)]
13354            impl ::core::convert::From<delegateReturn> for UnderlyingRustTuple<'_> {
13355                fn from(value: delegateReturn) -> Self {
13356                    ()
13357                }
13358            }
13359            #[automatically_derived]
13360            #[doc(hidden)]
13361            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegateReturn {
13362                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13363                    Self {}
13364                }
13365            }
13366        }
13367        impl delegateReturn {
13368            fn _tokenize(
13369                &self,
13370            ) -> <delegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13371                ()
13372            }
13373        }
13374        #[automatically_derived]
13375        impl alloy_sol_types::SolCall for delegateCall {
13376            type Parameters<'a> = (
13377                alloy::sol_types::sol_data::Address,
13378                alloy::sol_types::sol_data::Uint<256>,
13379            );
13380            type Token<'a> = <Self::Parameters<
13381                'a,
13382            > as alloy_sol_types::SolType>::Token<'a>;
13383            type Return = delegateReturn;
13384            type ReturnTuple<'a> = ();
13385            type ReturnToken<'a> = <Self::ReturnTuple<
13386                'a,
13387            > as alloy_sol_types::SolType>::Token<'a>;
13388            const SIGNATURE: &'static str = "delegate(address,uint256)";
13389            const SELECTOR: [u8; 4] = [2u8, 110u8, 64u8, 43u8];
13390            #[inline]
13391            fn new<'a>(
13392                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13393            ) -> Self {
13394                tuple.into()
13395            }
13396            #[inline]
13397            fn tokenize(&self) -> Self::Token<'_> {
13398                (
13399                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13400                        &self.validator,
13401                    ),
13402                    <alloy::sol_types::sol_data::Uint<
13403                        256,
13404                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
13405                )
13406            }
13407            #[inline]
13408            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13409                delegateReturn::_tokenize(ret)
13410            }
13411            #[inline]
13412            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13413                <Self::ReturnTuple<
13414                    '_,
13415                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13416                    .map(Into::into)
13417            }
13418            #[inline]
13419            fn abi_decode_returns_with_config(
13420                data: &[u8],
13421                config: alloy_sol_types::abi::AbiDecoderConfig,
13422            ) -> alloy_sol_types::Result<Self::Return> {
13423                <Self::ReturnTuple<
13424                    '_,
13425                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13426                        data,
13427                        config,
13428                    )
13429                    .map(Into::into)
13430            }
13431            #[inline]
13432            fn abi_decode_returns_validate(
13433                data: &[u8],
13434            ) -> alloy_sol_types::Result<Self::Return> {
13435                Self::abi_decode_returns_with_config(
13436                    data,
13437                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13438                )
13439            }
13440        }
13441    };
13442    #[derive(serde::Serialize, serde::Deserialize)]
13443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13444    /**Function with signature `delegations(address,address)` and selector `0xc64814dd`.
13445```solidity
13446function delegations(address validator, address delegator) external view returns (uint256 amount);
13447```*/
13448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13449    #[derive(Clone)]
13450    pub struct delegationsCall {
13451        #[allow(missing_docs)]
13452        pub validator: alloy::sol_types::private::Address,
13453        #[allow(missing_docs)]
13454        pub delegator: alloy::sol_types::private::Address,
13455    }
13456    #[derive(serde::Serialize, serde::Deserialize)]
13457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13458    ///Container type for the return parameters of the [`delegations(address,address)`](delegationsCall) function.
13459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13460    #[derive(Clone)]
13461    pub struct delegationsReturn {
13462        #[allow(missing_docs)]
13463        pub amount: alloy::sol_types::private::primitives::aliases::U256,
13464    }
13465    #[allow(
13466        non_camel_case_types,
13467        non_snake_case,
13468        clippy::pub_underscore_fields,
13469        clippy::style
13470    )]
13471    const _: () = {
13472        use alloy::sol_types as alloy_sol_types;
13473        {
13474            #[doc(hidden)]
13475            #[allow(dead_code)]
13476            type UnderlyingSolTuple<'a> = (
13477                alloy::sol_types::sol_data::Address,
13478                alloy::sol_types::sol_data::Address,
13479            );
13480            #[doc(hidden)]
13481            type UnderlyingRustTuple<'a> = (
13482                alloy::sol_types::private::Address,
13483                alloy::sol_types::private::Address,
13484            );
13485            #[cfg(test)]
13486            #[allow(dead_code, unreachable_patterns)]
13487            fn _type_assertion(
13488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13489            ) {
13490                match _t {
13491                    alloy_sol_types::private::AssertTypeEq::<
13492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13493                    >(_) => {}
13494                }
13495            }
13496            #[automatically_derived]
13497            #[doc(hidden)]
13498            impl ::core::convert::From<delegationsCall> for UnderlyingRustTuple<'_> {
13499                fn from(value: delegationsCall) -> Self {
13500                    (value.validator, value.delegator)
13501                }
13502            }
13503            #[automatically_derived]
13504            #[doc(hidden)]
13505            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsCall {
13506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13507                    Self {
13508                        validator: tuple.0,
13509                        delegator: tuple.1,
13510                    }
13511                }
13512            }
13513        }
13514        {
13515            #[doc(hidden)]
13516            #[allow(dead_code)]
13517            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13518            #[doc(hidden)]
13519            type UnderlyingRustTuple<'a> = (
13520                alloy::sol_types::private::primitives::aliases::U256,
13521            );
13522            #[cfg(test)]
13523            #[allow(dead_code, unreachable_patterns)]
13524            fn _type_assertion(
13525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13526            ) {
13527                match _t {
13528                    alloy_sol_types::private::AssertTypeEq::<
13529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13530                    >(_) => {}
13531                }
13532            }
13533            #[automatically_derived]
13534            #[doc(hidden)]
13535            impl ::core::convert::From<delegationsReturn> for UnderlyingRustTuple<'_> {
13536                fn from(value: delegationsReturn) -> Self {
13537                    (value.amount,)
13538                }
13539            }
13540            #[automatically_derived]
13541            #[doc(hidden)]
13542            impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationsReturn {
13543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13544                    Self { amount: tuple.0 }
13545                }
13546            }
13547        }
13548        #[automatically_derived]
13549        impl alloy_sol_types::SolCall for delegationsCall {
13550            type Parameters<'a> = (
13551                alloy::sol_types::sol_data::Address,
13552                alloy::sol_types::sol_data::Address,
13553            );
13554            type Token<'a> = <Self::Parameters<
13555                'a,
13556            > as alloy_sol_types::SolType>::Token<'a>;
13557            type Return = alloy::sol_types::private::primitives::aliases::U256;
13558            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13559            type ReturnToken<'a> = <Self::ReturnTuple<
13560                'a,
13561            > as alloy_sol_types::SolType>::Token<'a>;
13562            const SIGNATURE: &'static str = "delegations(address,address)";
13563            const SELECTOR: [u8; 4] = [198u8, 72u8, 20u8, 221u8];
13564            #[inline]
13565            fn new<'a>(
13566                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13567            ) -> Self {
13568                tuple.into()
13569            }
13570            #[inline]
13571            fn tokenize(&self) -> Self::Token<'_> {
13572                (
13573                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13574                        &self.validator,
13575                    ),
13576                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13577                        &self.delegator,
13578                    ),
13579                )
13580            }
13581            #[inline]
13582            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13583                (
13584                    <alloy::sol_types::sol_data::Uint<
13585                        256,
13586                    > as alloy_sol_types::SolType>::tokenize(ret),
13587                )
13588            }
13589            #[inline]
13590            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13591                <Self::ReturnTuple<
13592                    '_,
13593                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13594                    .map(|r| {
13595                        let r: delegationsReturn = r.into();
13596                        r.amount
13597                    })
13598            }
13599            #[inline]
13600            fn abi_decode_returns_with_config(
13601                data: &[u8],
13602                config: alloy_sol_types::abi::AbiDecoderConfig,
13603            ) -> alloy_sol_types::Result<Self::Return> {
13604                <Self::ReturnTuple<
13605                    '_,
13606                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13607                        data,
13608                        config,
13609                    )
13610                    .map(|r| {
13611                        let r: delegationsReturn = r.into();
13612                        r.amount
13613                    })
13614            }
13615            #[inline]
13616            fn abi_decode_returns_validate(
13617                data: &[u8],
13618            ) -> alloy_sol_types::Result<Self::Return> {
13619                Self::abi_decode_returns_with_config(
13620                    data,
13621                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13622                )
13623            }
13624        }
13625    };
13626    #[derive(serde::Serialize, serde::Deserialize)]
13627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13628    /**Function with signature `deregisterValidator()` and selector `0x6a911ccf`.
13629```solidity
13630function deregisterValidator() external;
13631```*/
13632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13633    #[derive(Clone)]
13634    pub struct deregisterValidatorCall;
13635    ///Container type for the return parameters of the [`deregisterValidator()`](deregisterValidatorCall) function.
13636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13637    #[derive(Clone)]
13638    pub struct deregisterValidatorReturn {}
13639    #[allow(
13640        non_camel_case_types,
13641        non_snake_case,
13642        clippy::pub_underscore_fields,
13643        clippy::style
13644    )]
13645    const _: () = {
13646        use alloy::sol_types as alloy_sol_types;
13647        {
13648            #[doc(hidden)]
13649            #[allow(dead_code)]
13650            type UnderlyingSolTuple<'a> = ();
13651            #[doc(hidden)]
13652            type UnderlyingRustTuple<'a> = ();
13653            #[cfg(test)]
13654            #[allow(dead_code, unreachable_patterns)]
13655            fn _type_assertion(
13656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13657            ) {
13658                match _t {
13659                    alloy_sol_types::private::AssertTypeEq::<
13660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13661                    >(_) => {}
13662                }
13663            }
13664            #[automatically_derived]
13665            #[doc(hidden)]
13666            impl ::core::convert::From<deregisterValidatorCall>
13667            for UnderlyingRustTuple<'_> {
13668                fn from(value: deregisterValidatorCall) -> Self {
13669                    ()
13670                }
13671            }
13672            #[automatically_derived]
13673            #[doc(hidden)]
13674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13675            for deregisterValidatorCall {
13676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13677                    Self
13678                }
13679            }
13680        }
13681        {
13682            #[doc(hidden)]
13683            #[allow(dead_code)]
13684            type UnderlyingSolTuple<'a> = ();
13685            #[doc(hidden)]
13686            type UnderlyingRustTuple<'a> = ();
13687            #[cfg(test)]
13688            #[allow(dead_code, unreachable_patterns)]
13689            fn _type_assertion(
13690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13691            ) {
13692                match _t {
13693                    alloy_sol_types::private::AssertTypeEq::<
13694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13695                    >(_) => {}
13696                }
13697            }
13698            #[automatically_derived]
13699            #[doc(hidden)]
13700            impl ::core::convert::From<deregisterValidatorReturn>
13701            for UnderlyingRustTuple<'_> {
13702                fn from(value: deregisterValidatorReturn) -> Self {
13703                    ()
13704                }
13705            }
13706            #[automatically_derived]
13707            #[doc(hidden)]
13708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13709            for deregisterValidatorReturn {
13710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13711                    Self {}
13712                }
13713            }
13714        }
13715        impl deregisterValidatorReturn {
13716            fn _tokenize(
13717                &self,
13718            ) -> <deregisterValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13719                ()
13720            }
13721        }
13722        #[automatically_derived]
13723        impl alloy_sol_types::SolCall for deregisterValidatorCall {
13724            type Parameters<'a> = ();
13725            type Token<'a> = <Self::Parameters<
13726                'a,
13727            > as alloy_sol_types::SolType>::Token<'a>;
13728            type Return = deregisterValidatorReturn;
13729            type ReturnTuple<'a> = ();
13730            type ReturnToken<'a> = <Self::ReturnTuple<
13731                'a,
13732            > as alloy_sol_types::SolType>::Token<'a>;
13733            const SIGNATURE: &'static str = "deregisterValidator()";
13734            const SELECTOR: [u8; 4] = [106u8, 145u8, 28u8, 207u8];
13735            #[inline]
13736            fn new<'a>(
13737                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13738            ) -> Self {
13739                tuple.into()
13740            }
13741            #[inline]
13742            fn tokenize(&self) -> Self::Token<'_> {
13743                ()
13744            }
13745            #[inline]
13746            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13747                deregisterValidatorReturn::_tokenize(ret)
13748            }
13749            #[inline]
13750            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13751                <Self::ReturnTuple<
13752                    '_,
13753                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13754                    .map(Into::into)
13755            }
13756            #[inline]
13757            fn abi_decode_returns_with_config(
13758                data: &[u8],
13759                config: alloy_sol_types::abi::AbiDecoderConfig,
13760            ) -> alloy_sol_types::Result<Self::Return> {
13761                <Self::ReturnTuple<
13762                    '_,
13763                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13764                        data,
13765                        config,
13766                    )
13767                    .map(Into::into)
13768            }
13769            #[inline]
13770            fn abi_decode_returns_validate(
13771                data: &[u8],
13772            ) -> alloy_sol_types::Result<Self::Return> {
13773                Self::abi_decode_returns_with_config(
13774                    data,
13775                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13776                )
13777            }
13778        }
13779    };
13780    #[derive(serde::Serialize, serde::Deserialize)]
13781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13782    /**Function with signature `exitEscrowPeriod()` and selector `0x9e9a8f31`.
13783```solidity
13784function exitEscrowPeriod() external view returns (uint256);
13785```*/
13786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13787    #[derive(Clone)]
13788    pub struct exitEscrowPeriodCall;
13789    #[derive(serde::Serialize, serde::Deserialize)]
13790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13791    ///Container type for the return parameters of the [`exitEscrowPeriod()`](exitEscrowPeriodCall) function.
13792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13793    #[derive(Clone)]
13794    pub struct exitEscrowPeriodReturn {
13795        #[allow(missing_docs)]
13796        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13797    }
13798    #[allow(
13799        non_camel_case_types,
13800        non_snake_case,
13801        clippy::pub_underscore_fields,
13802        clippy::style
13803    )]
13804    const _: () = {
13805        use alloy::sol_types as alloy_sol_types;
13806        {
13807            #[doc(hidden)]
13808            #[allow(dead_code)]
13809            type UnderlyingSolTuple<'a> = ();
13810            #[doc(hidden)]
13811            type UnderlyingRustTuple<'a> = ();
13812            #[cfg(test)]
13813            #[allow(dead_code, unreachable_patterns)]
13814            fn _type_assertion(
13815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13816            ) {
13817                match _t {
13818                    alloy_sol_types::private::AssertTypeEq::<
13819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13820                    >(_) => {}
13821                }
13822            }
13823            #[automatically_derived]
13824            #[doc(hidden)]
13825            impl ::core::convert::From<exitEscrowPeriodCall>
13826            for UnderlyingRustTuple<'_> {
13827                fn from(value: exitEscrowPeriodCall) -> Self {
13828                    ()
13829                }
13830            }
13831            #[automatically_derived]
13832            #[doc(hidden)]
13833            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13834            for exitEscrowPeriodCall {
13835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13836                    Self
13837                }
13838            }
13839        }
13840        {
13841            #[doc(hidden)]
13842            #[allow(dead_code)]
13843            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13844            #[doc(hidden)]
13845            type UnderlyingRustTuple<'a> = (
13846                alloy::sol_types::private::primitives::aliases::U256,
13847            );
13848            #[cfg(test)]
13849            #[allow(dead_code, unreachable_patterns)]
13850            fn _type_assertion(
13851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13852            ) {
13853                match _t {
13854                    alloy_sol_types::private::AssertTypeEq::<
13855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13856                    >(_) => {}
13857                }
13858            }
13859            #[automatically_derived]
13860            #[doc(hidden)]
13861            impl ::core::convert::From<exitEscrowPeriodReturn>
13862            for UnderlyingRustTuple<'_> {
13863                fn from(value: exitEscrowPeriodReturn) -> Self {
13864                    (value._0,)
13865                }
13866            }
13867            #[automatically_derived]
13868            #[doc(hidden)]
13869            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13870            for exitEscrowPeriodReturn {
13871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13872                    Self { _0: tuple.0 }
13873                }
13874            }
13875        }
13876        #[automatically_derived]
13877        impl alloy_sol_types::SolCall for exitEscrowPeriodCall {
13878            type Parameters<'a> = ();
13879            type Token<'a> = <Self::Parameters<
13880                'a,
13881            > as alloy_sol_types::SolType>::Token<'a>;
13882            type Return = alloy::sol_types::private::primitives::aliases::U256;
13883            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13884            type ReturnToken<'a> = <Self::ReturnTuple<
13885                'a,
13886            > as alloy_sol_types::SolType>::Token<'a>;
13887            const SIGNATURE: &'static str = "exitEscrowPeriod()";
13888            const SELECTOR: [u8; 4] = [158u8, 154u8, 143u8, 49u8];
13889            #[inline]
13890            fn new<'a>(
13891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13892            ) -> Self {
13893                tuple.into()
13894            }
13895            #[inline]
13896            fn tokenize(&self) -> Self::Token<'_> {
13897                ()
13898            }
13899            #[inline]
13900            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13901                (
13902                    <alloy::sol_types::sol_data::Uint<
13903                        256,
13904                    > as alloy_sol_types::SolType>::tokenize(ret),
13905                )
13906            }
13907            #[inline]
13908            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13909                <Self::ReturnTuple<
13910                    '_,
13911                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13912                    .map(|r| {
13913                        let r: exitEscrowPeriodReturn = r.into();
13914                        r._0
13915                    })
13916            }
13917            #[inline]
13918            fn abi_decode_returns_with_config(
13919                data: &[u8],
13920                config: alloy_sol_types::abi::AbiDecoderConfig,
13921            ) -> alloy_sol_types::Result<Self::Return> {
13922                <Self::ReturnTuple<
13923                    '_,
13924                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13925                        data,
13926                        config,
13927                    )
13928                    .map(|r| {
13929                        let r: exitEscrowPeriodReturn = r.into();
13930                        r._0
13931                    })
13932            }
13933            #[inline]
13934            fn abi_decode_returns_validate(
13935                data: &[u8],
13936            ) -> alloy_sol_types::Result<Self::Return> {
13937                Self::abi_decode_returns_with_config(
13938                    data,
13939                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13940                )
13941            }
13942        }
13943    };
13944    #[derive(serde::Serialize, serde::Deserialize)]
13945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13946    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
13947```solidity
13948function getRoleAdmin(bytes32 role) external view returns (bytes32);
13949```*/
13950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13951    #[derive(Clone)]
13952    pub struct getRoleAdminCall {
13953        #[allow(missing_docs)]
13954        pub role: alloy::sol_types::private::FixedBytes<32>,
13955    }
13956    #[derive(serde::Serialize, serde::Deserialize)]
13957    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13958    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
13959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13960    #[derive(Clone)]
13961    pub struct getRoleAdminReturn {
13962        #[allow(missing_docs)]
13963        pub _0: alloy::sol_types::private::FixedBytes<32>,
13964    }
13965    #[allow(
13966        non_camel_case_types,
13967        non_snake_case,
13968        clippy::pub_underscore_fields,
13969        clippy::style
13970    )]
13971    const _: () = {
13972        use alloy::sol_types as alloy_sol_types;
13973        {
13974            #[doc(hidden)]
13975            #[allow(dead_code)]
13976            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13977            #[doc(hidden)]
13978            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13979            #[cfg(test)]
13980            #[allow(dead_code, unreachable_patterns)]
13981            fn _type_assertion(
13982                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13983            ) {
13984                match _t {
13985                    alloy_sol_types::private::AssertTypeEq::<
13986                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13987                    >(_) => {}
13988                }
13989            }
13990            #[automatically_derived]
13991            #[doc(hidden)]
13992            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
13993                fn from(value: getRoleAdminCall) -> Self {
13994                    (value.role,)
13995                }
13996            }
13997            #[automatically_derived]
13998            #[doc(hidden)]
13999            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
14000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14001                    Self { role: tuple.0 }
14002                }
14003            }
14004        }
14005        {
14006            #[doc(hidden)]
14007            #[allow(dead_code)]
14008            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14009            #[doc(hidden)]
14010            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
14011            #[cfg(test)]
14012            #[allow(dead_code, unreachable_patterns)]
14013            fn _type_assertion(
14014                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14015            ) {
14016                match _t {
14017                    alloy_sol_types::private::AssertTypeEq::<
14018                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14019                    >(_) => {}
14020                }
14021            }
14022            #[automatically_derived]
14023            #[doc(hidden)]
14024            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
14025                fn from(value: getRoleAdminReturn) -> Self {
14026                    (value._0,)
14027                }
14028            }
14029            #[automatically_derived]
14030            #[doc(hidden)]
14031            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
14032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14033                    Self { _0: tuple.0 }
14034                }
14035            }
14036        }
14037        #[automatically_derived]
14038        impl alloy_sol_types::SolCall for getRoleAdminCall {
14039            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14040            type Token<'a> = <Self::Parameters<
14041                'a,
14042            > as alloy_sol_types::SolType>::Token<'a>;
14043            type Return = alloy::sol_types::private::FixedBytes<32>;
14044            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
14045            type ReturnToken<'a> = <Self::ReturnTuple<
14046                'a,
14047            > as alloy_sol_types::SolType>::Token<'a>;
14048            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
14049            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
14050            #[inline]
14051            fn new<'a>(
14052                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14053            ) -> Self {
14054                tuple.into()
14055            }
14056            #[inline]
14057            fn tokenize(&self) -> Self::Token<'_> {
14058                (
14059                    <alloy::sol_types::sol_data::FixedBytes<
14060                        32,
14061                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14062                )
14063            }
14064            #[inline]
14065            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14066                (
14067                    <alloy::sol_types::sol_data::FixedBytes<
14068                        32,
14069                    > as alloy_sol_types::SolType>::tokenize(ret),
14070                )
14071            }
14072            #[inline]
14073            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14074                <Self::ReturnTuple<
14075                    '_,
14076                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14077                    .map(|r| {
14078                        let r: getRoleAdminReturn = r.into();
14079                        r._0
14080                    })
14081            }
14082            #[inline]
14083            fn abi_decode_returns_with_config(
14084                data: &[u8],
14085                config: alloy_sol_types::abi::AbiDecoderConfig,
14086            ) -> alloy_sol_types::Result<Self::Return> {
14087                <Self::ReturnTuple<
14088                    '_,
14089                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14090                        data,
14091                        config,
14092                    )
14093                    .map(|r| {
14094                        let r: getRoleAdminReturn = r.into();
14095                        r._0
14096                    })
14097            }
14098            #[inline]
14099            fn abi_decode_returns_validate(
14100                data: &[u8],
14101            ) -> alloy_sol_types::Result<Self::Return> {
14102                Self::abi_decode_returns_with_config(
14103                    data,
14104                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14105                )
14106            }
14107        }
14108    };
14109    #[derive(serde::Serialize, serde::Deserialize)]
14110    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14111    /**Function with signature `getUndelegation(address,address)` and selector `0xbb60bfb0`.
14112```solidity
14113function getUndelegation(address validator, address delegator) external view returns (uint64 id, uint256 amount, uint256 unlocksAt);
14114```*/
14115    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14116    #[derive(Clone)]
14117    pub struct getUndelegationCall {
14118        #[allow(missing_docs)]
14119        pub validator: alloy::sol_types::private::Address,
14120        #[allow(missing_docs)]
14121        pub delegator: alloy::sol_types::private::Address,
14122    }
14123    #[derive(serde::Serialize, serde::Deserialize)]
14124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14125    ///Container type for the return parameters of the [`getUndelegation(address,address)`](getUndelegationCall) function.
14126    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14127    #[derive(Clone)]
14128    pub struct getUndelegationReturn {
14129        #[allow(missing_docs)]
14130        pub id: u64,
14131        #[allow(missing_docs)]
14132        pub amount: alloy::sol_types::private::primitives::aliases::U256,
14133        #[allow(missing_docs)]
14134        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
14135    }
14136    #[allow(
14137        non_camel_case_types,
14138        non_snake_case,
14139        clippy::pub_underscore_fields,
14140        clippy::style
14141    )]
14142    const _: () = {
14143        use alloy::sol_types as alloy_sol_types;
14144        {
14145            #[doc(hidden)]
14146            #[allow(dead_code)]
14147            type UnderlyingSolTuple<'a> = (
14148                alloy::sol_types::sol_data::Address,
14149                alloy::sol_types::sol_data::Address,
14150            );
14151            #[doc(hidden)]
14152            type UnderlyingRustTuple<'a> = (
14153                alloy::sol_types::private::Address,
14154                alloy::sol_types::private::Address,
14155            );
14156            #[cfg(test)]
14157            #[allow(dead_code, unreachable_patterns)]
14158            fn _type_assertion(
14159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14160            ) {
14161                match _t {
14162                    alloy_sol_types::private::AssertTypeEq::<
14163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14164                    >(_) => {}
14165                }
14166            }
14167            #[automatically_derived]
14168            #[doc(hidden)]
14169            impl ::core::convert::From<getUndelegationCall> for UnderlyingRustTuple<'_> {
14170                fn from(value: getUndelegationCall) -> Self {
14171                    (value.validator, value.delegator)
14172                }
14173            }
14174            #[automatically_derived]
14175            #[doc(hidden)]
14176            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getUndelegationCall {
14177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14178                    Self {
14179                        validator: tuple.0,
14180                        delegator: tuple.1,
14181                    }
14182                }
14183            }
14184        }
14185        {
14186            #[doc(hidden)]
14187            #[allow(dead_code)]
14188            type UnderlyingSolTuple<'a> = (
14189                alloy::sol_types::sol_data::Uint<64>,
14190                alloy::sol_types::sol_data::Uint<256>,
14191                alloy::sol_types::sol_data::Uint<256>,
14192            );
14193            #[doc(hidden)]
14194            type UnderlyingRustTuple<'a> = (
14195                u64,
14196                alloy::sol_types::private::primitives::aliases::U256,
14197                alloy::sol_types::private::primitives::aliases::U256,
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<getUndelegationReturn>
14213            for UnderlyingRustTuple<'_> {
14214                fn from(value: getUndelegationReturn) -> Self {
14215                    (value.id, value.amount, value.unlocksAt)
14216                }
14217            }
14218            #[automatically_derived]
14219            #[doc(hidden)]
14220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14221            for getUndelegationReturn {
14222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14223                    Self {
14224                        id: tuple.0,
14225                        amount: tuple.1,
14226                        unlocksAt: tuple.2,
14227                    }
14228                }
14229            }
14230        }
14231        impl getUndelegationReturn {
14232            fn _tokenize(
14233                &self,
14234            ) -> <getUndelegationCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14235                (
14236                    <alloy::sol_types::sol_data::Uint<
14237                        64,
14238                    > as alloy_sol_types::SolType>::tokenize(&self.id),
14239                    <alloy::sol_types::sol_data::Uint<
14240                        256,
14241                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
14242                    <alloy::sol_types::sol_data::Uint<
14243                        256,
14244                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
14245                )
14246            }
14247        }
14248        #[automatically_derived]
14249        impl alloy_sol_types::SolCall for getUndelegationCall {
14250            type Parameters<'a> = (
14251                alloy::sol_types::sol_data::Address,
14252                alloy::sol_types::sol_data::Address,
14253            );
14254            type Token<'a> = <Self::Parameters<
14255                'a,
14256            > as alloy_sol_types::SolType>::Token<'a>;
14257            type Return = getUndelegationReturn;
14258            type ReturnTuple<'a> = (
14259                alloy::sol_types::sol_data::Uint<64>,
14260                alloy::sol_types::sol_data::Uint<256>,
14261                alloy::sol_types::sol_data::Uint<256>,
14262            );
14263            type ReturnToken<'a> = <Self::ReturnTuple<
14264                'a,
14265            > as alloy_sol_types::SolType>::Token<'a>;
14266            const SIGNATURE: &'static str = "getUndelegation(address,address)";
14267            const SELECTOR: [u8; 4] = [187u8, 96u8, 191u8, 176u8];
14268            #[inline]
14269            fn new<'a>(
14270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14271            ) -> Self {
14272                tuple.into()
14273            }
14274            #[inline]
14275            fn tokenize(&self) -> Self::Token<'_> {
14276                (
14277                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14278                        &self.validator,
14279                    ),
14280                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14281                        &self.delegator,
14282                    ),
14283                )
14284            }
14285            #[inline]
14286            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14287                getUndelegationReturn::_tokenize(ret)
14288            }
14289            #[inline]
14290            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14291                <Self::ReturnTuple<
14292                    '_,
14293                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14294                    .map(Into::into)
14295            }
14296            #[inline]
14297            fn abi_decode_returns_with_config(
14298                data: &[u8],
14299                config: alloy_sol_types::abi::AbiDecoderConfig,
14300            ) -> alloy_sol_types::Result<Self::Return> {
14301                <Self::ReturnTuple<
14302                    '_,
14303                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14304                        data,
14305                        config,
14306                    )
14307                    .map(Into::into)
14308            }
14309            #[inline]
14310            fn abi_decode_returns_validate(
14311                data: &[u8],
14312            ) -> alloy_sol_types::Result<Self::Return> {
14313                Self::abi_decode_returns_with_config(
14314                    data,
14315                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14316                )
14317            }
14318        }
14319    };
14320    #[derive(serde::Serialize, serde::Deserialize)]
14321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14322    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
14323```solidity
14324function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
14325```*/
14326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14327    #[derive(Clone)]
14328    pub struct getVersionCall;
14329    #[derive(serde::Serialize, serde::Deserialize)]
14330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14331    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
14332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14333    #[derive(Clone)]
14334    pub struct getVersionReturn {
14335        #[allow(missing_docs)]
14336        pub majorVersion: u8,
14337        #[allow(missing_docs)]
14338        pub minorVersion: u8,
14339        #[allow(missing_docs)]
14340        pub patchVersion: u8,
14341    }
14342    #[allow(
14343        non_camel_case_types,
14344        non_snake_case,
14345        clippy::pub_underscore_fields,
14346        clippy::style
14347    )]
14348    const _: () = {
14349        use alloy::sol_types as alloy_sol_types;
14350        {
14351            #[doc(hidden)]
14352            #[allow(dead_code)]
14353            type UnderlyingSolTuple<'a> = ();
14354            #[doc(hidden)]
14355            type UnderlyingRustTuple<'a> = ();
14356            #[cfg(test)]
14357            #[allow(dead_code, unreachable_patterns)]
14358            fn _type_assertion(
14359                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14360            ) {
14361                match _t {
14362                    alloy_sol_types::private::AssertTypeEq::<
14363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14364                    >(_) => {}
14365                }
14366            }
14367            #[automatically_derived]
14368            #[doc(hidden)]
14369            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
14370                fn from(value: getVersionCall) -> Self {
14371                    ()
14372                }
14373            }
14374            #[automatically_derived]
14375            #[doc(hidden)]
14376            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
14377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14378                    Self
14379                }
14380            }
14381        }
14382        {
14383            #[doc(hidden)]
14384            #[allow(dead_code)]
14385            type UnderlyingSolTuple<'a> = (
14386                alloy::sol_types::sol_data::Uint<8>,
14387                alloy::sol_types::sol_data::Uint<8>,
14388                alloy::sol_types::sol_data::Uint<8>,
14389            );
14390            #[doc(hidden)]
14391            type UnderlyingRustTuple<'a> = (u8, u8, u8);
14392            #[cfg(test)]
14393            #[allow(dead_code, unreachable_patterns)]
14394            fn _type_assertion(
14395                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14396            ) {
14397                match _t {
14398                    alloy_sol_types::private::AssertTypeEq::<
14399                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14400                    >(_) => {}
14401                }
14402            }
14403            #[automatically_derived]
14404            #[doc(hidden)]
14405            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
14406                fn from(value: getVersionReturn) -> Self {
14407                    (value.majorVersion, value.minorVersion, value.patchVersion)
14408                }
14409            }
14410            #[automatically_derived]
14411            #[doc(hidden)]
14412            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
14413                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14414                    Self {
14415                        majorVersion: tuple.0,
14416                        minorVersion: tuple.1,
14417                        patchVersion: tuple.2,
14418                    }
14419                }
14420            }
14421        }
14422        impl getVersionReturn {
14423            fn _tokenize(
14424                &self,
14425            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14426                (
14427                    <alloy::sol_types::sol_data::Uint<
14428                        8,
14429                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
14430                    <alloy::sol_types::sol_data::Uint<
14431                        8,
14432                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
14433                    <alloy::sol_types::sol_data::Uint<
14434                        8,
14435                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
14436                )
14437            }
14438        }
14439        #[automatically_derived]
14440        impl alloy_sol_types::SolCall for getVersionCall {
14441            type Parameters<'a> = ();
14442            type Token<'a> = <Self::Parameters<
14443                'a,
14444            > as alloy_sol_types::SolType>::Token<'a>;
14445            type Return = getVersionReturn;
14446            type ReturnTuple<'a> = (
14447                alloy::sol_types::sol_data::Uint<8>,
14448                alloy::sol_types::sol_data::Uint<8>,
14449                alloy::sol_types::sol_data::Uint<8>,
14450            );
14451            type ReturnToken<'a> = <Self::ReturnTuple<
14452                'a,
14453            > as alloy_sol_types::SolType>::Token<'a>;
14454            const SIGNATURE: &'static str = "getVersion()";
14455            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
14456            #[inline]
14457            fn new<'a>(
14458                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14459            ) -> Self {
14460                tuple.into()
14461            }
14462            #[inline]
14463            fn tokenize(&self) -> Self::Token<'_> {
14464                ()
14465            }
14466            #[inline]
14467            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14468                getVersionReturn::_tokenize(ret)
14469            }
14470            #[inline]
14471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14472                <Self::ReturnTuple<
14473                    '_,
14474                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14475                    .map(Into::into)
14476            }
14477            #[inline]
14478            fn abi_decode_returns_with_config(
14479                data: &[u8],
14480                config: alloy_sol_types::abi::AbiDecoderConfig,
14481            ) -> alloy_sol_types::Result<Self::Return> {
14482                <Self::ReturnTuple<
14483                    '_,
14484                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14485                        data,
14486                        config,
14487                    )
14488                    .map(Into::into)
14489            }
14490            #[inline]
14491            fn abi_decode_returns_validate(
14492                data: &[u8],
14493            ) -> alloy_sol_types::Result<Self::Return> {
14494                Self::abi_decode_returns_with_config(
14495                    data,
14496                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14497                )
14498            }
14499        }
14500    };
14501    #[derive(serde::Serialize, serde::Deserialize)]
14502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14503    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
14504```solidity
14505function grantRole(bytes32 role, address account) external;
14506```*/
14507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14508    #[derive(Clone)]
14509    pub struct grantRoleCall {
14510        #[allow(missing_docs)]
14511        pub role: alloy::sol_types::private::FixedBytes<32>,
14512        #[allow(missing_docs)]
14513        pub account: alloy::sol_types::private::Address,
14514    }
14515    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
14516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14517    #[derive(Clone)]
14518    pub struct grantRoleReturn {}
14519    #[allow(
14520        non_camel_case_types,
14521        non_snake_case,
14522        clippy::pub_underscore_fields,
14523        clippy::style
14524    )]
14525    const _: () = {
14526        use alloy::sol_types as alloy_sol_types;
14527        {
14528            #[doc(hidden)]
14529            #[allow(dead_code)]
14530            type UnderlyingSolTuple<'a> = (
14531                alloy::sol_types::sol_data::FixedBytes<32>,
14532                alloy::sol_types::sol_data::Address,
14533            );
14534            #[doc(hidden)]
14535            type UnderlyingRustTuple<'a> = (
14536                alloy::sol_types::private::FixedBytes<32>,
14537                alloy::sol_types::private::Address,
14538            );
14539            #[cfg(test)]
14540            #[allow(dead_code, unreachable_patterns)]
14541            fn _type_assertion(
14542                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14543            ) {
14544                match _t {
14545                    alloy_sol_types::private::AssertTypeEq::<
14546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14547                    >(_) => {}
14548                }
14549            }
14550            #[automatically_derived]
14551            #[doc(hidden)]
14552            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
14553                fn from(value: grantRoleCall) -> Self {
14554                    (value.role, value.account)
14555                }
14556            }
14557            #[automatically_derived]
14558            #[doc(hidden)]
14559            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
14560                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14561                    Self {
14562                        role: tuple.0,
14563                        account: tuple.1,
14564                    }
14565                }
14566            }
14567        }
14568        {
14569            #[doc(hidden)]
14570            #[allow(dead_code)]
14571            type UnderlyingSolTuple<'a> = ();
14572            #[doc(hidden)]
14573            type UnderlyingRustTuple<'a> = ();
14574            #[cfg(test)]
14575            #[allow(dead_code, unreachable_patterns)]
14576            fn _type_assertion(
14577                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14578            ) {
14579                match _t {
14580                    alloy_sol_types::private::AssertTypeEq::<
14581                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14582                    >(_) => {}
14583                }
14584            }
14585            #[automatically_derived]
14586            #[doc(hidden)]
14587            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
14588                fn from(value: grantRoleReturn) -> Self {
14589                    ()
14590                }
14591            }
14592            #[automatically_derived]
14593            #[doc(hidden)]
14594            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
14595                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14596                    Self {}
14597                }
14598            }
14599        }
14600        impl grantRoleReturn {
14601            fn _tokenize(
14602                &self,
14603            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14604                ()
14605            }
14606        }
14607        #[automatically_derived]
14608        impl alloy_sol_types::SolCall for grantRoleCall {
14609            type Parameters<'a> = (
14610                alloy::sol_types::sol_data::FixedBytes<32>,
14611                alloy::sol_types::sol_data::Address,
14612            );
14613            type Token<'a> = <Self::Parameters<
14614                'a,
14615            > as alloy_sol_types::SolType>::Token<'a>;
14616            type Return = grantRoleReturn;
14617            type ReturnTuple<'a> = ();
14618            type ReturnToken<'a> = <Self::ReturnTuple<
14619                'a,
14620            > as alloy_sol_types::SolType>::Token<'a>;
14621            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
14622            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
14623            #[inline]
14624            fn new<'a>(
14625                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14626            ) -> Self {
14627                tuple.into()
14628            }
14629            #[inline]
14630            fn tokenize(&self) -> Self::Token<'_> {
14631                (
14632                    <alloy::sol_types::sol_data::FixedBytes<
14633                        32,
14634                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14635                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14636                        &self.account,
14637                    ),
14638                )
14639            }
14640            #[inline]
14641            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14642                grantRoleReturn::_tokenize(ret)
14643            }
14644            #[inline]
14645            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14646                <Self::ReturnTuple<
14647                    '_,
14648                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14649                    .map(Into::into)
14650            }
14651            #[inline]
14652            fn abi_decode_returns_with_config(
14653                data: &[u8],
14654                config: alloy_sol_types::abi::AbiDecoderConfig,
14655            ) -> alloy_sol_types::Result<Self::Return> {
14656                <Self::ReturnTuple<
14657                    '_,
14658                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14659                        data,
14660                        config,
14661                    )
14662                    .map(Into::into)
14663            }
14664            #[inline]
14665            fn abi_decode_returns_validate(
14666                data: &[u8],
14667            ) -> alloy_sol_types::Result<Self::Return> {
14668                Self::abi_decode_returns_with_config(
14669                    data,
14670                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14671                )
14672            }
14673        }
14674    };
14675    #[derive(serde::Serialize, serde::Deserialize)]
14676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14677    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
14678```solidity
14679function hasRole(bytes32 role, address account) external view returns (bool);
14680```*/
14681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14682    #[derive(Clone)]
14683    pub struct hasRoleCall {
14684        #[allow(missing_docs)]
14685        pub role: alloy::sol_types::private::FixedBytes<32>,
14686        #[allow(missing_docs)]
14687        pub account: alloy::sol_types::private::Address,
14688    }
14689    #[derive(serde::Serialize, serde::Deserialize)]
14690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14691    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
14692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14693    #[derive(Clone)]
14694    pub struct hasRoleReturn {
14695        #[allow(missing_docs)]
14696        pub _0: bool,
14697    }
14698    #[allow(
14699        non_camel_case_types,
14700        non_snake_case,
14701        clippy::pub_underscore_fields,
14702        clippy::style
14703    )]
14704    const _: () = {
14705        use alloy::sol_types as alloy_sol_types;
14706        {
14707            #[doc(hidden)]
14708            #[allow(dead_code)]
14709            type UnderlyingSolTuple<'a> = (
14710                alloy::sol_types::sol_data::FixedBytes<32>,
14711                alloy::sol_types::sol_data::Address,
14712            );
14713            #[doc(hidden)]
14714            type UnderlyingRustTuple<'a> = (
14715                alloy::sol_types::private::FixedBytes<32>,
14716                alloy::sol_types::private::Address,
14717            );
14718            #[cfg(test)]
14719            #[allow(dead_code, unreachable_patterns)]
14720            fn _type_assertion(
14721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14722            ) {
14723                match _t {
14724                    alloy_sol_types::private::AssertTypeEq::<
14725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14726                    >(_) => {}
14727                }
14728            }
14729            #[automatically_derived]
14730            #[doc(hidden)]
14731            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
14732                fn from(value: hasRoleCall) -> Self {
14733                    (value.role, value.account)
14734                }
14735            }
14736            #[automatically_derived]
14737            #[doc(hidden)]
14738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
14739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14740                    Self {
14741                        role: tuple.0,
14742                        account: tuple.1,
14743                    }
14744                }
14745            }
14746        }
14747        {
14748            #[doc(hidden)]
14749            #[allow(dead_code)]
14750            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14751            #[doc(hidden)]
14752            type UnderlyingRustTuple<'a> = (bool,);
14753            #[cfg(test)]
14754            #[allow(dead_code, unreachable_patterns)]
14755            fn _type_assertion(
14756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14757            ) {
14758                match _t {
14759                    alloy_sol_types::private::AssertTypeEq::<
14760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14761                    >(_) => {}
14762                }
14763            }
14764            #[automatically_derived]
14765            #[doc(hidden)]
14766            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
14767                fn from(value: hasRoleReturn) -> Self {
14768                    (value._0,)
14769                }
14770            }
14771            #[automatically_derived]
14772            #[doc(hidden)]
14773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
14774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14775                    Self { _0: tuple.0 }
14776                }
14777            }
14778        }
14779        #[automatically_derived]
14780        impl alloy_sol_types::SolCall for hasRoleCall {
14781            type Parameters<'a> = (
14782                alloy::sol_types::sol_data::FixedBytes<32>,
14783                alloy::sol_types::sol_data::Address,
14784            );
14785            type Token<'a> = <Self::Parameters<
14786                'a,
14787            > as alloy_sol_types::SolType>::Token<'a>;
14788            type Return = bool;
14789            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
14790            type ReturnToken<'a> = <Self::ReturnTuple<
14791                'a,
14792            > as alloy_sol_types::SolType>::Token<'a>;
14793            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
14794            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
14795            #[inline]
14796            fn new<'a>(
14797                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14798            ) -> Self {
14799                tuple.into()
14800            }
14801            #[inline]
14802            fn tokenize(&self) -> Self::Token<'_> {
14803                (
14804                    <alloy::sol_types::sol_data::FixedBytes<
14805                        32,
14806                    > as alloy_sol_types::SolType>::tokenize(&self.role),
14807                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14808                        &self.account,
14809                    ),
14810                )
14811            }
14812            #[inline]
14813            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14814                (
14815                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
14816                        ret,
14817                    ),
14818                )
14819            }
14820            #[inline]
14821            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14822                <Self::ReturnTuple<
14823                    '_,
14824                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14825                    .map(|r| {
14826                        let r: hasRoleReturn = r.into();
14827                        r._0
14828                    })
14829            }
14830            #[inline]
14831            fn abi_decode_returns_with_config(
14832                data: &[u8],
14833                config: alloy_sol_types::abi::AbiDecoderConfig,
14834            ) -> alloy_sol_types::Result<Self::Return> {
14835                <Self::ReturnTuple<
14836                    '_,
14837                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14838                        data,
14839                        config,
14840                    )
14841                    .map(|r| {
14842                        let r: hasRoleReturn = r.into();
14843                        r._0
14844                    })
14845            }
14846            #[inline]
14847            fn abi_decode_returns_validate(
14848                data: &[u8],
14849            ) -> alloy_sol_types::Result<Self::Return> {
14850                Self::abi_decode_returns_with_config(
14851                    data,
14852                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14853                )
14854            }
14855        }
14856    };
14857    #[derive(serde::Serialize, serde::Deserialize)]
14858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14859    /**Function with signature `initialize(address,address,uint256,address)` and selector `0xbe203094`.
14860```solidity
14861function initialize(address _tokenAddress, address _lightClientAddress, uint256 _exitEscrowPeriod, address _timelock) external;
14862```*/
14863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14864    #[derive(Clone)]
14865    pub struct initializeCall {
14866        #[allow(missing_docs)]
14867        pub _tokenAddress: alloy::sol_types::private::Address,
14868        #[allow(missing_docs)]
14869        pub _lightClientAddress: alloy::sol_types::private::Address,
14870        #[allow(missing_docs)]
14871        pub _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
14872        #[allow(missing_docs)]
14873        pub _timelock: alloy::sol_types::private::Address,
14874    }
14875    ///Container type for the return parameters of the [`initialize(address,address,uint256,address)`](initializeCall) function.
14876    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14877    #[derive(Clone)]
14878    pub struct initializeReturn {}
14879    #[allow(
14880        non_camel_case_types,
14881        non_snake_case,
14882        clippy::pub_underscore_fields,
14883        clippy::style
14884    )]
14885    const _: () = {
14886        use alloy::sol_types as alloy_sol_types;
14887        {
14888            #[doc(hidden)]
14889            #[allow(dead_code)]
14890            type UnderlyingSolTuple<'a> = (
14891                alloy::sol_types::sol_data::Address,
14892                alloy::sol_types::sol_data::Address,
14893                alloy::sol_types::sol_data::Uint<256>,
14894                alloy::sol_types::sol_data::Address,
14895            );
14896            #[doc(hidden)]
14897            type UnderlyingRustTuple<'a> = (
14898                alloy::sol_types::private::Address,
14899                alloy::sol_types::private::Address,
14900                alloy::sol_types::private::primitives::aliases::U256,
14901                alloy::sol_types::private::Address,
14902            );
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<initializeCall> for UnderlyingRustTuple<'_> {
14917                fn from(value: initializeCall) -> Self {
14918                    (
14919                        value._tokenAddress,
14920                        value._lightClientAddress,
14921                        value._exitEscrowPeriod,
14922                        value._timelock,
14923                    )
14924                }
14925            }
14926            #[automatically_derived]
14927            #[doc(hidden)]
14928            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
14929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14930                    Self {
14931                        _tokenAddress: tuple.0,
14932                        _lightClientAddress: tuple.1,
14933                        _exitEscrowPeriod: tuple.2,
14934                        _timelock: tuple.3,
14935                    }
14936                }
14937            }
14938        }
14939        {
14940            #[doc(hidden)]
14941            #[allow(dead_code)]
14942            type UnderlyingSolTuple<'a> = ();
14943            #[doc(hidden)]
14944            type UnderlyingRustTuple<'a> = ();
14945            #[cfg(test)]
14946            #[allow(dead_code, unreachable_patterns)]
14947            fn _type_assertion(
14948                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14949            ) {
14950                match _t {
14951                    alloy_sol_types::private::AssertTypeEq::<
14952                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14953                    >(_) => {}
14954                }
14955            }
14956            #[automatically_derived]
14957            #[doc(hidden)]
14958            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
14959                fn from(value: initializeReturn) -> Self {
14960                    ()
14961                }
14962            }
14963            #[automatically_derived]
14964            #[doc(hidden)]
14965            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
14966                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14967                    Self {}
14968                }
14969            }
14970        }
14971        impl initializeReturn {
14972            fn _tokenize(
14973                &self,
14974            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14975                ()
14976            }
14977        }
14978        #[automatically_derived]
14979        impl alloy_sol_types::SolCall for initializeCall {
14980            type Parameters<'a> = (
14981                alloy::sol_types::sol_data::Address,
14982                alloy::sol_types::sol_data::Address,
14983                alloy::sol_types::sol_data::Uint<256>,
14984                alloy::sol_types::sol_data::Address,
14985            );
14986            type Token<'a> = <Self::Parameters<
14987                'a,
14988            > as alloy_sol_types::SolType>::Token<'a>;
14989            type Return = initializeReturn;
14990            type ReturnTuple<'a> = ();
14991            type ReturnToken<'a> = <Self::ReturnTuple<
14992                'a,
14993            > as alloy_sol_types::SolType>::Token<'a>;
14994            const SIGNATURE: &'static str = "initialize(address,address,uint256,address)";
14995            const SELECTOR: [u8; 4] = [190u8, 32u8, 48u8, 148u8];
14996            #[inline]
14997            fn new<'a>(
14998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14999            ) -> Self {
15000                tuple.into()
15001            }
15002            #[inline]
15003            fn tokenize(&self) -> Self::Token<'_> {
15004                (
15005                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15006                        &self._tokenAddress,
15007                    ),
15008                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15009                        &self._lightClientAddress,
15010                    ),
15011                    <alloy::sol_types::sol_data::Uint<
15012                        256,
15013                    > as alloy_sol_types::SolType>::tokenize(&self._exitEscrowPeriod),
15014                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15015                        &self._timelock,
15016                    ),
15017                )
15018            }
15019            #[inline]
15020            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15021                initializeReturn::_tokenize(ret)
15022            }
15023            #[inline]
15024            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15025                <Self::ReturnTuple<
15026                    '_,
15027                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15028                    .map(Into::into)
15029            }
15030            #[inline]
15031            fn abi_decode_returns_with_config(
15032                data: &[u8],
15033                config: alloy_sol_types::abi::AbiDecoderConfig,
15034            ) -> alloy_sol_types::Result<Self::Return> {
15035                <Self::ReturnTuple<
15036                    '_,
15037                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15038                        data,
15039                        config,
15040                    )
15041                    .map(Into::into)
15042            }
15043            #[inline]
15044            fn abi_decode_returns_validate(
15045                data: &[u8],
15046            ) -> alloy_sol_types::Result<Self::Return> {
15047                Self::abi_decode_returns_with_config(
15048                    data,
15049                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15050                )
15051            }
15052        }
15053    };
15054    #[derive(serde::Serialize, serde::Deserialize)]
15055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15056    /**Function with signature `initializeV2(address,address,uint256,(address,uint16)[])` and selector `0x52780b6e`.
15057```solidity
15058function initializeV2(address pauser, address admin, uint256 initialActiveStake, InitialCommission[] memory initialCommissions) external;
15059```*/
15060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15061    #[derive(Clone)]
15062    pub struct initializeV2Call {
15063        #[allow(missing_docs)]
15064        pub pauser: alloy::sol_types::private::Address,
15065        #[allow(missing_docs)]
15066        pub admin: alloy::sol_types::private::Address,
15067        #[allow(missing_docs)]
15068        pub initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
15069        #[allow(missing_docs)]
15070        pub initialCommissions: alloy::sol_types::private::Vec<
15071            <InitialCommission as alloy::sol_types::SolType>::RustType,
15072        >,
15073    }
15074    ///Container type for the return parameters of the [`initializeV2(address,address,uint256,(address,uint16)[])`](initializeV2Call) function.
15075    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15076    #[derive(Clone)]
15077    pub struct initializeV2Return {}
15078    #[allow(
15079        non_camel_case_types,
15080        non_snake_case,
15081        clippy::pub_underscore_fields,
15082        clippy::style
15083    )]
15084    const _: () = {
15085        use alloy::sol_types as alloy_sol_types;
15086        {
15087            #[doc(hidden)]
15088            #[allow(dead_code)]
15089            type UnderlyingSolTuple<'a> = (
15090                alloy::sol_types::sol_data::Address,
15091                alloy::sol_types::sol_data::Address,
15092                alloy::sol_types::sol_data::Uint<256>,
15093                alloy::sol_types::sol_data::Array<InitialCommission>,
15094            );
15095            #[doc(hidden)]
15096            type UnderlyingRustTuple<'a> = (
15097                alloy::sol_types::private::Address,
15098                alloy::sol_types::private::Address,
15099                alloy::sol_types::private::primitives::aliases::U256,
15100                alloy::sol_types::private::Vec<
15101                    <InitialCommission as alloy::sol_types::SolType>::RustType,
15102                >,
15103            );
15104            #[cfg(test)]
15105            #[allow(dead_code, unreachable_patterns)]
15106            fn _type_assertion(
15107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15108            ) {
15109                match _t {
15110                    alloy_sol_types::private::AssertTypeEq::<
15111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15112                    >(_) => {}
15113                }
15114            }
15115            #[automatically_derived]
15116            #[doc(hidden)]
15117            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
15118                fn from(value: initializeV2Call) -> Self {
15119                    (
15120                        value.pauser,
15121                        value.admin,
15122                        value.initialActiveStake,
15123                        value.initialCommissions,
15124                    )
15125                }
15126            }
15127            #[automatically_derived]
15128            #[doc(hidden)]
15129            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
15130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15131                    Self {
15132                        pauser: tuple.0,
15133                        admin: tuple.1,
15134                        initialActiveStake: tuple.2,
15135                        initialCommissions: tuple.3,
15136                    }
15137                }
15138            }
15139        }
15140        {
15141            #[doc(hidden)]
15142            #[allow(dead_code)]
15143            type UnderlyingSolTuple<'a> = ();
15144            #[doc(hidden)]
15145            type UnderlyingRustTuple<'a> = ();
15146            #[cfg(test)]
15147            #[allow(dead_code, unreachable_patterns)]
15148            fn _type_assertion(
15149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15150            ) {
15151                match _t {
15152                    alloy_sol_types::private::AssertTypeEq::<
15153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15154                    >(_) => {}
15155                }
15156            }
15157            #[automatically_derived]
15158            #[doc(hidden)]
15159            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
15160                fn from(value: initializeV2Return) -> Self {
15161                    ()
15162                }
15163            }
15164            #[automatically_derived]
15165            #[doc(hidden)]
15166            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
15167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15168                    Self {}
15169                }
15170            }
15171        }
15172        impl initializeV2Return {
15173            fn _tokenize(
15174                &self,
15175            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
15176                ()
15177            }
15178        }
15179        #[automatically_derived]
15180        impl alloy_sol_types::SolCall for initializeV2Call {
15181            type Parameters<'a> = (
15182                alloy::sol_types::sol_data::Address,
15183                alloy::sol_types::sol_data::Address,
15184                alloy::sol_types::sol_data::Uint<256>,
15185                alloy::sol_types::sol_data::Array<InitialCommission>,
15186            );
15187            type Token<'a> = <Self::Parameters<
15188                'a,
15189            > as alloy_sol_types::SolType>::Token<'a>;
15190            type Return = initializeV2Return;
15191            type ReturnTuple<'a> = ();
15192            type ReturnToken<'a> = <Self::ReturnTuple<
15193                'a,
15194            > as alloy_sol_types::SolType>::Token<'a>;
15195            const SIGNATURE: &'static str = "initializeV2(address,address,uint256,(address,uint16)[])";
15196            const SELECTOR: [u8; 4] = [82u8, 120u8, 11u8, 110u8];
15197            #[inline]
15198            fn new<'a>(
15199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15200            ) -> Self {
15201                tuple.into()
15202            }
15203            #[inline]
15204            fn tokenize(&self) -> Self::Token<'_> {
15205                (
15206                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15207                        &self.pauser,
15208                    ),
15209                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15210                        &self.admin,
15211                    ),
15212                    <alloy::sol_types::sol_data::Uint<
15213                        256,
15214                    > as alloy_sol_types::SolType>::tokenize(&self.initialActiveStake),
15215                    <alloy::sol_types::sol_data::Array<
15216                        InitialCommission,
15217                    > as alloy_sol_types::SolType>::tokenize(&self.initialCommissions),
15218                )
15219            }
15220            #[inline]
15221            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15222                initializeV2Return::_tokenize(ret)
15223            }
15224            #[inline]
15225            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15226                <Self::ReturnTuple<
15227                    '_,
15228                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15229                    .map(Into::into)
15230            }
15231            #[inline]
15232            fn abi_decode_returns_with_config(
15233                data: &[u8],
15234                config: alloy_sol_types::abi::AbiDecoderConfig,
15235            ) -> alloy_sol_types::Result<Self::Return> {
15236                <Self::ReturnTuple<
15237                    '_,
15238                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15239                        data,
15240                        config,
15241                    )
15242                    .map(Into::into)
15243            }
15244            #[inline]
15245            fn abi_decode_returns_validate(
15246                data: &[u8],
15247            ) -> alloy_sol_types::Result<Self::Return> {
15248                Self::abi_decode_returns_with_config(
15249                    data,
15250                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15251                )
15252            }
15253        }
15254    };
15255    #[derive(serde::Serialize, serde::Deserialize)]
15256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15257    /**Function with signature `initializedAtBlock()` and selector `0x3e9df9b5`.
15258```solidity
15259function initializedAtBlock() external view returns (uint256);
15260```*/
15261    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15262    #[derive(Clone)]
15263    pub struct initializedAtBlockCall;
15264    #[derive(serde::Serialize, serde::Deserialize)]
15265    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15266    ///Container type for the return parameters of the [`initializedAtBlock()`](initializedAtBlockCall) function.
15267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15268    #[derive(Clone)]
15269    pub struct initializedAtBlockReturn {
15270        #[allow(missing_docs)]
15271        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15272    }
15273    #[allow(
15274        non_camel_case_types,
15275        non_snake_case,
15276        clippy::pub_underscore_fields,
15277        clippy::style
15278    )]
15279    const _: () = {
15280        use alloy::sol_types as alloy_sol_types;
15281        {
15282            #[doc(hidden)]
15283            #[allow(dead_code)]
15284            type UnderlyingSolTuple<'a> = ();
15285            #[doc(hidden)]
15286            type UnderlyingRustTuple<'a> = ();
15287            #[cfg(test)]
15288            #[allow(dead_code, unreachable_patterns)]
15289            fn _type_assertion(
15290                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15291            ) {
15292                match _t {
15293                    alloy_sol_types::private::AssertTypeEq::<
15294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15295                    >(_) => {}
15296                }
15297            }
15298            #[automatically_derived]
15299            #[doc(hidden)]
15300            impl ::core::convert::From<initializedAtBlockCall>
15301            for UnderlyingRustTuple<'_> {
15302                fn from(value: initializedAtBlockCall) -> Self {
15303                    ()
15304                }
15305            }
15306            #[automatically_derived]
15307            #[doc(hidden)]
15308            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15309            for initializedAtBlockCall {
15310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15311                    Self
15312                }
15313            }
15314        }
15315        {
15316            #[doc(hidden)]
15317            #[allow(dead_code)]
15318            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15319            #[doc(hidden)]
15320            type UnderlyingRustTuple<'a> = (
15321                alloy::sol_types::private::primitives::aliases::U256,
15322            );
15323            #[cfg(test)]
15324            #[allow(dead_code, unreachable_patterns)]
15325            fn _type_assertion(
15326                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15327            ) {
15328                match _t {
15329                    alloy_sol_types::private::AssertTypeEq::<
15330                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15331                    >(_) => {}
15332                }
15333            }
15334            #[automatically_derived]
15335            #[doc(hidden)]
15336            impl ::core::convert::From<initializedAtBlockReturn>
15337            for UnderlyingRustTuple<'_> {
15338                fn from(value: initializedAtBlockReturn) -> Self {
15339                    (value._0,)
15340                }
15341            }
15342            #[automatically_derived]
15343            #[doc(hidden)]
15344            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15345            for initializedAtBlockReturn {
15346                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15347                    Self { _0: tuple.0 }
15348                }
15349            }
15350        }
15351        #[automatically_derived]
15352        impl alloy_sol_types::SolCall for initializedAtBlockCall {
15353            type Parameters<'a> = ();
15354            type Token<'a> = <Self::Parameters<
15355                'a,
15356            > as alloy_sol_types::SolType>::Token<'a>;
15357            type Return = alloy::sol_types::private::primitives::aliases::U256;
15358            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15359            type ReturnToken<'a> = <Self::ReturnTuple<
15360                'a,
15361            > as alloy_sol_types::SolType>::Token<'a>;
15362            const SIGNATURE: &'static str = "initializedAtBlock()";
15363            const SELECTOR: [u8; 4] = [62u8, 157u8, 249u8, 181u8];
15364            #[inline]
15365            fn new<'a>(
15366                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15367            ) -> Self {
15368                tuple.into()
15369            }
15370            #[inline]
15371            fn tokenize(&self) -> Self::Token<'_> {
15372                ()
15373            }
15374            #[inline]
15375            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15376                (
15377                    <alloy::sol_types::sol_data::Uint<
15378                        256,
15379                    > as alloy_sol_types::SolType>::tokenize(ret),
15380                )
15381            }
15382            #[inline]
15383            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15384                <Self::ReturnTuple<
15385                    '_,
15386                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15387                    .map(|r| {
15388                        let r: initializedAtBlockReturn = r.into();
15389                        r._0
15390                    })
15391            }
15392            #[inline]
15393            fn abi_decode_returns_with_config(
15394                data: &[u8],
15395                config: alloy_sol_types::abi::AbiDecoderConfig,
15396            ) -> alloy_sol_types::Result<Self::Return> {
15397                <Self::ReturnTuple<
15398                    '_,
15399                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15400                        data,
15401                        config,
15402                    )
15403                    .map(|r| {
15404                        let r: initializedAtBlockReturn = r.into();
15405                        r._0
15406                    })
15407            }
15408            #[inline]
15409            fn abi_decode_returns_validate(
15410                data: &[u8],
15411            ) -> alloy_sol_types::Result<Self::Return> {
15412                Self::abi_decode_returns_with_config(
15413                    data,
15414                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15415                )
15416            }
15417        }
15418    };
15419    #[derive(serde::Serialize, serde::Deserialize)]
15420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15421    /**Function with signature `lightClient()` and selector `0xb5700e68`.
15422```solidity
15423function lightClient() external view returns (address);
15424```*/
15425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15426    #[derive(Clone)]
15427    pub struct lightClientCall;
15428    #[derive(serde::Serialize, serde::Deserialize)]
15429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15430    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
15431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15432    #[derive(Clone)]
15433    pub struct lightClientReturn {
15434        #[allow(missing_docs)]
15435        pub _0: alloy::sol_types::private::Address,
15436    }
15437    #[allow(
15438        non_camel_case_types,
15439        non_snake_case,
15440        clippy::pub_underscore_fields,
15441        clippy::style
15442    )]
15443    const _: () = {
15444        use alloy::sol_types as alloy_sol_types;
15445        {
15446            #[doc(hidden)]
15447            #[allow(dead_code)]
15448            type UnderlyingSolTuple<'a> = ();
15449            #[doc(hidden)]
15450            type UnderlyingRustTuple<'a> = ();
15451            #[cfg(test)]
15452            #[allow(dead_code, unreachable_patterns)]
15453            fn _type_assertion(
15454                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15455            ) {
15456                match _t {
15457                    alloy_sol_types::private::AssertTypeEq::<
15458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15459                    >(_) => {}
15460                }
15461            }
15462            #[automatically_derived]
15463            #[doc(hidden)]
15464            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
15465                fn from(value: lightClientCall) -> Self {
15466                    ()
15467                }
15468            }
15469            #[automatically_derived]
15470            #[doc(hidden)]
15471            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
15472                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15473                    Self
15474                }
15475            }
15476        }
15477        {
15478            #[doc(hidden)]
15479            #[allow(dead_code)]
15480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15481            #[doc(hidden)]
15482            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15483            #[cfg(test)]
15484            #[allow(dead_code, unreachable_patterns)]
15485            fn _type_assertion(
15486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15487            ) {
15488                match _t {
15489                    alloy_sol_types::private::AssertTypeEq::<
15490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15491                    >(_) => {}
15492                }
15493            }
15494            #[automatically_derived]
15495            #[doc(hidden)]
15496            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
15497                fn from(value: lightClientReturn) -> Self {
15498                    (value._0,)
15499                }
15500            }
15501            #[automatically_derived]
15502            #[doc(hidden)]
15503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
15504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15505                    Self { _0: tuple.0 }
15506                }
15507            }
15508        }
15509        #[automatically_derived]
15510        impl alloy_sol_types::SolCall for lightClientCall {
15511            type Parameters<'a> = ();
15512            type Token<'a> = <Self::Parameters<
15513                'a,
15514            > as alloy_sol_types::SolType>::Token<'a>;
15515            type Return = alloy::sol_types::private::Address;
15516            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
15517            type ReturnToken<'a> = <Self::ReturnTuple<
15518                'a,
15519            > as alloy_sol_types::SolType>::Token<'a>;
15520            const SIGNATURE: &'static str = "lightClient()";
15521            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
15522            #[inline]
15523            fn new<'a>(
15524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15525            ) -> Self {
15526                tuple.into()
15527            }
15528            #[inline]
15529            fn tokenize(&self) -> Self::Token<'_> {
15530                ()
15531            }
15532            #[inline]
15533            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15534                (
15535                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15536                        ret,
15537                    ),
15538                )
15539            }
15540            #[inline]
15541            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15542                <Self::ReturnTuple<
15543                    '_,
15544                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15545                    .map(|r| {
15546                        let r: lightClientReturn = r.into();
15547                        r._0
15548                    })
15549            }
15550            #[inline]
15551            fn abi_decode_returns_with_config(
15552                data: &[u8],
15553                config: alloy_sol_types::abi::AbiDecoderConfig,
15554            ) -> alloy_sol_types::Result<Self::Return> {
15555                <Self::ReturnTuple<
15556                    '_,
15557                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15558                        data,
15559                        config,
15560                    )
15561                    .map(|r| {
15562                        let r: lightClientReturn = r.into();
15563                        r._0
15564                    })
15565            }
15566            #[inline]
15567            fn abi_decode_returns_validate(
15568                data: &[u8],
15569            ) -> alloy_sol_types::Result<Self::Return> {
15570                Self::abi_decode_returns_with_config(
15571                    data,
15572                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15573                )
15574            }
15575        }
15576    };
15577    #[derive(serde::Serialize, serde::Deserialize)]
15578    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15579    /**Function with signature `maxCommissionIncrease()` and selector `0x3f3bb366`.
15580```solidity
15581function maxCommissionIncrease() external view returns (uint16);
15582```*/
15583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15584    #[derive(Clone)]
15585    pub struct maxCommissionIncreaseCall;
15586    #[derive(serde::Serialize, serde::Deserialize)]
15587    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15588    ///Container type for the return parameters of the [`maxCommissionIncrease()`](maxCommissionIncreaseCall) function.
15589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15590    #[derive(Clone)]
15591    pub struct maxCommissionIncreaseReturn {
15592        #[allow(missing_docs)]
15593        pub _0: u16,
15594    }
15595    #[allow(
15596        non_camel_case_types,
15597        non_snake_case,
15598        clippy::pub_underscore_fields,
15599        clippy::style
15600    )]
15601    const _: () = {
15602        use alloy::sol_types as alloy_sol_types;
15603        {
15604            #[doc(hidden)]
15605            #[allow(dead_code)]
15606            type UnderlyingSolTuple<'a> = ();
15607            #[doc(hidden)]
15608            type UnderlyingRustTuple<'a> = ();
15609            #[cfg(test)]
15610            #[allow(dead_code, unreachable_patterns)]
15611            fn _type_assertion(
15612                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15613            ) {
15614                match _t {
15615                    alloy_sol_types::private::AssertTypeEq::<
15616                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15617                    >(_) => {}
15618                }
15619            }
15620            #[automatically_derived]
15621            #[doc(hidden)]
15622            impl ::core::convert::From<maxCommissionIncreaseCall>
15623            for UnderlyingRustTuple<'_> {
15624                fn from(value: maxCommissionIncreaseCall) -> Self {
15625                    ()
15626                }
15627            }
15628            #[automatically_derived]
15629            #[doc(hidden)]
15630            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15631            for maxCommissionIncreaseCall {
15632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15633                    Self
15634                }
15635            }
15636        }
15637        {
15638            #[doc(hidden)]
15639            #[allow(dead_code)]
15640            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15641            #[doc(hidden)]
15642            type UnderlyingRustTuple<'a> = (u16,);
15643            #[cfg(test)]
15644            #[allow(dead_code, unreachable_patterns)]
15645            fn _type_assertion(
15646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15647            ) {
15648                match _t {
15649                    alloy_sol_types::private::AssertTypeEq::<
15650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15651                    >(_) => {}
15652                }
15653            }
15654            #[automatically_derived]
15655            #[doc(hidden)]
15656            impl ::core::convert::From<maxCommissionIncreaseReturn>
15657            for UnderlyingRustTuple<'_> {
15658                fn from(value: maxCommissionIncreaseReturn) -> Self {
15659                    (value._0,)
15660                }
15661            }
15662            #[automatically_derived]
15663            #[doc(hidden)]
15664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15665            for maxCommissionIncreaseReturn {
15666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15667                    Self { _0: tuple.0 }
15668                }
15669            }
15670        }
15671        #[automatically_derived]
15672        impl alloy_sol_types::SolCall for maxCommissionIncreaseCall {
15673            type Parameters<'a> = ();
15674            type Token<'a> = <Self::Parameters<
15675                'a,
15676            > as alloy_sol_types::SolType>::Token<'a>;
15677            type Return = u16;
15678            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
15679            type ReturnToken<'a> = <Self::ReturnTuple<
15680                'a,
15681            > as alloy_sol_types::SolType>::Token<'a>;
15682            const SIGNATURE: &'static str = "maxCommissionIncrease()";
15683            const SELECTOR: [u8; 4] = [63u8, 59u8, 179u8, 102u8];
15684            #[inline]
15685            fn new<'a>(
15686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15687            ) -> Self {
15688                tuple.into()
15689            }
15690            #[inline]
15691            fn tokenize(&self) -> Self::Token<'_> {
15692                ()
15693            }
15694            #[inline]
15695            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15696                (
15697                    <alloy::sol_types::sol_data::Uint<
15698                        16,
15699                    > as alloy_sol_types::SolType>::tokenize(ret),
15700                )
15701            }
15702            #[inline]
15703            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15704                <Self::ReturnTuple<
15705                    '_,
15706                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15707                    .map(|r| {
15708                        let r: maxCommissionIncreaseReturn = r.into();
15709                        r._0
15710                    })
15711            }
15712            #[inline]
15713            fn abi_decode_returns_with_config(
15714                data: &[u8],
15715                config: alloy_sol_types::abi::AbiDecoderConfig,
15716            ) -> alloy_sol_types::Result<Self::Return> {
15717                <Self::ReturnTuple<
15718                    '_,
15719                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15720                        data,
15721                        config,
15722                    )
15723                    .map(|r| {
15724                        let r: maxCommissionIncreaseReturn = r.into();
15725                        r._0
15726                    })
15727            }
15728            #[inline]
15729            fn abi_decode_returns_validate(
15730                data: &[u8],
15731            ) -> alloy_sol_types::Result<Self::Return> {
15732                Self::abi_decode_returns_with_config(
15733                    data,
15734                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15735                )
15736            }
15737        }
15738    };
15739    #[derive(serde::Serialize, serde::Deserialize)]
15740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15741    /**Function with signature `minCommissionIncreaseInterval()` and selector `0xd9cc7d26`.
15742```solidity
15743function minCommissionIncreaseInterval() external view returns (uint256);
15744```*/
15745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15746    #[derive(Clone)]
15747    pub struct minCommissionIncreaseIntervalCall;
15748    #[derive(serde::Serialize, serde::Deserialize)]
15749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15750    ///Container type for the return parameters of the [`minCommissionIncreaseInterval()`](minCommissionIncreaseIntervalCall) function.
15751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15752    #[derive(Clone)]
15753    pub struct minCommissionIncreaseIntervalReturn {
15754        #[allow(missing_docs)]
15755        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15756    }
15757    #[allow(
15758        non_camel_case_types,
15759        non_snake_case,
15760        clippy::pub_underscore_fields,
15761        clippy::style
15762    )]
15763    const _: () = {
15764        use alloy::sol_types as alloy_sol_types;
15765        {
15766            #[doc(hidden)]
15767            #[allow(dead_code)]
15768            type UnderlyingSolTuple<'a> = ();
15769            #[doc(hidden)]
15770            type UnderlyingRustTuple<'a> = ();
15771            #[cfg(test)]
15772            #[allow(dead_code, unreachable_patterns)]
15773            fn _type_assertion(
15774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15775            ) {
15776                match _t {
15777                    alloy_sol_types::private::AssertTypeEq::<
15778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15779                    >(_) => {}
15780                }
15781            }
15782            #[automatically_derived]
15783            #[doc(hidden)]
15784            impl ::core::convert::From<minCommissionIncreaseIntervalCall>
15785            for UnderlyingRustTuple<'_> {
15786                fn from(value: minCommissionIncreaseIntervalCall) -> Self {
15787                    ()
15788                }
15789            }
15790            #[automatically_derived]
15791            #[doc(hidden)]
15792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15793            for minCommissionIncreaseIntervalCall {
15794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15795                    Self
15796                }
15797            }
15798        }
15799        {
15800            #[doc(hidden)]
15801            #[allow(dead_code)]
15802            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15803            #[doc(hidden)]
15804            type UnderlyingRustTuple<'a> = (
15805                alloy::sol_types::private::primitives::aliases::U256,
15806            );
15807            #[cfg(test)]
15808            #[allow(dead_code, unreachable_patterns)]
15809            fn _type_assertion(
15810                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15811            ) {
15812                match _t {
15813                    alloy_sol_types::private::AssertTypeEq::<
15814                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15815                    >(_) => {}
15816                }
15817            }
15818            #[automatically_derived]
15819            #[doc(hidden)]
15820            impl ::core::convert::From<minCommissionIncreaseIntervalReturn>
15821            for UnderlyingRustTuple<'_> {
15822                fn from(value: minCommissionIncreaseIntervalReturn) -> Self {
15823                    (value._0,)
15824                }
15825            }
15826            #[automatically_derived]
15827            #[doc(hidden)]
15828            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15829            for minCommissionIncreaseIntervalReturn {
15830                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15831                    Self { _0: tuple.0 }
15832                }
15833            }
15834        }
15835        #[automatically_derived]
15836        impl alloy_sol_types::SolCall for minCommissionIncreaseIntervalCall {
15837            type Parameters<'a> = ();
15838            type Token<'a> = <Self::Parameters<
15839                'a,
15840            > as alloy_sol_types::SolType>::Token<'a>;
15841            type Return = alloy::sol_types::private::primitives::aliases::U256;
15842            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15843            type ReturnToken<'a> = <Self::ReturnTuple<
15844                'a,
15845            > as alloy_sol_types::SolType>::Token<'a>;
15846            const SIGNATURE: &'static str = "minCommissionIncreaseInterval()";
15847            const SELECTOR: [u8; 4] = [217u8, 204u8, 125u8, 38u8];
15848            #[inline]
15849            fn new<'a>(
15850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15851            ) -> Self {
15852                tuple.into()
15853            }
15854            #[inline]
15855            fn tokenize(&self) -> Self::Token<'_> {
15856                ()
15857            }
15858            #[inline]
15859            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15860                (
15861                    <alloy::sol_types::sol_data::Uint<
15862                        256,
15863                    > as alloy_sol_types::SolType>::tokenize(ret),
15864                )
15865            }
15866            #[inline]
15867            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15868                <Self::ReturnTuple<
15869                    '_,
15870                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15871                    .map(|r| {
15872                        let r: minCommissionIncreaseIntervalReturn = r.into();
15873                        r._0
15874                    })
15875            }
15876            #[inline]
15877            fn abi_decode_returns_with_config(
15878                data: &[u8],
15879                config: alloy_sol_types::abi::AbiDecoderConfig,
15880            ) -> alloy_sol_types::Result<Self::Return> {
15881                <Self::ReturnTuple<
15882                    '_,
15883                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15884                        data,
15885                        config,
15886                    )
15887                    .map(|r| {
15888                        let r: minCommissionIncreaseIntervalReturn = r.into();
15889                        r._0
15890                    })
15891            }
15892            #[inline]
15893            fn abi_decode_returns_validate(
15894                data: &[u8],
15895            ) -> alloy_sol_types::Result<Self::Return> {
15896                Self::abi_decode_returns_with_config(
15897                    data,
15898                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15899                )
15900            }
15901        }
15902    };
15903    #[derive(serde::Serialize, serde::Deserialize)]
15904    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15905    /**Function with signature `minDelegateAmount()` and selector `0x72e9c934`.
15906```solidity
15907function minDelegateAmount() external view returns (uint256);
15908```*/
15909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15910    #[derive(Clone)]
15911    pub struct minDelegateAmountCall;
15912    #[derive(serde::Serialize, serde::Deserialize)]
15913    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15914    ///Container type for the return parameters of the [`minDelegateAmount()`](minDelegateAmountCall) function.
15915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15916    #[derive(Clone)]
15917    pub struct minDelegateAmountReturn {
15918        #[allow(missing_docs)]
15919        pub _0: alloy::sol_types::private::primitives::aliases::U256,
15920    }
15921    #[allow(
15922        non_camel_case_types,
15923        non_snake_case,
15924        clippy::pub_underscore_fields,
15925        clippy::style
15926    )]
15927    const _: () = {
15928        use alloy::sol_types as alloy_sol_types;
15929        {
15930            #[doc(hidden)]
15931            #[allow(dead_code)]
15932            type UnderlyingSolTuple<'a> = ();
15933            #[doc(hidden)]
15934            type UnderlyingRustTuple<'a> = ();
15935            #[cfg(test)]
15936            #[allow(dead_code, unreachable_patterns)]
15937            fn _type_assertion(
15938                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15939            ) {
15940                match _t {
15941                    alloy_sol_types::private::AssertTypeEq::<
15942                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15943                    >(_) => {}
15944                }
15945            }
15946            #[automatically_derived]
15947            #[doc(hidden)]
15948            impl ::core::convert::From<minDelegateAmountCall>
15949            for UnderlyingRustTuple<'_> {
15950                fn from(value: minDelegateAmountCall) -> Self {
15951                    ()
15952                }
15953            }
15954            #[automatically_derived]
15955            #[doc(hidden)]
15956            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15957            for minDelegateAmountCall {
15958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15959                    Self
15960                }
15961            }
15962        }
15963        {
15964            #[doc(hidden)]
15965            #[allow(dead_code)]
15966            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15967            #[doc(hidden)]
15968            type UnderlyingRustTuple<'a> = (
15969                alloy::sol_types::private::primitives::aliases::U256,
15970            );
15971            #[cfg(test)]
15972            #[allow(dead_code, unreachable_patterns)]
15973            fn _type_assertion(
15974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15975            ) {
15976                match _t {
15977                    alloy_sol_types::private::AssertTypeEq::<
15978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15979                    >(_) => {}
15980                }
15981            }
15982            #[automatically_derived]
15983            #[doc(hidden)]
15984            impl ::core::convert::From<minDelegateAmountReturn>
15985            for UnderlyingRustTuple<'_> {
15986                fn from(value: minDelegateAmountReturn) -> Self {
15987                    (value._0,)
15988                }
15989            }
15990            #[automatically_derived]
15991            #[doc(hidden)]
15992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15993            for minDelegateAmountReturn {
15994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15995                    Self { _0: tuple.0 }
15996                }
15997            }
15998        }
15999        #[automatically_derived]
16000        impl alloy_sol_types::SolCall for minDelegateAmountCall {
16001            type Parameters<'a> = ();
16002            type Token<'a> = <Self::Parameters<
16003                'a,
16004            > as alloy_sol_types::SolType>::Token<'a>;
16005            type Return = alloy::sol_types::private::primitives::aliases::U256;
16006            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
16007            type ReturnToken<'a> = <Self::ReturnTuple<
16008                'a,
16009            > as alloy_sol_types::SolType>::Token<'a>;
16010            const SIGNATURE: &'static str = "minDelegateAmount()";
16011            const SELECTOR: [u8; 4] = [114u8, 233u8, 201u8, 52u8];
16012            #[inline]
16013            fn new<'a>(
16014                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16015            ) -> Self {
16016                tuple.into()
16017            }
16018            #[inline]
16019            fn tokenize(&self) -> Self::Token<'_> {
16020                ()
16021            }
16022            #[inline]
16023            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16024                (
16025                    <alloy::sol_types::sol_data::Uint<
16026                        256,
16027                    > as alloy_sol_types::SolType>::tokenize(ret),
16028                )
16029            }
16030            #[inline]
16031            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16032                <Self::ReturnTuple<
16033                    '_,
16034                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16035                    .map(|r| {
16036                        let r: minDelegateAmountReturn = r.into();
16037                        r._0
16038                    })
16039            }
16040            #[inline]
16041            fn abi_decode_returns_with_config(
16042                data: &[u8],
16043                config: alloy_sol_types::abi::AbiDecoderConfig,
16044            ) -> alloy_sol_types::Result<Self::Return> {
16045                <Self::ReturnTuple<
16046                    '_,
16047                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16048                        data,
16049                        config,
16050                    )
16051                    .map(|r| {
16052                        let r: minDelegateAmountReturn = r.into();
16053                        r._0
16054                    })
16055            }
16056            #[inline]
16057            fn abi_decode_returns_validate(
16058                data: &[u8],
16059            ) -> alloy_sol_types::Result<Self::Return> {
16060                Self::abi_decode_returns_with_config(
16061                    data,
16062                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16063                )
16064            }
16065        }
16066    };
16067    #[derive(serde::Serialize, serde::Deserialize)]
16068    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16069    /**Function with signature `owner()` and selector `0x8da5cb5b`.
16070```solidity
16071function owner() external view returns (address);
16072```*/
16073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16074    #[derive(Clone)]
16075    pub struct ownerCall;
16076    #[derive(serde::Serialize, serde::Deserialize)]
16077    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16078    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
16079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16080    #[derive(Clone)]
16081    pub struct ownerReturn {
16082        #[allow(missing_docs)]
16083        pub _0: alloy::sol_types::private::Address,
16084    }
16085    #[allow(
16086        non_camel_case_types,
16087        non_snake_case,
16088        clippy::pub_underscore_fields,
16089        clippy::style
16090    )]
16091    const _: () = {
16092        use alloy::sol_types as alloy_sol_types;
16093        {
16094            #[doc(hidden)]
16095            #[allow(dead_code)]
16096            type UnderlyingSolTuple<'a> = ();
16097            #[doc(hidden)]
16098            type UnderlyingRustTuple<'a> = ();
16099            #[cfg(test)]
16100            #[allow(dead_code, unreachable_patterns)]
16101            fn _type_assertion(
16102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16103            ) {
16104                match _t {
16105                    alloy_sol_types::private::AssertTypeEq::<
16106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16107                    >(_) => {}
16108                }
16109            }
16110            #[automatically_derived]
16111            #[doc(hidden)]
16112            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
16113                fn from(value: ownerCall) -> Self {
16114                    ()
16115                }
16116            }
16117            #[automatically_derived]
16118            #[doc(hidden)]
16119            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
16120                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16121                    Self
16122                }
16123            }
16124        }
16125        {
16126            #[doc(hidden)]
16127            #[allow(dead_code)]
16128            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
16129            #[doc(hidden)]
16130            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
16131            #[cfg(test)]
16132            #[allow(dead_code, unreachable_patterns)]
16133            fn _type_assertion(
16134                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16135            ) {
16136                match _t {
16137                    alloy_sol_types::private::AssertTypeEq::<
16138                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16139                    >(_) => {}
16140                }
16141            }
16142            #[automatically_derived]
16143            #[doc(hidden)]
16144            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
16145                fn from(value: ownerReturn) -> Self {
16146                    (value._0,)
16147                }
16148            }
16149            #[automatically_derived]
16150            #[doc(hidden)]
16151            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
16152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16153                    Self { _0: tuple.0 }
16154                }
16155            }
16156        }
16157        #[automatically_derived]
16158        impl alloy_sol_types::SolCall for ownerCall {
16159            type Parameters<'a> = ();
16160            type Token<'a> = <Self::Parameters<
16161                'a,
16162            > as alloy_sol_types::SolType>::Token<'a>;
16163            type Return = alloy::sol_types::private::Address;
16164            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
16165            type ReturnToken<'a> = <Self::ReturnTuple<
16166                'a,
16167            > as alloy_sol_types::SolType>::Token<'a>;
16168            const SIGNATURE: &'static str = "owner()";
16169            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
16170            #[inline]
16171            fn new<'a>(
16172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16173            ) -> Self {
16174                tuple.into()
16175            }
16176            #[inline]
16177            fn tokenize(&self) -> Self::Token<'_> {
16178                ()
16179            }
16180            #[inline]
16181            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16182                (
16183                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16184                        ret,
16185                    ),
16186                )
16187            }
16188            #[inline]
16189            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16190                <Self::ReturnTuple<
16191                    '_,
16192                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16193                    .map(|r| {
16194                        let r: ownerReturn = r.into();
16195                        r._0
16196                    })
16197            }
16198            #[inline]
16199            fn abi_decode_returns_with_config(
16200                data: &[u8],
16201                config: alloy_sol_types::abi::AbiDecoderConfig,
16202            ) -> alloy_sol_types::Result<Self::Return> {
16203                <Self::ReturnTuple<
16204                    '_,
16205                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16206                        data,
16207                        config,
16208                    )
16209                    .map(|r| {
16210                        let r: ownerReturn = r.into();
16211                        r._0
16212                    })
16213            }
16214            #[inline]
16215            fn abi_decode_returns_validate(
16216                data: &[u8],
16217            ) -> alloy_sol_types::Result<Self::Return> {
16218                Self::abi_decode_returns_with_config(
16219                    data,
16220                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16221                )
16222            }
16223        }
16224    };
16225    #[derive(serde::Serialize, serde::Deserialize)]
16226    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16227    /**Function with signature `pause()` and selector `0x8456cb59`.
16228```solidity
16229function pause() external;
16230```*/
16231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16232    #[derive(Clone)]
16233    pub struct pauseCall;
16234    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
16235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16236    #[derive(Clone)]
16237    pub struct pauseReturn {}
16238    #[allow(
16239        non_camel_case_types,
16240        non_snake_case,
16241        clippy::pub_underscore_fields,
16242        clippy::style
16243    )]
16244    const _: () = {
16245        use alloy::sol_types as alloy_sol_types;
16246        {
16247            #[doc(hidden)]
16248            #[allow(dead_code)]
16249            type UnderlyingSolTuple<'a> = ();
16250            #[doc(hidden)]
16251            type UnderlyingRustTuple<'a> = ();
16252            #[cfg(test)]
16253            #[allow(dead_code, unreachable_patterns)]
16254            fn _type_assertion(
16255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16256            ) {
16257                match _t {
16258                    alloy_sol_types::private::AssertTypeEq::<
16259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16260                    >(_) => {}
16261                }
16262            }
16263            #[automatically_derived]
16264            #[doc(hidden)]
16265            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
16266                fn from(value: pauseCall) -> Self {
16267                    ()
16268                }
16269            }
16270            #[automatically_derived]
16271            #[doc(hidden)]
16272            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
16273                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16274                    Self
16275                }
16276            }
16277        }
16278        {
16279            #[doc(hidden)]
16280            #[allow(dead_code)]
16281            type UnderlyingSolTuple<'a> = ();
16282            #[doc(hidden)]
16283            type UnderlyingRustTuple<'a> = ();
16284            #[cfg(test)]
16285            #[allow(dead_code, unreachable_patterns)]
16286            fn _type_assertion(
16287                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16288            ) {
16289                match _t {
16290                    alloy_sol_types::private::AssertTypeEq::<
16291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16292                    >(_) => {}
16293                }
16294            }
16295            #[automatically_derived]
16296            #[doc(hidden)]
16297            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
16298                fn from(value: pauseReturn) -> Self {
16299                    ()
16300                }
16301            }
16302            #[automatically_derived]
16303            #[doc(hidden)]
16304            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
16305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16306                    Self {}
16307                }
16308            }
16309        }
16310        impl pauseReturn {
16311            fn _tokenize(
16312                &self,
16313            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16314                ()
16315            }
16316        }
16317        #[automatically_derived]
16318        impl alloy_sol_types::SolCall for pauseCall {
16319            type Parameters<'a> = ();
16320            type Token<'a> = <Self::Parameters<
16321                'a,
16322            > as alloy_sol_types::SolType>::Token<'a>;
16323            type Return = pauseReturn;
16324            type ReturnTuple<'a> = ();
16325            type ReturnToken<'a> = <Self::ReturnTuple<
16326                'a,
16327            > as alloy_sol_types::SolType>::Token<'a>;
16328            const SIGNATURE: &'static str = "pause()";
16329            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
16330            #[inline]
16331            fn new<'a>(
16332                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16333            ) -> Self {
16334                tuple.into()
16335            }
16336            #[inline]
16337            fn tokenize(&self) -> Self::Token<'_> {
16338                ()
16339            }
16340            #[inline]
16341            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16342                pauseReturn::_tokenize(ret)
16343            }
16344            #[inline]
16345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16346                <Self::ReturnTuple<
16347                    '_,
16348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16349                    .map(Into::into)
16350            }
16351            #[inline]
16352            fn abi_decode_returns_with_config(
16353                data: &[u8],
16354                config: alloy_sol_types::abi::AbiDecoderConfig,
16355            ) -> alloy_sol_types::Result<Self::Return> {
16356                <Self::ReturnTuple<
16357                    '_,
16358                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16359                        data,
16360                        config,
16361                    )
16362                    .map(Into::into)
16363            }
16364            #[inline]
16365            fn abi_decode_returns_validate(
16366                data: &[u8],
16367            ) -> alloy_sol_types::Result<Self::Return> {
16368                Self::abi_decode_returns_with_config(
16369                    data,
16370                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16371                )
16372            }
16373        }
16374    };
16375    #[derive(serde::Serialize, serde::Deserialize)]
16376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16377    /**Function with signature `paused()` and selector `0x5c975abb`.
16378```solidity
16379function paused() external view returns (bool);
16380```*/
16381    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16382    #[derive(Clone)]
16383    pub struct pausedCall;
16384    #[derive(serde::Serialize, serde::Deserialize)]
16385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16386    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
16387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16388    #[derive(Clone)]
16389    pub struct pausedReturn {
16390        #[allow(missing_docs)]
16391        pub _0: bool,
16392    }
16393    #[allow(
16394        non_camel_case_types,
16395        non_snake_case,
16396        clippy::pub_underscore_fields,
16397        clippy::style
16398    )]
16399    const _: () = {
16400        use alloy::sol_types as alloy_sol_types;
16401        {
16402            #[doc(hidden)]
16403            #[allow(dead_code)]
16404            type UnderlyingSolTuple<'a> = ();
16405            #[doc(hidden)]
16406            type UnderlyingRustTuple<'a> = ();
16407            #[cfg(test)]
16408            #[allow(dead_code, unreachable_patterns)]
16409            fn _type_assertion(
16410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16411            ) {
16412                match _t {
16413                    alloy_sol_types::private::AssertTypeEq::<
16414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16415                    >(_) => {}
16416                }
16417            }
16418            #[automatically_derived]
16419            #[doc(hidden)]
16420            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
16421                fn from(value: pausedCall) -> Self {
16422                    ()
16423                }
16424            }
16425            #[automatically_derived]
16426            #[doc(hidden)]
16427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
16428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16429                    Self
16430                }
16431            }
16432        }
16433        {
16434            #[doc(hidden)]
16435            #[allow(dead_code)]
16436            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16437            #[doc(hidden)]
16438            type UnderlyingRustTuple<'a> = (bool,);
16439            #[cfg(test)]
16440            #[allow(dead_code, unreachable_patterns)]
16441            fn _type_assertion(
16442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16443            ) {
16444                match _t {
16445                    alloy_sol_types::private::AssertTypeEq::<
16446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16447                    >(_) => {}
16448                }
16449            }
16450            #[automatically_derived]
16451            #[doc(hidden)]
16452            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
16453                fn from(value: pausedReturn) -> Self {
16454                    (value._0,)
16455                }
16456            }
16457            #[automatically_derived]
16458            #[doc(hidden)]
16459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
16460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16461                    Self { _0: tuple.0 }
16462                }
16463            }
16464        }
16465        #[automatically_derived]
16466        impl alloy_sol_types::SolCall for pausedCall {
16467            type Parameters<'a> = ();
16468            type Token<'a> = <Self::Parameters<
16469                'a,
16470            > as alloy_sol_types::SolType>::Token<'a>;
16471            type Return = bool;
16472            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
16473            type ReturnToken<'a> = <Self::ReturnTuple<
16474                'a,
16475            > as alloy_sol_types::SolType>::Token<'a>;
16476            const SIGNATURE: &'static str = "paused()";
16477            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
16478            #[inline]
16479            fn new<'a>(
16480                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16481            ) -> Self {
16482                tuple.into()
16483            }
16484            #[inline]
16485            fn tokenize(&self) -> Self::Token<'_> {
16486                ()
16487            }
16488            #[inline]
16489            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16490                (
16491                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
16492                        ret,
16493                    ),
16494                )
16495            }
16496            #[inline]
16497            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16498                <Self::ReturnTuple<
16499                    '_,
16500                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16501                    .map(|r| {
16502                        let r: pausedReturn = r.into();
16503                        r._0
16504                    })
16505            }
16506            #[inline]
16507            fn abi_decode_returns_with_config(
16508                data: &[u8],
16509                config: alloy_sol_types::abi::AbiDecoderConfig,
16510            ) -> alloy_sol_types::Result<Self::Return> {
16511                <Self::ReturnTuple<
16512                    '_,
16513                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16514                        data,
16515                        config,
16516                    )
16517                    .map(|r| {
16518                        let r: pausedReturn = r.into();
16519                        r._0
16520                    })
16521            }
16522            #[inline]
16523            fn abi_decode_returns_validate(
16524                data: &[u8],
16525            ) -> alloy_sol_types::Result<Self::Return> {
16526                Self::abi_decode_returns_with_config(
16527                    data,
16528                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16529                )
16530            }
16531        }
16532    };
16533    #[derive(serde::Serialize, serde::Deserialize)]
16534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16535    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
16536```solidity
16537function proxiableUUID() external view returns (bytes32);
16538```*/
16539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16540    #[derive(Clone)]
16541    pub struct proxiableUUIDCall;
16542    #[derive(serde::Serialize, serde::Deserialize)]
16543    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16544    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
16545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16546    #[derive(Clone)]
16547    pub struct proxiableUUIDReturn {
16548        #[allow(missing_docs)]
16549        pub _0: alloy::sol_types::private::FixedBytes<32>,
16550    }
16551    #[allow(
16552        non_camel_case_types,
16553        non_snake_case,
16554        clippy::pub_underscore_fields,
16555        clippy::style
16556    )]
16557    const _: () = {
16558        use alloy::sol_types as alloy_sol_types;
16559        {
16560            #[doc(hidden)]
16561            #[allow(dead_code)]
16562            type UnderlyingSolTuple<'a> = ();
16563            #[doc(hidden)]
16564            type UnderlyingRustTuple<'a> = ();
16565            #[cfg(test)]
16566            #[allow(dead_code, unreachable_patterns)]
16567            fn _type_assertion(
16568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16569            ) {
16570                match _t {
16571                    alloy_sol_types::private::AssertTypeEq::<
16572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16573                    >(_) => {}
16574                }
16575            }
16576            #[automatically_derived]
16577            #[doc(hidden)]
16578            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
16579                fn from(value: proxiableUUIDCall) -> Self {
16580                    ()
16581                }
16582            }
16583            #[automatically_derived]
16584            #[doc(hidden)]
16585            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
16586                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16587                    Self
16588                }
16589            }
16590        }
16591        {
16592            #[doc(hidden)]
16593            #[allow(dead_code)]
16594            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16595            #[doc(hidden)]
16596            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
16597            #[cfg(test)]
16598            #[allow(dead_code, unreachable_patterns)]
16599            fn _type_assertion(
16600                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16601            ) {
16602                match _t {
16603                    alloy_sol_types::private::AssertTypeEq::<
16604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16605                    >(_) => {}
16606                }
16607            }
16608            #[automatically_derived]
16609            #[doc(hidden)]
16610            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
16611                fn from(value: proxiableUUIDReturn) -> Self {
16612                    (value._0,)
16613                }
16614            }
16615            #[automatically_derived]
16616            #[doc(hidden)]
16617            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
16618                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16619                    Self { _0: tuple.0 }
16620                }
16621            }
16622        }
16623        #[automatically_derived]
16624        impl alloy_sol_types::SolCall for proxiableUUIDCall {
16625            type Parameters<'a> = ();
16626            type Token<'a> = <Self::Parameters<
16627                'a,
16628            > as alloy_sol_types::SolType>::Token<'a>;
16629            type Return = alloy::sol_types::private::FixedBytes<32>;
16630            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
16631            type ReturnToken<'a> = <Self::ReturnTuple<
16632                'a,
16633            > as alloy_sol_types::SolType>::Token<'a>;
16634            const SIGNATURE: &'static str = "proxiableUUID()";
16635            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
16636            #[inline]
16637            fn new<'a>(
16638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16639            ) -> Self {
16640                tuple.into()
16641            }
16642            #[inline]
16643            fn tokenize(&self) -> Self::Token<'_> {
16644                ()
16645            }
16646            #[inline]
16647            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16648                (
16649                    <alloy::sol_types::sol_data::FixedBytes<
16650                        32,
16651                    > as alloy_sol_types::SolType>::tokenize(ret),
16652                )
16653            }
16654            #[inline]
16655            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16656                <Self::ReturnTuple<
16657                    '_,
16658                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16659                    .map(|r| {
16660                        let r: proxiableUUIDReturn = r.into();
16661                        r._0
16662                    })
16663            }
16664            #[inline]
16665            fn abi_decode_returns_with_config(
16666                data: &[u8],
16667                config: alloy_sol_types::abi::AbiDecoderConfig,
16668            ) -> alloy_sol_types::Result<Self::Return> {
16669                <Self::ReturnTuple<
16670                    '_,
16671                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16672                        data,
16673                        config,
16674                    )
16675                    .map(|r| {
16676                        let r: proxiableUUIDReturn = r.into();
16677                        r._0
16678                    })
16679            }
16680            #[inline]
16681            fn abi_decode_returns_validate(
16682                data: &[u8],
16683            ) -> alloy_sol_types::Result<Self::Return> {
16684                Self::abi_decode_returns_with_config(
16685                    data,
16686                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16687                )
16688            }
16689        }
16690    };
16691    #[derive(serde::Serialize, serde::Deserialize)]
16692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16693    /**Function with signature `registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)` and selector `0x13b9057a`.
16694```solidity
16695function registerValidator(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory, uint16) external pure;
16696```*/
16697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16698    #[derive(Clone)]
16699    pub struct registerValidatorCall {
16700        #[allow(missing_docs)]
16701        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16702        #[allow(missing_docs)]
16703        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16704        #[allow(missing_docs)]
16705        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16706        #[allow(missing_docs)]
16707        pub _3: u16,
16708    }
16709    ///Container type for the return parameters of the [`registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)`](registerValidatorCall) function.
16710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16711    #[derive(Clone)]
16712    pub struct registerValidatorReturn {}
16713    #[allow(
16714        non_camel_case_types,
16715        non_snake_case,
16716        clippy::pub_underscore_fields,
16717        clippy::style
16718    )]
16719    const _: () = {
16720        use alloy::sol_types as alloy_sol_types;
16721        {
16722            #[doc(hidden)]
16723            #[allow(dead_code)]
16724            type UnderlyingSolTuple<'a> = (
16725                BN254::G2Point,
16726                EdOnBN254::EdOnBN254Point,
16727                BN254::G1Point,
16728                alloy::sol_types::sol_data::Uint<16>,
16729            );
16730            #[doc(hidden)]
16731            type UnderlyingRustTuple<'a> = (
16732                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16733                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16734                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16735                u16,
16736            );
16737            #[cfg(test)]
16738            #[allow(dead_code, unreachable_patterns)]
16739            fn _type_assertion(
16740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16741            ) {
16742                match _t {
16743                    alloy_sol_types::private::AssertTypeEq::<
16744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16745                    >(_) => {}
16746                }
16747            }
16748            #[automatically_derived]
16749            #[doc(hidden)]
16750            impl ::core::convert::From<registerValidatorCall>
16751            for UnderlyingRustTuple<'_> {
16752                fn from(value: registerValidatorCall) -> Self {
16753                    (value._0, value._1, value._2, value._3)
16754                }
16755            }
16756            #[automatically_derived]
16757            #[doc(hidden)]
16758            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16759            for registerValidatorCall {
16760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16761                    Self {
16762                        _0: tuple.0,
16763                        _1: tuple.1,
16764                        _2: tuple.2,
16765                        _3: tuple.3,
16766                    }
16767                }
16768            }
16769        }
16770        {
16771            #[doc(hidden)]
16772            #[allow(dead_code)]
16773            type UnderlyingSolTuple<'a> = ();
16774            #[doc(hidden)]
16775            type UnderlyingRustTuple<'a> = ();
16776            #[cfg(test)]
16777            #[allow(dead_code, unreachable_patterns)]
16778            fn _type_assertion(
16779                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16780            ) {
16781                match _t {
16782                    alloy_sol_types::private::AssertTypeEq::<
16783                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16784                    >(_) => {}
16785                }
16786            }
16787            #[automatically_derived]
16788            #[doc(hidden)]
16789            impl ::core::convert::From<registerValidatorReturn>
16790            for UnderlyingRustTuple<'_> {
16791                fn from(value: registerValidatorReturn) -> Self {
16792                    ()
16793                }
16794            }
16795            #[automatically_derived]
16796            #[doc(hidden)]
16797            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16798            for registerValidatorReturn {
16799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16800                    Self {}
16801                }
16802            }
16803        }
16804        impl registerValidatorReturn {
16805            fn _tokenize(
16806                &self,
16807            ) -> <registerValidatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16808                ()
16809            }
16810        }
16811        #[automatically_derived]
16812        impl alloy_sol_types::SolCall for registerValidatorCall {
16813            type Parameters<'a> = (
16814                BN254::G2Point,
16815                EdOnBN254::EdOnBN254Point,
16816                BN254::G1Point,
16817                alloy::sol_types::sol_data::Uint<16>,
16818            );
16819            type Token<'a> = <Self::Parameters<
16820                'a,
16821            > as alloy_sol_types::SolType>::Token<'a>;
16822            type Return = registerValidatorReturn;
16823            type ReturnTuple<'a> = ();
16824            type ReturnToken<'a> = <Self::ReturnTuple<
16825                'a,
16826            > as alloy_sol_types::SolType>::Token<'a>;
16827            const SIGNATURE: &'static str = "registerValidator((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),uint16)";
16828            const SELECTOR: [u8; 4] = [19u8, 185u8, 5u8, 122u8];
16829            #[inline]
16830            fn new<'a>(
16831                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16832            ) -> Self {
16833                tuple.into()
16834            }
16835            #[inline]
16836            fn tokenize(&self) -> Self::Token<'_> {
16837                (
16838                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
16839                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
16840                        &self._1,
16841                    ),
16842                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
16843                    <alloy::sol_types::sol_data::Uint<
16844                        16,
16845                    > as alloy_sol_types::SolType>::tokenize(&self._3),
16846                )
16847            }
16848            #[inline]
16849            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16850                registerValidatorReturn::_tokenize(ret)
16851            }
16852            #[inline]
16853            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16854                <Self::ReturnTuple<
16855                    '_,
16856                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16857                    .map(Into::into)
16858            }
16859            #[inline]
16860            fn abi_decode_returns_with_config(
16861                data: &[u8],
16862                config: alloy_sol_types::abi::AbiDecoderConfig,
16863            ) -> alloy_sol_types::Result<Self::Return> {
16864                <Self::ReturnTuple<
16865                    '_,
16866                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16867                        data,
16868                        config,
16869                    )
16870                    .map(Into::into)
16871            }
16872            #[inline]
16873            fn abi_decode_returns_validate(
16874                data: &[u8],
16875            ) -> alloy_sol_types::Result<Self::Return> {
16876                Self::abi_decode_returns_with_config(
16877                    data,
16878                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16879                )
16880            }
16881        }
16882    };
16883    #[derive(serde::Serialize, serde::Deserialize)]
16884    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16885    /**Function with signature `registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)` and selector `0x2b9e5c8a`.
16886```solidity
16887function registerValidatorV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig, uint16 commission, string memory metadataUri) external;
16888```*/
16889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16890    #[derive(Clone)]
16891    pub struct registerValidatorV2Call {
16892        #[allow(missing_docs)]
16893        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16894        #[allow(missing_docs)]
16895        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16896        #[allow(missing_docs)]
16897        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16898        #[allow(missing_docs)]
16899        pub schnorrSig: alloy::sol_types::private::Bytes,
16900        #[allow(missing_docs)]
16901        pub commission: u16,
16902        #[allow(missing_docs)]
16903        pub metadataUri: alloy::sol_types::private::String,
16904    }
16905    ///Container type for the return parameters of the [`registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)`](registerValidatorV2Call) function.
16906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16907    #[derive(Clone)]
16908    pub struct registerValidatorV2Return {}
16909    #[allow(
16910        non_camel_case_types,
16911        non_snake_case,
16912        clippy::pub_underscore_fields,
16913        clippy::style
16914    )]
16915    const _: () = {
16916        use alloy::sol_types as alloy_sol_types;
16917        {
16918            #[doc(hidden)]
16919            #[allow(dead_code)]
16920            type UnderlyingSolTuple<'a> = (
16921                BN254::G2Point,
16922                EdOnBN254::EdOnBN254Point,
16923                BN254::G1Point,
16924                alloy::sol_types::sol_data::Bytes,
16925                alloy::sol_types::sol_data::Uint<16>,
16926                alloy::sol_types::sol_data::String,
16927            );
16928            #[doc(hidden)]
16929            type UnderlyingRustTuple<'a> = (
16930                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
16931                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
16932                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
16933                alloy::sol_types::private::Bytes,
16934                u16,
16935                alloy::sol_types::private::String,
16936            );
16937            #[cfg(test)]
16938            #[allow(dead_code, unreachable_patterns)]
16939            fn _type_assertion(
16940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16941            ) {
16942                match _t {
16943                    alloy_sol_types::private::AssertTypeEq::<
16944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16945                    >(_) => {}
16946                }
16947            }
16948            #[automatically_derived]
16949            #[doc(hidden)]
16950            impl ::core::convert::From<registerValidatorV2Call>
16951            for UnderlyingRustTuple<'_> {
16952                fn from(value: registerValidatorV2Call) -> Self {
16953                    (
16954                        value.blsVK,
16955                        value.schnorrVK,
16956                        value.blsSig,
16957                        value.schnorrSig,
16958                        value.commission,
16959                        value.metadataUri,
16960                    )
16961                }
16962            }
16963            #[automatically_derived]
16964            #[doc(hidden)]
16965            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16966            for registerValidatorV2Call {
16967                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16968                    Self {
16969                        blsVK: tuple.0,
16970                        schnorrVK: tuple.1,
16971                        blsSig: tuple.2,
16972                        schnorrSig: tuple.3,
16973                        commission: tuple.4,
16974                        metadataUri: tuple.5,
16975                    }
16976                }
16977            }
16978        }
16979        {
16980            #[doc(hidden)]
16981            #[allow(dead_code)]
16982            type UnderlyingSolTuple<'a> = ();
16983            #[doc(hidden)]
16984            type UnderlyingRustTuple<'a> = ();
16985            #[cfg(test)]
16986            #[allow(dead_code, unreachable_patterns)]
16987            fn _type_assertion(
16988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16989            ) {
16990                match _t {
16991                    alloy_sol_types::private::AssertTypeEq::<
16992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16993                    >(_) => {}
16994                }
16995            }
16996            #[automatically_derived]
16997            #[doc(hidden)]
16998            impl ::core::convert::From<registerValidatorV2Return>
16999            for UnderlyingRustTuple<'_> {
17000                fn from(value: registerValidatorV2Return) -> Self {
17001                    ()
17002                }
17003            }
17004            #[automatically_derived]
17005            #[doc(hidden)]
17006            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17007            for registerValidatorV2Return {
17008                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17009                    Self {}
17010                }
17011            }
17012        }
17013        impl registerValidatorV2Return {
17014            fn _tokenize(
17015                &self,
17016            ) -> <registerValidatorV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
17017                ()
17018            }
17019        }
17020        #[automatically_derived]
17021        impl alloy_sol_types::SolCall for registerValidatorV2Call {
17022            type Parameters<'a> = (
17023                BN254::G2Point,
17024                EdOnBN254::EdOnBN254Point,
17025                BN254::G1Point,
17026                alloy::sol_types::sol_data::Bytes,
17027                alloy::sol_types::sol_data::Uint<16>,
17028                alloy::sol_types::sol_data::String,
17029            );
17030            type Token<'a> = <Self::Parameters<
17031                'a,
17032            > as alloy_sol_types::SolType>::Token<'a>;
17033            type Return = registerValidatorV2Return;
17034            type ReturnTuple<'a> = ();
17035            type ReturnToken<'a> = <Self::ReturnTuple<
17036                'a,
17037            > as alloy_sol_types::SolType>::Token<'a>;
17038            const SIGNATURE: &'static str = "registerValidatorV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes,uint16,string)";
17039            const SELECTOR: [u8; 4] = [43u8, 158u8, 92u8, 138u8];
17040            #[inline]
17041            fn new<'a>(
17042                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17043            ) -> Self {
17044                tuple.into()
17045            }
17046            #[inline]
17047            fn tokenize(&self) -> Self::Token<'_> {
17048                (
17049                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
17050                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
17051                        &self.schnorrVK,
17052                    ),
17053                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
17054                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
17055                        &self.schnorrSig,
17056                    ),
17057                    <alloy::sol_types::sol_data::Uint<
17058                        16,
17059                    > as alloy_sol_types::SolType>::tokenize(&self.commission),
17060                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
17061                        &self.metadataUri,
17062                    ),
17063                )
17064            }
17065            #[inline]
17066            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17067                registerValidatorV2Return::_tokenize(ret)
17068            }
17069            #[inline]
17070            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17071                <Self::ReturnTuple<
17072                    '_,
17073                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17074                    .map(Into::into)
17075            }
17076            #[inline]
17077            fn abi_decode_returns_with_config(
17078                data: &[u8],
17079                config: alloy_sol_types::abi::AbiDecoderConfig,
17080            ) -> alloy_sol_types::Result<Self::Return> {
17081                <Self::ReturnTuple<
17082                    '_,
17083                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17084                        data,
17085                        config,
17086                    )
17087                    .map(Into::into)
17088            }
17089            #[inline]
17090            fn abi_decode_returns_validate(
17091                data: &[u8],
17092            ) -> alloy_sol_types::Result<Self::Return> {
17093                Self::abi_decode_returns_with_config(
17094                    data,
17095                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17096                )
17097            }
17098        }
17099    };
17100    #[derive(serde::Serialize, serde::Deserialize)]
17101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17102    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
17103```solidity
17104function renounceOwnership() external;
17105```*/
17106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17107    #[derive(Clone)]
17108    pub struct renounceOwnershipCall;
17109    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
17110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17111    #[derive(Clone)]
17112    pub struct renounceOwnershipReturn {}
17113    #[allow(
17114        non_camel_case_types,
17115        non_snake_case,
17116        clippy::pub_underscore_fields,
17117        clippy::style
17118    )]
17119    const _: () = {
17120        use alloy::sol_types as alloy_sol_types;
17121        {
17122            #[doc(hidden)]
17123            #[allow(dead_code)]
17124            type UnderlyingSolTuple<'a> = ();
17125            #[doc(hidden)]
17126            type UnderlyingRustTuple<'a> = ();
17127            #[cfg(test)]
17128            #[allow(dead_code, unreachable_patterns)]
17129            fn _type_assertion(
17130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17131            ) {
17132                match _t {
17133                    alloy_sol_types::private::AssertTypeEq::<
17134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17135                    >(_) => {}
17136                }
17137            }
17138            #[automatically_derived]
17139            #[doc(hidden)]
17140            impl ::core::convert::From<renounceOwnershipCall>
17141            for UnderlyingRustTuple<'_> {
17142                fn from(value: renounceOwnershipCall) -> Self {
17143                    ()
17144                }
17145            }
17146            #[automatically_derived]
17147            #[doc(hidden)]
17148            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17149            for renounceOwnershipCall {
17150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17151                    Self
17152                }
17153            }
17154        }
17155        {
17156            #[doc(hidden)]
17157            #[allow(dead_code)]
17158            type UnderlyingSolTuple<'a> = ();
17159            #[doc(hidden)]
17160            type UnderlyingRustTuple<'a> = ();
17161            #[cfg(test)]
17162            #[allow(dead_code, unreachable_patterns)]
17163            fn _type_assertion(
17164                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17165            ) {
17166                match _t {
17167                    alloy_sol_types::private::AssertTypeEq::<
17168                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17169                    >(_) => {}
17170                }
17171            }
17172            #[automatically_derived]
17173            #[doc(hidden)]
17174            impl ::core::convert::From<renounceOwnershipReturn>
17175            for UnderlyingRustTuple<'_> {
17176                fn from(value: renounceOwnershipReturn) -> Self {
17177                    ()
17178                }
17179            }
17180            #[automatically_derived]
17181            #[doc(hidden)]
17182            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17183            for renounceOwnershipReturn {
17184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17185                    Self {}
17186                }
17187            }
17188        }
17189        impl renounceOwnershipReturn {
17190            fn _tokenize(
17191                &self,
17192            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17193                ()
17194            }
17195        }
17196        #[automatically_derived]
17197        impl alloy_sol_types::SolCall for renounceOwnershipCall {
17198            type Parameters<'a> = ();
17199            type Token<'a> = <Self::Parameters<
17200                'a,
17201            > as alloy_sol_types::SolType>::Token<'a>;
17202            type Return = renounceOwnershipReturn;
17203            type ReturnTuple<'a> = ();
17204            type ReturnToken<'a> = <Self::ReturnTuple<
17205                'a,
17206            > as alloy_sol_types::SolType>::Token<'a>;
17207            const SIGNATURE: &'static str = "renounceOwnership()";
17208            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
17209            #[inline]
17210            fn new<'a>(
17211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17212            ) -> Self {
17213                tuple.into()
17214            }
17215            #[inline]
17216            fn tokenize(&self) -> Self::Token<'_> {
17217                ()
17218            }
17219            #[inline]
17220            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17221                renounceOwnershipReturn::_tokenize(ret)
17222            }
17223            #[inline]
17224            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17225                <Self::ReturnTuple<
17226                    '_,
17227                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17228                    .map(Into::into)
17229            }
17230            #[inline]
17231            fn abi_decode_returns_with_config(
17232                data: &[u8],
17233                config: alloy_sol_types::abi::AbiDecoderConfig,
17234            ) -> alloy_sol_types::Result<Self::Return> {
17235                <Self::ReturnTuple<
17236                    '_,
17237                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17238                        data,
17239                        config,
17240                    )
17241                    .map(Into::into)
17242            }
17243            #[inline]
17244            fn abi_decode_returns_validate(
17245                data: &[u8],
17246            ) -> alloy_sol_types::Result<Self::Return> {
17247                Self::abi_decode_returns_with_config(
17248                    data,
17249                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17250                )
17251            }
17252        }
17253    };
17254    #[derive(serde::Serialize, serde::Deserialize)]
17255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17256    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
17257```solidity
17258function renounceRole(bytes32 role, address callerConfirmation) external;
17259```*/
17260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17261    #[derive(Clone)]
17262    pub struct renounceRoleCall {
17263        #[allow(missing_docs)]
17264        pub role: alloy::sol_types::private::FixedBytes<32>,
17265        #[allow(missing_docs)]
17266        pub callerConfirmation: alloy::sol_types::private::Address,
17267    }
17268    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
17269    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17270    #[derive(Clone)]
17271    pub struct renounceRoleReturn {}
17272    #[allow(
17273        non_camel_case_types,
17274        non_snake_case,
17275        clippy::pub_underscore_fields,
17276        clippy::style
17277    )]
17278    const _: () = {
17279        use alloy::sol_types as alloy_sol_types;
17280        {
17281            #[doc(hidden)]
17282            #[allow(dead_code)]
17283            type UnderlyingSolTuple<'a> = (
17284                alloy::sol_types::sol_data::FixedBytes<32>,
17285                alloy::sol_types::sol_data::Address,
17286            );
17287            #[doc(hidden)]
17288            type UnderlyingRustTuple<'a> = (
17289                alloy::sol_types::private::FixedBytes<32>,
17290                alloy::sol_types::private::Address,
17291            );
17292            #[cfg(test)]
17293            #[allow(dead_code, unreachable_patterns)]
17294            fn _type_assertion(
17295                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17296            ) {
17297                match _t {
17298                    alloy_sol_types::private::AssertTypeEq::<
17299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17300                    >(_) => {}
17301                }
17302            }
17303            #[automatically_derived]
17304            #[doc(hidden)]
17305            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
17306                fn from(value: renounceRoleCall) -> Self {
17307                    (value.role, value.callerConfirmation)
17308                }
17309            }
17310            #[automatically_derived]
17311            #[doc(hidden)]
17312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
17313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17314                    Self {
17315                        role: tuple.0,
17316                        callerConfirmation: tuple.1,
17317                    }
17318                }
17319            }
17320        }
17321        {
17322            #[doc(hidden)]
17323            #[allow(dead_code)]
17324            type UnderlyingSolTuple<'a> = ();
17325            #[doc(hidden)]
17326            type UnderlyingRustTuple<'a> = ();
17327            #[cfg(test)]
17328            #[allow(dead_code, unreachable_patterns)]
17329            fn _type_assertion(
17330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17331            ) {
17332                match _t {
17333                    alloy_sol_types::private::AssertTypeEq::<
17334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17335                    >(_) => {}
17336                }
17337            }
17338            #[automatically_derived]
17339            #[doc(hidden)]
17340            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
17341                fn from(value: renounceRoleReturn) -> Self {
17342                    ()
17343                }
17344            }
17345            #[automatically_derived]
17346            #[doc(hidden)]
17347            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
17348                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17349                    Self {}
17350                }
17351            }
17352        }
17353        impl renounceRoleReturn {
17354            fn _tokenize(
17355                &self,
17356            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17357                ()
17358            }
17359        }
17360        #[automatically_derived]
17361        impl alloy_sol_types::SolCall for renounceRoleCall {
17362            type Parameters<'a> = (
17363                alloy::sol_types::sol_data::FixedBytes<32>,
17364                alloy::sol_types::sol_data::Address,
17365            );
17366            type Token<'a> = <Self::Parameters<
17367                'a,
17368            > as alloy_sol_types::SolType>::Token<'a>;
17369            type Return = renounceRoleReturn;
17370            type ReturnTuple<'a> = ();
17371            type ReturnToken<'a> = <Self::ReturnTuple<
17372                'a,
17373            > as alloy_sol_types::SolType>::Token<'a>;
17374            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
17375            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
17376            #[inline]
17377            fn new<'a>(
17378                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17379            ) -> Self {
17380                tuple.into()
17381            }
17382            #[inline]
17383            fn tokenize(&self) -> Self::Token<'_> {
17384                (
17385                    <alloy::sol_types::sol_data::FixedBytes<
17386                        32,
17387                    > as alloy_sol_types::SolType>::tokenize(&self.role),
17388                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17389                        &self.callerConfirmation,
17390                    ),
17391                )
17392            }
17393            #[inline]
17394            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17395                renounceRoleReturn::_tokenize(ret)
17396            }
17397            #[inline]
17398            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17399                <Self::ReturnTuple<
17400                    '_,
17401                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17402                    .map(Into::into)
17403            }
17404            #[inline]
17405            fn abi_decode_returns_with_config(
17406                data: &[u8],
17407                config: alloy_sol_types::abi::AbiDecoderConfig,
17408            ) -> alloy_sol_types::Result<Self::Return> {
17409                <Self::ReturnTuple<
17410                    '_,
17411                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17412                        data,
17413                        config,
17414                    )
17415                    .map(Into::into)
17416            }
17417            #[inline]
17418            fn abi_decode_returns_validate(
17419                data: &[u8],
17420            ) -> alloy_sol_types::Result<Self::Return> {
17421                Self::abi_decode_returns_with_config(
17422                    data,
17423                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17424                )
17425            }
17426        }
17427    };
17428    #[derive(serde::Serialize, serde::Deserialize)]
17429    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17430    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
17431```solidity
17432function revokeRole(bytes32 role, address account) external;
17433```*/
17434    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17435    #[derive(Clone)]
17436    pub struct revokeRoleCall {
17437        #[allow(missing_docs)]
17438        pub role: alloy::sol_types::private::FixedBytes<32>,
17439        #[allow(missing_docs)]
17440        pub account: alloy::sol_types::private::Address,
17441    }
17442    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
17443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17444    #[derive(Clone)]
17445    pub struct revokeRoleReturn {}
17446    #[allow(
17447        non_camel_case_types,
17448        non_snake_case,
17449        clippy::pub_underscore_fields,
17450        clippy::style
17451    )]
17452    const _: () = {
17453        use alloy::sol_types as alloy_sol_types;
17454        {
17455            #[doc(hidden)]
17456            #[allow(dead_code)]
17457            type UnderlyingSolTuple<'a> = (
17458                alloy::sol_types::sol_data::FixedBytes<32>,
17459                alloy::sol_types::sol_data::Address,
17460            );
17461            #[doc(hidden)]
17462            type UnderlyingRustTuple<'a> = (
17463                alloy::sol_types::private::FixedBytes<32>,
17464                alloy::sol_types::private::Address,
17465            );
17466            #[cfg(test)]
17467            #[allow(dead_code, unreachable_patterns)]
17468            fn _type_assertion(
17469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17470            ) {
17471                match _t {
17472                    alloy_sol_types::private::AssertTypeEq::<
17473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17474                    >(_) => {}
17475                }
17476            }
17477            #[automatically_derived]
17478            #[doc(hidden)]
17479            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
17480                fn from(value: revokeRoleCall) -> Self {
17481                    (value.role, value.account)
17482                }
17483            }
17484            #[automatically_derived]
17485            #[doc(hidden)]
17486            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
17487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17488                    Self {
17489                        role: tuple.0,
17490                        account: tuple.1,
17491                    }
17492                }
17493            }
17494        }
17495        {
17496            #[doc(hidden)]
17497            #[allow(dead_code)]
17498            type UnderlyingSolTuple<'a> = ();
17499            #[doc(hidden)]
17500            type UnderlyingRustTuple<'a> = ();
17501            #[cfg(test)]
17502            #[allow(dead_code, unreachable_patterns)]
17503            fn _type_assertion(
17504                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17505            ) {
17506                match _t {
17507                    alloy_sol_types::private::AssertTypeEq::<
17508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17509                    >(_) => {}
17510                }
17511            }
17512            #[automatically_derived]
17513            #[doc(hidden)]
17514            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
17515                fn from(value: revokeRoleReturn) -> Self {
17516                    ()
17517                }
17518            }
17519            #[automatically_derived]
17520            #[doc(hidden)]
17521            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
17522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17523                    Self {}
17524                }
17525            }
17526        }
17527        impl revokeRoleReturn {
17528            fn _tokenize(
17529                &self,
17530            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
17531                ()
17532            }
17533        }
17534        #[automatically_derived]
17535        impl alloy_sol_types::SolCall for revokeRoleCall {
17536            type Parameters<'a> = (
17537                alloy::sol_types::sol_data::FixedBytes<32>,
17538                alloy::sol_types::sol_data::Address,
17539            );
17540            type Token<'a> = <Self::Parameters<
17541                'a,
17542            > as alloy_sol_types::SolType>::Token<'a>;
17543            type Return = revokeRoleReturn;
17544            type ReturnTuple<'a> = ();
17545            type ReturnToken<'a> = <Self::ReturnTuple<
17546                'a,
17547            > as alloy_sol_types::SolType>::Token<'a>;
17548            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
17549            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
17550            #[inline]
17551            fn new<'a>(
17552                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17553            ) -> Self {
17554                tuple.into()
17555            }
17556            #[inline]
17557            fn tokenize(&self) -> Self::Token<'_> {
17558                (
17559                    <alloy::sol_types::sol_data::FixedBytes<
17560                        32,
17561                    > as alloy_sol_types::SolType>::tokenize(&self.role),
17562                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
17563                        &self.account,
17564                    ),
17565                )
17566            }
17567            #[inline]
17568            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17569                revokeRoleReturn::_tokenize(ret)
17570            }
17571            #[inline]
17572            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17573                <Self::ReturnTuple<
17574                    '_,
17575                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17576                    .map(Into::into)
17577            }
17578            #[inline]
17579            fn abi_decode_returns_with_config(
17580                data: &[u8],
17581                config: alloy_sol_types::abi::AbiDecoderConfig,
17582            ) -> alloy_sol_types::Result<Self::Return> {
17583                <Self::ReturnTuple<
17584                    '_,
17585                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17586                        data,
17587                        config,
17588                    )
17589                    .map(Into::into)
17590            }
17591            #[inline]
17592            fn abi_decode_returns_validate(
17593                data: &[u8],
17594            ) -> alloy_sol_types::Result<Self::Return> {
17595                Self::abi_decode_returns_with_config(
17596                    data,
17597                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17598                )
17599            }
17600        }
17601    };
17602    #[derive(serde::Serialize, serde::Deserialize)]
17603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17604    /**Function with signature `schnorrKeys(bytes32)` and selector `0x5f8754a6`.
17605```solidity
17606function schnorrKeys(bytes32 schnorrKey) external view returns (bool used);
17607```*/
17608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17609    #[derive(Clone)]
17610    pub struct schnorrKeysCall {
17611        #[allow(missing_docs)]
17612        pub schnorrKey: alloy::sol_types::private::FixedBytes<32>,
17613    }
17614    #[derive(serde::Serialize, serde::Deserialize)]
17615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17616    ///Container type for the return parameters of the [`schnorrKeys(bytes32)`](schnorrKeysCall) function.
17617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17618    #[derive(Clone)]
17619    pub struct schnorrKeysReturn {
17620        #[allow(missing_docs)]
17621        pub used: bool,
17622    }
17623    #[allow(
17624        non_camel_case_types,
17625        non_snake_case,
17626        clippy::pub_underscore_fields,
17627        clippy::style
17628    )]
17629    const _: () = {
17630        use alloy::sol_types as alloy_sol_types;
17631        {
17632            #[doc(hidden)]
17633            #[allow(dead_code)]
17634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17635            #[doc(hidden)]
17636            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
17637            #[cfg(test)]
17638            #[allow(dead_code, unreachable_patterns)]
17639            fn _type_assertion(
17640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17641            ) {
17642                match _t {
17643                    alloy_sol_types::private::AssertTypeEq::<
17644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17645                    >(_) => {}
17646                }
17647            }
17648            #[automatically_derived]
17649            #[doc(hidden)]
17650            impl ::core::convert::From<schnorrKeysCall> for UnderlyingRustTuple<'_> {
17651                fn from(value: schnorrKeysCall) -> Self {
17652                    (value.schnorrKey,)
17653                }
17654            }
17655            #[automatically_derived]
17656            #[doc(hidden)]
17657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysCall {
17658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17659                    Self { schnorrKey: tuple.0 }
17660                }
17661            }
17662        }
17663        {
17664            #[doc(hidden)]
17665            #[allow(dead_code)]
17666            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17667            #[doc(hidden)]
17668            type UnderlyingRustTuple<'a> = (bool,);
17669            #[cfg(test)]
17670            #[allow(dead_code, unreachable_patterns)]
17671            fn _type_assertion(
17672                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17673            ) {
17674                match _t {
17675                    alloy_sol_types::private::AssertTypeEq::<
17676                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17677                    >(_) => {}
17678                }
17679            }
17680            #[automatically_derived]
17681            #[doc(hidden)]
17682            impl ::core::convert::From<schnorrKeysReturn> for UnderlyingRustTuple<'_> {
17683                fn from(value: schnorrKeysReturn) -> Self {
17684                    (value.used,)
17685                }
17686            }
17687            #[automatically_derived]
17688            #[doc(hidden)]
17689            impl ::core::convert::From<UnderlyingRustTuple<'_>> for schnorrKeysReturn {
17690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17691                    Self { used: tuple.0 }
17692                }
17693            }
17694        }
17695        #[automatically_derived]
17696        impl alloy_sol_types::SolCall for schnorrKeysCall {
17697            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
17698            type Token<'a> = <Self::Parameters<
17699                'a,
17700            > as alloy_sol_types::SolType>::Token<'a>;
17701            type Return = bool;
17702            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
17703            type ReturnToken<'a> = <Self::ReturnTuple<
17704                'a,
17705            > as alloy_sol_types::SolType>::Token<'a>;
17706            const SIGNATURE: &'static str = "schnorrKeys(bytes32)";
17707            const SELECTOR: [u8; 4] = [95u8, 135u8, 84u8, 166u8];
17708            #[inline]
17709            fn new<'a>(
17710                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17711            ) -> Self {
17712                tuple.into()
17713            }
17714            #[inline]
17715            fn tokenize(&self) -> Self::Token<'_> {
17716                (
17717                    <alloy::sol_types::sol_data::FixedBytes<
17718                        32,
17719                    > as alloy_sol_types::SolType>::tokenize(&self.schnorrKey),
17720                )
17721            }
17722            #[inline]
17723            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17724                (
17725                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
17726                        ret,
17727                    ),
17728                )
17729            }
17730            #[inline]
17731            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17732                <Self::ReturnTuple<
17733                    '_,
17734                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17735                    .map(|r| {
17736                        let r: schnorrKeysReturn = r.into();
17737                        r.used
17738                    })
17739            }
17740            #[inline]
17741            fn abi_decode_returns_with_config(
17742                data: &[u8],
17743                config: alloy_sol_types::abi::AbiDecoderConfig,
17744            ) -> alloy_sol_types::Result<Self::Return> {
17745                <Self::ReturnTuple<
17746                    '_,
17747                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17748                        data,
17749                        config,
17750                    )
17751                    .map(|r| {
17752                        let r: schnorrKeysReturn = r.into();
17753                        r.used
17754                    })
17755            }
17756            #[inline]
17757            fn abi_decode_returns_validate(
17758                data: &[u8],
17759            ) -> alloy_sol_types::Result<Self::Return> {
17760                Self::abi_decode_returns_with_config(
17761                    data,
17762                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17763                )
17764            }
17765        }
17766    };
17767    #[derive(serde::Serialize, serde::Deserialize)]
17768    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17769    /**Function with signature `setMaxCommissionIncrease(uint16)` and selector `0x2dc9bac6`.
17770```solidity
17771function setMaxCommissionIncrease(uint16 newMaxIncrease) external;
17772```*/
17773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17774    #[derive(Clone)]
17775    pub struct setMaxCommissionIncreaseCall {
17776        #[allow(missing_docs)]
17777        pub newMaxIncrease: u16,
17778    }
17779    ///Container type for the return parameters of the [`setMaxCommissionIncrease(uint16)`](setMaxCommissionIncreaseCall) function.
17780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17781    #[derive(Clone)]
17782    pub struct setMaxCommissionIncreaseReturn {}
17783    #[allow(
17784        non_camel_case_types,
17785        non_snake_case,
17786        clippy::pub_underscore_fields,
17787        clippy::style
17788    )]
17789    const _: () = {
17790        use alloy::sol_types as alloy_sol_types;
17791        {
17792            #[doc(hidden)]
17793            #[allow(dead_code)]
17794            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17795            #[doc(hidden)]
17796            type UnderlyingRustTuple<'a> = (u16,);
17797            #[cfg(test)]
17798            #[allow(dead_code, unreachable_patterns)]
17799            fn _type_assertion(
17800                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17801            ) {
17802                match _t {
17803                    alloy_sol_types::private::AssertTypeEq::<
17804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17805                    >(_) => {}
17806                }
17807            }
17808            #[automatically_derived]
17809            #[doc(hidden)]
17810            impl ::core::convert::From<setMaxCommissionIncreaseCall>
17811            for UnderlyingRustTuple<'_> {
17812                fn from(value: setMaxCommissionIncreaseCall) -> Self {
17813                    (value.newMaxIncrease,)
17814                }
17815            }
17816            #[automatically_derived]
17817            #[doc(hidden)]
17818            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17819            for setMaxCommissionIncreaseCall {
17820                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17821                    Self { newMaxIncrease: tuple.0 }
17822                }
17823            }
17824        }
17825        {
17826            #[doc(hidden)]
17827            #[allow(dead_code)]
17828            type UnderlyingSolTuple<'a> = ();
17829            #[doc(hidden)]
17830            type UnderlyingRustTuple<'a> = ();
17831            #[cfg(test)]
17832            #[allow(dead_code, unreachable_patterns)]
17833            fn _type_assertion(
17834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17835            ) {
17836                match _t {
17837                    alloy_sol_types::private::AssertTypeEq::<
17838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17839                    >(_) => {}
17840                }
17841            }
17842            #[automatically_derived]
17843            #[doc(hidden)]
17844            impl ::core::convert::From<setMaxCommissionIncreaseReturn>
17845            for UnderlyingRustTuple<'_> {
17846                fn from(value: setMaxCommissionIncreaseReturn) -> Self {
17847                    ()
17848                }
17849            }
17850            #[automatically_derived]
17851            #[doc(hidden)]
17852            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17853            for setMaxCommissionIncreaseReturn {
17854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17855                    Self {}
17856                }
17857            }
17858        }
17859        impl setMaxCommissionIncreaseReturn {
17860            fn _tokenize(
17861                &self,
17862            ) -> <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::ReturnToken<
17863                '_,
17864            > {
17865                ()
17866            }
17867        }
17868        #[automatically_derived]
17869        impl alloy_sol_types::SolCall for setMaxCommissionIncreaseCall {
17870            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
17871            type Token<'a> = <Self::Parameters<
17872                'a,
17873            > as alloy_sol_types::SolType>::Token<'a>;
17874            type Return = setMaxCommissionIncreaseReturn;
17875            type ReturnTuple<'a> = ();
17876            type ReturnToken<'a> = <Self::ReturnTuple<
17877                'a,
17878            > as alloy_sol_types::SolType>::Token<'a>;
17879            const SIGNATURE: &'static str = "setMaxCommissionIncrease(uint16)";
17880            const SELECTOR: [u8; 4] = [45u8, 201u8, 186u8, 198u8];
17881            #[inline]
17882            fn new<'a>(
17883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
17884            ) -> Self {
17885                tuple.into()
17886            }
17887            #[inline]
17888            fn tokenize(&self) -> Self::Token<'_> {
17889                (
17890                    <alloy::sol_types::sol_data::Uint<
17891                        16,
17892                    > as alloy_sol_types::SolType>::tokenize(&self.newMaxIncrease),
17893                )
17894            }
17895            #[inline]
17896            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
17897                setMaxCommissionIncreaseReturn::_tokenize(ret)
17898            }
17899            #[inline]
17900            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
17901                <Self::ReturnTuple<
17902                    '_,
17903                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
17904                    .map(Into::into)
17905            }
17906            #[inline]
17907            fn abi_decode_returns_with_config(
17908                data: &[u8],
17909                config: alloy_sol_types::abi::AbiDecoderConfig,
17910            ) -> alloy_sol_types::Result<Self::Return> {
17911                <Self::ReturnTuple<
17912                    '_,
17913                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
17914                        data,
17915                        config,
17916                    )
17917                    .map(Into::into)
17918            }
17919            #[inline]
17920            fn abi_decode_returns_validate(
17921                data: &[u8],
17922            ) -> alloy_sol_types::Result<Self::Return> {
17923                Self::abi_decode_returns_with_config(
17924                    data,
17925                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17926                )
17927            }
17928        }
17929    };
17930    #[derive(serde::Serialize, serde::Deserialize)]
17931    #[derive(Default, Debug, PartialEq, Eq, Hash)]
17932    /**Function with signature `setMinCommissionUpdateInterval(uint256)` and selector `0x394b348f`.
17933```solidity
17934function setMinCommissionUpdateInterval(uint256 newInterval) external;
17935```*/
17936    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17937    #[derive(Clone)]
17938    pub struct setMinCommissionUpdateIntervalCall {
17939        #[allow(missing_docs)]
17940        pub newInterval: alloy::sol_types::private::primitives::aliases::U256,
17941    }
17942    ///Container type for the return parameters of the [`setMinCommissionUpdateInterval(uint256)`](setMinCommissionUpdateIntervalCall) function.
17943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
17944    #[derive(Clone)]
17945    pub struct setMinCommissionUpdateIntervalReturn {}
17946    #[allow(
17947        non_camel_case_types,
17948        non_snake_case,
17949        clippy::pub_underscore_fields,
17950        clippy::style
17951    )]
17952    const _: () = {
17953        use alloy::sol_types as alloy_sol_types;
17954        {
17955            #[doc(hidden)]
17956            #[allow(dead_code)]
17957            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
17958            #[doc(hidden)]
17959            type UnderlyingRustTuple<'a> = (
17960                alloy::sol_types::private::primitives::aliases::U256,
17961            );
17962            #[cfg(test)]
17963            #[allow(dead_code, unreachable_patterns)]
17964            fn _type_assertion(
17965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
17966            ) {
17967                match _t {
17968                    alloy_sol_types::private::AssertTypeEq::<
17969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
17970                    >(_) => {}
17971                }
17972            }
17973            #[automatically_derived]
17974            #[doc(hidden)]
17975            impl ::core::convert::From<setMinCommissionUpdateIntervalCall>
17976            for UnderlyingRustTuple<'_> {
17977                fn from(value: setMinCommissionUpdateIntervalCall) -> Self {
17978                    (value.newInterval,)
17979                }
17980            }
17981            #[automatically_derived]
17982            #[doc(hidden)]
17983            impl ::core::convert::From<UnderlyingRustTuple<'_>>
17984            for setMinCommissionUpdateIntervalCall {
17985                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
17986                    Self { newInterval: tuple.0 }
17987                }
17988            }
17989        }
17990        {
17991            #[doc(hidden)]
17992            #[allow(dead_code)]
17993            type UnderlyingSolTuple<'a> = ();
17994            #[doc(hidden)]
17995            type UnderlyingRustTuple<'a> = ();
17996            #[cfg(test)]
17997            #[allow(dead_code, unreachable_patterns)]
17998            fn _type_assertion(
17999                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18000            ) {
18001                match _t {
18002                    alloy_sol_types::private::AssertTypeEq::<
18003                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18004                    >(_) => {}
18005                }
18006            }
18007            #[automatically_derived]
18008            #[doc(hidden)]
18009            impl ::core::convert::From<setMinCommissionUpdateIntervalReturn>
18010            for UnderlyingRustTuple<'_> {
18011                fn from(value: setMinCommissionUpdateIntervalReturn) -> Self {
18012                    ()
18013                }
18014            }
18015            #[automatically_derived]
18016            #[doc(hidden)]
18017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18018            for setMinCommissionUpdateIntervalReturn {
18019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18020                    Self {}
18021                }
18022            }
18023        }
18024        impl setMinCommissionUpdateIntervalReturn {
18025            fn _tokenize(
18026                &self,
18027            ) -> <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::ReturnToken<
18028                '_,
18029            > {
18030                ()
18031            }
18032        }
18033        #[automatically_derived]
18034        impl alloy_sol_types::SolCall for setMinCommissionUpdateIntervalCall {
18035            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
18036            type Token<'a> = <Self::Parameters<
18037                'a,
18038            > as alloy_sol_types::SolType>::Token<'a>;
18039            type Return = setMinCommissionUpdateIntervalReturn;
18040            type ReturnTuple<'a> = ();
18041            type ReturnToken<'a> = <Self::ReturnTuple<
18042                'a,
18043            > as alloy_sol_types::SolType>::Token<'a>;
18044            const SIGNATURE: &'static str = "setMinCommissionUpdateInterval(uint256)";
18045            const SELECTOR: [u8; 4] = [57u8, 75u8, 52u8, 143u8];
18046            #[inline]
18047            fn new<'a>(
18048                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18049            ) -> Self {
18050                tuple.into()
18051            }
18052            #[inline]
18053            fn tokenize(&self) -> Self::Token<'_> {
18054                (
18055                    <alloy::sol_types::sol_data::Uint<
18056                        256,
18057                    > as alloy_sol_types::SolType>::tokenize(&self.newInterval),
18058                )
18059            }
18060            #[inline]
18061            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18062                setMinCommissionUpdateIntervalReturn::_tokenize(ret)
18063            }
18064            #[inline]
18065            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18066                <Self::ReturnTuple<
18067                    '_,
18068                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18069                    .map(Into::into)
18070            }
18071            #[inline]
18072            fn abi_decode_returns_with_config(
18073                data: &[u8],
18074                config: alloy_sol_types::abi::AbiDecoderConfig,
18075            ) -> alloy_sol_types::Result<Self::Return> {
18076                <Self::ReturnTuple<
18077                    '_,
18078                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18079                        data,
18080                        config,
18081                    )
18082                    .map(Into::into)
18083            }
18084            #[inline]
18085            fn abi_decode_returns_validate(
18086                data: &[u8],
18087            ) -> alloy_sol_types::Result<Self::Return> {
18088                Self::abi_decode_returns_with_config(
18089                    data,
18090                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18091                )
18092            }
18093        }
18094    };
18095    #[derive(serde::Serialize, serde::Deserialize)]
18096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18097    /**Function with signature `setMinDelegateAmount(uint256)` and selector `0x3e732eba`.
18098```solidity
18099function setMinDelegateAmount(uint256 newMinDelegateAmount) external;
18100```*/
18101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18102    #[derive(Clone)]
18103    pub struct setMinDelegateAmountCall {
18104        #[allow(missing_docs)]
18105        pub newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
18106    }
18107    ///Container type for the return parameters of the [`setMinDelegateAmount(uint256)`](setMinDelegateAmountCall) function.
18108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18109    #[derive(Clone)]
18110    pub struct setMinDelegateAmountReturn {}
18111    #[allow(
18112        non_camel_case_types,
18113        non_snake_case,
18114        clippy::pub_underscore_fields,
18115        clippy::style
18116    )]
18117    const _: () = {
18118        use alloy::sol_types as alloy_sol_types;
18119        {
18120            #[doc(hidden)]
18121            #[allow(dead_code)]
18122            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
18123            #[doc(hidden)]
18124            type UnderlyingRustTuple<'a> = (
18125                alloy::sol_types::private::primitives::aliases::U256,
18126            );
18127            #[cfg(test)]
18128            #[allow(dead_code, unreachable_patterns)]
18129            fn _type_assertion(
18130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18131            ) {
18132                match _t {
18133                    alloy_sol_types::private::AssertTypeEq::<
18134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18135                    >(_) => {}
18136                }
18137            }
18138            #[automatically_derived]
18139            #[doc(hidden)]
18140            impl ::core::convert::From<setMinDelegateAmountCall>
18141            for UnderlyingRustTuple<'_> {
18142                fn from(value: setMinDelegateAmountCall) -> Self {
18143                    (value.newMinDelegateAmount,)
18144                }
18145            }
18146            #[automatically_derived]
18147            #[doc(hidden)]
18148            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18149            for setMinDelegateAmountCall {
18150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18151                    Self {
18152                        newMinDelegateAmount: tuple.0,
18153                    }
18154                }
18155            }
18156        }
18157        {
18158            #[doc(hidden)]
18159            #[allow(dead_code)]
18160            type UnderlyingSolTuple<'a> = ();
18161            #[doc(hidden)]
18162            type UnderlyingRustTuple<'a> = ();
18163            #[cfg(test)]
18164            #[allow(dead_code, unreachable_patterns)]
18165            fn _type_assertion(
18166                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18167            ) {
18168                match _t {
18169                    alloy_sol_types::private::AssertTypeEq::<
18170                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18171                    >(_) => {}
18172                }
18173            }
18174            #[automatically_derived]
18175            #[doc(hidden)]
18176            impl ::core::convert::From<setMinDelegateAmountReturn>
18177            for UnderlyingRustTuple<'_> {
18178                fn from(value: setMinDelegateAmountReturn) -> Self {
18179                    ()
18180                }
18181            }
18182            #[automatically_derived]
18183            #[doc(hidden)]
18184            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18185            for setMinDelegateAmountReturn {
18186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18187                    Self {}
18188                }
18189            }
18190        }
18191        impl setMinDelegateAmountReturn {
18192            fn _tokenize(
18193                &self,
18194            ) -> <setMinDelegateAmountCall as alloy_sol_types::SolCall>::ReturnToken<
18195                '_,
18196            > {
18197                ()
18198            }
18199        }
18200        #[automatically_derived]
18201        impl alloy_sol_types::SolCall for setMinDelegateAmountCall {
18202            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
18203            type Token<'a> = <Self::Parameters<
18204                'a,
18205            > as alloy_sol_types::SolType>::Token<'a>;
18206            type Return = setMinDelegateAmountReturn;
18207            type ReturnTuple<'a> = ();
18208            type ReturnToken<'a> = <Self::ReturnTuple<
18209                'a,
18210            > as alloy_sol_types::SolType>::Token<'a>;
18211            const SIGNATURE: &'static str = "setMinDelegateAmount(uint256)";
18212            const SELECTOR: [u8; 4] = [62u8, 115u8, 46u8, 186u8];
18213            #[inline]
18214            fn new<'a>(
18215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18216            ) -> Self {
18217                tuple.into()
18218            }
18219            #[inline]
18220            fn tokenize(&self) -> Self::Token<'_> {
18221                (
18222                    <alloy::sol_types::sol_data::Uint<
18223                        256,
18224                    > as alloy_sol_types::SolType>::tokenize(&self.newMinDelegateAmount),
18225                )
18226            }
18227            #[inline]
18228            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18229                setMinDelegateAmountReturn::_tokenize(ret)
18230            }
18231            #[inline]
18232            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18233                <Self::ReturnTuple<
18234                    '_,
18235                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18236                    .map(Into::into)
18237            }
18238            #[inline]
18239            fn abi_decode_returns_with_config(
18240                data: &[u8],
18241                config: alloy_sol_types::abi::AbiDecoderConfig,
18242            ) -> alloy_sol_types::Result<Self::Return> {
18243                <Self::ReturnTuple<
18244                    '_,
18245                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18246                        data,
18247                        config,
18248                    )
18249                    .map(Into::into)
18250            }
18251            #[inline]
18252            fn abi_decode_returns_validate(
18253                data: &[u8],
18254            ) -> alloy_sol_types::Result<Self::Return> {
18255                Self::abi_decode_returns_with_config(
18256                    data,
18257                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18258                )
18259            }
18260        }
18261    };
18262    #[derive(serde::Serialize, serde::Deserialize)]
18263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18264    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
18265```solidity
18266function supportsInterface(bytes4 interfaceId) external view returns (bool);
18267```*/
18268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18269    #[derive(Clone)]
18270    pub struct supportsInterfaceCall {
18271        #[allow(missing_docs)]
18272        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
18273    }
18274    #[derive(serde::Serialize, serde::Deserialize)]
18275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18276    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
18277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18278    #[derive(Clone)]
18279    pub struct supportsInterfaceReturn {
18280        #[allow(missing_docs)]
18281        pub _0: bool,
18282    }
18283    #[allow(
18284        non_camel_case_types,
18285        non_snake_case,
18286        clippy::pub_underscore_fields,
18287        clippy::style
18288    )]
18289    const _: () = {
18290        use alloy::sol_types as alloy_sol_types;
18291        {
18292            #[doc(hidden)]
18293            #[allow(dead_code)]
18294            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
18295            #[doc(hidden)]
18296            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
18297            #[cfg(test)]
18298            #[allow(dead_code, unreachable_patterns)]
18299            fn _type_assertion(
18300                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18301            ) {
18302                match _t {
18303                    alloy_sol_types::private::AssertTypeEq::<
18304                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18305                    >(_) => {}
18306                }
18307            }
18308            #[automatically_derived]
18309            #[doc(hidden)]
18310            impl ::core::convert::From<supportsInterfaceCall>
18311            for UnderlyingRustTuple<'_> {
18312                fn from(value: supportsInterfaceCall) -> Self {
18313                    (value.interfaceId,)
18314                }
18315            }
18316            #[automatically_derived]
18317            #[doc(hidden)]
18318            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18319            for supportsInterfaceCall {
18320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18321                    Self { interfaceId: tuple.0 }
18322                }
18323            }
18324        }
18325        {
18326            #[doc(hidden)]
18327            #[allow(dead_code)]
18328            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18329            #[doc(hidden)]
18330            type UnderlyingRustTuple<'a> = (bool,);
18331            #[cfg(test)]
18332            #[allow(dead_code, unreachable_patterns)]
18333            fn _type_assertion(
18334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18335            ) {
18336                match _t {
18337                    alloy_sol_types::private::AssertTypeEq::<
18338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18339                    >(_) => {}
18340                }
18341            }
18342            #[automatically_derived]
18343            #[doc(hidden)]
18344            impl ::core::convert::From<supportsInterfaceReturn>
18345            for UnderlyingRustTuple<'_> {
18346                fn from(value: supportsInterfaceReturn) -> Self {
18347                    (value._0,)
18348                }
18349            }
18350            #[automatically_derived]
18351            #[doc(hidden)]
18352            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18353            for supportsInterfaceReturn {
18354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18355                    Self { _0: tuple.0 }
18356                }
18357            }
18358        }
18359        #[automatically_derived]
18360        impl alloy_sol_types::SolCall for supportsInterfaceCall {
18361            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
18362            type Token<'a> = <Self::Parameters<
18363                'a,
18364            > as alloy_sol_types::SolType>::Token<'a>;
18365            type Return = bool;
18366            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
18367            type ReturnToken<'a> = <Self::ReturnTuple<
18368                'a,
18369            > as alloy_sol_types::SolType>::Token<'a>;
18370            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
18371            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
18372            #[inline]
18373            fn new<'a>(
18374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18375            ) -> Self {
18376                tuple.into()
18377            }
18378            #[inline]
18379            fn tokenize(&self) -> Self::Token<'_> {
18380                (
18381                    <alloy::sol_types::sol_data::FixedBytes<
18382                        4,
18383                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
18384                )
18385            }
18386            #[inline]
18387            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18388                (
18389                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
18390                        ret,
18391                    ),
18392                )
18393            }
18394            #[inline]
18395            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18396                <Self::ReturnTuple<
18397                    '_,
18398                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18399                    .map(|r| {
18400                        let r: supportsInterfaceReturn = r.into();
18401                        r._0
18402                    })
18403            }
18404            #[inline]
18405            fn abi_decode_returns_with_config(
18406                data: &[u8],
18407                config: alloy_sol_types::abi::AbiDecoderConfig,
18408            ) -> alloy_sol_types::Result<Self::Return> {
18409                <Self::ReturnTuple<
18410                    '_,
18411                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18412                        data,
18413                        config,
18414                    )
18415                    .map(|r| {
18416                        let r: supportsInterfaceReturn = r.into();
18417                        r._0
18418                    })
18419            }
18420            #[inline]
18421            fn abi_decode_returns_validate(
18422                data: &[u8],
18423            ) -> alloy_sol_types::Result<Self::Return> {
18424                Self::abi_decode_returns_with_config(
18425                    data,
18426                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18427                )
18428            }
18429        }
18430    };
18431    #[derive(serde::Serialize, serde::Deserialize)]
18432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18433    /**Function with signature `token()` and selector `0xfc0c546a`.
18434```solidity
18435function token() external view returns (address);
18436```*/
18437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18438    #[derive(Clone)]
18439    pub struct tokenCall;
18440    #[derive(serde::Serialize, serde::Deserialize)]
18441    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18442    ///Container type for the return parameters of the [`token()`](tokenCall) function.
18443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18444    #[derive(Clone)]
18445    pub struct tokenReturn {
18446        #[allow(missing_docs)]
18447        pub _0: alloy::sol_types::private::Address,
18448    }
18449    #[allow(
18450        non_camel_case_types,
18451        non_snake_case,
18452        clippy::pub_underscore_fields,
18453        clippy::style
18454    )]
18455    const _: () = {
18456        use alloy::sol_types as alloy_sol_types;
18457        {
18458            #[doc(hidden)]
18459            #[allow(dead_code)]
18460            type UnderlyingSolTuple<'a> = ();
18461            #[doc(hidden)]
18462            type UnderlyingRustTuple<'a> = ();
18463            #[cfg(test)]
18464            #[allow(dead_code, unreachable_patterns)]
18465            fn _type_assertion(
18466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18467            ) {
18468                match _t {
18469                    alloy_sol_types::private::AssertTypeEq::<
18470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18471                    >(_) => {}
18472                }
18473            }
18474            #[automatically_derived]
18475            #[doc(hidden)]
18476            impl ::core::convert::From<tokenCall> for UnderlyingRustTuple<'_> {
18477                fn from(value: tokenCall) -> Self {
18478                    ()
18479                }
18480            }
18481            #[automatically_derived]
18482            #[doc(hidden)]
18483            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenCall {
18484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18485                    Self
18486                }
18487            }
18488        }
18489        {
18490            #[doc(hidden)]
18491            #[allow(dead_code)]
18492            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
18493            #[doc(hidden)]
18494            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
18495            #[cfg(test)]
18496            #[allow(dead_code, unreachable_patterns)]
18497            fn _type_assertion(
18498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18499            ) {
18500                match _t {
18501                    alloy_sol_types::private::AssertTypeEq::<
18502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18503                    >(_) => {}
18504                }
18505            }
18506            #[automatically_derived]
18507            #[doc(hidden)]
18508            impl ::core::convert::From<tokenReturn> for UnderlyingRustTuple<'_> {
18509                fn from(value: tokenReturn) -> Self {
18510                    (value._0,)
18511                }
18512            }
18513            #[automatically_derived]
18514            #[doc(hidden)]
18515            impl ::core::convert::From<UnderlyingRustTuple<'_>> for tokenReturn {
18516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18517                    Self { _0: tuple.0 }
18518                }
18519            }
18520        }
18521        #[automatically_derived]
18522        impl alloy_sol_types::SolCall for tokenCall {
18523            type Parameters<'a> = ();
18524            type Token<'a> = <Self::Parameters<
18525                'a,
18526            > as alloy_sol_types::SolType>::Token<'a>;
18527            type Return = alloy::sol_types::private::Address;
18528            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
18529            type ReturnToken<'a> = <Self::ReturnTuple<
18530                'a,
18531            > as alloy_sol_types::SolType>::Token<'a>;
18532            const SIGNATURE: &'static str = "token()";
18533            const SELECTOR: [u8; 4] = [252u8, 12u8, 84u8, 106u8];
18534            #[inline]
18535            fn new<'a>(
18536                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18537            ) -> Self {
18538                tuple.into()
18539            }
18540            #[inline]
18541            fn tokenize(&self) -> Self::Token<'_> {
18542                ()
18543            }
18544            #[inline]
18545            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18546                (
18547                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18548                        ret,
18549                    ),
18550                )
18551            }
18552            #[inline]
18553            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18554                <Self::ReturnTuple<
18555                    '_,
18556                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18557                    .map(|r| {
18558                        let r: tokenReturn = r.into();
18559                        r._0
18560                    })
18561            }
18562            #[inline]
18563            fn abi_decode_returns_with_config(
18564                data: &[u8],
18565                config: alloy_sol_types::abi::AbiDecoderConfig,
18566            ) -> alloy_sol_types::Result<Self::Return> {
18567                <Self::ReturnTuple<
18568                    '_,
18569                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18570                        data,
18571                        config,
18572                    )
18573                    .map(|r| {
18574                        let r: tokenReturn = r.into();
18575                        r._0
18576                    })
18577            }
18578            #[inline]
18579            fn abi_decode_returns_validate(
18580                data: &[u8],
18581            ) -> alloy_sol_types::Result<Self::Return> {
18582                Self::abi_decode_returns_with_config(
18583                    data,
18584                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18585                )
18586            }
18587        }
18588    };
18589    #[derive(serde::Serialize, serde::Deserialize)]
18590    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18591    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
18592```solidity
18593function transferOwnership(address newOwner) external;
18594```*/
18595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18596    #[derive(Clone)]
18597    pub struct transferOwnershipCall {
18598        #[allow(missing_docs)]
18599        pub newOwner: alloy::sol_types::private::Address,
18600    }
18601    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
18602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18603    #[derive(Clone)]
18604    pub struct transferOwnershipReturn {}
18605    #[allow(
18606        non_camel_case_types,
18607        non_snake_case,
18608        clippy::pub_underscore_fields,
18609        clippy::style
18610    )]
18611    const _: () = {
18612        use alloy::sol_types as alloy_sol_types;
18613        {
18614            #[doc(hidden)]
18615            #[allow(dead_code)]
18616            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
18617            #[doc(hidden)]
18618            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
18619            #[cfg(test)]
18620            #[allow(dead_code, unreachable_patterns)]
18621            fn _type_assertion(
18622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18623            ) {
18624                match _t {
18625                    alloy_sol_types::private::AssertTypeEq::<
18626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18627                    >(_) => {}
18628                }
18629            }
18630            #[automatically_derived]
18631            #[doc(hidden)]
18632            impl ::core::convert::From<transferOwnershipCall>
18633            for UnderlyingRustTuple<'_> {
18634                fn from(value: transferOwnershipCall) -> Self {
18635                    (value.newOwner,)
18636                }
18637            }
18638            #[automatically_derived]
18639            #[doc(hidden)]
18640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18641            for transferOwnershipCall {
18642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18643                    Self { newOwner: tuple.0 }
18644                }
18645            }
18646        }
18647        {
18648            #[doc(hidden)]
18649            #[allow(dead_code)]
18650            type UnderlyingSolTuple<'a> = ();
18651            #[doc(hidden)]
18652            type UnderlyingRustTuple<'a> = ();
18653            #[cfg(test)]
18654            #[allow(dead_code, unreachable_patterns)]
18655            fn _type_assertion(
18656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18657            ) {
18658                match _t {
18659                    alloy_sol_types::private::AssertTypeEq::<
18660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18661                    >(_) => {}
18662                }
18663            }
18664            #[automatically_derived]
18665            #[doc(hidden)]
18666            impl ::core::convert::From<transferOwnershipReturn>
18667            for UnderlyingRustTuple<'_> {
18668                fn from(value: transferOwnershipReturn) -> Self {
18669                    ()
18670                }
18671            }
18672            #[automatically_derived]
18673            #[doc(hidden)]
18674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
18675            for transferOwnershipReturn {
18676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18677                    Self {}
18678                }
18679            }
18680        }
18681        impl transferOwnershipReturn {
18682            fn _tokenize(
18683                &self,
18684            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18685                ()
18686            }
18687        }
18688        #[automatically_derived]
18689        impl alloy_sol_types::SolCall for transferOwnershipCall {
18690            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
18691            type Token<'a> = <Self::Parameters<
18692                'a,
18693            > as alloy_sol_types::SolType>::Token<'a>;
18694            type Return = transferOwnershipReturn;
18695            type ReturnTuple<'a> = ();
18696            type ReturnToken<'a> = <Self::ReturnTuple<
18697                'a,
18698            > as alloy_sol_types::SolType>::Token<'a>;
18699            const SIGNATURE: &'static str = "transferOwnership(address)";
18700            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
18701            #[inline]
18702            fn new<'a>(
18703                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18704            ) -> Self {
18705                tuple.into()
18706            }
18707            #[inline]
18708            fn tokenize(&self) -> Self::Token<'_> {
18709                (
18710                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18711                        &self.newOwner,
18712                    ),
18713                )
18714            }
18715            #[inline]
18716            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18717                transferOwnershipReturn::_tokenize(ret)
18718            }
18719            #[inline]
18720            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18721                <Self::ReturnTuple<
18722                    '_,
18723                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18724                    .map(Into::into)
18725            }
18726            #[inline]
18727            fn abi_decode_returns_with_config(
18728                data: &[u8],
18729                config: alloy_sol_types::abi::AbiDecoderConfig,
18730            ) -> alloy_sol_types::Result<Self::Return> {
18731                <Self::ReturnTuple<
18732                    '_,
18733                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18734                        data,
18735                        config,
18736                    )
18737                    .map(Into::into)
18738            }
18739            #[inline]
18740            fn abi_decode_returns_validate(
18741                data: &[u8],
18742            ) -> alloy_sol_types::Result<Self::Return> {
18743                Self::abi_decode_returns_with_config(
18744                    data,
18745                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18746                )
18747            }
18748        }
18749    };
18750    #[derive(serde::Serialize, serde::Deserialize)]
18751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18752    /**Function with signature `undelegate(address,uint256)` and selector `0x4d99dd16`.
18753```solidity
18754function undelegate(address validator, uint256 amount) external;
18755```*/
18756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18757    #[derive(Clone)]
18758    pub struct undelegateCall {
18759        #[allow(missing_docs)]
18760        pub validator: alloy::sol_types::private::Address,
18761        #[allow(missing_docs)]
18762        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18763    }
18764    ///Container type for the return parameters of the [`undelegate(address,uint256)`](undelegateCall) function.
18765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18766    #[derive(Clone)]
18767    pub struct undelegateReturn {}
18768    #[allow(
18769        non_camel_case_types,
18770        non_snake_case,
18771        clippy::pub_underscore_fields,
18772        clippy::style
18773    )]
18774    const _: () = {
18775        use alloy::sol_types as alloy_sol_types;
18776        {
18777            #[doc(hidden)]
18778            #[allow(dead_code)]
18779            type UnderlyingSolTuple<'a> = (
18780                alloy::sol_types::sol_data::Address,
18781                alloy::sol_types::sol_data::Uint<256>,
18782            );
18783            #[doc(hidden)]
18784            type UnderlyingRustTuple<'a> = (
18785                alloy::sol_types::private::Address,
18786                alloy::sol_types::private::primitives::aliases::U256,
18787            );
18788            #[cfg(test)]
18789            #[allow(dead_code, unreachable_patterns)]
18790            fn _type_assertion(
18791                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18792            ) {
18793                match _t {
18794                    alloy_sol_types::private::AssertTypeEq::<
18795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18796                    >(_) => {}
18797                }
18798            }
18799            #[automatically_derived]
18800            #[doc(hidden)]
18801            impl ::core::convert::From<undelegateCall> for UnderlyingRustTuple<'_> {
18802                fn from(value: undelegateCall) -> Self {
18803                    (value.validator, value.amount)
18804                }
18805            }
18806            #[automatically_derived]
18807            #[doc(hidden)]
18808            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateCall {
18809                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18810                    Self {
18811                        validator: tuple.0,
18812                        amount: tuple.1,
18813                    }
18814                }
18815            }
18816        }
18817        {
18818            #[doc(hidden)]
18819            #[allow(dead_code)]
18820            type UnderlyingSolTuple<'a> = ();
18821            #[doc(hidden)]
18822            type UnderlyingRustTuple<'a> = ();
18823            #[cfg(test)]
18824            #[allow(dead_code, unreachable_patterns)]
18825            fn _type_assertion(
18826                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18827            ) {
18828                match _t {
18829                    alloy_sol_types::private::AssertTypeEq::<
18830                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18831                    >(_) => {}
18832                }
18833            }
18834            #[automatically_derived]
18835            #[doc(hidden)]
18836            impl ::core::convert::From<undelegateReturn> for UnderlyingRustTuple<'_> {
18837                fn from(value: undelegateReturn) -> Self {
18838                    ()
18839                }
18840            }
18841            #[automatically_derived]
18842            #[doc(hidden)]
18843            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegateReturn {
18844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18845                    Self {}
18846                }
18847            }
18848        }
18849        impl undelegateReturn {
18850            fn _tokenize(
18851                &self,
18852            ) -> <undelegateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
18853                ()
18854            }
18855        }
18856        #[automatically_derived]
18857        impl alloy_sol_types::SolCall for undelegateCall {
18858            type Parameters<'a> = (
18859                alloy::sol_types::sol_data::Address,
18860                alloy::sol_types::sol_data::Uint<256>,
18861            );
18862            type Token<'a> = <Self::Parameters<
18863                'a,
18864            > as alloy_sol_types::SolType>::Token<'a>;
18865            type Return = undelegateReturn;
18866            type ReturnTuple<'a> = ();
18867            type ReturnToken<'a> = <Self::ReturnTuple<
18868                'a,
18869            > as alloy_sol_types::SolType>::Token<'a>;
18870            const SIGNATURE: &'static str = "undelegate(address,uint256)";
18871            const SELECTOR: [u8; 4] = [77u8, 153u8, 221u8, 22u8];
18872            #[inline]
18873            fn new<'a>(
18874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
18875            ) -> Self {
18876                tuple.into()
18877            }
18878            #[inline]
18879            fn tokenize(&self) -> Self::Token<'_> {
18880                (
18881                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
18882                        &self.validator,
18883                    ),
18884                    <alloy::sol_types::sol_data::Uint<
18885                        256,
18886                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
18887                )
18888            }
18889            #[inline]
18890            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
18891                undelegateReturn::_tokenize(ret)
18892            }
18893            #[inline]
18894            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
18895                <Self::ReturnTuple<
18896                    '_,
18897                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
18898                    .map(Into::into)
18899            }
18900            #[inline]
18901            fn abi_decode_returns_with_config(
18902                data: &[u8],
18903                config: alloy_sol_types::abi::AbiDecoderConfig,
18904            ) -> alloy_sol_types::Result<Self::Return> {
18905                <Self::ReturnTuple<
18906                    '_,
18907                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
18908                        data,
18909                        config,
18910                    )
18911                    .map(Into::into)
18912            }
18913            #[inline]
18914            fn abi_decode_returns_validate(
18915                data: &[u8],
18916            ) -> alloy_sol_types::Result<Self::Return> {
18917                Self::abi_decode_returns_with_config(
18918                    data,
18919                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18920                )
18921            }
18922        }
18923    };
18924    #[derive(serde::Serialize, serde::Deserialize)]
18925    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18926    /**Function with signature `undelegations(address,address)` and selector `0xa2d78dd5`.
18927```solidity
18928function undelegations(address validator, address delegator) external view returns (uint256 amount, uint256 unlocksAt);
18929```*/
18930    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18931    #[derive(Clone)]
18932    pub struct undelegationsCall {
18933        #[allow(missing_docs)]
18934        pub validator: alloy::sol_types::private::Address,
18935        #[allow(missing_docs)]
18936        pub delegator: alloy::sol_types::private::Address,
18937    }
18938    #[derive(serde::Serialize, serde::Deserialize)]
18939    #[derive(Default, Debug, PartialEq, Eq, Hash)]
18940    ///Container type for the return parameters of the [`undelegations(address,address)`](undelegationsCall) function.
18941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
18942    #[derive(Clone)]
18943    pub struct undelegationsReturn {
18944        #[allow(missing_docs)]
18945        pub amount: alloy::sol_types::private::primitives::aliases::U256,
18946        #[allow(missing_docs)]
18947        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
18948    }
18949    #[allow(
18950        non_camel_case_types,
18951        non_snake_case,
18952        clippy::pub_underscore_fields,
18953        clippy::style
18954    )]
18955    const _: () = {
18956        use alloy::sol_types as alloy_sol_types;
18957        {
18958            #[doc(hidden)]
18959            #[allow(dead_code)]
18960            type UnderlyingSolTuple<'a> = (
18961                alloy::sol_types::sol_data::Address,
18962                alloy::sol_types::sol_data::Address,
18963            );
18964            #[doc(hidden)]
18965            type UnderlyingRustTuple<'a> = (
18966                alloy::sol_types::private::Address,
18967                alloy::sol_types::private::Address,
18968            );
18969            #[cfg(test)]
18970            #[allow(dead_code, unreachable_patterns)]
18971            fn _type_assertion(
18972                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
18973            ) {
18974                match _t {
18975                    alloy_sol_types::private::AssertTypeEq::<
18976                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
18977                    >(_) => {}
18978                }
18979            }
18980            #[automatically_derived]
18981            #[doc(hidden)]
18982            impl ::core::convert::From<undelegationsCall> for UnderlyingRustTuple<'_> {
18983                fn from(value: undelegationsCall) -> Self {
18984                    (value.validator, value.delegator)
18985                }
18986            }
18987            #[automatically_derived]
18988            #[doc(hidden)]
18989            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsCall {
18990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
18991                    Self {
18992                        validator: tuple.0,
18993                        delegator: tuple.1,
18994                    }
18995                }
18996            }
18997        }
18998        {
18999            #[doc(hidden)]
19000            #[allow(dead_code)]
19001            type UnderlyingSolTuple<'a> = (
19002                alloy::sol_types::sol_data::Uint<256>,
19003                alloy::sol_types::sol_data::Uint<256>,
19004            );
19005            #[doc(hidden)]
19006            type UnderlyingRustTuple<'a> = (
19007                alloy::sol_types::private::primitives::aliases::U256,
19008                alloy::sol_types::private::primitives::aliases::U256,
19009            );
19010            #[cfg(test)]
19011            #[allow(dead_code, unreachable_patterns)]
19012            fn _type_assertion(
19013                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19014            ) {
19015                match _t {
19016                    alloy_sol_types::private::AssertTypeEq::<
19017                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19018                    >(_) => {}
19019                }
19020            }
19021            #[automatically_derived]
19022            #[doc(hidden)]
19023            impl ::core::convert::From<undelegationsReturn> for UnderlyingRustTuple<'_> {
19024                fn from(value: undelegationsReturn) -> Self {
19025                    (value.amount, value.unlocksAt)
19026                }
19027            }
19028            #[automatically_derived]
19029            #[doc(hidden)]
19030            impl ::core::convert::From<UnderlyingRustTuple<'_>> for undelegationsReturn {
19031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19032                    Self {
19033                        amount: tuple.0,
19034                        unlocksAt: tuple.1,
19035                    }
19036                }
19037            }
19038        }
19039        impl undelegationsReturn {
19040            fn _tokenize(
19041                &self,
19042            ) -> <undelegationsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19043                (
19044                    <alloy::sol_types::sol_data::Uint<
19045                        256,
19046                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
19047                    <alloy::sol_types::sol_data::Uint<
19048                        256,
19049                    > as alloy_sol_types::SolType>::tokenize(&self.unlocksAt),
19050                )
19051            }
19052        }
19053        #[automatically_derived]
19054        impl alloy_sol_types::SolCall for undelegationsCall {
19055            type Parameters<'a> = (
19056                alloy::sol_types::sol_data::Address,
19057                alloy::sol_types::sol_data::Address,
19058            );
19059            type Token<'a> = <Self::Parameters<
19060                'a,
19061            > as alloy_sol_types::SolType>::Token<'a>;
19062            type Return = undelegationsReturn;
19063            type ReturnTuple<'a> = (
19064                alloy::sol_types::sol_data::Uint<256>,
19065                alloy::sol_types::sol_data::Uint<256>,
19066            );
19067            type ReturnToken<'a> = <Self::ReturnTuple<
19068                'a,
19069            > as alloy_sol_types::SolType>::Token<'a>;
19070            const SIGNATURE: &'static str = "undelegations(address,address)";
19071            const SELECTOR: [u8; 4] = [162u8, 215u8, 141u8, 213u8];
19072            #[inline]
19073            fn new<'a>(
19074                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19075            ) -> Self {
19076                tuple.into()
19077            }
19078            #[inline]
19079            fn tokenize(&self) -> Self::Token<'_> {
19080                (
19081                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19082                        &self.validator,
19083                    ),
19084                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
19085                        &self.delegator,
19086                    ),
19087                )
19088            }
19089            #[inline]
19090            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19091                undelegationsReturn::_tokenize(ret)
19092            }
19093            #[inline]
19094            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19095                <Self::ReturnTuple<
19096                    '_,
19097                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19098                    .map(Into::into)
19099            }
19100            #[inline]
19101            fn abi_decode_returns_with_config(
19102                data: &[u8],
19103                config: alloy_sol_types::abi::AbiDecoderConfig,
19104            ) -> alloy_sol_types::Result<Self::Return> {
19105                <Self::ReturnTuple<
19106                    '_,
19107                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19108                        data,
19109                        config,
19110                    )
19111                    .map(Into::into)
19112            }
19113            #[inline]
19114            fn abi_decode_returns_validate(
19115                data: &[u8],
19116            ) -> alloy_sol_types::Result<Self::Return> {
19117                Self::abi_decode_returns_with_config(
19118                    data,
19119                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19120                )
19121            }
19122        }
19123    };
19124    #[derive(serde::Serialize, serde::Deserialize)]
19125    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19126    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
19127```solidity
19128function unpause() external;
19129```*/
19130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19131    #[derive(Clone)]
19132    pub struct unpauseCall;
19133    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
19134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19135    #[derive(Clone)]
19136    pub struct unpauseReturn {}
19137    #[allow(
19138        non_camel_case_types,
19139        non_snake_case,
19140        clippy::pub_underscore_fields,
19141        clippy::style
19142    )]
19143    const _: () = {
19144        use alloy::sol_types as alloy_sol_types;
19145        {
19146            #[doc(hidden)]
19147            #[allow(dead_code)]
19148            type UnderlyingSolTuple<'a> = ();
19149            #[doc(hidden)]
19150            type UnderlyingRustTuple<'a> = ();
19151            #[cfg(test)]
19152            #[allow(dead_code, unreachable_patterns)]
19153            fn _type_assertion(
19154                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19155            ) {
19156                match _t {
19157                    alloy_sol_types::private::AssertTypeEq::<
19158                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19159                    >(_) => {}
19160                }
19161            }
19162            #[automatically_derived]
19163            #[doc(hidden)]
19164            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
19165                fn from(value: unpauseCall) -> Self {
19166                    ()
19167                }
19168            }
19169            #[automatically_derived]
19170            #[doc(hidden)]
19171            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
19172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19173                    Self
19174                }
19175            }
19176        }
19177        {
19178            #[doc(hidden)]
19179            #[allow(dead_code)]
19180            type UnderlyingSolTuple<'a> = ();
19181            #[doc(hidden)]
19182            type UnderlyingRustTuple<'a> = ();
19183            #[cfg(test)]
19184            #[allow(dead_code, unreachable_patterns)]
19185            fn _type_assertion(
19186                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19187            ) {
19188                match _t {
19189                    alloy_sol_types::private::AssertTypeEq::<
19190                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19191                    >(_) => {}
19192                }
19193            }
19194            #[automatically_derived]
19195            #[doc(hidden)]
19196            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
19197                fn from(value: unpauseReturn) -> Self {
19198                    ()
19199                }
19200            }
19201            #[automatically_derived]
19202            #[doc(hidden)]
19203            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
19204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19205                    Self {}
19206                }
19207            }
19208        }
19209        impl unpauseReturn {
19210            fn _tokenize(
19211                &self,
19212            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19213                ()
19214            }
19215        }
19216        #[automatically_derived]
19217        impl alloy_sol_types::SolCall for unpauseCall {
19218            type Parameters<'a> = ();
19219            type Token<'a> = <Self::Parameters<
19220                'a,
19221            > as alloy_sol_types::SolType>::Token<'a>;
19222            type Return = unpauseReturn;
19223            type ReturnTuple<'a> = ();
19224            type ReturnToken<'a> = <Self::ReturnTuple<
19225                'a,
19226            > as alloy_sol_types::SolType>::Token<'a>;
19227            const SIGNATURE: &'static str = "unpause()";
19228            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
19229            #[inline]
19230            fn new<'a>(
19231                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19232            ) -> Self {
19233                tuple.into()
19234            }
19235            #[inline]
19236            fn tokenize(&self) -> Self::Token<'_> {
19237                ()
19238            }
19239            #[inline]
19240            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19241                unpauseReturn::_tokenize(ret)
19242            }
19243            #[inline]
19244            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19245                <Self::ReturnTuple<
19246                    '_,
19247                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19248                    .map(Into::into)
19249            }
19250            #[inline]
19251            fn abi_decode_returns_with_config(
19252                data: &[u8],
19253                config: alloy_sol_types::abi::AbiDecoderConfig,
19254            ) -> alloy_sol_types::Result<Self::Return> {
19255                <Self::ReturnTuple<
19256                    '_,
19257                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19258                        data,
19259                        config,
19260                    )
19261                    .map(Into::into)
19262            }
19263            #[inline]
19264            fn abi_decode_returns_validate(
19265                data: &[u8],
19266            ) -> alloy_sol_types::Result<Self::Return> {
19267                Self::abi_decode_returns_with_config(
19268                    data,
19269                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19270                )
19271            }
19272        }
19273    };
19274    #[derive(serde::Serialize, serde::Deserialize)]
19275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19276    /**Function with signature `updateCommission(uint16)` and selector `0x3b2b7ffa`.
19277```solidity
19278function updateCommission(uint16 newCommission) external;
19279```*/
19280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19281    #[derive(Clone)]
19282    pub struct updateCommissionCall {
19283        #[allow(missing_docs)]
19284        pub newCommission: u16,
19285    }
19286    ///Container type for the return parameters of the [`updateCommission(uint16)`](updateCommissionCall) function.
19287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19288    #[derive(Clone)]
19289    pub struct updateCommissionReturn {}
19290    #[allow(
19291        non_camel_case_types,
19292        non_snake_case,
19293        clippy::pub_underscore_fields,
19294        clippy::style
19295    )]
19296    const _: () = {
19297        use alloy::sol_types as alloy_sol_types;
19298        {
19299            #[doc(hidden)]
19300            #[allow(dead_code)]
19301            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<16>,);
19302            #[doc(hidden)]
19303            type UnderlyingRustTuple<'a> = (u16,);
19304            #[cfg(test)]
19305            #[allow(dead_code, unreachable_patterns)]
19306            fn _type_assertion(
19307                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19308            ) {
19309                match _t {
19310                    alloy_sol_types::private::AssertTypeEq::<
19311                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19312                    >(_) => {}
19313                }
19314            }
19315            #[automatically_derived]
19316            #[doc(hidden)]
19317            impl ::core::convert::From<updateCommissionCall>
19318            for UnderlyingRustTuple<'_> {
19319                fn from(value: updateCommissionCall) -> Self {
19320                    (value.newCommission,)
19321                }
19322            }
19323            #[automatically_derived]
19324            #[doc(hidden)]
19325            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19326            for updateCommissionCall {
19327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19328                    Self { newCommission: tuple.0 }
19329                }
19330            }
19331        }
19332        {
19333            #[doc(hidden)]
19334            #[allow(dead_code)]
19335            type UnderlyingSolTuple<'a> = ();
19336            #[doc(hidden)]
19337            type UnderlyingRustTuple<'a> = ();
19338            #[cfg(test)]
19339            #[allow(dead_code, unreachable_patterns)]
19340            fn _type_assertion(
19341                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19342            ) {
19343                match _t {
19344                    alloy_sol_types::private::AssertTypeEq::<
19345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19346                    >(_) => {}
19347                }
19348            }
19349            #[automatically_derived]
19350            #[doc(hidden)]
19351            impl ::core::convert::From<updateCommissionReturn>
19352            for UnderlyingRustTuple<'_> {
19353                fn from(value: updateCommissionReturn) -> Self {
19354                    ()
19355                }
19356            }
19357            #[automatically_derived]
19358            #[doc(hidden)]
19359            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19360            for updateCommissionReturn {
19361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19362                    Self {}
19363                }
19364            }
19365        }
19366        impl updateCommissionReturn {
19367            fn _tokenize(
19368                &self,
19369            ) -> <updateCommissionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19370                ()
19371            }
19372        }
19373        #[automatically_derived]
19374        impl alloy_sol_types::SolCall for updateCommissionCall {
19375            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<16>,);
19376            type Token<'a> = <Self::Parameters<
19377                'a,
19378            > as alloy_sol_types::SolType>::Token<'a>;
19379            type Return = updateCommissionReturn;
19380            type ReturnTuple<'a> = ();
19381            type ReturnToken<'a> = <Self::ReturnTuple<
19382                'a,
19383            > as alloy_sol_types::SolType>::Token<'a>;
19384            const SIGNATURE: &'static str = "updateCommission(uint16)";
19385            const SELECTOR: [u8; 4] = [59u8, 43u8, 127u8, 250u8];
19386            #[inline]
19387            fn new<'a>(
19388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19389            ) -> Self {
19390                tuple.into()
19391            }
19392            #[inline]
19393            fn tokenize(&self) -> Self::Token<'_> {
19394                (
19395                    <alloy::sol_types::sol_data::Uint<
19396                        16,
19397                    > as alloy_sol_types::SolType>::tokenize(&self.newCommission),
19398                )
19399            }
19400            #[inline]
19401            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19402                updateCommissionReturn::_tokenize(ret)
19403            }
19404            #[inline]
19405            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19406                <Self::ReturnTuple<
19407                    '_,
19408                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19409                    .map(Into::into)
19410            }
19411            #[inline]
19412            fn abi_decode_returns_with_config(
19413                data: &[u8],
19414                config: alloy_sol_types::abi::AbiDecoderConfig,
19415            ) -> alloy_sol_types::Result<Self::Return> {
19416                <Self::ReturnTuple<
19417                    '_,
19418                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19419                        data,
19420                        config,
19421                    )
19422                    .map(Into::into)
19423            }
19424            #[inline]
19425            fn abi_decode_returns_validate(
19426                data: &[u8],
19427            ) -> alloy_sol_types::Result<Self::Return> {
19428                Self::abi_decode_returns_with_config(
19429                    data,
19430                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19431                )
19432            }
19433        }
19434    };
19435    #[derive(serde::Serialize, serde::Deserialize)]
19436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19437    /**Function with signature `updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0x5544c2f1`.
19438```solidity
19439function updateConsensusKeys(BN254.G2Point memory, EdOnBN254.EdOnBN254Point memory, BN254.G1Point memory) external pure;
19440```*/
19441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19442    #[derive(Clone)]
19443    pub struct updateConsensusKeysCall {
19444        #[allow(missing_docs)]
19445        pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
19446        #[allow(missing_docs)]
19447        pub _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
19448        #[allow(missing_docs)]
19449        pub _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
19450    }
19451    ///Container type for the return parameters of the [`updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))`](updateConsensusKeysCall) function.
19452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19453    #[derive(Clone)]
19454    pub struct updateConsensusKeysReturn {}
19455    #[allow(
19456        non_camel_case_types,
19457        non_snake_case,
19458        clippy::pub_underscore_fields,
19459        clippy::style
19460    )]
19461    const _: () = {
19462        use alloy::sol_types as alloy_sol_types;
19463        {
19464            #[doc(hidden)]
19465            #[allow(dead_code)]
19466            type UnderlyingSolTuple<'a> = (
19467                BN254::G2Point,
19468                EdOnBN254::EdOnBN254Point,
19469                BN254::G1Point,
19470            );
19471            #[doc(hidden)]
19472            type UnderlyingRustTuple<'a> = (
19473                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
19474                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
19475                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
19476            );
19477            #[cfg(test)]
19478            #[allow(dead_code, unreachable_patterns)]
19479            fn _type_assertion(
19480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19481            ) {
19482                match _t {
19483                    alloy_sol_types::private::AssertTypeEq::<
19484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19485                    >(_) => {}
19486                }
19487            }
19488            #[automatically_derived]
19489            #[doc(hidden)]
19490            impl ::core::convert::From<updateConsensusKeysCall>
19491            for UnderlyingRustTuple<'_> {
19492                fn from(value: updateConsensusKeysCall) -> Self {
19493                    (value._0, value._1, value._2)
19494                }
19495            }
19496            #[automatically_derived]
19497            #[doc(hidden)]
19498            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19499            for updateConsensusKeysCall {
19500                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19501                    Self {
19502                        _0: tuple.0,
19503                        _1: tuple.1,
19504                        _2: tuple.2,
19505                    }
19506                }
19507            }
19508        }
19509        {
19510            #[doc(hidden)]
19511            #[allow(dead_code)]
19512            type UnderlyingSolTuple<'a> = ();
19513            #[doc(hidden)]
19514            type UnderlyingRustTuple<'a> = ();
19515            #[cfg(test)]
19516            #[allow(dead_code, unreachable_patterns)]
19517            fn _type_assertion(
19518                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19519            ) {
19520                match _t {
19521                    alloy_sol_types::private::AssertTypeEq::<
19522                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19523                    >(_) => {}
19524                }
19525            }
19526            #[automatically_derived]
19527            #[doc(hidden)]
19528            impl ::core::convert::From<updateConsensusKeysReturn>
19529            for UnderlyingRustTuple<'_> {
19530                fn from(value: updateConsensusKeysReturn) -> Self {
19531                    ()
19532                }
19533            }
19534            #[automatically_derived]
19535            #[doc(hidden)]
19536            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19537            for updateConsensusKeysReturn {
19538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19539                    Self {}
19540                }
19541            }
19542        }
19543        impl updateConsensusKeysReturn {
19544            fn _tokenize(
19545                &self,
19546            ) -> <updateConsensusKeysCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
19547                ()
19548            }
19549        }
19550        #[automatically_derived]
19551        impl alloy_sol_types::SolCall for updateConsensusKeysCall {
19552            type Parameters<'a> = (
19553                BN254::G2Point,
19554                EdOnBN254::EdOnBN254Point,
19555                BN254::G1Point,
19556            );
19557            type Token<'a> = <Self::Parameters<
19558                'a,
19559            > as alloy_sol_types::SolType>::Token<'a>;
19560            type Return = updateConsensusKeysReturn;
19561            type ReturnTuple<'a> = ();
19562            type ReturnToken<'a> = <Self::ReturnTuple<
19563                'a,
19564            > as alloy_sol_types::SolType>::Token<'a>;
19565            const SIGNATURE: &'static str = "updateConsensusKeys((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256))";
19566            const SELECTOR: [u8; 4] = [85u8, 68u8, 194u8, 241u8];
19567            #[inline]
19568            fn new<'a>(
19569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19570            ) -> Self {
19571                tuple.into()
19572            }
19573            #[inline]
19574            fn tokenize(&self) -> Self::Token<'_> {
19575                (
19576                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self._0),
19577                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
19578                        &self._1,
19579                    ),
19580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._2),
19581                )
19582            }
19583            #[inline]
19584            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19585                updateConsensusKeysReturn::_tokenize(ret)
19586            }
19587            #[inline]
19588            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19589                <Self::ReturnTuple<
19590                    '_,
19591                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19592                    .map(Into::into)
19593            }
19594            #[inline]
19595            fn abi_decode_returns_with_config(
19596                data: &[u8],
19597                config: alloy_sol_types::abi::AbiDecoderConfig,
19598            ) -> alloy_sol_types::Result<Self::Return> {
19599                <Self::ReturnTuple<
19600                    '_,
19601                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19602                        data,
19603                        config,
19604                    )
19605                    .map(Into::into)
19606            }
19607            #[inline]
19608            fn abi_decode_returns_validate(
19609                data: &[u8],
19610            ) -> alloy_sol_types::Result<Self::Return> {
19611                Self::abi_decode_returns_with_config(
19612                    data,
19613                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19614                )
19615            }
19616        }
19617    };
19618    #[derive(serde::Serialize, serde::Deserialize)]
19619    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19620    /**Function with signature `updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)` and selector `0xac5c2ad0`.
19621```solidity
19622function updateConsensusKeysV2(BN254.G2Point memory blsVK, EdOnBN254.EdOnBN254Point memory schnorrVK, BN254.G1Point memory blsSig, bytes memory schnorrSig) external;
19623```*/
19624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19625    #[derive(Clone)]
19626    pub struct updateConsensusKeysV2Call {
19627        #[allow(missing_docs)]
19628        pub blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
19629        #[allow(missing_docs)]
19630        pub schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
19631        #[allow(missing_docs)]
19632        pub blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
19633        #[allow(missing_docs)]
19634        pub schnorrSig: alloy::sol_types::private::Bytes,
19635    }
19636    ///Container type for the return parameters of the [`updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)`](updateConsensusKeysV2Call) function.
19637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19638    #[derive(Clone)]
19639    pub struct updateConsensusKeysV2Return {}
19640    #[allow(
19641        non_camel_case_types,
19642        non_snake_case,
19643        clippy::pub_underscore_fields,
19644        clippy::style
19645    )]
19646    const _: () = {
19647        use alloy::sol_types as alloy_sol_types;
19648        {
19649            #[doc(hidden)]
19650            #[allow(dead_code)]
19651            type UnderlyingSolTuple<'a> = (
19652                BN254::G2Point,
19653                EdOnBN254::EdOnBN254Point,
19654                BN254::G1Point,
19655                alloy::sol_types::sol_data::Bytes,
19656            );
19657            #[doc(hidden)]
19658            type UnderlyingRustTuple<'a> = (
19659                <BN254::G2Point as alloy::sol_types::SolType>::RustType,
19660                <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
19661                <BN254::G1Point as alloy::sol_types::SolType>::RustType,
19662                alloy::sol_types::private::Bytes,
19663            );
19664            #[cfg(test)]
19665            #[allow(dead_code, unreachable_patterns)]
19666            fn _type_assertion(
19667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19668            ) {
19669                match _t {
19670                    alloy_sol_types::private::AssertTypeEq::<
19671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19672                    >(_) => {}
19673                }
19674            }
19675            #[automatically_derived]
19676            #[doc(hidden)]
19677            impl ::core::convert::From<updateConsensusKeysV2Call>
19678            for UnderlyingRustTuple<'_> {
19679                fn from(value: updateConsensusKeysV2Call) -> Self {
19680                    (value.blsVK, value.schnorrVK, value.blsSig, value.schnorrSig)
19681                }
19682            }
19683            #[automatically_derived]
19684            #[doc(hidden)]
19685            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19686            for updateConsensusKeysV2Call {
19687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19688                    Self {
19689                        blsVK: tuple.0,
19690                        schnorrVK: tuple.1,
19691                        blsSig: tuple.2,
19692                        schnorrSig: tuple.3,
19693                    }
19694                }
19695            }
19696        }
19697        {
19698            #[doc(hidden)]
19699            #[allow(dead_code)]
19700            type UnderlyingSolTuple<'a> = ();
19701            #[doc(hidden)]
19702            type UnderlyingRustTuple<'a> = ();
19703            #[cfg(test)]
19704            #[allow(dead_code, unreachable_patterns)]
19705            fn _type_assertion(
19706                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19707            ) {
19708                match _t {
19709                    alloy_sol_types::private::AssertTypeEq::<
19710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19711                    >(_) => {}
19712                }
19713            }
19714            #[automatically_derived]
19715            #[doc(hidden)]
19716            impl ::core::convert::From<updateConsensusKeysV2Return>
19717            for UnderlyingRustTuple<'_> {
19718                fn from(value: updateConsensusKeysV2Return) -> Self {
19719                    ()
19720                }
19721            }
19722            #[automatically_derived]
19723            #[doc(hidden)]
19724            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19725            for updateConsensusKeysV2Return {
19726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19727                    Self {}
19728                }
19729            }
19730        }
19731        impl updateConsensusKeysV2Return {
19732            fn _tokenize(
19733                &self,
19734            ) -> <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::ReturnToken<
19735                '_,
19736            > {
19737                ()
19738            }
19739        }
19740        #[automatically_derived]
19741        impl alloy_sol_types::SolCall for updateConsensusKeysV2Call {
19742            type Parameters<'a> = (
19743                BN254::G2Point,
19744                EdOnBN254::EdOnBN254Point,
19745                BN254::G1Point,
19746                alloy::sol_types::sol_data::Bytes,
19747            );
19748            type Token<'a> = <Self::Parameters<
19749                'a,
19750            > as alloy_sol_types::SolType>::Token<'a>;
19751            type Return = updateConsensusKeysV2Return;
19752            type ReturnTuple<'a> = ();
19753            type ReturnToken<'a> = <Self::ReturnTuple<
19754                'a,
19755            > as alloy_sol_types::SolType>::Token<'a>;
19756            const SIGNATURE: &'static str = "updateConsensusKeysV2((uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)";
19757            const SELECTOR: [u8; 4] = [172u8, 92u8, 42u8, 208u8];
19758            #[inline]
19759            fn new<'a>(
19760                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19761            ) -> Self {
19762                tuple.into()
19763            }
19764            #[inline]
19765            fn tokenize(&self) -> Self::Token<'_> {
19766                (
19767                    <BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.blsVK),
19768                    <EdOnBN254::EdOnBN254Point as alloy_sol_types::SolType>::tokenize(
19769                        &self.schnorrVK,
19770                    ),
19771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.blsSig),
19772                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
19773                        &self.schnorrSig,
19774                    ),
19775                )
19776            }
19777            #[inline]
19778            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19779                updateConsensusKeysV2Return::_tokenize(ret)
19780            }
19781            #[inline]
19782            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19783                <Self::ReturnTuple<
19784                    '_,
19785                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19786                    .map(Into::into)
19787            }
19788            #[inline]
19789            fn abi_decode_returns_with_config(
19790                data: &[u8],
19791                config: alloy_sol_types::abi::AbiDecoderConfig,
19792            ) -> alloy_sol_types::Result<Self::Return> {
19793                <Self::ReturnTuple<
19794                    '_,
19795                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19796                        data,
19797                        config,
19798                    )
19799                    .map(Into::into)
19800            }
19801            #[inline]
19802            fn abi_decode_returns_validate(
19803                data: &[u8],
19804            ) -> alloy_sol_types::Result<Self::Return> {
19805                Self::abi_decode_returns_with_config(
19806                    data,
19807                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19808                )
19809            }
19810        }
19811    };
19812    #[derive(serde::Serialize, serde::Deserialize)]
19813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19814    /**Function with signature `updateExitEscrowPeriod(uint64)` and selector `0x1a20cd63`.
19815```solidity
19816function updateExitEscrowPeriod(uint64 newExitEscrowPeriod) external;
19817```*/
19818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19819    #[derive(Clone)]
19820    pub struct updateExitEscrowPeriodCall {
19821        #[allow(missing_docs)]
19822        pub newExitEscrowPeriod: u64,
19823    }
19824    ///Container type for the return parameters of the [`updateExitEscrowPeriod(uint64)`](updateExitEscrowPeriodCall) function.
19825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19826    #[derive(Clone)]
19827    pub struct updateExitEscrowPeriodReturn {}
19828    #[allow(
19829        non_camel_case_types,
19830        non_snake_case,
19831        clippy::pub_underscore_fields,
19832        clippy::style
19833    )]
19834    const _: () = {
19835        use alloy::sol_types as alloy_sol_types;
19836        {
19837            #[doc(hidden)]
19838            #[allow(dead_code)]
19839            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19840            #[doc(hidden)]
19841            type UnderlyingRustTuple<'a> = (u64,);
19842            #[cfg(test)]
19843            #[allow(dead_code, unreachable_patterns)]
19844            fn _type_assertion(
19845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19846            ) {
19847                match _t {
19848                    alloy_sol_types::private::AssertTypeEq::<
19849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19850                    >(_) => {}
19851                }
19852            }
19853            #[automatically_derived]
19854            #[doc(hidden)]
19855            impl ::core::convert::From<updateExitEscrowPeriodCall>
19856            for UnderlyingRustTuple<'_> {
19857                fn from(value: updateExitEscrowPeriodCall) -> Self {
19858                    (value.newExitEscrowPeriod,)
19859                }
19860            }
19861            #[automatically_derived]
19862            #[doc(hidden)]
19863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19864            for updateExitEscrowPeriodCall {
19865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19866                    Self {
19867                        newExitEscrowPeriod: tuple.0,
19868                    }
19869                }
19870            }
19871        }
19872        {
19873            #[doc(hidden)]
19874            #[allow(dead_code)]
19875            type UnderlyingSolTuple<'a> = ();
19876            #[doc(hidden)]
19877            type UnderlyingRustTuple<'a> = ();
19878            #[cfg(test)]
19879            #[allow(dead_code, unreachable_patterns)]
19880            fn _type_assertion(
19881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
19882            ) {
19883                match _t {
19884                    alloy_sol_types::private::AssertTypeEq::<
19885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
19886                    >(_) => {}
19887                }
19888            }
19889            #[automatically_derived]
19890            #[doc(hidden)]
19891            impl ::core::convert::From<updateExitEscrowPeriodReturn>
19892            for UnderlyingRustTuple<'_> {
19893                fn from(value: updateExitEscrowPeriodReturn) -> Self {
19894                    ()
19895                }
19896            }
19897            #[automatically_derived]
19898            #[doc(hidden)]
19899            impl ::core::convert::From<UnderlyingRustTuple<'_>>
19900            for updateExitEscrowPeriodReturn {
19901                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
19902                    Self {}
19903                }
19904            }
19905        }
19906        impl updateExitEscrowPeriodReturn {
19907            fn _tokenize(
19908                &self,
19909            ) -> <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
19910                '_,
19911            > {
19912                ()
19913            }
19914        }
19915        #[automatically_derived]
19916        impl alloy_sol_types::SolCall for updateExitEscrowPeriodCall {
19917            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
19918            type Token<'a> = <Self::Parameters<
19919                'a,
19920            > as alloy_sol_types::SolType>::Token<'a>;
19921            type Return = updateExitEscrowPeriodReturn;
19922            type ReturnTuple<'a> = ();
19923            type ReturnToken<'a> = <Self::ReturnTuple<
19924                'a,
19925            > as alloy_sol_types::SolType>::Token<'a>;
19926            const SIGNATURE: &'static str = "updateExitEscrowPeriod(uint64)";
19927            const SELECTOR: [u8; 4] = [26u8, 32u8, 205u8, 99u8];
19928            #[inline]
19929            fn new<'a>(
19930                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
19931            ) -> Self {
19932                tuple.into()
19933            }
19934            #[inline]
19935            fn tokenize(&self) -> Self::Token<'_> {
19936                (
19937                    <alloy::sol_types::sol_data::Uint<
19938                        64,
19939                    > as alloy_sol_types::SolType>::tokenize(&self.newExitEscrowPeriod),
19940                )
19941            }
19942            #[inline]
19943            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
19944                updateExitEscrowPeriodReturn::_tokenize(ret)
19945            }
19946            #[inline]
19947            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
19948                <Self::ReturnTuple<
19949                    '_,
19950                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
19951                    .map(Into::into)
19952            }
19953            #[inline]
19954            fn abi_decode_returns_with_config(
19955                data: &[u8],
19956                config: alloy_sol_types::abi::AbiDecoderConfig,
19957            ) -> alloy_sol_types::Result<Self::Return> {
19958                <Self::ReturnTuple<
19959                    '_,
19960                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
19961                        data,
19962                        config,
19963                    )
19964                    .map(Into::into)
19965            }
19966            #[inline]
19967            fn abi_decode_returns_validate(
19968                data: &[u8],
19969            ) -> alloy_sol_types::Result<Self::Return> {
19970                Self::abi_decode_returns_with_config(
19971                    data,
19972                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
19973                )
19974            }
19975        }
19976    };
19977    #[derive(serde::Serialize, serde::Deserialize)]
19978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
19979    /**Function with signature `updateMetadataUri(string)` and selector `0x870c8f26`.
19980```solidity
19981function updateMetadataUri(string memory metadataUri) external;
19982```*/
19983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19984    #[derive(Clone)]
19985    pub struct updateMetadataUriCall {
19986        #[allow(missing_docs)]
19987        pub metadataUri: alloy::sol_types::private::String,
19988    }
19989    ///Container type for the return parameters of the [`updateMetadataUri(string)`](updateMetadataUriCall) function.
19990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
19991    #[derive(Clone)]
19992    pub struct updateMetadataUriReturn {}
19993    #[allow(
19994        non_camel_case_types,
19995        non_snake_case,
19996        clippy::pub_underscore_fields,
19997        clippy::style
19998    )]
19999    const _: () = {
20000        use alloy::sol_types as alloy_sol_types;
20001        {
20002            #[doc(hidden)]
20003            #[allow(dead_code)]
20004            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
20005            #[doc(hidden)]
20006            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
20007            #[cfg(test)]
20008            #[allow(dead_code, unreachable_patterns)]
20009            fn _type_assertion(
20010                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20011            ) {
20012                match _t {
20013                    alloy_sol_types::private::AssertTypeEq::<
20014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20015                    >(_) => {}
20016                }
20017            }
20018            #[automatically_derived]
20019            #[doc(hidden)]
20020            impl ::core::convert::From<updateMetadataUriCall>
20021            for UnderlyingRustTuple<'_> {
20022                fn from(value: updateMetadataUriCall) -> Self {
20023                    (value.metadataUri,)
20024                }
20025            }
20026            #[automatically_derived]
20027            #[doc(hidden)]
20028            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20029            for updateMetadataUriCall {
20030                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20031                    Self { metadataUri: tuple.0 }
20032                }
20033            }
20034        }
20035        {
20036            #[doc(hidden)]
20037            #[allow(dead_code)]
20038            type UnderlyingSolTuple<'a> = ();
20039            #[doc(hidden)]
20040            type UnderlyingRustTuple<'a> = ();
20041            #[cfg(test)]
20042            #[allow(dead_code, unreachable_patterns)]
20043            fn _type_assertion(
20044                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20045            ) {
20046                match _t {
20047                    alloy_sol_types::private::AssertTypeEq::<
20048                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20049                    >(_) => {}
20050                }
20051            }
20052            #[automatically_derived]
20053            #[doc(hidden)]
20054            impl ::core::convert::From<updateMetadataUriReturn>
20055            for UnderlyingRustTuple<'_> {
20056                fn from(value: updateMetadataUriReturn) -> Self {
20057                    ()
20058                }
20059            }
20060            #[automatically_derived]
20061            #[doc(hidden)]
20062            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20063            for updateMetadataUriReturn {
20064                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20065                    Self {}
20066                }
20067            }
20068        }
20069        impl updateMetadataUriReturn {
20070            fn _tokenize(
20071                &self,
20072            ) -> <updateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20073                ()
20074            }
20075        }
20076        #[automatically_derived]
20077        impl alloy_sol_types::SolCall for updateMetadataUriCall {
20078            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
20079            type Token<'a> = <Self::Parameters<
20080                'a,
20081            > as alloy_sol_types::SolType>::Token<'a>;
20082            type Return = updateMetadataUriReturn;
20083            type ReturnTuple<'a> = ();
20084            type ReturnToken<'a> = <Self::ReturnTuple<
20085                'a,
20086            > as alloy_sol_types::SolType>::Token<'a>;
20087            const SIGNATURE: &'static str = "updateMetadataUri(string)";
20088            const SELECTOR: [u8; 4] = [135u8, 12u8, 143u8, 38u8];
20089            #[inline]
20090            fn new<'a>(
20091                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20092            ) -> Self {
20093                tuple.into()
20094            }
20095            #[inline]
20096            fn tokenize(&self) -> Self::Token<'_> {
20097                (
20098                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
20099                        &self.metadataUri,
20100                    ),
20101                )
20102            }
20103            #[inline]
20104            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20105                updateMetadataUriReturn::_tokenize(ret)
20106            }
20107            #[inline]
20108            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20109                <Self::ReturnTuple<
20110                    '_,
20111                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20112                    .map(Into::into)
20113            }
20114            #[inline]
20115            fn abi_decode_returns_with_config(
20116                data: &[u8],
20117                config: alloy_sol_types::abi::AbiDecoderConfig,
20118            ) -> alloy_sol_types::Result<Self::Return> {
20119                <Self::ReturnTuple<
20120                    '_,
20121                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20122                        data,
20123                        config,
20124                    )
20125                    .map(Into::into)
20126            }
20127            #[inline]
20128            fn abi_decode_returns_validate(
20129                data: &[u8],
20130            ) -> alloy_sol_types::Result<Self::Return> {
20131                Self::abi_decode_returns_with_config(
20132                    data,
20133                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20134                )
20135            }
20136        }
20137    };
20138    #[derive(serde::Serialize, serde::Deserialize)]
20139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20140    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
20141```solidity
20142function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
20143```*/
20144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20145    #[derive(Clone)]
20146    pub struct upgradeToAndCallCall {
20147        #[allow(missing_docs)]
20148        pub newImplementation: alloy::sol_types::private::Address,
20149        #[allow(missing_docs)]
20150        pub data: alloy::sol_types::private::Bytes,
20151    }
20152    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
20153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20154    #[derive(Clone)]
20155    pub struct upgradeToAndCallReturn {}
20156    #[allow(
20157        non_camel_case_types,
20158        non_snake_case,
20159        clippy::pub_underscore_fields,
20160        clippy::style
20161    )]
20162    const _: () = {
20163        use alloy::sol_types as alloy_sol_types;
20164        {
20165            #[doc(hidden)]
20166            #[allow(dead_code)]
20167            type UnderlyingSolTuple<'a> = (
20168                alloy::sol_types::sol_data::Address,
20169                alloy::sol_types::sol_data::Bytes,
20170            );
20171            #[doc(hidden)]
20172            type UnderlyingRustTuple<'a> = (
20173                alloy::sol_types::private::Address,
20174                alloy::sol_types::private::Bytes,
20175            );
20176            #[cfg(test)]
20177            #[allow(dead_code, unreachable_patterns)]
20178            fn _type_assertion(
20179                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20180            ) {
20181                match _t {
20182                    alloy_sol_types::private::AssertTypeEq::<
20183                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20184                    >(_) => {}
20185                }
20186            }
20187            #[automatically_derived]
20188            #[doc(hidden)]
20189            impl ::core::convert::From<upgradeToAndCallCall>
20190            for UnderlyingRustTuple<'_> {
20191                fn from(value: upgradeToAndCallCall) -> Self {
20192                    (value.newImplementation, value.data)
20193                }
20194            }
20195            #[automatically_derived]
20196            #[doc(hidden)]
20197            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20198            for upgradeToAndCallCall {
20199                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20200                    Self {
20201                        newImplementation: tuple.0,
20202                        data: tuple.1,
20203                    }
20204                }
20205            }
20206        }
20207        {
20208            #[doc(hidden)]
20209            #[allow(dead_code)]
20210            type UnderlyingSolTuple<'a> = ();
20211            #[doc(hidden)]
20212            type UnderlyingRustTuple<'a> = ();
20213            #[cfg(test)]
20214            #[allow(dead_code, unreachable_patterns)]
20215            fn _type_assertion(
20216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20217            ) {
20218                match _t {
20219                    alloy_sol_types::private::AssertTypeEq::<
20220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20221                    >(_) => {}
20222                }
20223            }
20224            #[automatically_derived]
20225            #[doc(hidden)]
20226            impl ::core::convert::From<upgradeToAndCallReturn>
20227            for UnderlyingRustTuple<'_> {
20228                fn from(value: upgradeToAndCallReturn) -> Self {
20229                    ()
20230                }
20231            }
20232            #[automatically_derived]
20233            #[doc(hidden)]
20234            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20235            for upgradeToAndCallReturn {
20236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20237                    Self {}
20238                }
20239            }
20240        }
20241        impl upgradeToAndCallReturn {
20242            fn _tokenize(
20243                &self,
20244            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20245                ()
20246            }
20247        }
20248        #[automatically_derived]
20249        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
20250            type Parameters<'a> = (
20251                alloy::sol_types::sol_data::Address,
20252                alloy::sol_types::sol_data::Bytes,
20253            );
20254            type Token<'a> = <Self::Parameters<
20255                'a,
20256            > as alloy_sol_types::SolType>::Token<'a>;
20257            type Return = upgradeToAndCallReturn;
20258            type ReturnTuple<'a> = ();
20259            type ReturnToken<'a> = <Self::ReturnTuple<
20260                'a,
20261            > as alloy_sol_types::SolType>::Token<'a>;
20262            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
20263            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
20264            #[inline]
20265            fn new<'a>(
20266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20267            ) -> Self {
20268                tuple.into()
20269            }
20270            #[inline]
20271            fn tokenize(&self) -> Self::Token<'_> {
20272                (
20273                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20274                        &self.newImplementation,
20275                    ),
20276                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
20277                        &self.data,
20278                    ),
20279                )
20280            }
20281            #[inline]
20282            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20283                upgradeToAndCallReturn::_tokenize(ret)
20284            }
20285            #[inline]
20286            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20287                <Self::ReturnTuple<
20288                    '_,
20289                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20290                    .map(Into::into)
20291            }
20292            #[inline]
20293            fn abi_decode_returns_with_config(
20294                data: &[u8],
20295                config: alloy_sol_types::abi::AbiDecoderConfig,
20296            ) -> alloy_sol_types::Result<Self::Return> {
20297                <Self::ReturnTuple<
20298                    '_,
20299                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20300                        data,
20301                        config,
20302                    )
20303                    .map(Into::into)
20304            }
20305            #[inline]
20306            fn abi_decode_returns_validate(
20307                data: &[u8],
20308            ) -> alloy_sol_types::Result<Self::Return> {
20309                Self::abi_decode_returns_with_config(
20310                    data,
20311                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20312                )
20313            }
20314        }
20315    };
20316    #[derive(serde::Serialize, serde::Deserialize)]
20317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20318    /**Function with signature `validateMetadataUri(string)` and selector `0xe3f237e6`.
20319```solidity
20320function validateMetadataUri(string memory metadataUri) external pure;
20321```*/
20322    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20323    #[derive(Clone)]
20324    pub struct validateMetadataUriCall {
20325        #[allow(missing_docs)]
20326        pub metadataUri: alloy::sol_types::private::String,
20327    }
20328    ///Container type for the return parameters of the [`validateMetadataUri(string)`](validateMetadataUriCall) function.
20329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20330    #[derive(Clone)]
20331    pub struct validateMetadataUriReturn {}
20332    #[allow(
20333        non_camel_case_types,
20334        non_snake_case,
20335        clippy::pub_underscore_fields,
20336        clippy::style
20337    )]
20338    const _: () = {
20339        use alloy::sol_types as alloy_sol_types;
20340        {
20341            #[doc(hidden)]
20342            #[allow(dead_code)]
20343            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
20344            #[doc(hidden)]
20345            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
20346            #[cfg(test)]
20347            #[allow(dead_code, unreachable_patterns)]
20348            fn _type_assertion(
20349                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20350            ) {
20351                match _t {
20352                    alloy_sol_types::private::AssertTypeEq::<
20353                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20354                    >(_) => {}
20355                }
20356            }
20357            #[automatically_derived]
20358            #[doc(hidden)]
20359            impl ::core::convert::From<validateMetadataUriCall>
20360            for UnderlyingRustTuple<'_> {
20361                fn from(value: validateMetadataUriCall) -> Self {
20362                    (value.metadataUri,)
20363                }
20364            }
20365            #[automatically_derived]
20366            #[doc(hidden)]
20367            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20368            for validateMetadataUriCall {
20369                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20370                    Self { metadataUri: tuple.0 }
20371                }
20372            }
20373        }
20374        {
20375            #[doc(hidden)]
20376            #[allow(dead_code)]
20377            type UnderlyingSolTuple<'a> = ();
20378            #[doc(hidden)]
20379            type UnderlyingRustTuple<'a> = ();
20380            #[cfg(test)]
20381            #[allow(dead_code, unreachable_patterns)]
20382            fn _type_assertion(
20383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20384            ) {
20385                match _t {
20386                    alloy_sol_types::private::AssertTypeEq::<
20387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20388                    >(_) => {}
20389                }
20390            }
20391            #[automatically_derived]
20392            #[doc(hidden)]
20393            impl ::core::convert::From<validateMetadataUriReturn>
20394            for UnderlyingRustTuple<'_> {
20395                fn from(value: validateMetadataUriReturn) -> Self {
20396                    ()
20397                }
20398            }
20399            #[automatically_derived]
20400            #[doc(hidden)]
20401            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20402            for validateMetadataUriReturn {
20403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20404                    Self {}
20405                }
20406            }
20407        }
20408        impl validateMetadataUriReturn {
20409            fn _tokenize(
20410                &self,
20411            ) -> <validateMetadataUriCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20412                ()
20413            }
20414        }
20415        #[automatically_derived]
20416        impl alloy_sol_types::SolCall for validateMetadataUriCall {
20417            type Parameters<'a> = (alloy::sol_types::sol_data::String,);
20418            type Token<'a> = <Self::Parameters<
20419                'a,
20420            > as alloy_sol_types::SolType>::Token<'a>;
20421            type Return = validateMetadataUriReturn;
20422            type ReturnTuple<'a> = ();
20423            type ReturnToken<'a> = <Self::ReturnTuple<
20424                'a,
20425            > as alloy_sol_types::SolType>::Token<'a>;
20426            const SIGNATURE: &'static str = "validateMetadataUri(string)";
20427            const SELECTOR: [u8; 4] = [227u8, 242u8, 55u8, 230u8];
20428            #[inline]
20429            fn new<'a>(
20430                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20431            ) -> Self {
20432                tuple.into()
20433            }
20434            #[inline]
20435            fn tokenize(&self) -> Self::Token<'_> {
20436                (
20437                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
20438                        &self.metadataUri,
20439                    ),
20440                )
20441            }
20442            #[inline]
20443            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20444                validateMetadataUriReturn::_tokenize(ret)
20445            }
20446            #[inline]
20447            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20448                <Self::ReturnTuple<
20449                    '_,
20450                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20451                    .map(Into::into)
20452            }
20453            #[inline]
20454            fn abi_decode_returns_with_config(
20455                data: &[u8],
20456                config: alloy_sol_types::abi::AbiDecoderConfig,
20457            ) -> alloy_sol_types::Result<Self::Return> {
20458                <Self::ReturnTuple<
20459                    '_,
20460                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20461                        data,
20462                        config,
20463                    )
20464                    .map(Into::into)
20465            }
20466            #[inline]
20467            fn abi_decode_returns_validate(
20468                data: &[u8],
20469            ) -> alloy_sol_types::Result<Self::Return> {
20470                Self::abi_decode_returns_with_config(
20471                    data,
20472                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20473                )
20474            }
20475        }
20476    };
20477    #[derive(serde::Serialize, serde::Deserialize)]
20478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20479    /**Function with signature `validatorExits(address)` and selector `0xb5ecb344`.
20480```solidity
20481function validatorExits(address validator) external view returns (uint256 unlocksAt);
20482```*/
20483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20484    #[derive(Clone)]
20485    pub struct validatorExitsCall {
20486        #[allow(missing_docs)]
20487        pub validator: alloy::sol_types::private::Address,
20488    }
20489    #[derive(serde::Serialize, serde::Deserialize)]
20490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20491    ///Container type for the return parameters of the [`validatorExits(address)`](validatorExitsCall) function.
20492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20493    #[derive(Clone)]
20494    pub struct validatorExitsReturn {
20495        #[allow(missing_docs)]
20496        pub unlocksAt: alloy::sol_types::private::primitives::aliases::U256,
20497    }
20498    #[allow(
20499        non_camel_case_types,
20500        non_snake_case,
20501        clippy::pub_underscore_fields,
20502        clippy::style
20503    )]
20504    const _: () = {
20505        use alloy::sol_types as alloy_sol_types;
20506        {
20507            #[doc(hidden)]
20508            #[allow(dead_code)]
20509            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
20510            #[doc(hidden)]
20511            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
20512            #[cfg(test)]
20513            #[allow(dead_code, unreachable_patterns)]
20514            fn _type_assertion(
20515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20516            ) {
20517                match _t {
20518                    alloy_sol_types::private::AssertTypeEq::<
20519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20520                    >(_) => {}
20521                }
20522            }
20523            #[automatically_derived]
20524            #[doc(hidden)]
20525            impl ::core::convert::From<validatorExitsCall> for UnderlyingRustTuple<'_> {
20526                fn from(value: validatorExitsCall) -> Self {
20527                    (value.validator,)
20528                }
20529            }
20530            #[automatically_derived]
20531            #[doc(hidden)]
20532            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorExitsCall {
20533                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20534                    Self { validator: tuple.0 }
20535                }
20536            }
20537        }
20538        {
20539            #[doc(hidden)]
20540            #[allow(dead_code)]
20541            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
20542            #[doc(hidden)]
20543            type UnderlyingRustTuple<'a> = (
20544                alloy::sol_types::private::primitives::aliases::U256,
20545            );
20546            #[cfg(test)]
20547            #[allow(dead_code, unreachable_patterns)]
20548            fn _type_assertion(
20549                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20550            ) {
20551                match _t {
20552                    alloy_sol_types::private::AssertTypeEq::<
20553                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20554                    >(_) => {}
20555                }
20556            }
20557            #[automatically_derived]
20558            #[doc(hidden)]
20559            impl ::core::convert::From<validatorExitsReturn>
20560            for UnderlyingRustTuple<'_> {
20561                fn from(value: validatorExitsReturn) -> Self {
20562                    (value.unlocksAt,)
20563                }
20564            }
20565            #[automatically_derived]
20566            #[doc(hidden)]
20567            impl ::core::convert::From<UnderlyingRustTuple<'_>>
20568            for validatorExitsReturn {
20569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20570                    Self { unlocksAt: tuple.0 }
20571                }
20572            }
20573        }
20574        #[automatically_derived]
20575        impl alloy_sol_types::SolCall for validatorExitsCall {
20576            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
20577            type Token<'a> = <Self::Parameters<
20578                'a,
20579            > as alloy_sol_types::SolType>::Token<'a>;
20580            type Return = alloy::sol_types::private::primitives::aliases::U256;
20581            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
20582            type ReturnToken<'a> = <Self::ReturnTuple<
20583                'a,
20584            > as alloy_sol_types::SolType>::Token<'a>;
20585            const SIGNATURE: &'static str = "validatorExits(address)";
20586            const SELECTOR: [u8; 4] = [181u8, 236u8, 179u8, 68u8];
20587            #[inline]
20588            fn new<'a>(
20589                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20590            ) -> Self {
20591                tuple.into()
20592            }
20593            #[inline]
20594            fn tokenize(&self) -> Self::Token<'_> {
20595                (
20596                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20597                        &self.validator,
20598                    ),
20599                )
20600            }
20601            #[inline]
20602            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20603                (
20604                    <alloy::sol_types::sol_data::Uint<
20605                        256,
20606                    > as alloy_sol_types::SolType>::tokenize(ret),
20607                )
20608            }
20609            #[inline]
20610            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20611                <Self::ReturnTuple<
20612                    '_,
20613                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20614                    .map(|r| {
20615                        let r: validatorExitsReturn = r.into();
20616                        r.unlocksAt
20617                    })
20618            }
20619            #[inline]
20620            fn abi_decode_returns_with_config(
20621                data: &[u8],
20622                config: alloy_sol_types::abi::AbiDecoderConfig,
20623            ) -> alloy_sol_types::Result<Self::Return> {
20624                <Self::ReturnTuple<
20625                    '_,
20626                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20627                        data,
20628                        config,
20629                    )
20630                    .map(|r| {
20631                        let r: validatorExitsReturn = r.into();
20632                        r.unlocksAt
20633                    })
20634            }
20635            #[inline]
20636            fn abi_decode_returns_validate(
20637                data: &[u8],
20638            ) -> alloy_sol_types::Result<Self::Return> {
20639                Self::abi_decode_returns_with_config(
20640                    data,
20641                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20642                )
20643            }
20644        }
20645    };
20646    #[derive(serde::Serialize, serde::Deserialize)]
20647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20648    /**Function with signature `validators(address)` and selector `0xfa52c7d8`.
20649```solidity
20650function validators(address account) external view returns (uint256 delegatedAmount, StakeTable.ValidatorStatus status);
20651```*/
20652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20653    #[derive(Clone)]
20654    pub struct validatorsCall {
20655        #[allow(missing_docs)]
20656        pub account: alloy::sol_types::private::Address,
20657    }
20658    #[derive(serde::Serialize, serde::Deserialize)]
20659    #[derive(Default, Debug, PartialEq, Eq, Hash)]
20660    ///Container type for the return parameters of the [`validators(address)`](validatorsCall) function.
20661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
20662    #[derive(Clone)]
20663    pub struct validatorsReturn {
20664        #[allow(missing_docs)]
20665        pub delegatedAmount: alloy::sol_types::private::primitives::aliases::U256,
20666        #[allow(missing_docs)]
20667        pub status: <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
20668    }
20669    #[allow(
20670        non_camel_case_types,
20671        non_snake_case,
20672        clippy::pub_underscore_fields,
20673        clippy::style
20674    )]
20675    const _: () = {
20676        use alloy::sol_types as alloy_sol_types;
20677        {
20678            #[doc(hidden)]
20679            #[allow(dead_code)]
20680            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
20681            #[doc(hidden)]
20682            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
20683            #[cfg(test)]
20684            #[allow(dead_code, unreachable_patterns)]
20685            fn _type_assertion(
20686                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20687            ) {
20688                match _t {
20689                    alloy_sol_types::private::AssertTypeEq::<
20690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20691                    >(_) => {}
20692                }
20693            }
20694            #[automatically_derived]
20695            #[doc(hidden)]
20696            impl ::core::convert::From<validatorsCall> for UnderlyingRustTuple<'_> {
20697                fn from(value: validatorsCall) -> Self {
20698                    (value.account,)
20699                }
20700            }
20701            #[automatically_derived]
20702            #[doc(hidden)]
20703            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsCall {
20704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20705                    Self { account: tuple.0 }
20706                }
20707            }
20708        }
20709        {
20710            #[doc(hidden)]
20711            #[allow(dead_code)]
20712            type UnderlyingSolTuple<'a> = (
20713                alloy::sol_types::sol_data::Uint<256>,
20714                StakeTable::ValidatorStatus,
20715            );
20716            #[doc(hidden)]
20717            type UnderlyingRustTuple<'a> = (
20718                alloy::sol_types::private::primitives::aliases::U256,
20719                <StakeTable::ValidatorStatus as alloy::sol_types::SolType>::RustType,
20720            );
20721            #[cfg(test)]
20722            #[allow(dead_code, unreachable_patterns)]
20723            fn _type_assertion(
20724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
20725            ) {
20726                match _t {
20727                    alloy_sol_types::private::AssertTypeEq::<
20728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
20729                    >(_) => {}
20730                }
20731            }
20732            #[automatically_derived]
20733            #[doc(hidden)]
20734            impl ::core::convert::From<validatorsReturn> for UnderlyingRustTuple<'_> {
20735                fn from(value: validatorsReturn) -> Self {
20736                    (value.delegatedAmount, value.status)
20737                }
20738            }
20739            #[automatically_derived]
20740            #[doc(hidden)]
20741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for validatorsReturn {
20742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
20743                    Self {
20744                        delegatedAmount: tuple.0,
20745                        status: tuple.1,
20746                    }
20747                }
20748            }
20749        }
20750        impl validatorsReturn {
20751            fn _tokenize(
20752                &self,
20753            ) -> <validatorsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
20754                (
20755                    <alloy::sol_types::sol_data::Uint<
20756                        256,
20757                    > as alloy_sol_types::SolType>::tokenize(&self.delegatedAmount),
20758                    <StakeTable::ValidatorStatus as alloy_sol_types::SolType>::tokenize(
20759                        &self.status,
20760                    ),
20761                )
20762            }
20763        }
20764        #[automatically_derived]
20765        impl alloy_sol_types::SolCall for validatorsCall {
20766            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
20767            type Token<'a> = <Self::Parameters<
20768                'a,
20769            > as alloy_sol_types::SolType>::Token<'a>;
20770            type Return = validatorsReturn;
20771            type ReturnTuple<'a> = (
20772                alloy::sol_types::sol_data::Uint<256>,
20773                StakeTable::ValidatorStatus,
20774            );
20775            type ReturnToken<'a> = <Self::ReturnTuple<
20776                'a,
20777            > as alloy_sol_types::SolType>::Token<'a>;
20778            const SIGNATURE: &'static str = "validators(address)";
20779            const SELECTOR: [u8; 4] = [250u8, 82u8, 199u8, 216u8];
20780            #[inline]
20781            fn new<'a>(
20782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
20783            ) -> Self {
20784                tuple.into()
20785            }
20786            #[inline]
20787            fn tokenize(&self) -> Self::Token<'_> {
20788                (
20789                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
20790                        &self.account,
20791                    ),
20792                )
20793            }
20794            #[inline]
20795            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
20796                validatorsReturn::_tokenize(ret)
20797            }
20798            #[inline]
20799            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
20800                <Self::ReturnTuple<
20801                    '_,
20802                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
20803                    .map(Into::into)
20804            }
20805            #[inline]
20806            fn abi_decode_returns_with_config(
20807                data: &[u8],
20808                config: alloy_sol_types::abi::AbiDecoderConfig,
20809            ) -> alloy_sol_types::Result<Self::Return> {
20810                <Self::ReturnTuple<
20811                    '_,
20812                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
20813                        data,
20814                        config,
20815                    )
20816                    .map(Into::into)
20817            }
20818            #[inline]
20819            fn abi_decode_returns_validate(
20820                data: &[u8],
20821            ) -> alloy_sol_types::Result<Self::Return> {
20822                Self::abi_decode_returns_with_config(
20823                    data,
20824                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
20825                )
20826            }
20827        }
20828    };
20829    ///Container for all the [`StakeTableV2`](self) function calls.
20830    #[derive(Clone)]
20831    #[derive(serde::Serialize, serde::Deserialize)]
20832    #[derive(Debug, PartialEq, Eq, Hash)]
20833    pub enum StakeTableV2Calls {
20834        #[allow(missing_docs)]
20835        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
20836        #[allow(missing_docs)]
20837        MAX_COMMISSION_BPS(MAX_COMMISSION_BPSCall),
20838        #[allow(missing_docs)]
20839        MAX_EXIT_ESCROW_PERIOD(MAX_EXIT_ESCROW_PERIODCall),
20840        #[allow(missing_docs)]
20841        MAX_METADATA_URI_LENGTH(MAX_METADATA_URI_LENGTHCall),
20842        #[allow(missing_docs)]
20843        MIN_EXIT_ESCROW_PERIOD(MIN_EXIT_ESCROW_PERIODCall),
20844        #[allow(missing_docs)]
20845        PAUSER_ROLE(PAUSER_ROLECall),
20846        #[allow(missing_docs)]
20847        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
20848        #[allow(missing_docs)]
20849        _hashBlsKey(_hashBlsKeyCall),
20850        #[allow(missing_docs)]
20851        activeStake(activeStakeCall),
20852        #[allow(missing_docs)]
20853        blsKeys(blsKeysCall),
20854        #[allow(missing_docs)]
20855        claimValidatorExit(claimValidatorExitCall),
20856        #[allow(missing_docs)]
20857        claimWithdrawal(claimWithdrawalCall),
20858        #[allow(missing_docs)]
20859        commissionTracking(commissionTrackingCall),
20860        #[allow(missing_docs)]
20861        delegate(delegateCall),
20862        #[allow(missing_docs)]
20863        delegations(delegationsCall),
20864        #[allow(missing_docs)]
20865        deregisterValidator(deregisterValidatorCall),
20866        #[allow(missing_docs)]
20867        exitEscrowPeriod(exitEscrowPeriodCall),
20868        #[allow(missing_docs)]
20869        getRoleAdmin(getRoleAdminCall),
20870        #[allow(missing_docs)]
20871        getUndelegation(getUndelegationCall),
20872        #[allow(missing_docs)]
20873        getVersion(getVersionCall),
20874        #[allow(missing_docs)]
20875        grantRole(grantRoleCall),
20876        #[allow(missing_docs)]
20877        hasRole(hasRoleCall),
20878        #[allow(missing_docs)]
20879        initialize(initializeCall),
20880        #[allow(missing_docs)]
20881        initializeV2(initializeV2Call),
20882        #[allow(missing_docs)]
20883        initializedAtBlock(initializedAtBlockCall),
20884        #[allow(missing_docs)]
20885        lightClient(lightClientCall),
20886        #[allow(missing_docs)]
20887        maxCommissionIncrease(maxCommissionIncreaseCall),
20888        #[allow(missing_docs)]
20889        minCommissionIncreaseInterval(minCommissionIncreaseIntervalCall),
20890        #[allow(missing_docs)]
20891        minDelegateAmount(minDelegateAmountCall),
20892        #[allow(missing_docs)]
20893        owner(ownerCall),
20894        #[allow(missing_docs)]
20895        pause(pauseCall),
20896        #[allow(missing_docs)]
20897        paused(pausedCall),
20898        #[allow(missing_docs)]
20899        proxiableUUID(proxiableUUIDCall),
20900        #[allow(missing_docs)]
20901        registerValidator(registerValidatorCall),
20902        #[allow(missing_docs)]
20903        registerValidatorV2(registerValidatorV2Call),
20904        #[allow(missing_docs)]
20905        renounceOwnership(renounceOwnershipCall),
20906        #[allow(missing_docs)]
20907        renounceRole(renounceRoleCall),
20908        #[allow(missing_docs)]
20909        revokeRole(revokeRoleCall),
20910        #[allow(missing_docs)]
20911        schnorrKeys(schnorrKeysCall),
20912        #[allow(missing_docs)]
20913        setMaxCommissionIncrease(setMaxCommissionIncreaseCall),
20914        #[allow(missing_docs)]
20915        setMinCommissionUpdateInterval(setMinCommissionUpdateIntervalCall),
20916        #[allow(missing_docs)]
20917        setMinDelegateAmount(setMinDelegateAmountCall),
20918        #[allow(missing_docs)]
20919        supportsInterface(supportsInterfaceCall),
20920        #[allow(missing_docs)]
20921        token(tokenCall),
20922        #[allow(missing_docs)]
20923        transferOwnership(transferOwnershipCall),
20924        #[allow(missing_docs)]
20925        undelegate(undelegateCall),
20926        #[allow(missing_docs)]
20927        undelegations(undelegationsCall),
20928        #[allow(missing_docs)]
20929        unpause(unpauseCall),
20930        #[allow(missing_docs)]
20931        updateCommission(updateCommissionCall),
20932        #[allow(missing_docs)]
20933        updateConsensusKeys(updateConsensusKeysCall),
20934        #[allow(missing_docs)]
20935        updateConsensusKeysV2(updateConsensusKeysV2Call),
20936        #[allow(missing_docs)]
20937        updateExitEscrowPeriod(updateExitEscrowPeriodCall),
20938        #[allow(missing_docs)]
20939        updateMetadataUri(updateMetadataUriCall),
20940        #[allow(missing_docs)]
20941        upgradeToAndCall(upgradeToAndCallCall),
20942        #[allow(missing_docs)]
20943        validateMetadataUri(validateMetadataUriCall),
20944        #[allow(missing_docs)]
20945        validatorExits(validatorExitsCall),
20946        #[allow(missing_docs)]
20947        validators(validatorsCall),
20948    }
20949    impl StakeTableV2Calls {
20950        /// All the selectors of this enum.
20951        ///
20952        /// Note that the selectors might not be in the same order as the variants.
20953        /// No guarantees are made about the order of the selectors.
20954        ///
20955        /// Prefer using `SolInterface` methods instead.
20956        pub const SELECTORS: &'static [[u8; 4usize]] = &[
20957            [1u8, 255u8, 201u8, 167u8],
20958            [2u8, 110u8, 64u8, 43u8],
20959            [13u8, 142u8, 110u8, 44u8],
20960            [19u8, 185u8, 5u8, 122u8],
20961            [26u8, 32u8, 205u8, 99u8],
20962            [33u8, 64u8, 254u8, 205u8],
20963            [36u8, 138u8, 156u8, 163u8],
20964            [43u8, 158u8, 92u8, 138u8],
20965            [45u8, 201u8, 186u8, 198u8],
20966            [47u8, 47u8, 241u8, 93u8],
20967            [47u8, 226u8, 135u8, 89u8],
20968            [54u8, 86u8, 138u8, 190u8],
20969            [57u8, 75u8, 52u8, 143u8],
20970            [59u8, 43u8, 127u8, 250u8],
20971            [62u8, 115u8, 46u8, 186u8],
20972            [62u8, 157u8, 249u8, 181u8],
20973            [63u8, 59u8, 179u8, 102u8],
20974            [63u8, 75u8, 168u8, 58u8],
20975            [77u8, 153u8, 221u8, 22u8],
20976            [79u8, 30u8, 242u8, 134u8],
20977            [82u8, 120u8, 11u8, 110u8],
20978            [82u8, 209u8, 144u8, 45u8],
20979            [85u8, 68u8, 194u8, 241u8],
20980            [92u8, 151u8, 90u8, 187u8],
20981            [95u8, 135u8, 84u8, 166u8],
20982            [106u8, 145u8, 28u8, 207u8],
20983            [106u8, 210u8, 142u8, 159u8],
20984            [113u8, 80u8, 24u8, 166u8],
20985            [114u8, 233u8, 201u8, 52u8],
20986            [132u8, 86u8, 203u8, 89u8],
20987            [135u8, 12u8, 143u8, 38u8],
20988            [141u8, 165u8, 203u8, 91u8],
20989            [145u8, 209u8, 72u8, 84u8],
20990            [155u8, 48u8, 165u8, 230u8],
20991            [158u8, 154u8, 143u8, 49u8],
20992            [159u8, 251u8, 107u8, 67u8],
20993            [162u8, 23u8, 253u8, 223u8],
20994            [162u8, 215u8, 141u8, 213u8],
20995            [163u8, 6u8, 106u8, 171u8],
20996            [172u8, 92u8, 42u8, 208u8],
20997            [173u8, 60u8, 177u8, 204u8],
20998            [179u8, 230u8, 235u8, 213u8],
20999            [181u8, 112u8, 14u8, 104u8],
21000            [181u8, 236u8, 179u8, 68u8],
21001            [187u8, 96u8, 191u8, 176u8],
21002            [189u8, 73u8, 195u8, 95u8],
21003            [190u8, 32u8, 48u8, 148u8],
21004            [198u8, 72u8, 20u8, 221u8],
21005            [213u8, 71u8, 116u8, 31u8],
21006            [217u8, 204u8, 125u8, 38u8],
21007            [227u8, 242u8, 55u8, 230u8],
21008            [228u8, 209u8, 251u8, 148u8],
21009            [230u8, 41u8, 119u8, 248u8],
21010            [230u8, 58u8, 177u8, 233u8],
21011            [242u8, 253u8, 227u8, 139u8],
21012            [250u8, 82u8, 199u8, 216u8],
21013            [252u8, 12u8, 84u8, 106u8],
21014        ];
21015        /// The names of the variants in the same order as `SELECTORS`.
21016        pub const VARIANT_NAMES: &'static [&'static str] = &[
21017            ::core::stringify!(supportsInterface),
21018            ::core::stringify!(delegate),
21019            ::core::stringify!(getVersion),
21020            ::core::stringify!(registerValidator),
21021            ::core::stringify!(updateExitEscrowPeriod),
21022            ::core::stringify!(claimValidatorExit),
21023            ::core::stringify!(getRoleAdmin),
21024            ::core::stringify!(registerValidatorV2),
21025            ::core::stringify!(setMaxCommissionIncrease),
21026            ::core::stringify!(grantRole),
21027            ::core::stringify!(MAX_METADATA_URI_LENGTH),
21028            ::core::stringify!(renounceRole),
21029            ::core::stringify!(setMinCommissionUpdateInterval),
21030            ::core::stringify!(updateCommission),
21031            ::core::stringify!(setMinDelegateAmount),
21032            ::core::stringify!(initializedAtBlock),
21033            ::core::stringify!(maxCommissionIncrease),
21034            ::core::stringify!(unpause),
21035            ::core::stringify!(undelegate),
21036            ::core::stringify!(upgradeToAndCall),
21037            ::core::stringify!(initializeV2),
21038            ::core::stringify!(proxiableUUID),
21039            ::core::stringify!(updateConsensusKeys),
21040            ::core::stringify!(paused),
21041            ::core::stringify!(schnorrKeys),
21042            ::core::stringify!(deregisterValidator),
21043            ::core::stringify!(MIN_EXIT_ESCROW_PERIOD),
21044            ::core::stringify!(renounceOwnership),
21045            ::core::stringify!(minDelegateAmount),
21046            ::core::stringify!(pause),
21047            ::core::stringify!(updateMetadataUri),
21048            ::core::stringify!(owner),
21049            ::core::stringify!(hasRole),
21050            ::core::stringify!(_hashBlsKey),
21051            ::core::stringify!(exitEscrowPeriod),
21052            ::core::stringify!(commissionTracking),
21053            ::core::stringify!(DEFAULT_ADMIN_ROLE),
21054            ::core::stringify!(undelegations),
21055            ::core::stringify!(claimWithdrawal),
21056            ::core::stringify!(updateConsensusKeysV2),
21057            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
21058            ::core::stringify!(blsKeys),
21059            ::core::stringify!(lightClient),
21060            ::core::stringify!(validatorExits),
21061            ::core::stringify!(getUndelegation),
21062            ::core::stringify!(activeStake),
21063            ::core::stringify!(initialize),
21064            ::core::stringify!(delegations),
21065            ::core::stringify!(revokeRole),
21066            ::core::stringify!(minCommissionIncreaseInterval),
21067            ::core::stringify!(validateMetadataUri),
21068            ::core::stringify!(MAX_EXIT_ESCROW_PERIOD),
21069            ::core::stringify!(MAX_COMMISSION_BPS),
21070            ::core::stringify!(PAUSER_ROLE),
21071            ::core::stringify!(transferOwnership),
21072            ::core::stringify!(validators),
21073            ::core::stringify!(token),
21074        ];
21075        /// The signatures in the same order as `SELECTORS`.
21076        pub const SIGNATURES: &'static [&'static str] = &[
21077            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
21078            <delegateCall as alloy_sol_types::SolCall>::SIGNATURE,
21079            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
21080            <registerValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
21081            <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
21082            <claimValidatorExitCall as alloy_sol_types::SolCall>::SIGNATURE,
21083            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
21084            <registerValidatorV2Call as alloy_sol_types::SolCall>::SIGNATURE,
21085            <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
21086            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
21087            <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SIGNATURE,
21088            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
21089            <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
21090            <updateCommissionCall as alloy_sol_types::SolCall>::SIGNATURE,
21091            <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
21092            <initializedAtBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
21093            <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SIGNATURE,
21094            <unpauseCall as alloy_sol_types::SolCall>::SIGNATURE,
21095            <undelegateCall as alloy_sol_types::SolCall>::SIGNATURE,
21096            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
21097            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
21098            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
21099            <updateConsensusKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
21100            <pausedCall as alloy_sol_types::SolCall>::SIGNATURE,
21101            <schnorrKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
21102            <deregisterValidatorCall as alloy_sol_types::SolCall>::SIGNATURE,
21103            <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
21104            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
21105            <minDelegateAmountCall as alloy_sol_types::SolCall>::SIGNATURE,
21106            <pauseCall as alloy_sol_types::SolCall>::SIGNATURE,
21107            <updateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
21108            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
21109            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
21110            <_hashBlsKeyCall as alloy_sol_types::SolCall>::SIGNATURE,
21111            <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
21112            <commissionTrackingCall as alloy_sol_types::SolCall>::SIGNATURE,
21113            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
21114            <undelegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
21115            <claimWithdrawalCall as alloy_sol_types::SolCall>::SIGNATURE,
21116            <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SIGNATURE,
21117            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
21118            <blsKeysCall as alloy_sol_types::SolCall>::SIGNATURE,
21119            <lightClientCall as alloy_sol_types::SolCall>::SIGNATURE,
21120            <validatorExitsCall as alloy_sol_types::SolCall>::SIGNATURE,
21121            <getUndelegationCall as alloy_sol_types::SolCall>::SIGNATURE,
21122            <activeStakeCall as alloy_sol_types::SolCall>::SIGNATURE,
21123            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
21124            <delegationsCall as alloy_sol_types::SolCall>::SIGNATURE,
21125            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
21126            <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SIGNATURE,
21127            <validateMetadataUriCall as alloy_sol_types::SolCall>::SIGNATURE,
21128            <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SIGNATURE,
21129            <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SIGNATURE,
21130            <PAUSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
21131            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
21132            <validatorsCall as alloy_sol_types::SolCall>::SIGNATURE,
21133            <tokenCall as alloy_sol_types::SolCall>::SIGNATURE,
21134        ];
21135        /// Returns the signature for the given selector, if known.
21136        #[inline]
21137        pub fn signature_by_selector(
21138            selector: [u8; 4usize],
21139        ) -> ::core::option::Option<&'static str> {
21140            match Self::SELECTORS.binary_search(&selector) {
21141                ::core::result::Result::Ok(idx) => {
21142                    ::core::option::Option::Some(Self::SIGNATURES[idx])
21143                }
21144                ::core::result::Result::Err(_) => ::core::option::Option::None,
21145            }
21146        }
21147        /// Returns the enum variant name for the given selector, if known.
21148        #[inline]
21149        pub fn name_by_selector(
21150            selector: [u8; 4usize],
21151        ) -> ::core::option::Option<&'static str> {
21152            let sig = Self::signature_by_selector(selector)?;
21153            sig.split_once('(').map(|(name, _)| name)
21154        }
21155    }
21156    #[automatically_derived]
21157    impl alloy_sol_types::SolInterface for StakeTableV2Calls {
21158        const NAME: &'static str = "StakeTableV2Calls";
21159        const MIN_DATA_LENGTH: usize = 0usize;
21160        const COUNT: usize = 57usize;
21161        #[inline]
21162        fn selector(&self) -> [u8; 4] {
21163            match self {
21164                Self::DEFAULT_ADMIN_ROLE(_) => {
21165                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
21166                }
21167                Self::MAX_COMMISSION_BPS(_) => {
21168                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::SELECTOR
21169                }
21170                Self::MAX_EXIT_ESCROW_PERIOD(_) => {
21171                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
21172                }
21173                Self::MAX_METADATA_URI_LENGTH(_) => {
21174                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::SELECTOR
21175                }
21176                Self::MIN_EXIT_ESCROW_PERIOD(_) => {
21177                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::SELECTOR
21178                }
21179                Self::PAUSER_ROLE(_) => {
21180                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
21181                }
21182                Self::UPGRADE_INTERFACE_VERSION(_) => {
21183                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
21184                }
21185                Self::_hashBlsKey(_) => {
21186                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::SELECTOR
21187                }
21188                Self::activeStake(_) => {
21189                    <activeStakeCall as alloy_sol_types::SolCall>::SELECTOR
21190                }
21191                Self::blsKeys(_) => <blsKeysCall as alloy_sol_types::SolCall>::SELECTOR,
21192                Self::claimValidatorExit(_) => {
21193                    <claimValidatorExitCall as alloy_sol_types::SolCall>::SELECTOR
21194                }
21195                Self::claimWithdrawal(_) => {
21196                    <claimWithdrawalCall as alloy_sol_types::SolCall>::SELECTOR
21197                }
21198                Self::commissionTracking(_) => {
21199                    <commissionTrackingCall as alloy_sol_types::SolCall>::SELECTOR
21200                }
21201                Self::delegate(_) => <delegateCall as alloy_sol_types::SolCall>::SELECTOR,
21202                Self::delegations(_) => {
21203                    <delegationsCall as alloy_sol_types::SolCall>::SELECTOR
21204                }
21205                Self::deregisterValidator(_) => {
21206                    <deregisterValidatorCall as alloy_sol_types::SolCall>::SELECTOR
21207                }
21208                Self::exitEscrowPeriod(_) => {
21209                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
21210                }
21211                Self::getRoleAdmin(_) => {
21212                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
21213                }
21214                Self::getUndelegation(_) => {
21215                    <getUndelegationCall as alloy_sol_types::SolCall>::SELECTOR
21216                }
21217                Self::getVersion(_) => {
21218                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
21219                }
21220                Self::grantRole(_) => {
21221                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
21222                }
21223                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
21224                Self::initialize(_) => {
21225                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
21226                }
21227                Self::initializeV2(_) => {
21228                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
21229                }
21230                Self::initializedAtBlock(_) => {
21231                    <initializedAtBlockCall as alloy_sol_types::SolCall>::SELECTOR
21232                }
21233                Self::lightClient(_) => {
21234                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
21235                }
21236                Self::maxCommissionIncrease(_) => {
21237                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
21238                }
21239                Self::minCommissionIncreaseInterval(_) => {
21240                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::SELECTOR
21241                }
21242                Self::minDelegateAmount(_) => {
21243                    <minDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
21244                }
21245                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
21246                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
21247                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
21248                Self::proxiableUUID(_) => {
21249                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
21250                }
21251                Self::registerValidator(_) => {
21252                    <registerValidatorCall as alloy_sol_types::SolCall>::SELECTOR
21253                }
21254                Self::registerValidatorV2(_) => {
21255                    <registerValidatorV2Call as alloy_sol_types::SolCall>::SELECTOR
21256                }
21257                Self::renounceOwnership(_) => {
21258                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
21259                }
21260                Self::renounceRole(_) => {
21261                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
21262                }
21263                Self::revokeRole(_) => {
21264                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
21265                }
21266                Self::schnorrKeys(_) => {
21267                    <schnorrKeysCall as alloy_sol_types::SolCall>::SELECTOR
21268                }
21269                Self::setMaxCommissionIncrease(_) => {
21270                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::SELECTOR
21271                }
21272                Self::setMinCommissionUpdateInterval(_) => {
21273                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::SELECTOR
21274                }
21275                Self::setMinDelegateAmount(_) => {
21276                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::SELECTOR
21277                }
21278                Self::supportsInterface(_) => {
21279                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
21280                }
21281                Self::token(_) => <tokenCall as alloy_sol_types::SolCall>::SELECTOR,
21282                Self::transferOwnership(_) => {
21283                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
21284                }
21285                Self::undelegate(_) => {
21286                    <undelegateCall as alloy_sol_types::SolCall>::SELECTOR
21287                }
21288                Self::undelegations(_) => {
21289                    <undelegationsCall as alloy_sol_types::SolCall>::SELECTOR
21290                }
21291                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
21292                Self::updateCommission(_) => {
21293                    <updateCommissionCall as alloy_sol_types::SolCall>::SELECTOR
21294                }
21295                Self::updateConsensusKeys(_) => {
21296                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::SELECTOR
21297                }
21298                Self::updateConsensusKeysV2(_) => {
21299                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::SELECTOR
21300                }
21301                Self::updateExitEscrowPeriod(_) => {
21302                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::SELECTOR
21303                }
21304                Self::updateMetadataUri(_) => {
21305                    <updateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
21306                }
21307                Self::upgradeToAndCall(_) => {
21308                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
21309                }
21310                Self::validateMetadataUri(_) => {
21311                    <validateMetadataUriCall as alloy_sol_types::SolCall>::SELECTOR
21312                }
21313                Self::validatorExits(_) => {
21314                    <validatorExitsCall as alloy_sol_types::SolCall>::SELECTOR
21315                }
21316                Self::validators(_) => {
21317                    <validatorsCall as alloy_sol_types::SolCall>::SELECTOR
21318                }
21319            }
21320        }
21321        #[inline]
21322        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
21323            Self::SELECTORS.get(i).copied()
21324        }
21325        #[inline]
21326        fn valid_selector(selector: [u8; 4]) -> bool {
21327            Self::SELECTORS.binary_search(&selector).is_ok()
21328        }
21329        #[inline]
21330        #[allow(non_snake_case)]
21331        fn abi_decode_raw(
21332            selector: [u8; 4],
21333            data: &[u8],
21334        ) -> alloy_sol_types::Result<Self> {
21335            Self::abi_decode_raw_with_config(
21336                selector,
21337                data,
21338                alloy_sol_types::abi::AbiDecoderConfig::default(),
21339            )
21340        }
21341        #[inline]
21342        #[allow(non_snake_case)]
21343        fn abi_decode_raw_with_config(
21344            selector: [u8; 4],
21345            data: &[u8],
21346            config: alloy_sol_types::abi::AbiDecoderConfig,
21347        ) -> alloy_sol_types::Result<Self> {
21348            static DECODE_SHIMS: &[fn(
21349                &[u8],
21350                alloy_sol_types::abi::AbiDecoderConfig,
21351            ) -> alloy_sol_types::Result<StakeTableV2Calls>] = &[
21352                {
21353                    fn supportsInterface(
21354                        data: &[u8],
21355                        config: alloy_sol_types::abi::AbiDecoderConfig,
21356                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21357                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21358                                data,
21359                                config,
21360                            )
21361                            .map(StakeTableV2Calls::supportsInterface)
21362                    }
21363                    supportsInterface
21364                },
21365                {
21366                    fn delegate(
21367                        data: &[u8],
21368                        config: alloy_sol_types::abi::AbiDecoderConfig,
21369                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21370                        <delegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21371                                data,
21372                                config,
21373                            )
21374                            .map(StakeTableV2Calls::delegate)
21375                    }
21376                    delegate
21377                },
21378                {
21379                    fn getVersion(
21380                        data: &[u8],
21381                        config: alloy_sol_types::abi::AbiDecoderConfig,
21382                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21383                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21384                                data,
21385                                config,
21386                            )
21387                            .map(StakeTableV2Calls::getVersion)
21388                    }
21389                    getVersion
21390                },
21391                {
21392                    fn registerValidator(
21393                        data: &[u8],
21394                        config: alloy_sol_types::abi::AbiDecoderConfig,
21395                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21396                        <registerValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21397                                data,
21398                                config,
21399                            )
21400                            .map(StakeTableV2Calls::registerValidator)
21401                    }
21402                    registerValidator
21403                },
21404                {
21405                    fn updateExitEscrowPeriod(
21406                        data: &[u8],
21407                        config: alloy_sol_types::abi::AbiDecoderConfig,
21408                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21409                        <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21410                                data,
21411                                config,
21412                            )
21413                            .map(StakeTableV2Calls::updateExitEscrowPeriod)
21414                    }
21415                    updateExitEscrowPeriod
21416                },
21417                {
21418                    fn claimValidatorExit(
21419                        data: &[u8],
21420                        config: alloy_sol_types::abi::AbiDecoderConfig,
21421                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21422                        <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21423                                data,
21424                                config,
21425                            )
21426                            .map(StakeTableV2Calls::claimValidatorExit)
21427                    }
21428                    claimValidatorExit
21429                },
21430                {
21431                    fn getRoleAdmin(
21432                        data: &[u8],
21433                        config: alloy_sol_types::abi::AbiDecoderConfig,
21434                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21435                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21436                                data,
21437                                config,
21438                            )
21439                            .map(StakeTableV2Calls::getRoleAdmin)
21440                    }
21441                    getRoleAdmin
21442                },
21443                {
21444                    fn registerValidatorV2(
21445                        data: &[u8],
21446                        config: alloy_sol_types::abi::AbiDecoderConfig,
21447                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21448                        <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21449                                data,
21450                                config,
21451                            )
21452                            .map(StakeTableV2Calls::registerValidatorV2)
21453                    }
21454                    registerValidatorV2
21455                },
21456                {
21457                    fn setMaxCommissionIncrease(
21458                        data: &[u8],
21459                        config: alloy_sol_types::abi::AbiDecoderConfig,
21460                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21461                        <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21462                                data,
21463                                config,
21464                            )
21465                            .map(StakeTableV2Calls::setMaxCommissionIncrease)
21466                    }
21467                    setMaxCommissionIncrease
21468                },
21469                {
21470                    fn grantRole(
21471                        data: &[u8],
21472                        config: alloy_sol_types::abi::AbiDecoderConfig,
21473                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21474                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21475                                data,
21476                                config,
21477                            )
21478                            .map(StakeTableV2Calls::grantRole)
21479                    }
21480                    grantRole
21481                },
21482                {
21483                    fn MAX_METADATA_URI_LENGTH(
21484                        data: &[u8],
21485                        config: alloy_sol_types::abi::AbiDecoderConfig,
21486                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21487                        <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21488                                data,
21489                                config,
21490                            )
21491                            .map(StakeTableV2Calls::MAX_METADATA_URI_LENGTH)
21492                    }
21493                    MAX_METADATA_URI_LENGTH
21494                },
21495                {
21496                    fn renounceRole(
21497                        data: &[u8],
21498                        config: alloy_sol_types::abi::AbiDecoderConfig,
21499                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21500                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21501                                data,
21502                                config,
21503                            )
21504                            .map(StakeTableV2Calls::renounceRole)
21505                    }
21506                    renounceRole
21507                },
21508                {
21509                    fn setMinCommissionUpdateInterval(
21510                        data: &[u8],
21511                        config: alloy_sol_types::abi::AbiDecoderConfig,
21512                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21513                        <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21514                                data,
21515                                config,
21516                            )
21517                            .map(StakeTableV2Calls::setMinCommissionUpdateInterval)
21518                    }
21519                    setMinCommissionUpdateInterval
21520                },
21521                {
21522                    fn updateCommission(
21523                        data: &[u8],
21524                        config: alloy_sol_types::abi::AbiDecoderConfig,
21525                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21526                        <updateCommissionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21527                                data,
21528                                config,
21529                            )
21530                            .map(StakeTableV2Calls::updateCommission)
21531                    }
21532                    updateCommission
21533                },
21534                {
21535                    fn setMinDelegateAmount(
21536                        data: &[u8],
21537                        config: alloy_sol_types::abi::AbiDecoderConfig,
21538                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21539                        <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21540                                data,
21541                                config,
21542                            )
21543                            .map(StakeTableV2Calls::setMinDelegateAmount)
21544                    }
21545                    setMinDelegateAmount
21546                },
21547                {
21548                    fn initializedAtBlock(
21549                        data: &[u8],
21550                        config: alloy_sol_types::abi::AbiDecoderConfig,
21551                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21552                        <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21553                                data,
21554                                config,
21555                            )
21556                            .map(StakeTableV2Calls::initializedAtBlock)
21557                    }
21558                    initializedAtBlock
21559                },
21560                {
21561                    fn maxCommissionIncrease(
21562                        data: &[u8],
21563                        config: alloy_sol_types::abi::AbiDecoderConfig,
21564                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21565                        <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21566                                data,
21567                                config,
21568                            )
21569                            .map(StakeTableV2Calls::maxCommissionIncrease)
21570                    }
21571                    maxCommissionIncrease
21572                },
21573                {
21574                    fn unpause(
21575                        data: &[u8],
21576                        config: alloy_sol_types::abi::AbiDecoderConfig,
21577                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21578                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21579                                data,
21580                                config,
21581                            )
21582                            .map(StakeTableV2Calls::unpause)
21583                    }
21584                    unpause
21585                },
21586                {
21587                    fn undelegate(
21588                        data: &[u8],
21589                        config: alloy_sol_types::abi::AbiDecoderConfig,
21590                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21591                        <undelegateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21592                                data,
21593                                config,
21594                            )
21595                            .map(StakeTableV2Calls::undelegate)
21596                    }
21597                    undelegate
21598                },
21599                {
21600                    fn upgradeToAndCall(
21601                        data: &[u8],
21602                        config: alloy_sol_types::abi::AbiDecoderConfig,
21603                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21604                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21605                                data,
21606                                config,
21607                            )
21608                            .map(StakeTableV2Calls::upgradeToAndCall)
21609                    }
21610                    upgradeToAndCall
21611                },
21612                {
21613                    fn initializeV2(
21614                        data: &[u8],
21615                        config: alloy_sol_types::abi::AbiDecoderConfig,
21616                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21617                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21618                                data,
21619                                config,
21620                            )
21621                            .map(StakeTableV2Calls::initializeV2)
21622                    }
21623                    initializeV2
21624                },
21625                {
21626                    fn proxiableUUID(
21627                        data: &[u8],
21628                        config: alloy_sol_types::abi::AbiDecoderConfig,
21629                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21630                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21631                                data,
21632                                config,
21633                            )
21634                            .map(StakeTableV2Calls::proxiableUUID)
21635                    }
21636                    proxiableUUID
21637                },
21638                {
21639                    fn updateConsensusKeys(
21640                        data: &[u8],
21641                        config: alloy_sol_types::abi::AbiDecoderConfig,
21642                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21643                        <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21644                                data,
21645                                config,
21646                            )
21647                            .map(StakeTableV2Calls::updateConsensusKeys)
21648                    }
21649                    updateConsensusKeys
21650                },
21651                {
21652                    fn paused(
21653                        data: &[u8],
21654                        config: alloy_sol_types::abi::AbiDecoderConfig,
21655                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21656                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21657                                data,
21658                                config,
21659                            )
21660                            .map(StakeTableV2Calls::paused)
21661                    }
21662                    paused
21663                },
21664                {
21665                    fn schnorrKeys(
21666                        data: &[u8],
21667                        config: alloy_sol_types::abi::AbiDecoderConfig,
21668                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21669                        <schnorrKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21670                                data,
21671                                config,
21672                            )
21673                            .map(StakeTableV2Calls::schnorrKeys)
21674                    }
21675                    schnorrKeys
21676                },
21677                {
21678                    fn deregisterValidator(
21679                        data: &[u8],
21680                        config: alloy_sol_types::abi::AbiDecoderConfig,
21681                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21682                        <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21683                                data,
21684                                config,
21685                            )
21686                            .map(StakeTableV2Calls::deregisterValidator)
21687                    }
21688                    deregisterValidator
21689                },
21690                {
21691                    fn MIN_EXIT_ESCROW_PERIOD(
21692                        data: &[u8],
21693                        config: alloy_sol_types::abi::AbiDecoderConfig,
21694                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21695                        <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21696                                data,
21697                                config,
21698                            )
21699                            .map(StakeTableV2Calls::MIN_EXIT_ESCROW_PERIOD)
21700                    }
21701                    MIN_EXIT_ESCROW_PERIOD
21702                },
21703                {
21704                    fn renounceOwnership(
21705                        data: &[u8],
21706                        config: alloy_sol_types::abi::AbiDecoderConfig,
21707                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21708                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21709                                data,
21710                                config,
21711                            )
21712                            .map(StakeTableV2Calls::renounceOwnership)
21713                    }
21714                    renounceOwnership
21715                },
21716                {
21717                    fn minDelegateAmount(
21718                        data: &[u8],
21719                        config: alloy_sol_types::abi::AbiDecoderConfig,
21720                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21721                        <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21722                                data,
21723                                config,
21724                            )
21725                            .map(StakeTableV2Calls::minDelegateAmount)
21726                    }
21727                    minDelegateAmount
21728                },
21729                {
21730                    fn pause(
21731                        data: &[u8],
21732                        config: alloy_sol_types::abi::AbiDecoderConfig,
21733                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21734                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21735                                data,
21736                                config,
21737                            )
21738                            .map(StakeTableV2Calls::pause)
21739                    }
21740                    pause
21741                },
21742                {
21743                    fn updateMetadataUri(
21744                        data: &[u8],
21745                        config: alloy_sol_types::abi::AbiDecoderConfig,
21746                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21747                        <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21748                                data,
21749                                config,
21750                            )
21751                            .map(StakeTableV2Calls::updateMetadataUri)
21752                    }
21753                    updateMetadataUri
21754                },
21755                {
21756                    fn owner(
21757                        data: &[u8],
21758                        config: alloy_sol_types::abi::AbiDecoderConfig,
21759                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21760                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21761                                data,
21762                                config,
21763                            )
21764                            .map(StakeTableV2Calls::owner)
21765                    }
21766                    owner
21767                },
21768                {
21769                    fn hasRole(
21770                        data: &[u8],
21771                        config: alloy_sol_types::abi::AbiDecoderConfig,
21772                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21773                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21774                                data,
21775                                config,
21776                            )
21777                            .map(StakeTableV2Calls::hasRole)
21778                    }
21779                    hasRole
21780                },
21781                {
21782                    fn _hashBlsKey(
21783                        data: &[u8],
21784                        config: alloy_sol_types::abi::AbiDecoderConfig,
21785                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21786                        <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21787                                data,
21788                                config,
21789                            )
21790                            .map(StakeTableV2Calls::_hashBlsKey)
21791                    }
21792                    _hashBlsKey
21793                },
21794                {
21795                    fn exitEscrowPeriod(
21796                        data: &[u8],
21797                        config: alloy_sol_types::abi::AbiDecoderConfig,
21798                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21799                        <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21800                                data,
21801                                config,
21802                            )
21803                            .map(StakeTableV2Calls::exitEscrowPeriod)
21804                    }
21805                    exitEscrowPeriod
21806                },
21807                {
21808                    fn commissionTracking(
21809                        data: &[u8],
21810                        config: alloy_sol_types::abi::AbiDecoderConfig,
21811                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21812                        <commissionTrackingCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21813                                data,
21814                                config,
21815                            )
21816                            .map(StakeTableV2Calls::commissionTracking)
21817                    }
21818                    commissionTracking
21819                },
21820                {
21821                    fn DEFAULT_ADMIN_ROLE(
21822                        data: &[u8],
21823                        config: alloy_sol_types::abi::AbiDecoderConfig,
21824                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21825                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21826                                data,
21827                                config,
21828                            )
21829                            .map(StakeTableV2Calls::DEFAULT_ADMIN_ROLE)
21830                    }
21831                    DEFAULT_ADMIN_ROLE
21832                },
21833                {
21834                    fn undelegations(
21835                        data: &[u8],
21836                        config: alloy_sol_types::abi::AbiDecoderConfig,
21837                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21838                        <undelegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21839                                data,
21840                                config,
21841                            )
21842                            .map(StakeTableV2Calls::undelegations)
21843                    }
21844                    undelegations
21845                },
21846                {
21847                    fn claimWithdrawal(
21848                        data: &[u8],
21849                        config: alloy_sol_types::abi::AbiDecoderConfig,
21850                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21851                        <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21852                                data,
21853                                config,
21854                            )
21855                            .map(StakeTableV2Calls::claimWithdrawal)
21856                    }
21857                    claimWithdrawal
21858                },
21859                {
21860                    fn updateConsensusKeysV2(
21861                        data: &[u8],
21862                        config: alloy_sol_types::abi::AbiDecoderConfig,
21863                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21864                        <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21865                                data,
21866                                config,
21867                            )
21868                            .map(StakeTableV2Calls::updateConsensusKeysV2)
21869                    }
21870                    updateConsensusKeysV2
21871                },
21872                {
21873                    fn UPGRADE_INTERFACE_VERSION(
21874                        data: &[u8],
21875                        config: alloy_sol_types::abi::AbiDecoderConfig,
21876                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21877                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21878                                data,
21879                                config,
21880                            )
21881                            .map(StakeTableV2Calls::UPGRADE_INTERFACE_VERSION)
21882                    }
21883                    UPGRADE_INTERFACE_VERSION
21884                },
21885                {
21886                    fn blsKeys(
21887                        data: &[u8],
21888                        config: alloy_sol_types::abi::AbiDecoderConfig,
21889                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21890                        <blsKeysCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21891                                data,
21892                                config,
21893                            )
21894                            .map(StakeTableV2Calls::blsKeys)
21895                    }
21896                    blsKeys
21897                },
21898                {
21899                    fn lightClient(
21900                        data: &[u8],
21901                        config: alloy_sol_types::abi::AbiDecoderConfig,
21902                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21903                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21904                                data,
21905                                config,
21906                            )
21907                            .map(StakeTableV2Calls::lightClient)
21908                    }
21909                    lightClient
21910                },
21911                {
21912                    fn validatorExits(
21913                        data: &[u8],
21914                        config: alloy_sol_types::abi::AbiDecoderConfig,
21915                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21916                        <validatorExitsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21917                                data,
21918                                config,
21919                            )
21920                            .map(StakeTableV2Calls::validatorExits)
21921                    }
21922                    validatorExits
21923                },
21924                {
21925                    fn getUndelegation(
21926                        data: &[u8],
21927                        config: alloy_sol_types::abi::AbiDecoderConfig,
21928                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21929                        <getUndelegationCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21930                                data,
21931                                config,
21932                            )
21933                            .map(StakeTableV2Calls::getUndelegation)
21934                    }
21935                    getUndelegation
21936                },
21937                {
21938                    fn activeStake(
21939                        data: &[u8],
21940                        config: alloy_sol_types::abi::AbiDecoderConfig,
21941                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21942                        <activeStakeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21943                                data,
21944                                config,
21945                            )
21946                            .map(StakeTableV2Calls::activeStake)
21947                    }
21948                    activeStake
21949                },
21950                {
21951                    fn initialize(
21952                        data: &[u8],
21953                        config: alloy_sol_types::abi::AbiDecoderConfig,
21954                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21955                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21956                                data,
21957                                config,
21958                            )
21959                            .map(StakeTableV2Calls::initialize)
21960                    }
21961                    initialize
21962                },
21963                {
21964                    fn delegations(
21965                        data: &[u8],
21966                        config: alloy_sol_types::abi::AbiDecoderConfig,
21967                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21968                        <delegationsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21969                                data,
21970                                config,
21971                            )
21972                            .map(StakeTableV2Calls::delegations)
21973                    }
21974                    delegations
21975                },
21976                {
21977                    fn revokeRole(
21978                        data: &[u8],
21979                        config: alloy_sol_types::abi::AbiDecoderConfig,
21980                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21981                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21982                                data,
21983                                config,
21984                            )
21985                            .map(StakeTableV2Calls::revokeRole)
21986                    }
21987                    revokeRole
21988                },
21989                {
21990                    fn minCommissionIncreaseInterval(
21991                        data: &[u8],
21992                        config: alloy_sol_types::abi::AbiDecoderConfig,
21993                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
21994                        <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
21995                                data,
21996                                config,
21997                            )
21998                            .map(StakeTableV2Calls::minCommissionIncreaseInterval)
21999                    }
22000                    minCommissionIncreaseInterval
22001                },
22002                {
22003                    fn validateMetadataUri(
22004                        data: &[u8],
22005                        config: alloy_sol_types::abi::AbiDecoderConfig,
22006                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22007                        <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22008                                data,
22009                                config,
22010                            )
22011                            .map(StakeTableV2Calls::validateMetadataUri)
22012                    }
22013                    validateMetadataUri
22014                },
22015                {
22016                    fn MAX_EXIT_ESCROW_PERIOD(
22017                        data: &[u8],
22018                        config: alloy_sol_types::abi::AbiDecoderConfig,
22019                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22020                        <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22021                                data,
22022                                config,
22023                            )
22024                            .map(StakeTableV2Calls::MAX_EXIT_ESCROW_PERIOD)
22025                    }
22026                    MAX_EXIT_ESCROW_PERIOD
22027                },
22028                {
22029                    fn MAX_COMMISSION_BPS(
22030                        data: &[u8],
22031                        config: alloy_sol_types::abi::AbiDecoderConfig,
22032                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22033                        <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22034                                data,
22035                                config,
22036                            )
22037                            .map(StakeTableV2Calls::MAX_COMMISSION_BPS)
22038                    }
22039                    MAX_COMMISSION_BPS
22040                },
22041                {
22042                    fn PAUSER_ROLE(
22043                        data: &[u8],
22044                        config: alloy_sol_types::abi::AbiDecoderConfig,
22045                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22046                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22047                                data,
22048                                config,
22049                            )
22050                            .map(StakeTableV2Calls::PAUSER_ROLE)
22051                    }
22052                    PAUSER_ROLE
22053                },
22054                {
22055                    fn transferOwnership(
22056                        data: &[u8],
22057                        config: alloy_sol_types::abi::AbiDecoderConfig,
22058                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22059                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22060                                data,
22061                                config,
22062                            )
22063                            .map(StakeTableV2Calls::transferOwnership)
22064                    }
22065                    transferOwnership
22066                },
22067                {
22068                    fn validators(
22069                        data: &[u8],
22070                        config: alloy_sol_types::abi::AbiDecoderConfig,
22071                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22072                        <validatorsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22073                                data,
22074                                config,
22075                            )
22076                            .map(StakeTableV2Calls::validators)
22077                    }
22078                    validators
22079                },
22080                {
22081                    fn token(
22082                        data: &[u8],
22083                        config: alloy_sol_types::abi::AbiDecoderConfig,
22084                    ) -> alloy_sol_types::Result<StakeTableV2Calls> {
22085                        <tokenCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
22086                                data,
22087                                config,
22088                            )
22089                            .map(StakeTableV2Calls::token)
22090                    }
22091                    token
22092                },
22093            ];
22094            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
22095                return Err(
22096                    alloy_sol_types::Error::unknown_selector(
22097                        <Self as alloy_sol_types::SolInterface>::NAME,
22098                        selector,
22099                    ),
22100                );
22101            };
22102            DECODE_SHIMS[idx](data, config)
22103        }
22104        #[inline]
22105        #[allow(non_snake_case)]
22106        fn abi_decode_raw_validate(
22107            selector: [u8; 4],
22108            data: &[u8],
22109        ) -> alloy_sol_types::Result<Self> {
22110            Self::abi_decode_raw_with_config(
22111                selector,
22112                data,
22113                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
22114            )
22115        }
22116        #[inline]
22117        fn abi_encoded_size(&self) -> usize {
22118            match self {
22119                Self::DEFAULT_ADMIN_ROLE(inner) => {
22120                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
22121                        inner,
22122                    )
22123                }
22124                Self::MAX_COMMISSION_BPS(inner) => {
22125                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encoded_size(
22126                        inner,
22127                    )
22128                }
22129                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
22130                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
22131                        inner,
22132                    )
22133                }
22134                Self::MAX_METADATA_URI_LENGTH(inner) => {
22135                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encoded_size(
22136                        inner,
22137                    )
22138                }
22139                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
22140                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encoded_size(
22141                        inner,
22142                    )
22143                }
22144                Self::PAUSER_ROLE(inner) => {
22145                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
22146                        inner,
22147                    )
22148                }
22149                Self::UPGRADE_INTERFACE_VERSION(inner) => {
22150                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
22151                        inner,
22152                    )
22153                }
22154                Self::_hashBlsKey(inner) => {
22155                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
22156                        inner,
22157                    )
22158                }
22159                Self::activeStake(inner) => {
22160                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encoded_size(
22161                        inner,
22162                    )
22163                }
22164                Self::blsKeys(inner) => {
22165                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22166                }
22167                Self::claimValidatorExit(inner) => {
22168                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encoded_size(
22169                        inner,
22170                    )
22171                }
22172                Self::claimWithdrawal(inner) => {
22173                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encoded_size(
22174                        inner,
22175                    )
22176                }
22177                Self::commissionTracking(inner) => {
22178                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encoded_size(
22179                        inner,
22180                    )
22181                }
22182                Self::delegate(inner) => {
22183                    <delegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22184                }
22185                Self::delegations(inner) => {
22186                    <delegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
22187                        inner,
22188                    )
22189                }
22190                Self::deregisterValidator(inner) => {
22191                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
22192                        inner,
22193                    )
22194                }
22195                Self::exitEscrowPeriod(inner) => {
22196                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
22197                        inner,
22198                    )
22199                }
22200                Self::getRoleAdmin(inner) => {
22201                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
22202                        inner,
22203                    )
22204                }
22205                Self::getUndelegation(inner) => {
22206                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encoded_size(
22207                        inner,
22208                    )
22209                }
22210                Self::getVersion(inner) => {
22211                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22212                }
22213                Self::grantRole(inner) => {
22214                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22215                }
22216                Self::hasRole(inner) => {
22217                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22218                }
22219                Self::initialize(inner) => {
22220                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22221                }
22222                Self::initializeV2(inner) => {
22223                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
22224                        inner,
22225                    )
22226                }
22227                Self::initializedAtBlock(inner) => {
22228                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
22229                        inner,
22230                    )
22231                }
22232                Self::lightClient(inner) => {
22233                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
22234                        inner,
22235                    )
22236                }
22237                Self::maxCommissionIncrease(inner) => {
22238                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
22239                        inner,
22240                    )
22241                }
22242                Self::minCommissionIncreaseInterval(inner) => {
22243                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
22244                        inner,
22245                    )
22246                }
22247                Self::minDelegateAmount(inner) => {
22248                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
22249                        inner,
22250                    )
22251                }
22252                Self::owner(inner) => {
22253                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22254                }
22255                Self::pause(inner) => {
22256                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22257                }
22258                Self::paused(inner) => {
22259                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22260                }
22261                Self::proxiableUUID(inner) => {
22262                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
22263                        inner,
22264                    )
22265                }
22266                Self::registerValidator(inner) => {
22267                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
22268                        inner,
22269                    )
22270                }
22271                Self::registerValidatorV2(inner) => {
22272                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
22273                        inner,
22274                    )
22275                }
22276                Self::renounceOwnership(inner) => {
22277                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
22278                        inner,
22279                    )
22280                }
22281                Self::renounceRole(inner) => {
22282                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
22283                        inner,
22284                    )
22285                }
22286                Self::revokeRole(inner) => {
22287                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22288                }
22289                Self::schnorrKeys(inner) => {
22290                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
22291                        inner,
22292                    )
22293                }
22294                Self::setMaxCommissionIncrease(inner) => {
22295                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encoded_size(
22296                        inner,
22297                    )
22298                }
22299                Self::setMinCommissionUpdateInterval(inner) => {
22300                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encoded_size(
22301                        inner,
22302                    )
22303                }
22304                Self::setMinDelegateAmount(inner) => {
22305                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encoded_size(
22306                        inner,
22307                    )
22308                }
22309                Self::supportsInterface(inner) => {
22310                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
22311                        inner,
22312                    )
22313                }
22314                Self::token(inner) => {
22315                    <tokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22316                }
22317                Self::transferOwnership(inner) => {
22318                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
22319                        inner,
22320                    )
22321                }
22322                Self::undelegate(inner) => {
22323                    <undelegateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22324                }
22325                Self::undelegations(inner) => {
22326                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encoded_size(
22327                        inner,
22328                    )
22329                }
22330                Self::unpause(inner) => {
22331                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22332                }
22333                Self::updateCommission(inner) => {
22334                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
22335                        inner,
22336                    )
22337                }
22338                Self::updateConsensusKeys(inner) => {
22339                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encoded_size(
22340                        inner,
22341                    )
22342                }
22343                Self::updateConsensusKeysV2(inner) => {
22344                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
22345                        inner,
22346                    )
22347                }
22348                Self::updateExitEscrowPeriod(inner) => {
22349                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
22350                        inner,
22351                    )
22352                }
22353                Self::updateMetadataUri(inner) => {
22354                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
22355                        inner,
22356                    )
22357                }
22358                Self::upgradeToAndCall(inner) => {
22359                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
22360                        inner,
22361                    )
22362                }
22363                Self::validateMetadataUri(inner) => {
22364                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encoded_size(
22365                        inner,
22366                    )
22367                }
22368                Self::validatorExits(inner) => {
22369                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encoded_size(
22370                        inner,
22371                    )
22372                }
22373                Self::validators(inner) => {
22374                    <validatorsCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
22375                }
22376            }
22377        }
22378        #[inline]
22379        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
22380            match self {
22381                Self::DEFAULT_ADMIN_ROLE(inner) => {
22382                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
22383                        inner,
22384                        out,
22385                    )
22386                }
22387                Self::MAX_COMMISSION_BPS(inner) => {
22388                    <MAX_COMMISSION_BPSCall as alloy_sol_types::SolCall>::abi_encode_raw(
22389                        inner,
22390                        out,
22391                    )
22392                }
22393                Self::MAX_EXIT_ESCROW_PERIOD(inner) => {
22394                    <MAX_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
22395                        inner,
22396                        out,
22397                    )
22398                }
22399                Self::MAX_METADATA_URI_LENGTH(inner) => {
22400                    <MAX_METADATA_URI_LENGTHCall as alloy_sol_types::SolCall>::abi_encode_raw(
22401                        inner,
22402                        out,
22403                    )
22404                }
22405                Self::MIN_EXIT_ESCROW_PERIOD(inner) => {
22406                    <MIN_EXIT_ESCROW_PERIODCall as alloy_sol_types::SolCall>::abi_encode_raw(
22407                        inner,
22408                        out,
22409                    )
22410                }
22411                Self::PAUSER_ROLE(inner) => {
22412                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
22413                        inner,
22414                        out,
22415                    )
22416                }
22417                Self::UPGRADE_INTERFACE_VERSION(inner) => {
22418                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
22419                        inner,
22420                        out,
22421                    )
22422                }
22423                Self::_hashBlsKey(inner) => {
22424                    <_hashBlsKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
22425                        inner,
22426                        out,
22427                    )
22428                }
22429                Self::activeStake(inner) => {
22430                    <activeStakeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22431                        inner,
22432                        out,
22433                    )
22434                }
22435                Self::blsKeys(inner) => {
22436                    <blsKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22437                }
22438                Self::claimValidatorExit(inner) => {
22439                    <claimValidatorExitCall as alloy_sol_types::SolCall>::abi_encode_raw(
22440                        inner,
22441                        out,
22442                    )
22443                }
22444                Self::claimWithdrawal(inner) => {
22445                    <claimWithdrawalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22446                        inner,
22447                        out,
22448                    )
22449                }
22450                Self::commissionTracking(inner) => {
22451                    <commissionTrackingCall as alloy_sol_types::SolCall>::abi_encode_raw(
22452                        inner,
22453                        out,
22454                    )
22455                }
22456                Self::delegate(inner) => {
22457                    <delegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22458                        inner,
22459                        out,
22460                    )
22461                }
22462                Self::delegations(inner) => {
22463                    <delegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22464                        inner,
22465                        out,
22466                    )
22467                }
22468                Self::deregisterValidator(inner) => {
22469                    <deregisterValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22470                        inner,
22471                        out,
22472                    )
22473                }
22474                Self::exitEscrowPeriod(inner) => {
22475                    <exitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22476                        inner,
22477                        out,
22478                    )
22479                }
22480                Self::getRoleAdmin(inner) => {
22481                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
22482                        inner,
22483                        out,
22484                    )
22485                }
22486                Self::getUndelegation(inner) => {
22487                    <getUndelegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
22488                        inner,
22489                        out,
22490                    )
22491                }
22492                Self::getVersion(inner) => {
22493                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22494                        inner,
22495                        out,
22496                    )
22497                }
22498                Self::grantRole(inner) => {
22499                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22500                        inner,
22501                        out,
22502                    )
22503                }
22504                Self::hasRole(inner) => {
22505                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22506                }
22507                Self::initialize(inner) => {
22508                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
22509                        inner,
22510                        out,
22511                    )
22512                }
22513                Self::initializeV2(inner) => {
22514                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22515                        inner,
22516                        out,
22517                    )
22518                }
22519                Self::initializedAtBlock(inner) => {
22520                    <initializedAtBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
22521                        inner,
22522                        out,
22523                    )
22524                }
22525                Self::lightClient(inner) => {
22526                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
22527                        inner,
22528                        out,
22529                    )
22530                }
22531                Self::maxCommissionIncrease(inner) => {
22532                    <maxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22533                        inner,
22534                        out,
22535                    )
22536                }
22537                Self::minCommissionIncreaseInterval(inner) => {
22538                    <minCommissionIncreaseIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22539                        inner,
22540                        out,
22541                    )
22542                }
22543                Self::minDelegateAmount(inner) => {
22544                    <minDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22545                        inner,
22546                        out,
22547                    )
22548                }
22549                Self::owner(inner) => {
22550                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22551                }
22552                Self::pause(inner) => {
22553                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22554                }
22555                Self::paused(inner) => {
22556                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22557                }
22558                Self::proxiableUUID(inner) => {
22559                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
22560                        inner,
22561                        out,
22562                    )
22563                }
22564                Self::registerValidator(inner) => {
22565                    <registerValidatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
22566                        inner,
22567                        out,
22568                    )
22569                }
22570                Self::registerValidatorV2(inner) => {
22571                    <registerValidatorV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22572                        inner,
22573                        out,
22574                    )
22575                }
22576                Self::renounceOwnership(inner) => {
22577                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22578                        inner,
22579                        out,
22580                    )
22581                }
22582                Self::renounceRole(inner) => {
22583                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22584                        inner,
22585                        out,
22586                    )
22587                }
22588                Self::revokeRole(inner) => {
22589                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
22590                        inner,
22591                        out,
22592                    )
22593                }
22594                Self::schnorrKeys(inner) => {
22595                    <schnorrKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22596                        inner,
22597                        out,
22598                    )
22599                }
22600                Self::setMaxCommissionIncrease(inner) => {
22601                    <setMaxCommissionIncreaseCall as alloy_sol_types::SolCall>::abi_encode_raw(
22602                        inner,
22603                        out,
22604                    )
22605                }
22606                Self::setMinCommissionUpdateInterval(inner) => {
22607                    <setMinCommissionUpdateIntervalCall as alloy_sol_types::SolCall>::abi_encode_raw(
22608                        inner,
22609                        out,
22610                    )
22611                }
22612                Self::setMinDelegateAmount(inner) => {
22613                    <setMinDelegateAmountCall as alloy_sol_types::SolCall>::abi_encode_raw(
22614                        inner,
22615                        out,
22616                    )
22617                }
22618                Self::supportsInterface(inner) => {
22619                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
22620                        inner,
22621                        out,
22622                    )
22623                }
22624                Self::token(inner) => {
22625                    <tokenCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22626                }
22627                Self::transferOwnership(inner) => {
22628                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
22629                        inner,
22630                        out,
22631                    )
22632                }
22633                Self::undelegate(inner) => {
22634                    <undelegateCall as alloy_sol_types::SolCall>::abi_encode_raw(
22635                        inner,
22636                        out,
22637                    )
22638                }
22639                Self::undelegations(inner) => {
22640                    <undelegationsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22641                        inner,
22642                        out,
22643                    )
22644                }
22645                Self::unpause(inner) => {
22646                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
22647                }
22648                Self::updateCommission(inner) => {
22649                    <updateCommissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
22650                        inner,
22651                        out,
22652                    )
22653                }
22654                Self::updateConsensusKeys(inner) => {
22655                    <updateConsensusKeysCall as alloy_sol_types::SolCall>::abi_encode_raw(
22656                        inner,
22657                        out,
22658                    )
22659                }
22660                Self::updateConsensusKeysV2(inner) => {
22661                    <updateConsensusKeysV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
22662                        inner,
22663                        out,
22664                    )
22665                }
22666                Self::updateExitEscrowPeriod(inner) => {
22667                    <updateExitEscrowPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
22668                        inner,
22669                        out,
22670                    )
22671                }
22672                Self::updateMetadataUri(inner) => {
22673                    <updateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22674                        inner,
22675                        out,
22676                    )
22677                }
22678                Self::upgradeToAndCall(inner) => {
22679                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
22680                        inner,
22681                        out,
22682                    )
22683                }
22684                Self::validateMetadataUri(inner) => {
22685                    <validateMetadataUriCall as alloy_sol_types::SolCall>::abi_encode_raw(
22686                        inner,
22687                        out,
22688                    )
22689                }
22690                Self::validatorExits(inner) => {
22691                    <validatorExitsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22692                        inner,
22693                        out,
22694                    )
22695                }
22696                Self::validators(inner) => {
22697                    <validatorsCall as alloy_sol_types::SolCall>::abi_encode_raw(
22698                        inner,
22699                        out,
22700                    )
22701                }
22702            }
22703        }
22704    }
22705    ///Container for all the [`StakeTableV2`](self) custom errors.
22706    #[derive(Clone)]
22707    #[derive(serde::Serialize, serde::Deserialize)]
22708    #[derive(Debug, PartialEq, Eq, Hash)]
22709    pub enum StakeTableV2Errors {
22710        #[allow(missing_docs)]
22711        AccessControlBadConfirmation(AccessControlBadConfirmation),
22712        #[allow(missing_docs)]
22713        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
22714        #[allow(missing_docs)]
22715        AddressEmptyCode(AddressEmptyCode),
22716        #[allow(missing_docs)]
22717        BLSSigIsInfinity(BLSSigIsInfinity),
22718        #[allow(missing_docs)]
22719        BLSSigVerificationFailed(BLSSigVerificationFailed),
22720        #[allow(missing_docs)]
22721        BLSVKIsInfinity(BLSVKIsInfinity),
22722        #[allow(missing_docs)]
22723        BN254PairingProdFailed(BN254PairingProdFailed),
22724        #[allow(missing_docs)]
22725        BlsKeyAlreadyUsed(BlsKeyAlreadyUsed),
22726        #[allow(missing_docs)]
22727        CommissionAlreadyInitialized(CommissionAlreadyInitialized),
22728        #[allow(missing_docs)]
22729        CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax),
22730        #[allow(missing_docs)]
22731        CommissionUnchanged(CommissionUnchanged),
22732        #[allow(missing_docs)]
22733        CommissionUpdateTooSoon(CommissionUpdateTooSoon),
22734        #[allow(missing_docs)]
22735        DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced),
22736        #[allow(missing_docs)]
22737        DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked),
22738        #[allow(missing_docs)]
22739        DelegateAmountTooSmall(DelegateAmountTooSmall),
22740        #[allow(missing_docs)]
22741        DeprecatedFunction(DeprecatedFunction),
22742        #[allow(missing_docs)]
22743        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
22744        #[allow(missing_docs)]
22745        ERC1967NonPayable(ERC1967NonPayable),
22746        #[allow(missing_docs)]
22747        EnforcedPause(EnforcedPause),
22748        #[allow(missing_docs)]
22749        ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid),
22750        #[allow(missing_docs)]
22751        ExpectedPause(ExpectedPause),
22752        #[allow(missing_docs)]
22753        FailedInnerCall(FailedInnerCall),
22754        #[allow(missing_docs)]
22755        InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance),
22756        #[allow(missing_docs)]
22757        InsufficientAllowance(InsufficientAllowance),
22758        #[allow(missing_docs)]
22759        InsufficientBalance(InsufficientBalance),
22760        #[allow(missing_docs)]
22761        InvalidCommission(InvalidCommission),
22762        #[allow(missing_docs)]
22763        InvalidG1(InvalidG1),
22764        #[allow(missing_docs)]
22765        InvalidInitialization(InvalidInitialization),
22766        #[allow(missing_docs)]
22767        InvalidMetadataUriLength(InvalidMetadataUriLength),
22768        #[allow(missing_docs)]
22769        InvalidRateLimitParameters(InvalidRateLimitParameters),
22770        #[allow(missing_docs)]
22771        InvalidSchnorrSig(InvalidSchnorrSig),
22772        #[allow(missing_docs)]
22773        InvalidSchnorrVK(InvalidSchnorrVK),
22774        #[allow(missing_docs)]
22775        MinDelegateAmountTooSmall(MinDelegateAmountTooSmall),
22776        #[allow(missing_docs)]
22777        NoUndelegationFound(NoUndelegationFound),
22778        #[allow(missing_docs)]
22779        NotInitializing(NotInitializing),
22780        #[allow(missing_docs)]
22781        NothingToWithdraw(NothingToWithdraw),
22782        #[allow(missing_docs)]
22783        OwnableInvalidOwner(OwnableInvalidOwner),
22784        #[allow(missing_docs)]
22785        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
22786        #[allow(missing_docs)]
22787        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
22788        #[allow(missing_docs)]
22789        PowPrecompileFailed(PowPrecompileFailed),
22790        #[allow(missing_docs)]
22791        PrematureWithdrawal(PrematureWithdrawal),
22792        #[allow(missing_docs)]
22793        SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed),
22794        #[allow(missing_docs)]
22795        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
22796        #[allow(missing_docs)]
22797        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
22798        #[allow(missing_docs)]
22799        UndelegationAlreadyExists(UndelegationAlreadyExists),
22800        #[allow(missing_docs)]
22801        ValidatorAlreadyExited(ValidatorAlreadyExited),
22802        #[allow(missing_docs)]
22803        ValidatorAlreadyRegistered(ValidatorAlreadyRegistered),
22804        #[allow(missing_docs)]
22805        ValidatorInactive(ValidatorInactive),
22806        #[allow(missing_docs)]
22807        ValidatorNotExited(ValidatorNotExited),
22808        #[allow(missing_docs)]
22809        ZeroAddress(ZeroAddress),
22810        #[allow(missing_docs)]
22811        ZeroAmount(ZeroAmount),
22812    }
22813    impl StakeTableV2Errors {
22814        /// All the selectors of this enum.
22815        ///
22816        /// Note that the selectors might not be in the same order as the variants.
22817        /// No guarantees are made about the order of the selectors.
22818        ///
22819        /// Prefer using `SolInterface` methods instead.
22820        pub const SELECTORS: &'static [[u8; 4usize]] = &[
22821            [1u8, 181u8, 20u8, 174u8],
22822            [6u8, 207u8, 67u8, 143u8],
22823            [12u8, 237u8, 62u8, 80u8],
22824            [17u8, 140u8, 218u8, 167u8],
22825            [20u8, 37u8, 234u8, 66u8],
22826            [22u8, 235u8, 148u8, 203u8],
22827            [30u8, 79u8, 189u8, 247u8],
22828            [31u8, 42u8, 32u8, 5u8],
22829            [35u8, 159u8, 245u8, 127u8],
22830            [37u8, 173u8, 72u8, 202u8],
22831            [42u8, 27u8, 45u8, 216u8],
22832            [47u8, 171u8, 146u8, 202u8],
22833            [50u8, 116u8, 250u8, 100u8],
22834            [66u8, 71u8, 6u8, 135u8],
22835            [76u8, 156u8, 140u8, 227u8],
22836            [80u8, 129u8, 78u8, 16u8],
22837            [80u8, 138u8, 121u8, 63u8],
22838            [90u8, 119u8, 67u8, 87u8],
22839            [102u8, 151u8, 178u8, 50u8],
22840            [103u8, 78u8, 142u8, 243u8],
22841            [116u8, 39u8, 35u8, 50u8],
22842            [123u8, 38u8, 158u8, 146u8],
22843            [125u8, 41u8, 135u8, 49u8],
22844            [139u8, 120u8, 99u8, 29u8],
22845            [141u8, 252u8, 32u8, 43u8],
22846            [144u8, 184u8, 103u8, 138u8],
22847            [146u8, 102u8, 83u8, 81u8],
22848            [153u8, 115u8, 247u8, 216u8],
22849            [153u8, 150u8, 179u8, 21u8],
22850            [158u8, 120u8, 209u8, 76u8],
22851            [170u8, 29u8, 73u8, 164u8],
22852            [174u8, 73u8, 59u8, 3u8],
22853            [176u8, 181u8, 251u8, 153u8],
22854            [179u8, 152u8, 151u8, 159u8],
22855            [181u8, 36u8, 253u8, 106u8],
22856            [181u8, 126u8, 33u8, 223u8],
22857            [188u8, 134u8, 197u8, 154u8],
22858            [194u8, 6u8, 51u8, 79u8],
22859            [194u8, 11u8, 172u8, 148u8],
22860            [194u8, 215u8, 248u8, 19u8],
22861            [208u8, 208u8, 79u8, 96u8],
22862            [212u8, 35u8, 164u8, 241u8],
22863            [215u8, 230u8, 188u8, 248u8],
22864            [217u8, 46u8, 35u8, 61u8],
22865            [217u8, 60u8, 6u8, 101u8],
22866            [220u8, 129u8, 219u8, 133u8],
22867            [224u8, 124u8, 141u8, 186u8],
22868            [226u8, 81u8, 125u8, 63u8],
22869            [234u8, 180u8, 169u8, 99u8],
22870            [242u8, 83u8, 20u8, 166u8],
22871            [249u8, 46u8, 232u8, 169u8],
22872        ];
22873        /// The names of the variants in the same order as `SELECTORS`.
22874        pub const VARIANT_NAMES: &'static [&'static str] = &[
22875            ::core::stringify!(BlsKeyAlreadyUsed),
22876            ::core::stringify!(InvalidSchnorrVK),
22877            ::core::stringify!(BLSSigVerificationFailed),
22878            ::core::stringify!(OwnableUnauthorizedAccount),
22879            ::core::stringify!(FailedInnerCall),
22880            ::core::stringify!(CommissionUpdateTooSoon),
22881            ::core::stringify!(OwnableInvalidOwner),
22882            ::core::stringify!(ZeroAmount),
22883            ::core::stringify!(InvalidMetadataUriLength),
22884            ::core::stringify!(CommissionIncreaseExceedsMax),
22885            ::core::stringify!(InsufficientAllowance),
22886            ::core::stringify!(OwnershipCannotBeRenounced),
22887            ::core::stringify!(PowPrecompileFailed),
22888            ::core::stringify!(InvalidSchnorrSig),
22889            ::core::stringify!(ERC1967InvalidImplementation),
22890            ::core::stringify!(CommissionAlreadyInitialized),
22891            ::core::stringify!(ValidatorInactive),
22892            ::core::stringify!(PrematureWithdrawal),
22893            ::core::stringify!(AccessControlBadConfirmation),
22894            ::core::stringify!(InvalidRateLimitParameters),
22895            ::core::stringify!(BLSSigIsInfinity),
22896            ::core::stringify!(InitialActiveStakeExceedsBalance),
22897            ::core::stringify!(DelegateAmountTooSmall),
22898            ::core::stringify!(DefaultAdminCannotBeRenounced),
22899            ::core::stringify!(ExpectedPause),
22900            ::core::stringify!(MinDelegateAmountTooSmall),
22901            ::core::stringify!(InsufficientBalance),
22902            ::core::stringify!(ValidatorAlreadyRegistered),
22903            ::core::stringify!(AddressEmptyCode),
22904            ::core::stringify!(InvalidG1),
22905            ::core::stringify!(UUPSUnsupportedProxiableUUID),
22906            ::core::stringify!(SchnorrKeyAlreadyUsed),
22907            ::core::stringify!(DefaultAdminCannotBeRevoked),
22908            ::core::stringify!(ERC1967NonPayable),
22909            ::core::stringify!(NoUndelegationFound),
22910            ::core::stringify!(ExitEscrowPeriodInvalid),
22911            ::core::stringify!(BLSVKIsInfinity),
22912            ::core::stringify!(BN254PairingProdFailed),
22913            ::core::stringify!(CommissionUnchanged),
22914            ::core::stringify!(DeprecatedFunction),
22915            ::core::stringify!(NothingToWithdraw),
22916            ::core::stringify!(UndelegationAlreadyExists),
22917            ::core::stringify!(NotInitializing),
22918            ::core::stringify!(ZeroAddress),
22919            ::core::stringify!(EnforcedPause),
22920            ::core::stringify!(InvalidCommission),
22921            ::core::stringify!(UUPSUnauthorizedCallContext),
22922            ::core::stringify!(AccessControlUnauthorizedAccount),
22923            ::core::stringify!(ValidatorAlreadyExited),
22924            ::core::stringify!(ValidatorNotExited),
22925            ::core::stringify!(InvalidInitialization),
22926        ];
22927        /// The signatures in the same order as `SELECTORS`.
22928        pub const SIGNATURES: &'static [&'static str] = &[
22929            <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22930            <InvalidSchnorrVK as alloy_sol_types::SolError>::SIGNATURE,
22931            <BLSSigVerificationFailed as alloy_sol_types::SolError>::SIGNATURE,
22932            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22933            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
22934            <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SIGNATURE,
22935            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
22936            <ZeroAmount as alloy_sol_types::SolError>::SIGNATURE,
22937            <InvalidMetadataUriLength as alloy_sol_types::SolError>::SIGNATURE,
22938            <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SIGNATURE,
22939            <InsufficientAllowance as alloy_sol_types::SolError>::SIGNATURE,
22940            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22941            <PowPrecompileFailed as alloy_sol_types::SolError>::SIGNATURE,
22942            <InvalidSchnorrSig as alloy_sol_types::SolError>::SIGNATURE,
22943            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
22944            <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SIGNATURE,
22945            <ValidatorInactive as alloy_sol_types::SolError>::SIGNATURE,
22946            <PrematureWithdrawal as alloy_sol_types::SolError>::SIGNATURE,
22947            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
22948            <InvalidRateLimitParameters as alloy_sol_types::SolError>::SIGNATURE,
22949            <BLSSigIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
22950            <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SIGNATURE,
22951            <DelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22952            <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
22953            <ExpectedPause as alloy_sol_types::SolError>::SIGNATURE,
22954            <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SIGNATURE,
22955            <InsufficientBalance as alloy_sol_types::SolError>::SIGNATURE,
22956            <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SIGNATURE,
22957            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
22958            <InvalidG1 as alloy_sol_types::SolError>::SIGNATURE,
22959            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
22960            <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SIGNATURE,
22961            <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SIGNATURE,
22962            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
22963            <NoUndelegationFound as alloy_sol_types::SolError>::SIGNATURE,
22964            <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SIGNATURE,
22965            <BLSVKIsInfinity as alloy_sol_types::SolError>::SIGNATURE,
22966            <BN254PairingProdFailed as alloy_sol_types::SolError>::SIGNATURE,
22967            <CommissionUnchanged as alloy_sol_types::SolError>::SIGNATURE,
22968            <DeprecatedFunction as alloy_sol_types::SolError>::SIGNATURE,
22969            <NothingToWithdraw as alloy_sol_types::SolError>::SIGNATURE,
22970            <UndelegationAlreadyExists as alloy_sol_types::SolError>::SIGNATURE,
22971            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
22972            <ZeroAddress as alloy_sol_types::SolError>::SIGNATURE,
22973            <EnforcedPause as alloy_sol_types::SolError>::SIGNATURE,
22974            <InvalidCommission as alloy_sol_types::SolError>::SIGNATURE,
22975            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
22976            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
22977            <ValidatorAlreadyExited as alloy_sol_types::SolError>::SIGNATURE,
22978            <ValidatorNotExited as alloy_sol_types::SolError>::SIGNATURE,
22979            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
22980        ];
22981        /// Returns the signature for the given selector, if known.
22982        #[inline]
22983        pub fn signature_by_selector(
22984            selector: [u8; 4usize],
22985        ) -> ::core::option::Option<&'static str> {
22986            match Self::SELECTORS.binary_search(&selector) {
22987                ::core::result::Result::Ok(idx) => {
22988                    ::core::option::Option::Some(Self::SIGNATURES[idx])
22989                }
22990                ::core::result::Result::Err(_) => ::core::option::Option::None,
22991            }
22992        }
22993        /// Returns the enum variant name for the given selector, if known.
22994        #[inline]
22995        pub fn name_by_selector(
22996            selector: [u8; 4usize],
22997        ) -> ::core::option::Option<&'static str> {
22998            let sig = Self::signature_by_selector(selector)?;
22999            sig.split_once('(').map(|(name, _)| name)
23000        }
23001    }
23002    #[automatically_derived]
23003    impl alloy_sol_types::SolInterface for StakeTableV2Errors {
23004        const NAME: &'static str = "StakeTableV2Errors";
23005        const MIN_DATA_LENGTH: usize = 0usize;
23006        const COUNT: usize = 51usize;
23007        #[inline]
23008        fn selector(&self) -> [u8; 4] {
23009            match self {
23010                Self::AccessControlBadConfirmation(_) => {
23011                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
23012                }
23013                Self::AccessControlUnauthorizedAccount(_) => {
23014                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
23015                }
23016                Self::AddressEmptyCode(_) => {
23017                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
23018                }
23019                Self::BLSSigIsInfinity(_) => {
23020                    <BLSSigIsInfinity as alloy_sol_types::SolError>::SELECTOR
23021                }
23022                Self::BLSSigVerificationFailed(_) => {
23023                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::SELECTOR
23024                }
23025                Self::BLSVKIsInfinity(_) => {
23026                    <BLSVKIsInfinity as alloy_sol_types::SolError>::SELECTOR
23027                }
23028                Self::BN254PairingProdFailed(_) => {
23029                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
23030                }
23031                Self::BlsKeyAlreadyUsed(_) => {
23032                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
23033                }
23034                Self::CommissionAlreadyInitialized(_) => {
23035                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::SELECTOR
23036                }
23037                Self::CommissionIncreaseExceedsMax(_) => {
23038                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::SELECTOR
23039                }
23040                Self::CommissionUnchanged(_) => {
23041                    <CommissionUnchanged as alloy_sol_types::SolError>::SELECTOR
23042                }
23043                Self::CommissionUpdateTooSoon(_) => {
23044                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::SELECTOR
23045                }
23046                Self::DefaultAdminCannotBeRenounced(_) => {
23047                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
23048                }
23049                Self::DefaultAdminCannotBeRevoked(_) => {
23050                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::SELECTOR
23051                }
23052                Self::DelegateAmountTooSmall(_) => {
23053                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
23054                }
23055                Self::DeprecatedFunction(_) => {
23056                    <DeprecatedFunction as alloy_sol_types::SolError>::SELECTOR
23057                }
23058                Self::ERC1967InvalidImplementation(_) => {
23059                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
23060                }
23061                Self::ERC1967NonPayable(_) => {
23062                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
23063                }
23064                Self::EnforcedPause(_) => {
23065                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
23066                }
23067                Self::ExitEscrowPeriodInvalid(_) => {
23068                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::SELECTOR
23069                }
23070                Self::ExpectedPause(_) => {
23071                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
23072                }
23073                Self::FailedInnerCall(_) => {
23074                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
23075                }
23076                Self::InitialActiveStakeExceedsBalance(_) => {
23077                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::SELECTOR
23078                }
23079                Self::InsufficientAllowance(_) => {
23080                    <InsufficientAllowance as alloy_sol_types::SolError>::SELECTOR
23081                }
23082                Self::InsufficientBalance(_) => {
23083                    <InsufficientBalance as alloy_sol_types::SolError>::SELECTOR
23084                }
23085                Self::InvalidCommission(_) => {
23086                    <InvalidCommission as alloy_sol_types::SolError>::SELECTOR
23087                }
23088                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
23089                Self::InvalidInitialization(_) => {
23090                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
23091                }
23092                Self::InvalidMetadataUriLength(_) => {
23093                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::SELECTOR
23094                }
23095                Self::InvalidRateLimitParameters(_) => {
23096                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::SELECTOR
23097                }
23098                Self::InvalidSchnorrSig(_) => {
23099                    <InvalidSchnorrSig as alloy_sol_types::SolError>::SELECTOR
23100                }
23101                Self::InvalidSchnorrVK(_) => {
23102                    <InvalidSchnorrVK as alloy_sol_types::SolError>::SELECTOR
23103                }
23104                Self::MinDelegateAmountTooSmall(_) => {
23105                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::SELECTOR
23106                }
23107                Self::NoUndelegationFound(_) => {
23108                    <NoUndelegationFound as alloy_sol_types::SolError>::SELECTOR
23109                }
23110                Self::NotInitializing(_) => {
23111                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
23112                }
23113                Self::NothingToWithdraw(_) => {
23114                    <NothingToWithdraw as alloy_sol_types::SolError>::SELECTOR
23115                }
23116                Self::OwnableInvalidOwner(_) => {
23117                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
23118                }
23119                Self::OwnableUnauthorizedAccount(_) => {
23120                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
23121                }
23122                Self::OwnershipCannotBeRenounced(_) => {
23123                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
23124                }
23125                Self::PowPrecompileFailed(_) => {
23126                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
23127                }
23128                Self::PrematureWithdrawal(_) => {
23129                    <PrematureWithdrawal as alloy_sol_types::SolError>::SELECTOR
23130                }
23131                Self::SchnorrKeyAlreadyUsed(_) => {
23132                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::SELECTOR
23133                }
23134                Self::UUPSUnauthorizedCallContext(_) => {
23135                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
23136                }
23137                Self::UUPSUnsupportedProxiableUUID(_) => {
23138                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
23139                }
23140                Self::UndelegationAlreadyExists(_) => {
23141                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::SELECTOR
23142                }
23143                Self::ValidatorAlreadyExited(_) => {
23144                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::SELECTOR
23145                }
23146                Self::ValidatorAlreadyRegistered(_) => {
23147                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
23148                }
23149                Self::ValidatorInactive(_) => {
23150                    <ValidatorInactive as alloy_sol_types::SolError>::SELECTOR
23151                }
23152                Self::ValidatorNotExited(_) => {
23153                    <ValidatorNotExited as alloy_sol_types::SolError>::SELECTOR
23154                }
23155                Self::ZeroAddress(_) => {
23156                    <ZeroAddress as alloy_sol_types::SolError>::SELECTOR
23157                }
23158                Self::ZeroAmount(_) => {
23159                    <ZeroAmount as alloy_sol_types::SolError>::SELECTOR
23160                }
23161            }
23162        }
23163        #[inline]
23164        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
23165            Self::SELECTORS.get(i).copied()
23166        }
23167        #[inline]
23168        fn valid_selector(selector: [u8; 4]) -> bool {
23169            Self::SELECTORS.binary_search(&selector).is_ok()
23170        }
23171        #[inline]
23172        #[allow(non_snake_case)]
23173        fn abi_decode_raw(
23174            selector: [u8; 4],
23175            data: &[u8],
23176        ) -> alloy_sol_types::Result<Self> {
23177            Self::abi_decode_raw_with_config(
23178                selector,
23179                data,
23180                alloy_sol_types::abi::AbiDecoderConfig::default(),
23181            )
23182        }
23183        #[inline]
23184        #[allow(non_snake_case)]
23185        fn abi_decode_raw_with_config(
23186            selector: [u8; 4],
23187            data: &[u8],
23188            config: alloy_sol_types::abi::AbiDecoderConfig,
23189        ) -> alloy_sol_types::Result<Self> {
23190            static DECODE_SHIMS: &[fn(
23191                &[u8],
23192                alloy_sol_types::abi::AbiDecoderConfig,
23193            ) -> alloy_sol_types::Result<StakeTableV2Errors>] = &[
23194                {
23195                    fn BlsKeyAlreadyUsed(
23196                        data: &[u8],
23197                        config: alloy_sol_types::abi::AbiDecoderConfig,
23198                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23199                        <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23200                                data,
23201                                config,
23202                            )
23203                            .map(StakeTableV2Errors::BlsKeyAlreadyUsed)
23204                    }
23205                    BlsKeyAlreadyUsed
23206                },
23207                {
23208                    fn InvalidSchnorrVK(
23209                        data: &[u8],
23210                        config: alloy_sol_types::abi::AbiDecoderConfig,
23211                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23212                        <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23213                                data,
23214                                config,
23215                            )
23216                            .map(StakeTableV2Errors::InvalidSchnorrVK)
23217                    }
23218                    InvalidSchnorrVK
23219                },
23220                {
23221                    fn BLSSigVerificationFailed(
23222                        data: &[u8],
23223                        config: alloy_sol_types::abi::AbiDecoderConfig,
23224                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23225                        <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23226                                data,
23227                                config,
23228                            )
23229                            .map(StakeTableV2Errors::BLSSigVerificationFailed)
23230                    }
23231                    BLSSigVerificationFailed
23232                },
23233                {
23234                    fn OwnableUnauthorizedAccount(
23235                        data: &[u8],
23236                        config: alloy_sol_types::abi::AbiDecoderConfig,
23237                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23238                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23239                                data,
23240                                config,
23241                            )
23242                            .map(StakeTableV2Errors::OwnableUnauthorizedAccount)
23243                    }
23244                    OwnableUnauthorizedAccount
23245                },
23246                {
23247                    fn FailedInnerCall(
23248                        data: &[u8],
23249                        config: alloy_sol_types::abi::AbiDecoderConfig,
23250                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23251                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23252                                data,
23253                                config,
23254                            )
23255                            .map(StakeTableV2Errors::FailedInnerCall)
23256                    }
23257                    FailedInnerCall
23258                },
23259                {
23260                    fn CommissionUpdateTooSoon(
23261                        data: &[u8],
23262                        config: alloy_sol_types::abi::AbiDecoderConfig,
23263                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23264                        <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23265                                data,
23266                                config,
23267                            )
23268                            .map(StakeTableV2Errors::CommissionUpdateTooSoon)
23269                    }
23270                    CommissionUpdateTooSoon
23271                },
23272                {
23273                    fn OwnableInvalidOwner(
23274                        data: &[u8],
23275                        config: alloy_sol_types::abi::AbiDecoderConfig,
23276                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23277                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23278                                data,
23279                                config,
23280                            )
23281                            .map(StakeTableV2Errors::OwnableInvalidOwner)
23282                    }
23283                    OwnableInvalidOwner
23284                },
23285                {
23286                    fn ZeroAmount(
23287                        data: &[u8],
23288                        config: alloy_sol_types::abi::AbiDecoderConfig,
23289                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23290                        <ZeroAmount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23291                                data,
23292                                config,
23293                            )
23294                            .map(StakeTableV2Errors::ZeroAmount)
23295                    }
23296                    ZeroAmount
23297                },
23298                {
23299                    fn InvalidMetadataUriLength(
23300                        data: &[u8],
23301                        config: alloy_sol_types::abi::AbiDecoderConfig,
23302                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23303                        <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23304                                data,
23305                                config,
23306                            )
23307                            .map(StakeTableV2Errors::InvalidMetadataUriLength)
23308                    }
23309                    InvalidMetadataUriLength
23310                },
23311                {
23312                    fn CommissionIncreaseExceedsMax(
23313                        data: &[u8],
23314                        config: alloy_sol_types::abi::AbiDecoderConfig,
23315                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23316                        <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23317                                data,
23318                                config,
23319                            )
23320                            .map(StakeTableV2Errors::CommissionIncreaseExceedsMax)
23321                    }
23322                    CommissionIncreaseExceedsMax
23323                },
23324                {
23325                    fn InsufficientAllowance(
23326                        data: &[u8],
23327                        config: alloy_sol_types::abi::AbiDecoderConfig,
23328                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23329                        <InsufficientAllowance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23330                                data,
23331                                config,
23332                            )
23333                            .map(StakeTableV2Errors::InsufficientAllowance)
23334                    }
23335                    InsufficientAllowance
23336                },
23337                {
23338                    fn OwnershipCannotBeRenounced(
23339                        data: &[u8],
23340                        config: alloy_sol_types::abi::AbiDecoderConfig,
23341                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23342                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23343                                data,
23344                                config,
23345                            )
23346                            .map(StakeTableV2Errors::OwnershipCannotBeRenounced)
23347                    }
23348                    OwnershipCannotBeRenounced
23349                },
23350                {
23351                    fn PowPrecompileFailed(
23352                        data: &[u8],
23353                        config: alloy_sol_types::abi::AbiDecoderConfig,
23354                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23355                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23356                                data,
23357                                config,
23358                            )
23359                            .map(StakeTableV2Errors::PowPrecompileFailed)
23360                    }
23361                    PowPrecompileFailed
23362                },
23363                {
23364                    fn InvalidSchnorrSig(
23365                        data: &[u8],
23366                        config: alloy_sol_types::abi::AbiDecoderConfig,
23367                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23368                        <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23369                                data,
23370                                config,
23371                            )
23372                            .map(StakeTableV2Errors::InvalidSchnorrSig)
23373                    }
23374                    InvalidSchnorrSig
23375                },
23376                {
23377                    fn ERC1967InvalidImplementation(
23378                        data: &[u8],
23379                        config: alloy_sol_types::abi::AbiDecoderConfig,
23380                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23381                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23382                                data,
23383                                config,
23384                            )
23385                            .map(StakeTableV2Errors::ERC1967InvalidImplementation)
23386                    }
23387                    ERC1967InvalidImplementation
23388                },
23389                {
23390                    fn CommissionAlreadyInitialized(
23391                        data: &[u8],
23392                        config: alloy_sol_types::abi::AbiDecoderConfig,
23393                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23394                        <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23395                                data,
23396                                config,
23397                            )
23398                            .map(StakeTableV2Errors::CommissionAlreadyInitialized)
23399                    }
23400                    CommissionAlreadyInitialized
23401                },
23402                {
23403                    fn ValidatorInactive(
23404                        data: &[u8],
23405                        config: alloy_sol_types::abi::AbiDecoderConfig,
23406                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23407                        <ValidatorInactive as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23408                                data,
23409                                config,
23410                            )
23411                            .map(StakeTableV2Errors::ValidatorInactive)
23412                    }
23413                    ValidatorInactive
23414                },
23415                {
23416                    fn PrematureWithdrawal(
23417                        data: &[u8],
23418                        config: alloy_sol_types::abi::AbiDecoderConfig,
23419                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23420                        <PrematureWithdrawal as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23421                                data,
23422                                config,
23423                            )
23424                            .map(StakeTableV2Errors::PrematureWithdrawal)
23425                    }
23426                    PrematureWithdrawal
23427                },
23428                {
23429                    fn AccessControlBadConfirmation(
23430                        data: &[u8],
23431                        config: alloy_sol_types::abi::AbiDecoderConfig,
23432                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23433                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23434                                data,
23435                                config,
23436                            )
23437                            .map(StakeTableV2Errors::AccessControlBadConfirmation)
23438                    }
23439                    AccessControlBadConfirmation
23440                },
23441                {
23442                    fn InvalidRateLimitParameters(
23443                        data: &[u8],
23444                        config: alloy_sol_types::abi::AbiDecoderConfig,
23445                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23446                        <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23447                                data,
23448                                config,
23449                            )
23450                            .map(StakeTableV2Errors::InvalidRateLimitParameters)
23451                    }
23452                    InvalidRateLimitParameters
23453                },
23454                {
23455                    fn BLSSigIsInfinity(
23456                        data: &[u8],
23457                        config: alloy_sol_types::abi::AbiDecoderConfig,
23458                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23459                        <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23460                                data,
23461                                config,
23462                            )
23463                            .map(StakeTableV2Errors::BLSSigIsInfinity)
23464                    }
23465                    BLSSigIsInfinity
23466                },
23467                {
23468                    fn InitialActiveStakeExceedsBalance(
23469                        data: &[u8],
23470                        config: alloy_sol_types::abi::AbiDecoderConfig,
23471                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23472                        <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23473                                data,
23474                                config,
23475                            )
23476                            .map(StakeTableV2Errors::InitialActiveStakeExceedsBalance)
23477                    }
23478                    InitialActiveStakeExceedsBalance
23479                },
23480                {
23481                    fn DelegateAmountTooSmall(
23482                        data: &[u8],
23483                        config: alloy_sol_types::abi::AbiDecoderConfig,
23484                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23485                        <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23486                                data,
23487                                config,
23488                            )
23489                            .map(StakeTableV2Errors::DelegateAmountTooSmall)
23490                    }
23491                    DelegateAmountTooSmall
23492                },
23493                {
23494                    fn DefaultAdminCannotBeRenounced(
23495                        data: &[u8],
23496                        config: alloy_sol_types::abi::AbiDecoderConfig,
23497                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23498                        <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23499                                data,
23500                                config,
23501                            )
23502                            .map(StakeTableV2Errors::DefaultAdminCannotBeRenounced)
23503                    }
23504                    DefaultAdminCannotBeRenounced
23505                },
23506                {
23507                    fn ExpectedPause(
23508                        data: &[u8],
23509                        config: alloy_sol_types::abi::AbiDecoderConfig,
23510                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23511                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23512                                data,
23513                                config,
23514                            )
23515                            .map(StakeTableV2Errors::ExpectedPause)
23516                    }
23517                    ExpectedPause
23518                },
23519                {
23520                    fn MinDelegateAmountTooSmall(
23521                        data: &[u8],
23522                        config: alloy_sol_types::abi::AbiDecoderConfig,
23523                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23524                        <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23525                                data,
23526                                config,
23527                            )
23528                            .map(StakeTableV2Errors::MinDelegateAmountTooSmall)
23529                    }
23530                    MinDelegateAmountTooSmall
23531                },
23532                {
23533                    fn InsufficientBalance(
23534                        data: &[u8],
23535                        config: alloy_sol_types::abi::AbiDecoderConfig,
23536                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23537                        <InsufficientBalance as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23538                                data,
23539                                config,
23540                            )
23541                            .map(StakeTableV2Errors::InsufficientBalance)
23542                    }
23543                    InsufficientBalance
23544                },
23545                {
23546                    fn ValidatorAlreadyRegistered(
23547                        data: &[u8],
23548                        config: alloy_sol_types::abi::AbiDecoderConfig,
23549                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23550                        <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23551                                data,
23552                                config,
23553                            )
23554                            .map(StakeTableV2Errors::ValidatorAlreadyRegistered)
23555                    }
23556                    ValidatorAlreadyRegistered
23557                },
23558                {
23559                    fn AddressEmptyCode(
23560                        data: &[u8],
23561                        config: alloy_sol_types::abi::AbiDecoderConfig,
23562                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23563                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23564                                data,
23565                                config,
23566                            )
23567                            .map(StakeTableV2Errors::AddressEmptyCode)
23568                    }
23569                    AddressEmptyCode
23570                },
23571                {
23572                    fn InvalidG1(
23573                        data: &[u8],
23574                        config: alloy_sol_types::abi::AbiDecoderConfig,
23575                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23576                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23577                                data,
23578                                config,
23579                            )
23580                            .map(StakeTableV2Errors::InvalidG1)
23581                    }
23582                    InvalidG1
23583                },
23584                {
23585                    fn UUPSUnsupportedProxiableUUID(
23586                        data: &[u8],
23587                        config: alloy_sol_types::abi::AbiDecoderConfig,
23588                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23589                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23590                                data,
23591                                config,
23592                            )
23593                            .map(StakeTableV2Errors::UUPSUnsupportedProxiableUUID)
23594                    }
23595                    UUPSUnsupportedProxiableUUID
23596                },
23597                {
23598                    fn SchnorrKeyAlreadyUsed(
23599                        data: &[u8],
23600                        config: alloy_sol_types::abi::AbiDecoderConfig,
23601                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23602                        <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23603                                data,
23604                                config,
23605                            )
23606                            .map(StakeTableV2Errors::SchnorrKeyAlreadyUsed)
23607                    }
23608                    SchnorrKeyAlreadyUsed
23609                },
23610                {
23611                    fn DefaultAdminCannotBeRevoked(
23612                        data: &[u8],
23613                        config: alloy_sol_types::abi::AbiDecoderConfig,
23614                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23615                        <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23616                                data,
23617                                config,
23618                            )
23619                            .map(StakeTableV2Errors::DefaultAdminCannotBeRevoked)
23620                    }
23621                    DefaultAdminCannotBeRevoked
23622                },
23623                {
23624                    fn ERC1967NonPayable(
23625                        data: &[u8],
23626                        config: alloy_sol_types::abi::AbiDecoderConfig,
23627                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23628                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23629                                data,
23630                                config,
23631                            )
23632                            .map(StakeTableV2Errors::ERC1967NonPayable)
23633                    }
23634                    ERC1967NonPayable
23635                },
23636                {
23637                    fn NoUndelegationFound(
23638                        data: &[u8],
23639                        config: alloy_sol_types::abi::AbiDecoderConfig,
23640                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23641                        <NoUndelegationFound as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23642                                data,
23643                                config,
23644                            )
23645                            .map(StakeTableV2Errors::NoUndelegationFound)
23646                    }
23647                    NoUndelegationFound
23648                },
23649                {
23650                    fn ExitEscrowPeriodInvalid(
23651                        data: &[u8],
23652                        config: alloy_sol_types::abi::AbiDecoderConfig,
23653                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23654                        <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23655                                data,
23656                                config,
23657                            )
23658                            .map(StakeTableV2Errors::ExitEscrowPeriodInvalid)
23659                    }
23660                    ExitEscrowPeriodInvalid
23661                },
23662                {
23663                    fn BLSVKIsInfinity(
23664                        data: &[u8],
23665                        config: alloy_sol_types::abi::AbiDecoderConfig,
23666                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23667                        <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23668                                data,
23669                                config,
23670                            )
23671                            .map(StakeTableV2Errors::BLSVKIsInfinity)
23672                    }
23673                    BLSVKIsInfinity
23674                },
23675                {
23676                    fn BN254PairingProdFailed(
23677                        data: &[u8],
23678                        config: alloy_sol_types::abi::AbiDecoderConfig,
23679                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23680                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23681                                data,
23682                                config,
23683                            )
23684                            .map(StakeTableV2Errors::BN254PairingProdFailed)
23685                    }
23686                    BN254PairingProdFailed
23687                },
23688                {
23689                    fn CommissionUnchanged(
23690                        data: &[u8],
23691                        config: alloy_sol_types::abi::AbiDecoderConfig,
23692                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23693                        <CommissionUnchanged as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23694                                data,
23695                                config,
23696                            )
23697                            .map(StakeTableV2Errors::CommissionUnchanged)
23698                    }
23699                    CommissionUnchanged
23700                },
23701                {
23702                    fn DeprecatedFunction(
23703                        data: &[u8],
23704                        config: alloy_sol_types::abi::AbiDecoderConfig,
23705                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23706                        <DeprecatedFunction as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23707                                data,
23708                                config,
23709                            )
23710                            .map(StakeTableV2Errors::DeprecatedFunction)
23711                    }
23712                    DeprecatedFunction
23713                },
23714                {
23715                    fn NothingToWithdraw(
23716                        data: &[u8],
23717                        config: alloy_sol_types::abi::AbiDecoderConfig,
23718                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23719                        <NothingToWithdraw as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23720                                data,
23721                                config,
23722                            )
23723                            .map(StakeTableV2Errors::NothingToWithdraw)
23724                    }
23725                    NothingToWithdraw
23726                },
23727                {
23728                    fn UndelegationAlreadyExists(
23729                        data: &[u8],
23730                        config: alloy_sol_types::abi::AbiDecoderConfig,
23731                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23732                        <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23733                                data,
23734                                config,
23735                            )
23736                            .map(StakeTableV2Errors::UndelegationAlreadyExists)
23737                    }
23738                    UndelegationAlreadyExists
23739                },
23740                {
23741                    fn NotInitializing(
23742                        data: &[u8],
23743                        config: alloy_sol_types::abi::AbiDecoderConfig,
23744                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23745                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23746                                data,
23747                                config,
23748                            )
23749                            .map(StakeTableV2Errors::NotInitializing)
23750                    }
23751                    NotInitializing
23752                },
23753                {
23754                    fn ZeroAddress(
23755                        data: &[u8],
23756                        config: alloy_sol_types::abi::AbiDecoderConfig,
23757                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23758                        <ZeroAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23759                                data,
23760                                config,
23761                            )
23762                            .map(StakeTableV2Errors::ZeroAddress)
23763                    }
23764                    ZeroAddress
23765                },
23766                {
23767                    fn EnforcedPause(
23768                        data: &[u8],
23769                        config: alloy_sol_types::abi::AbiDecoderConfig,
23770                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23771                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23772                                data,
23773                                config,
23774                            )
23775                            .map(StakeTableV2Errors::EnforcedPause)
23776                    }
23777                    EnforcedPause
23778                },
23779                {
23780                    fn InvalidCommission(
23781                        data: &[u8],
23782                        config: alloy_sol_types::abi::AbiDecoderConfig,
23783                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23784                        <InvalidCommission as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23785                                data,
23786                                config,
23787                            )
23788                            .map(StakeTableV2Errors::InvalidCommission)
23789                    }
23790                    InvalidCommission
23791                },
23792                {
23793                    fn UUPSUnauthorizedCallContext(
23794                        data: &[u8],
23795                        config: alloy_sol_types::abi::AbiDecoderConfig,
23796                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23797                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23798                                data,
23799                                config,
23800                            )
23801                            .map(StakeTableV2Errors::UUPSUnauthorizedCallContext)
23802                    }
23803                    UUPSUnauthorizedCallContext
23804                },
23805                {
23806                    fn AccessControlUnauthorizedAccount(
23807                        data: &[u8],
23808                        config: alloy_sol_types::abi::AbiDecoderConfig,
23809                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23810                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23811                                data,
23812                                config,
23813                            )
23814                            .map(StakeTableV2Errors::AccessControlUnauthorizedAccount)
23815                    }
23816                    AccessControlUnauthorizedAccount
23817                },
23818                {
23819                    fn ValidatorAlreadyExited(
23820                        data: &[u8],
23821                        config: alloy_sol_types::abi::AbiDecoderConfig,
23822                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23823                        <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23824                                data,
23825                                config,
23826                            )
23827                            .map(StakeTableV2Errors::ValidatorAlreadyExited)
23828                    }
23829                    ValidatorAlreadyExited
23830                },
23831                {
23832                    fn ValidatorNotExited(
23833                        data: &[u8],
23834                        config: alloy_sol_types::abi::AbiDecoderConfig,
23835                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23836                        <ValidatorNotExited as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23837                                data,
23838                                config,
23839                            )
23840                            .map(StakeTableV2Errors::ValidatorNotExited)
23841                    }
23842                    ValidatorNotExited
23843                },
23844                {
23845                    fn InvalidInitialization(
23846                        data: &[u8],
23847                        config: alloy_sol_types::abi::AbiDecoderConfig,
23848                    ) -> alloy_sol_types::Result<StakeTableV2Errors> {
23849                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
23850                                data,
23851                                config,
23852                            )
23853                            .map(StakeTableV2Errors::InvalidInitialization)
23854                    }
23855                    InvalidInitialization
23856                },
23857            ];
23858            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
23859                return Err(
23860                    alloy_sol_types::Error::unknown_selector(
23861                        <Self as alloy_sol_types::SolInterface>::NAME,
23862                        selector,
23863                    ),
23864                );
23865            };
23866            DECODE_SHIMS[idx](data, config)
23867        }
23868        #[inline]
23869        #[allow(non_snake_case)]
23870        fn abi_decode_raw_validate(
23871            selector: [u8; 4],
23872            data: &[u8],
23873        ) -> alloy_sol_types::Result<Self> {
23874            Self::abi_decode_raw_with_config(
23875                selector,
23876                data,
23877                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
23878            )
23879        }
23880        #[inline]
23881        fn abi_encoded_size(&self) -> usize {
23882            match self {
23883                Self::AccessControlBadConfirmation(inner) => {
23884                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
23885                        inner,
23886                    )
23887                }
23888                Self::AccessControlUnauthorizedAccount(inner) => {
23889                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
23890                        inner,
23891                    )
23892                }
23893                Self::AddressEmptyCode(inner) => {
23894                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
23895                        inner,
23896                    )
23897                }
23898                Self::BLSSigIsInfinity(inner) => {
23899                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
23900                        inner,
23901                    )
23902                }
23903                Self::BLSSigVerificationFailed(inner) => {
23904                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encoded_size(
23905                        inner,
23906                    )
23907                }
23908                Self::BLSVKIsInfinity(inner) => {
23909                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encoded_size(
23910                        inner,
23911                    )
23912                }
23913                Self::BN254PairingProdFailed(inner) => {
23914                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
23915                        inner,
23916                    )
23917                }
23918                Self::BlsKeyAlreadyUsed(inner) => {
23919                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
23920                        inner,
23921                    )
23922                }
23923                Self::CommissionAlreadyInitialized(inner) => {
23924                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encoded_size(
23925                        inner,
23926                    )
23927                }
23928                Self::CommissionIncreaseExceedsMax(inner) => {
23929                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encoded_size(
23930                        inner,
23931                    )
23932                }
23933                Self::CommissionUnchanged(inner) => {
23934                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encoded_size(
23935                        inner,
23936                    )
23937                }
23938                Self::CommissionUpdateTooSoon(inner) => {
23939                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encoded_size(
23940                        inner,
23941                    )
23942                }
23943                Self::DefaultAdminCannotBeRenounced(inner) => {
23944                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
23945                        inner,
23946                    )
23947                }
23948                Self::DefaultAdminCannotBeRevoked(inner) => {
23949                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encoded_size(
23950                        inner,
23951                    )
23952                }
23953                Self::DelegateAmountTooSmall(inner) => {
23954                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
23955                        inner,
23956                    )
23957                }
23958                Self::DeprecatedFunction(inner) => {
23959                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encoded_size(
23960                        inner,
23961                    )
23962                }
23963                Self::ERC1967InvalidImplementation(inner) => {
23964                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
23965                        inner,
23966                    )
23967                }
23968                Self::ERC1967NonPayable(inner) => {
23969                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
23970                        inner,
23971                    )
23972                }
23973                Self::EnforcedPause(inner) => {
23974                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23975                }
23976                Self::ExitEscrowPeriodInvalid(inner) => {
23977                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encoded_size(
23978                        inner,
23979                    )
23980                }
23981                Self::ExpectedPause(inner) => {
23982                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
23983                }
23984                Self::FailedInnerCall(inner) => {
23985                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
23986                        inner,
23987                    )
23988                }
23989                Self::InitialActiveStakeExceedsBalance(inner) => {
23990                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encoded_size(
23991                        inner,
23992                    )
23993                }
23994                Self::InsufficientAllowance(inner) => {
23995                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encoded_size(
23996                        inner,
23997                    )
23998                }
23999                Self::InsufficientBalance(inner) => {
24000                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encoded_size(
24001                        inner,
24002                    )
24003                }
24004                Self::InvalidCommission(inner) => {
24005                    <InvalidCommission as alloy_sol_types::SolError>::abi_encoded_size(
24006                        inner,
24007                    )
24008                }
24009                Self::InvalidG1(inner) => {
24010                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
24011                }
24012                Self::InvalidInitialization(inner) => {
24013                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
24014                        inner,
24015                    )
24016                }
24017                Self::InvalidMetadataUriLength(inner) => {
24018                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encoded_size(
24019                        inner,
24020                    )
24021                }
24022                Self::InvalidRateLimitParameters(inner) => {
24023                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encoded_size(
24024                        inner,
24025                    )
24026                }
24027                Self::InvalidSchnorrSig(inner) => {
24028                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encoded_size(
24029                        inner,
24030                    )
24031                }
24032                Self::InvalidSchnorrVK(inner) => {
24033                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encoded_size(
24034                        inner,
24035                    )
24036                }
24037                Self::MinDelegateAmountTooSmall(inner) => {
24038                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encoded_size(
24039                        inner,
24040                    )
24041                }
24042                Self::NoUndelegationFound(inner) => {
24043                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encoded_size(
24044                        inner,
24045                    )
24046                }
24047                Self::NotInitializing(inner) => {
24048                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
24049                        inner,
24050                    )
24051                }
24052                Self::NothingToWithdraw(inner) => {
24053                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encoded_size(
24054                        inner,
24055                    )
24056                }
24057                Self::OwnableInvalidOwner(inner) => {
24058                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
24059                        inner,
24060                    )
24061                }
24062                Self::OwnableUnauthorizedAccount(inner) => {
24063                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
24064                        inner,
24065                    )
24066                }
24067                Self::OwnershipCannotBeRenounced(inner) => {
24068                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
24069                        inner,
24070                    )
24071                }
24072                Self::PowPrecompileFailed(inner) => {
24073                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
24074                        inner,
24075                    )
24076                }
24077                Self::PrematureWithdrawal(inner) => {
24078                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encoded_size(
24079                        inner,
24080                    )
24081                }
24082                Self::SchnorrKeyAlreadyUsed(inner) => {
24083                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encoded_size(
24084                        inner,
24085                    )
24086                }
24087                Self::UUPSUnauthorizedCallContext(inner) => {
24088                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
24089                        inner,
24090                    )
24091                }
24092                Self::UUPSUnsupportedProxiableUUID(inner) => {
24093                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
24094                        inner,
24095                    )
24096                }
24097                Self::UndelegationAlreadyExists(inner) => {
24098                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(
24099                        inner,
24100                    )
24101                }
24102                Self::ValidatorAlreadyExited(inner) => {
24103                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encoded_size(
24104                        inner,
24105                    )
24106                }
24107                Self::ValidatorAlreadyRegistered(inner) => {
24108                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
24109                        inner,
24110                    )
24111                }
24112                Self::ValidatorInactive(inner) => {
24113                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encoded_size(
24114                        inner,
24115                    )
24116                }
24117                Self::ValidatorNotExited(inner) => {
24118                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encoded_size(
24119                        inner,
24120                    )
24121                }
24122                Self::ZeroAddress(inner) => {
24123                    <ZeroAddress as alloy_sol_types::SolError>::abi_encoded_size(inner)
24124                }
24125                Self::ZeroAmount(inner) => {
24126                    <ZeroAmount as alloy_sol_types::SolError>::abi_encoded_size(inner)
24127                }
24128            }
24129        }
24130        #[inline]
24131        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
24132            match self {
24133                Self::AccessControlBadConfirmation(inner) => {
24134                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
24135                        inner,
24136                        out,
24137                    )
24138                }
24139                Self::AccessControlUnauthorizedAccount(inner) => {
24140                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24141                        inner,
24142                        out,
24143                    )
24144                }
24145                Self::AddressEmptyCode(inner) => {
24146                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
24147                        inner,
24148                        out,
24149                    )
24150                }
24151                Self::BLSSigIsInfinity(inner) => {
24152                    <BLSSigIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
24153                        inner,
24154                        out,
24155                    )
24156                }
24157                Self::BLSSigVerificationFailed(inner) => {
24158                    <BLSSigVerificationFailed as alloy_sol_types::SolError>::abi_encode_raw(
24159                        inner,
24160                        out,
24161                    )
24162                }
24163                Self::BLSVKIsInfinity(inner) => {
24164                    <BLSVKIsInfinity as alloy_sol_types::SolError>::abi_encode_raw(
24165                        inner,
24166                        out,
24167                    )
24168                }
24169                Self::BN254PairingProdFailed(inner) => {
24170                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
24171                        inner,
24172                        out,
24173                    )
24174                }
24175                Self::BlsKeyAlreadyUsed(inner) => {
24176                    <BlsKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24177                        inner,
24178                        out,
24179                    )
24180                }
24181                Self::CommissionAlreadyInitialized(inner) => {
24182                    <CommissionAlreadyInitialized as alloy_sol_types::SolError>::abi_encode_raw(
24183                        inner,
24184                        out,
24185                    )
24186                }
24187                Self::CommissionIncreaseExceedsMax(inner) => {
24188                    <CommissionIncreaseExceedsMax as alloy_sol_types::SolError>::abi_encode_raw(
24189                        inner,
24190                        out,
24191                    )
24192                }
24193                Self::CommissionUnchanged(inner) => {
24194                    <CommissionUnchanged as alloy_sol_types::SolError>::abi_encode_raw(
24195                        inner,
24196                        out,
24197                    )
24198                }
24199                Self::CommissionUpdateTooSoon(inner) => {
24200                    <CommissionUpdateTooSoon as alloy_sol_types::SolError>::abi_encode_raw(
24201                        inner,
24202                        out,
24203                    )
24204                }
24205                Self::DefaultAdminCannotBeRenounced(inner) => {
24206                    <DefaultAdminCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24207                        inner,
24208                        out,
24209                    )
24210                }
24211                Self::DefaultAdminCannotBeRevoked(inner) => {
24212                    <DefaultAdminCannotBeRevoked as alloy_sol_types::SolError>::abi_encode_raw(
24213                        inner,
24214                        out,
24215                    )
24216                }
24217                Self::DelegateAmountTooSmall(inner) => {
24218                    <DelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24219                        inner,
24220                        out,
24221                    )
24222                }
24223                Self::DeprecatedFunction(inner) => {
24224                    <DeprecatedFunction as alloy_sol_types::SolError>::abi_encode_raw(
24225                        inner,
24226                        out,
24227                    )
24228                }
24229                Self::ERC1967InvalidImplementation(inner) => {
24230                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
24231                        inner,
24232                        out,
24233                    )
24234                }
24235                Self::ERC1967NonPayable(inner) => {
24236                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
24237                        inner,
24238                        out,
24239                    )
24240                }
24241                Self::EnforcedPause(inner) => {
24242                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
24243                        inner,
24244                        out,
24245                    )
24246                }
24247                Self::ExitEscrowPeriodInvalid(inner) => {
24248                    <ExitEscrowPeriodInvalid as alloy_sol_types::SolError>::abi_encode_raw(
24249                        inner,
24250                        out,
24251                    )
24252                }
24253                Self::ExpectedPause(inner) => {
24254                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
24255                        inner,
24256                        out,
24257                    )
24258                }
24259                Self::FailedInnerCall(inner) => {
24260                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
24261                        inner,
24262                        out,
24263                    )
24264                }
24265                Self::InitialActiveStakeExceedsBalance(inner) => {
24266                    <InitialActiveStakeExceedsBalance as alloy_sol_types::SolError>::abi_encode_raw(
24267                        inner,
24268                        out,
24269                    )
24270                }
24271                Self::InsufficientAllowance(inner) => {
24272                    <InsufficientAllowance as alloy_sol_types::SolError>::abi_encode_raw(
24273                        inner,
24274                        out,
24275                    )
24276                }
24277                Self::InsufficientBalance(inner) => {
24278                    <InsufficientBalance as alloy_sol_types::SolError>::abi_encode_raw(
24279                        inner,
24280                        out,
24281                    )
24282                }
24283                Self::InvalidCommission(inner) => {
24284                    <InvalidCommission as alloy_sol_types::SolError>::abi_encode_raw(
24285                        inner,
24286                        out,
24287                    )
24288                }
24289                Self::InvalidG1(inner) => {
24290                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24291                }
24292                Self::InvalidInitialization(inner) => {
24293                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
24294                        inner,
24295                        out,
24296                    )
24297                }
24298                Self::InvalidMetadataUriLength(inner) => {
24299                    <InvalidMetadataUriLength as alloy_sol_types::SolError>::abi_encode_raw(
24300                        inner,
24301                        out,
24302                    )
24303                }
24304                Self::InvalidRateLimitParameters(inner) => {
24305                    <InvalidRateLimitParameters as alloy_sol_types::SolError>::abi_encode_raw(
24306                        inner,
24307                        out,
24308                    )
24309                }
24310                Self::InvalidSchnorrSig(inner) => {
24311                    <InvalidSchnorrSig as alloy_sol_types::SolError>::abi_encode_raw(
24312                        inner,
24313                        out,
24314                    )
24315                }
24316                Self::InvalidSchnorrVK(inner) => {
24317                    <InvalidSchnorrVK as alloy_sol_types::SolError>::abi_encode_raw(
24318                        inner,
24319                        out,
24320                    )
24321                }
24322                Self::MinDelegateAmountTooSmall(inner) => {
24323                    <MinDelegateAmountTooSmall as alloy_sol_types::SolError>::abi_encode_raw(
24324                        inner,
24325                        out,
24326                    )
24327                }
24328                Self::NoUndelegationFound(inner) => {
24329                    <NoUndelegationFound as alloy_sol_types::SolError>::abi_encode_raw(
24330                        inner,
24331                        out,
24332                    )
24333                }
24334                Self::NotInitializing(inner) => {
24335                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
24336                        inner,
24337                        out,
24338                    )
24339                }
24340                Self::NothingToWithdraw(inner) => {
24341                    <NothingToWithdraw as alloy_sol_types::SolError>::abi_encode_raw(
24342                        inner,
24343                        out,
24344                    )
24345                }
24346                Self::OwnableInvalidOwner(inner) => {
24347                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
24348                        inner,
24349                        out,
24350                    )
24351                }
24352                Self::OwnableUnauthorizedAccount(inner) => {
24353                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
24354                        inner,
24355                        out,
24356                    )
24357                }
24358                Self::OwnershipCannotBeRenounced(inner) => {
24359                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
24360                        inner,
24361                        out,
24362                    )
24363                }
24364                Self::PowPrecompileFailed(inner) => {
24365                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
24366                        inner,
24367                        out,
24368                    )
24369                }
24370                Self::PrematureWithdrawal(inner) => {
24371                    <PrematureWithdrawal as alloy_sol_types::SolError>::abi_encode_raw(
24372                        inner,
24373                        out,
24374                    )
24375                }
24376                Self::SchnorrKeyAlreadyUsed(inner) => {
24377                    <SchnorrKeyAlreadyUsed as alloy_sol_types::SolError>::abi_encode_raw(
24378                        inner,
24379                        out,
24380                    )
24381                }
24382                Self::UUPSUnauthorizedCallContext(inner) => {
24383                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
24384                        inner,
24385                        out,
24386                    )
24387                }
24388                Self::UUPSUnsupportedProxiableUUID(inner) => {
24389                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
24390                        inner,
24391                        out,
24392                    )
24393                }
24394                Self::UndelegationAlreadyExists(inner) => {
24395                    <UndelegationAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(
24396                        inner,
24397                        out,
24398                    )
24399                }
24400                Self::ValidatorAlreadyExited(inner) => {
24401                    <ValidatorAlreadyExited as alloy_sol_types::SolError>::abi_encode_raw(
24402                        inner,
24403                        out,
24404                    )
24405                }
24406                Self::ValidatorAlreadyRegistered(inner) => {
24407                    <ValidatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
24408                        inner,
24409                        out,
24410                    )
24411                }
24412                Self::ValidatorInactive(inner) => {
24413                    <ValidatorInactive as alloy_sol_types::SolError>::abi_encode_raw(
24414                        inner,
24415                        out,
24416                    )
24417                }
24418                Self::ValidatorNotExited(inner) => {
24419                    <ValidatorNotExited as alloy_sol_types::SolError>::abi_encode_raw(
24420                        inner,
24421                        out,
24422                    )
24423                }
24424                Self::ZeroAddress(inner) => {
24425                    <ZeroAddress as alloy_sol_types::SolError>::abi_encode_raw(
24426                        inner,
24427                        out,
24428                    )
24429                }
24430                Self::ZeroAmount(inner) => {
24431                    <ZeroAmount as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
24432                }
24433            }
24434        }
24435    }
24436    #[automatically_derived]
24437    impl StakeTableV2Errors {
24438        /**Creates a [`AccessControlBadConfirmation`] error.
24439
24440```solidity
24441error AccessControlBadConfirmation()
24442```*/
24443        #[inline]
24444        pub fn access_control_bad_confirmation() -> Self {
24445            Self::AccessControlBadConfirmation(AccessControlBadConfirmation)
24446        }
24447        /**Creates a [`AccessControlUnauthorizedAccount`] error.
24448
24449```solidity
24450error AccessControlUnauthorizedAccount(address,bytes32)
24451```*/
24452        #[inline]
24453        pub fn access_control_unauthorized_account(
24454            account: alloy::sol_types::private::Address,
24455            needed_role: alloy::sol_types::private::FixedBytes<32>,
24456        ) -> Self {
24457            Self::AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount {
24458                account: account,
24459                neededRole: needed_role,
24460            })
24461        }
24462        /**Creates a [`AddressEmptyCode`] error.
24463
24464```solidity
24465error AddressEmptyCode(address)
24466```*/
24467        #[inline]
24468        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
24469            Self::AddressEmptyCode(AddressEmptyCode { target: target })
24470        }
24471        /**Creates a [`BLSSigIsInfinity`] error.
24472
24473```solidity
24474error BLSSigIsInfinity()
24475```*/
24476        #[inline]
24477        pub fn bls_sig_is_infinity() -> Self {
24478            Self::BLSSigIsInfinity(BLSSigIsInfinity)
24479        }
24480        /**Creates a [`BLSSigVerificationFailed`] error.
24481
24482```solidity
24483error BLSSigVerificationFailed()
24484```*/
24485        #[inline]
24486        pub fn bls_sig_verification_failed() -> Self {
24487            Self::BLSSigVerificationFailed(BLSSigVerificationFailed)
24488        }
24489        /**Creates a [`BLSVKIsInfinity`] error.
24490
24491```solidity
24492error BLSVKIsInfinity()
24493```*/
24494        #[inline]
24495        pub fn blsvk_is_infinity() -> Self {
24496            Self::BLSVKIsInfinity(BLSVKIsInfinity)
24497        }
24498        /**Creates a [`BN254PairingProdFailed`] error.
24499
24500```solidity
24501error BN254PairingProdFailed()
24502```*/
24503        #[inline]
24504        pub fn bn_254_pairing_prod_failed() -> Self {
24505            Self::BN254PairingProdFailed(BN254PairingProdFailed)
24506        }
24507        /**Creates a [`BlsKeyAlreadyUsed`] error.
24508
24509```solidity
24510error BlsKeyAlreadyUsed()
24511```*/
24512        #[inline]
24513        pub fn bls_key_already_used() -> Self {
24514            Self::BlsKeyAlreadyUsed(BlsKeyAlreadyUsed)
24515        }
24516        /**Creates a [`CommissionAlreadyInitialized`] error.
24517
24518```solidity
24519error CommissionAlreadyInitialized(address)
24520```*/
24521        #[inline]
24522        pub fn commission_already_initialized(
24523            validator: alloy::sol_types::private::Address,
24524        ) -> Self {
24525            Self::CommissionAlreadyInitialized(CommissionAlreadyInitialized {
24526                validator: validator,
24527            })
24528        }
24529        /**Creates a [`CommissionIncreaseExceedsMax`] error.
24530
24531```solidity
24532error CommissionIncreaseExceedsMax()
24533```*/
24534        #[inline]
24535        pub fn commission_increase_exceeds_max() -> Self {
24536            Self::CommissionIncreaseExceedsMax(CommissionIncreaseExceedsMax)
24537        }
24538        /**Creates a [`CommissionUnchanged`] error.
24539
24540```solidity
24541error CommissionUnchanged()
24542```*/
24543        #[inline]
24544        pub fn commission_unchanged() -> Self {
24545            Self::CommissionUnchanged(CommissionUnchanged)
24546        }
24547        /**Creates a [`CommissionUpdateTooSoon`] error.
24548
24549```solidity
24550error CommissionUpdateTooSoon()
24551```*/
24552        #[inline]
24553        pub fn commission_update_too_soon() -> Self {
24554            Self::CommissionUpdateTooSoon(CommissionUpdateTooSoon)
24555        }
24556        /**Creates a [`DefaultAdminCannotBeRenounced`] error.
24557
24558```solidity
24559error DefaultAdminCannotBeRenounced()
24560```*/
24561        #[inline]
24562        pub fn default_admin_cannot_be_renounced() -> Self {
24563            Self::DefaultAdminCannotBeRenounced(DefaultAdminCannotBeRenounced)
24564        }
24565        /**Creates a [`DefaultAdminCannotBeRevoked`] error.
24566
24567```solidity
24568error DefaultAdminCannotBeRevoked()
24569```*/
24570        #[inline]
24571        pub fn default_admin_cannot_be_revoked() -> Self {
24572            Self::DefaultAdminCannotBeRevoked(DefaultAdminCannotBeRevoked)
24573        }
24574        /**Creates a [`DelegateAmountTooSmall`] error.
24575
24576```solidity
24577error DelegateAmountTooSmall()
24578```*/
24579        #[inline]
24580        pub fn delegate_amount_too_small() -> Self {
24581            Self::DelegateAmountTooSmall(DelegateAmountTooSmall)
24582        }
24583        /**Creates a [`DeprecatedFunction`] error.
24584
24585```solidity
24586error DeprecatedFunction()
24587```*/
24588        #[inline]
24589        pub fn deprecated_function() -> Self {
24590            Self::DeprecatedFunction(DeprecatedFunction)
24591        }
24592        /**Creates a [`ERC1967InvalidImplementation`] error.
24593
24594```solidity
24595error ERC1967InvalidImplementation(address)
24596```*/
24597        #[inline]
24598        pub fn erc_1967_invalid_implementation(
24599            implementation: alloy::sol_types::private::Address,
24600        ) -> Self {
24601            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
24602                implementation: implementation,
24603            })
24604        }
24605        /**Creates a [`ERC1967NonPayable`] error.
24606
24607```solidity
24608error ERC1967NonPayable()
24609```*/
24610        #[inline]
24611        pub fn erc_1967_non_payable() -> Self {
24612            Self::ERC1967NonPayable(ERC1967NonPayable)
24613        }
24614        /**Creates a [`EnforcedPause`] error.
24615
24616```solidity
24617error EnforcedPause()
24618```*/
24619        #[inline]
24620        pub fn enforced_pause() -> Self {
24621            Self::EnforcedPause(EnforcedPause)
24622        }
24623        /**Creates a [`ExitEscrowPeriodInvalid`] error.
24624
24625```solidity
24626error ExitEscrowPeriodInvalid()
24627```*/
24628        #[inline]
24629        pub fn exit_escrow_period_invalid() -> Self {
24630            Self::ExitEscrowPeriodInvalid(ExitEscrowPeriodInvalid)
24631        }
24632        /**Creates a [`ExpectedPause`] error.
24633
24634```solidity
24635error ExpectedPause()
24636```*/
24637        #[inline]
24638        pub fn expected_pause() -> Self {
24639            Self::ExpectedPause(ExpectedPause)
24640        }
24641        /**Creates a [`FailedInnerCall`] error.
24642
24643```solidity
24644error FailedInnerCall()
24645```*/
24646        #[inline]
24647        pub fn failed_inner_call() -> Self {
24648            Self::FailedInnerCall(FailedInnerCall)
24649        }
24650        /**Creates a [`InitialActiveStakeExceedsBalance`] error.
24651
24652```solidity
24653error InitialActiveStakeExceedsBalance()
24654```*/
24655        #[inline]
24656        pub fn initial_active_stake_exceeds_balance() -> Self {
24657            Self::InitialActiveStakeExceedsBalance(InitialActiveStakeExceedsBalance)
24658        }
24659        /**Creates a [`InsufficientAllowance`] error.
24660
24661```solidity
24662error InsufficientAllowance(uint256,uint256)
24663```*/
24664        #[inline]
24665        pub fn insufficient_allowance(
24666            _0: alloy::sol_types::private::primitives::aliases::U256,
24667            _1: alloy::sol_types::private::primitives::aliases::U256,
24668        ) -> Self {
24669            Self::InsufficientAllowance(InsufficientAllowance {
24670                _0: _0,
24671                _1: _1,
24672            })
24673        }
24674        /**Creates a [`InsufficientBalance`] error.
24675
24676```solidity
24677error InsufficientBalance(uint256)
24678```*/
24679        #[inline]
24680        pub fn insufficient_balance(
24681            _0: alloy::sol_types::private::primitives::aliases::U256,
24682        ) -> Self {
24683            Self::InsufficientBalance(InsufficientBalance(_0))
24684        }
24685        /**Creates a [`InvalidCommission`] error.
24686
24687```solidity
24688error InvalidCommission()
24689```*/
24690        #[inline]
24691        pub fn invalid_commission() -> Self {
24692            Self::InvalidCommission(InvalidCommission)
24693        }
24694        /**Creates a [`InvalidG1`] error.
24695
24696```solidity
24697error InvalidG1()
24698```*/
24699        #[inline]
24700        pub fn invalid_g_1() -> Self {
24701            Self::InvalidG1(InvalidG1)
24702        }
24703        /**Creates a [`InvalidInitialization`] error.
24704
24705```solidity
24706error InvalidInitialization()
24707```*/
24708        #[inline]
24709        pub fn invalid_initialization() -> Self {
24710            Self::InvalidInitialization(InvalidInitialization)
24711        }
24712        /**Creates a [`InvalidMetadataUriLength`] error.
24713
24714```solidity
24715error InvalidMetadataUriLength()
24716```*/
24717        #[inline]
24718        pub fn invalid_metadata_uri_length() -> Self {
24719            Self::InvalidMetadataUriLength(InvalidMetadataUriLength)
24720        }
24721        /**Creates a [`InvalidRateLimitParameters`] error.
24722
24723```solidity
24724error InvalidRateLimitParameters()
24725```*/
24726        #[inline]
24727        pub fn invalid_rate_limit_parameters() -> Self {
24728            Self::InvalidRateLimitParameters(InvalidRateLimitParameters)
24729        }
24730        /**Creates a [`InvalidSchnorrSig`] error.
24731
24732```solidity
24733error InvalidSchnorrSig()
24734```*/
24735        #[inline]
24736        pub fn invalid_schnorr_sig() -> Self {
24737            Self::InvalidSchnorrSig(InvalidSchnorrSig)
24738        }
24739        /**Creates a [`InvalidSchnorrVK`] error.
24740
24741```solidity
24742error InvalidSchnorrVK()
24743```*/
24744        #[inline]
24745        pub fn invalid_schnorr_vk() -> Self {
24746            Self::InvalidSchnorrVK(InvalidSchnorrVK)
24747        }
24748        /**Creates a [`MinDelegateAmountTooSmall`] error.
24749
24750```solidity
24751error MinDelegateAmountTooSmall()
24752```*/
24753        #[inline]
24754        pub fn min_delegate_amount_too_small() -> Self {
24755            Self::MinDelegateAmountTooSmall(MinDelegateAmountTooSmall)
24756        }
24757        /**Creates a [`NoUndelegationFound`] error.
24758
24759```solidity
24760error NoUndelegationFound()
24761```*/
24762        #[inline]
24763        pub fn no_undelegation_found() -> Self {
24764            Self::NoUndelegationFound(NoUndelegationFound)
24765        }
24766        /**Creates a [`NotInitializing`] error.
24767
24768```solidity
24769error NotInitializing()
24770```*/
24771        #[inline]
24772        pub fn not_initializing() -> Self {
24773            Self::NotInitializing(NotInitializing)
24774        }
24775        /**Creates a [`NothingToWithdraw`] error.
24776
24777```solidity
24778error NothingToWithdraw()
24779```*/
24780        #[inline]
24781        pub fn nothing_to_withdraw() -> Self {
24782            Self::NothingToWithdraw(NothingToWithdraw)
24783        }
24784        /**Creates a [`OwnableInvalidOwner`] error.
24785
24786```solidity
24787error OwnableInvalidOwner(address)
24788```*/
24789        #[inline]
24790        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
24791            Self::OwnableInvalidOwner(OwnableInvalidOwner {
24792                owner: owner,
24793            })
24794        }
24795        /**Creates a [`OwnableUnauthorizedAccount`] error.
24796
24797```solidity
24798error OwnableUnauthorizedAccount(address)
24799```*/
24800        #[inline]
24801        pub fn ownable_unauthorized_account(
24802            account: alloy::sol_types::private::Address,
24803        ) -> Self {
24804            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
24805                account: account,
24806            })
24807        }
24808        /**Creates a [`OwnershipCannotBeRenounced`] error.
24809
24810```solidity
24811error OwnershipCannotBeRenounced()
24812```*/
24813        #[inline]
24814        pub fn ownership_cannot_be_renounced() -> Self {
24815            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
24816        }
24817        /**Creates a [`PowPrecompileFailed`] error.
24818
24819```solidity
24820error PowPrecompileFailed()
24821```*/
24822        #[inline]
24823        pub fn pow_precompile_failed() -> Self {
24824            Self::PowPrecompileFailed(PowPrecompileFailed)
24825        }
24826        /**Creates a [`PrematureWithdrawal`] error.
24827
24828```solidity
24829error PrematureWithdrawal()
24830```*/
24831        #[inline]
24832        pub fn premature_withdrawal() -> Self {
24833            Self::PrematureWithdrawal(PrematureWithdrawal)
24834        }
24835        /**Creates a [`SchnorrKeyAlreadyUsed`] error.
24836
24837```solidity
24838error SchnorrKeyAlreadyUsed()
24839```*/
24840        #[inline]
24841        pub fn schnorr_key_already_used() -> Self {
24842            Self::SchnorrKeyAlreadyUsed(SchnorrKeyAlreadyUsed)
24843        }
24844        /**Creates a [`UUPSUnauthorizedCallContext`] error.
24845
24846```solidity
24847error UUPSUnauthorizedCallContext()
24848```*/
24849        #[inline]
24850        pub fn uups_unauthorized_call_context() -> Self {
24851            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
24852        }
24853        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
24854
24855```solidity
24856error UUPSUnsupportedProxiableUUID(bytes32)
24857```*/
24858        #[inline]
24859        pub fn uups_unsupported_proxiable_uuid(
24860            slot: alloy::sol_types::private::FixedBytes<32>,
24861        ) -> Self {
24862            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
24863                slot: slot,
24864            })
24865        }
24866        /**Creates a [`UndelegationAlreadyExists`] error.
24867
24868```solidity
24869error UndelegationAlreadyExists()
24870```*/
24871        #[inline]
24872        pub fn undelegation_already_exists() -> Self {
24873            Self::UndelegationAlreadyExists(UndelegationAlreadyExists)
24874        }
24875        /**Creates a [`ValidatorAlreadyExited`] error.
24876
24877```solidity
24878error ValidatorAlreadyExited()
24879```*/
24880        #[inline]
24881        pub fn validator_already_exited() -> Self {
24882            Self::ValidatorAlreadyExited(ValidatorAlreadyExited)
24883        }
24884        /**Creates a [`ValidatorAlreadyRegistered`] error.
24885
24886```solidity
24887error ValidatorAlreadyRegistered()
24888```*/
24889        #[inline]
24890        pub fn validator_already_registered() -> Self {
24891            Self::ValidatorAlreadyRegistered(ValidatorAlreadyRegistered)
24892        }
24893        /**Creates a [`ValidatorInactive`] error.
24894
24895```solidity
24896error ValidatorInactive()
24897```*/
24898        #[inline]
24899        pub fn validator_inactive() -> Self {
24900            Self::ValidatorInactive(ValidatorInactive)
24901        }
24902        /**Creates a [`ValidatorNotExited`] error.
24903
24904```solidity
24905error ValidatorNotExited()
24906```*/
24907        #[inline]
24908        pub fn validator_not_exited() -> Self {
24909            Self::ValidatorNotExited(ValidatorNotExited)
24910        }
24911        /**Creates a [`ZeroAddress`] error.
24912
24913```solidity
24914error ZeroAddress()
24915```*/
24916        #[inline]
24917        pub fn zero_address() -> Self {
24918            Self::ZeroAddress(ZeroAddress)
24919        }
24920        /**Creates a [`ZeroAmount`] error.
24921
24922```solidity
24923error ZeroAmount()
24924```*/
24925        #[inline]
24926        pub fn zero_amount() -> Self {
24927            Self::ZeroAmount(ZeroAmount)
24928        }
24929    }
24930    ///Container for all the [`StakeTableV2`](self) events.
24931    #[derive(Clone)]
24932    #[derive(serde::Serialize, serde::Deserialize)]
24933    #[derive(Debug, PartialEq, Eq, Hash)]
24934    pub enum StakeTableV2Events {
24935        #[allow(missing_docs)]
24936        CommissionUpdated(CommissionUpdated),
24937        #[allow(missing_docs)]
24938        ConsensusKeysUpdated(ConsensusKeysUpdated),
24939        #[allow(missing_docs)]
24940        ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2),
24941        #[allow(missing_docs)]
24942        Delegated(Delegated),
24943        #[allow(missing_docs)]
24944        ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated),
24945        #[allow(missing_docs)]
24946        Initialized(Initialized),
24947        #[allow(missing_docs)]
24948        MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated),
24949        #[allow(missing_docs)]
24950        MetadataUriUpdated(MetadataUriUpdated),
24951        #[allow(missing_docs)]
24952        MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated),
24953        #[allow(missing_docs)]
24954        MinDelegateAmountUpdated(MinDelegateAmountUpdated),
24955        #[allow(missing_docs)]
24956        OwnershipTransferred(OwnershipTransferred),
24957        #[allow(missing_docs)]
24958        Paused(Paused),
24959        #[allow(missing_docs)]
24960        RoleAdminChanged(RoleAdminChanged),
24961        #[allow(missing_docs)]
24962        RoleGranted(RoleGranted),
24963        #[allow(missing_docs)]
24964        RoleRevoked(RoleRevoked),
24965        #[allow(missing_docs)]
24966        Undelegated(Undelegated),
24967        #[allow(missing_docs)]
24968        UndelegatedV2(UndelegatedV2),
24969        #[allow(missing_docs)]
24970        Unpaused(Unpaused),
24971        #[allow(missing_docs)]
24972        Upgraded(Upgraded),
24973        #[allow(missing_docs)]
24974        ValidatorExit(ValidatorExit),
24975        #[allow(missing_docs)]
24976        ValidatorExitClaimed(ValidatorExitClaimed),
24977        #[allow(missing_docs)]
24978        ValidatorExitV2(ValidatorExitV2),
24979        #[allow(missing_docs)]
24980        ValidatorRegistered(ValidatorRegistered),
24981        #[allow(missing_docs)]
24982        ValidatorRegisteredV2(ValidatorRegisteredV2),
24983        #[allow(missing_docs)]
24984        Withdrawal(Withdrawal),
24985        #[allow(missing_docs)]
24986        WithdrawalClaimed(WithdrawalClaimed),
24987    }
24988    impl StakeTableV2Events {
24989        /// All the selectors of this enum.
24990        ///
24991        /// Note that the selectors might not be in the same order as the variants.
24992        /// No guarantees are made about the order of the selectors.
24993        ///
24994        /// Prefer using `SolInterface` methods instead.
24995        pub const SELECTORS: &'static [[u8; 32usize]] = &[
24996            [
24997                2u8, 205u8, 142u8, 243u8, 22u8, 86u8, 76u8, 167u8, 139u8, 117u8, 191u8,
24998                35u8, 156u8, 10u8, 99u8, 0u8, 8u8, 55u8, 76u8, 31u8, 177u8, 210u8, 109u8,
24999                148u8, 26u8, 110u8, 155u8, 25u8, 228u8, 43u8, 42u8, 165u8,
25000            ],
25001            [
25002                32u8, 204u8, 69u8, 213u8, 199u8, 200u8, 145u8, 108u8, 233u8, 253u8, 51u8,
25003                240u8, 150u8, 97u8, 68u8, 151u8, 224u8, 178u8, 137u8, 125u8, 154u8,
25004                181u8, 3u8, 146u8, 106u8, 250u8, 65u8, 21u8, 39u8, 201u8, 108u8, 52u8,
25005            ],
25006            [
25007                38u8, 222u8, 241u8, 116u8, 252u8, 232u8, 20u8, 127u8, 86u8, 1u8, 125u8,
25008                9u8, 91u8, 243u8, 156u8, 223u8, 43u8, 151u8, 40u8, 249u8, 26u8, 178u8,
25009                242u8, 116u8, 151u8, 74u8, 47u8, 217u8, 123u8, 38u8, 132u8, 137u8,
25010            ],
25011            [
25012                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
25013                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
25014                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
25015            ],
25016            [
25017                77u8, 16u8, 189u8, 4u8, 151u8, 117u8, 199u8, 123u8, 215u8, 242u8, 85u8,
25018                25u8, 90u8, 251u8, 165u8, 8u8, 128u8, 40u8, 236u8, 179u8, 199u8, 194u8,
25019                119u8, 211u8, 147u8, 204u8, 255u8, 121u8, 52u8, 242u8, 249u8, 44u8,
25020            ],
25021            [
25022                78u8, 97u8, 232u8, 114u8, 202u8, 159u8, 10u8, 67u8, 19u8, 235u8, 129u8,
25023                195u8, 232u8, 174u8, 210u8, 55u8, 12u8, 137u8, 214u8, 67u8, 89u8, 57u8,
25024                17u8, 175u8, 221u8, 51u8, 14u8, 113u8, 240u8, 196u8, 126u8, 171u8,
25025            ],
25026            [
25027                81u8, 217u8, 254u8, 253u8, 212u8, 129u8, 145u8, 188u8, 117u8, 171u8,
25028                18u8, 17u8, 109u8, 94u8, 81u8, 129u8, 150u8, 71u8, 153u8, 166u8, 57u8,
25029                225u8, 238u8, 49u8, 176u8, 153u8, 143u8, 250u8, 175u8, 158u8, 242u8, 89u8,
25030            ],
25031            [
25032                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
25033                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
25034                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
25035            ],
25036            [
25037                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
25038                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
25039                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
25040            ],
25041            [
25042                112u8, 131u8, 70u8, 215u8, 82u8, 67u8, 48u8, 248u8, 65u8, 78u8, 32u8,
25043                17u8, 4u8, 146u8, 26u8, 74u8, 179u8, 51u8, 48u8, 77u8, 190u8, 86u8, 51u8,
25044                10u8, 194u8, 45u8, 211u8, 122u8, 248u8, 20u8, 49u8, 218u8,
25045            ],
25046            [
25047                121u8, 62u8, 59u8, 30u8, 27u8, 205u8, 103u8, 123u8, 177u8, 25u8, 0u8,
25048                200u8, 49u8, 36u8, 211u8, 196u8, 76u8, 153u8, 70u8, 234u8, 141u8, 223u8,
25049                151u8, 138u8, 12u8, 162u8, 80u8, 176u8, 52u8, 236u8, 157u8, 222u8,
25050            ],
25051            [
25052                127u8, 207u8, 83u8, 44u8, 21u8, 240u8, 166u8, 219u8, 11u8, 214u8, 208u8,
25053                224u8, 56u8, 190u8, 167u8, 29u8, 48u8, 216u8, 8u8, 199u8, 217u8, 140u8,
25054                179u8, 191u8, 114u8, 104u8, 169u8, 91u8, 245u8, 8u8, 27u8, 101u8,
25055            ],
25056            [
25057                128u8, 216u8, 164u8, 161u8, 102u8, 51u8, 40u8, 169u8, 152u8, 212u8, 85u8,
25058                91u8, 162u8, 29u8, 139u8, 186u8, 110u8, 241u8, 87u8, 106u8, 140u8, 94u8,
25059                157u8, 39u8, 249u8, 197u8, 69u8, 241u8, 163u8, 213u8, 43u8, 29u8,
25060            ],
25061            [
25062                138u8, 218u8, 18u8, 15u8, 130u8, 36u8, 219u8, 128u8, 67u8, 101u8, 173u8,
25063                246u8, 78u8, 178u8, 236u8, 103u8, 253u8, 76u8, 116u8, 177u8, 231u8, 11u8,
25064                46u8, 65u8, 50u8, 246u8, 51u8, 0u8, 74u8, 218u8, 216u8, 68u8,
25065            ],
25066            [
25067                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
25068                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
25069                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
25070            ],
25071            [
25072                183u8, 157u8, 244u8, 10u8, 181u8, 165u8, 66u8, 135u8, 139u8, 202u8, 64u8,
25073                114u8, 149u8, 4u8, 45u8, 209u8, 130u8, 150u8, 252u8, 193u8, 21u8, 213u8,
25074                202u8, 141u8, 157u8, 178u8, 154u8, 203u8, 247u8, 74u8, 133u8, 34u8,
25075            ],
25076            [
25077                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
25078                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
25079                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
25080            ],
25081            [
25082                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
25083                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
25084                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
25085            ],
25086            [
25087                189u8, 141u8, 118u8, 252u8, 202u8, 179u8, 157u8, 183u8, 6u8, 75u8, 192u8,
25088                7u8, 217u8, 162u8, 200u8, 58u8, 152u8, 36u8, 125u8, 203u8, 16u8, 135u8,
25089                204u8, 18u8, 243u8, 67u8, 184u8, 190u8, 144u8, 174u8, 253u8, 100u8,
25090            ],
25091            [
25092                190u8, 91u8, 71u8, 190u8, 118u8, 80u8, 15u8, 234u8, 81u8, 12u8, 226u8,
25093                25u8, 23u8, 139u8, 110u8, 99u8, 105u8, 91u8, 102u8, 65u8, 218u8, 208u8,
25094                211u8, 160u8, 72u8, 100u8, 85u8, 206u8, 161u8, 10u8, 237u8, 253u8,
25095            ],
25096            [
25097                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
25098                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
25099                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
25100            ],
25101            [
25102                200u8, 197u8, 179u8, 122u8, 236u8, 127u8, 45u8, 219u8, 211u8, 161u8,
25103                60u8, 81u8, 54u8, 30u8, 84u8, 160u8, 168u8, 223u8, 59u8, 202u8, 37u8,
25104                106u8, 183u8, 88u8, 167u8, 127u8, 90u8, 215u8, 65u8, 210u8, 129u8, 229u8,
25105            ],
25106            [
25107                229u8, 84u8, 26u8, 107u8, 97u8, 3u8, 212u8, 250u8, 126u8, 2u8, 30u8,
25108                213u8, 79u8, 173u8, 57u8, 198u8, 111u8, 39u8, 167u8, 107u8, 209u8, 61u8,
25109                55u8, 76u8, 246u8, 36u8, 10u8, 230u8, 189u8, 11u8, 183u8, 43u8,
25110            ],
25111            [
25112                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
25113                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
25114                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
25115            ],
25116            [
25117                246u8, 232u8, 53u8, 156u8, 87u8, 82u8, 11u8, 70u8, 150u8, 52u8, 115u8,
25118                107u8, 252u8, 59u8, 183u8, 236u8, 92u8, 189u8, 26u8, 11u8, 210u8, 139u8,
25119                16u8, 168u8, 39u8, 87u8, 147u8, 187u8, 115u8, 11u8, 121u8, 127u8,
25120            ],
25121            [
25122                251u8, 36u8, 48u8, 83u8, 84u8, 200u8, 119u8, 98u8, 213u8, 87u8, 72u8,
25123                122u8, 228u8, 165u8, 100u8, 232u8, 208u8, 62u8, 203u8, 185u8, 169u8,
25124                125u8, 216u8, 175u8, 255u8, 142u8, 31u8, 111u8, 202u8, 240u8, 221u8, 22u8,
25125            ],
25126        ];
25127        /// The names of the variants in the same order as `SELECTORS`.
25128        pub const VARIANT_NAMES: &'static [&'static str] = &[
25129            ::core::stringify!(MinDelegateAmountUpdated),
25130            ::core::stringify!(MetadataUriUpdated),
25131            ::core::stringify!(ValidatorRegisteredV2),
25132            ::core::stringify!(RoleGranted),
25133            ::core::stringify!(Undelegated),
25134            ::core::stringify!(ValidatorExitV2),
25135            ::core::stringify!(MinCommissionUpdateIntervalUpdated),
25136            ::core::stringify!(Unpaused),
25137            ::core::stringify!(Paused),
25138            ::core::stringify!(UndelegatedV2),
25139            ::core::stringify!(ExitEscrowPeriodUpdated),
25140            ::core::stringify!(Withdrawal),
25141            ::core::stringify!(ConsensusKeysUpdated),
25142            ::core::stringify!(ValidatorExitClaimed),
25143            ::core::stringify!(OwnershipTransferred),
25144            ::core::stringify!(WithdrawalClaimed),
25145            ::core::stringify!(Upgraded),
25146            ::core::stringify!(RoleAdminChanged),
25147            ::core::stringify!(CommissionUpdated),
25148            ::core::stringify!(MaxCommissionIncreaseUpdated),
25149            ::core::stringify!(Initialized),
25150            ::core::stringify!(ConsensusKeysUpdatedV2),
25151            ::core::stringify!(Delegated),
25152            ::core::stringify!(RoleRevoked),
25153            ::core::stringify!(ValidatorRegistered),
25154            ::core::stringify!(ValidatorExit),
25155        ];
25156        /// The signatures in the same order as `SELECTORS`.
25157        pub const SIGNATURES: &'static [&'static str] = &[
25158            <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25159            <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25160            <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE,
25161            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
25162            <Undelegated as alloy_sol_types::SolEvent>::SIGNATURE,
25163            <ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE,
25164            <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25165            <Unpaused as alloy_sol_types::SolEvent>::SIGNATURE,
25166            <Paused as alloy_sol_types::SolEvent>::SIGNATURE,
25167            <UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
25168            <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25169            <Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE,
25170            <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25171            <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
25172            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
25173            <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE,
25174            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
25175            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
25176            <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25177            <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE,
25178            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
25179            <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE,
25180            <Delegated as alloy_sol_types::SolEvent>::SIGNATURE,
25181            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
25182            <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE,
25183            <ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE,
25184        ];
25185        /// Returns the signature for the given selector, if known.
25186        #[inline]
25187        pub fn signature_by_selector(
25188            selector: [u8; 32usize],
25189        ) -> ::core::option::Option<&'static str> {
25190            match Self::SELECTORS.binary_search(&selector) {
25191                ::core::result::Result::Ok(idx) => {
25192                    ::core::option::Option::Some(Self::SIGNATURES[idx])
25193                }
25194                ::core::result::Result::Err(_) => ::core::option::Option::None,
25195            }
25196        }
25197        /// Returns the enum variant name for the given selector, if known.
25198        #[inline]
25199        pub fn name_by_selector(
25200            selector: [u8; 32usize],
25201        ) -> ::core::option::Option<&'static str> {
25202            let sig = Self::signature_by_selector(selector)?;
25203            sig.split_once('(').map(|(name, _)| name)
25204        }
25205    }
25206    #[automatically_derived]
25207    impl alloy_sol_types::SolEventInterface for StakeTableV2Events {
25208        const NAME: &'static str = "StakeTableV2Events";
25209        const COUNT: usize = 26usize;
25210        fn decode_raw_log(
25211            topics: &[alloy_sol_types::Word],
25212            data: &[u8],
25213        ) -> alloy_sol_types::Result<Self> {
25214            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
25215                topics,
25216                data,
25217                alloy_sol_types::abi::AbiDecoderConfig::default(),
25218            )
25219        }
25220        fn decode_raw_log_with_config(
25221            topics: &[alloy_sol_types::Word],
25222            data: &[u8],
25223            config: alloy_sol_types::abi::AbiDecoderConfig,
25224        ) -> alloy_sol_types::Result<Self> {
25225            match topics.first().copied() {
25226                Some(
25227                    <CommissionUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25228                ) => {
25229                    <CommissionUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25230                            topics,
25231                            data,
25232                            config,
25233                        )
25234                        .map(Self::CommissionUpdated)
25235                }
25236                Some(
25237                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25238                ) => {
25239                    <ConsensusKeysUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25240                            topics,
25241                            data,
25242                            config,
25243                        )
25244                        .map(Self::ConsensusKeysUpdated)
25245                }
25246                Some(
25247                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25248                ) => {
25249                    <ConsensusKeysUpdatedV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25250                            topics,
25251                            data,
25252                            config,
25253                        )
25254                        .map(Self::ConsensusKeysUpdatedV2)
25255                }
25256                Some(<Delegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25257                    <Delegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25258                            topics,
25259                            data,
25260                            config,
25261                        )
25262                        .map(Self::Delegated)
25263                }
25264                Some(
25265                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25266                ) => {
25267                    <ExitEscrowPeriodUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25268                            topics,
25269                            data,
25270                            config,
25271                        )
25272                        .map(Self::ExitEscrowPeriodUpdated)
25273                }
25274                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25275                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25276                            topics,
25277                            data,
25278                            config,
25279                        )
25280                        .map(Self::Initialized)
25281                }
25282                Some(
25283                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25284                ) => {
25285                    <MaxCommissionIncreaseUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25286                            topics,
25287                            data,
25288                            config,
25289                        )
25290                        .map(Self::MaxCommissionIncreaseUpdated)
25291                }
25292                Some(
25293                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25294                ) => {
25295                    <MetadataUriUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25296                            topics,
25297                            data,
25298                            config,
25299                        )
25300                        .map(Self::MetadataUriUpdated)
25301                }
25302                Some(
25303                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25304                ) => {
25305                    <MinCommissionUpdateIntervalUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25306                            topics,
25307                            data,
25308                            config,
25309                        )
25310                        .map(Self::MinCommissionUpdateIntervalUpdated)
25311                }
25312                Some(
25313                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25314                ) => {
25315                    <MinDelegateAmountUpdated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25316                            topics,
25317                            data,
25318                            config,
25319                        )
25320                        .map(Self::MinDelegateAmountUpdated)
25321                }
25322                Some(
25323                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25324                ) => {
25325                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25326                            topics,
25327                            data,
25328                            config,
25329                        )
25330                        .map(Self::OwnershipTransferred)
25331                }
25332                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25333                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25334                            topics,
25335                            data,
25336                            config,
25337                        )
25338                        .map(Self::Paused)
25339                }
25340                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25341                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25342                            topics,
25343                            data,
25344                            config,
25345                        )
25346                        .map(Self::RoleAdminChanged)
25347                }
25348                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25349                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25350                            topics,
25351                            data,
25352                            config,
25353                        )
25354                        .map(Self::RoleGranted)
25355                }
25356                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25357                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25358                            topics,
25359                            data,
25360                            config,
25361                        )
25362                        .map(Self::RoleRevoked)
25363                }
25364                Some(<Undelegated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25365                    <Undelegated as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25366                            topics,
25367                            data,
25368                            config,
25369                        )
25370                        .map(Self::Undelegated)
25371                }
25372                Some(<UndelegatedV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25373                    <UndelegatedV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25374                            topics,
25375                            data,
25376                            config,
25377                        )
25378                        .map(Self::UndelegatedV2)
25379                }
25380                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25381                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25382                            topics,
25383                            data,
25384                            config,
25385                        )
25386                        .map(Self::Unpaused)
25387                }
25388                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25389                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25390                            topics,
25391                            data,
25392                            config,
25393                        )
25394                        .map(Self::Upgraded)
25395                }
25396                Some(<ValidatorExit as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25397                    <ValidatorExit as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25398                            topics,
25399                            data,
25400                            config,
25401                        )
25402                        .map(Self::ValidatorExit)
25403                }
25404                Some(
25405                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25406                ) => {
25407                    <ValidatorExitClaimed as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25408                            topics,
25409                            data,
25410                            config,
25411                        )
25412                        .map(Self::ValidatorExitClaimed)
25413                }
25414                Some(<ValidatorExitV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25415                    <ValidatorExitV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25416                            topics,
25417                            data,
25418                            config,
25419                        )
25420                        .map(Self::ValidatorExitV2)
25421                }
25422                Some(
25423                    <ValidatorRegistered as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25424                ) => {
25425                    <ValidatorRegistered as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25426                            topics,
25427                            data,
25428                            config,
25429                        )
25430                        .map(Self::ValidatorRegistered)
25431                }
25432                Some(
25433                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25434                ) => {
25435                    <ValidatorRegisteredV2 as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25436                            topics,
25437                            data,
25438                            config,
25439                        )
25440                        .map(Self::ValidatorRegisteredV2)
25441                }
25442                Some(<Withdrawal as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
25443                    <Withdrawal as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25444                            topics,
25445                            data,
25446                            config,
25447                        )
25448                        .map(Self::Withdrawal)
25449                }
25450                Some(
25451                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
25452                ) => {
25453                    <WithdrawalClaimed as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
25454                            topics,
25455                            data,
25456                            config,
25457                        )
25458                        .map(Self::WithdrawalClaimed)
25459                }
25460                _ => {
25461                    if topics
25462                        .len()
25463                        .checked_mul(alloy_sol_types::Word::len_bytes())
25464                        .and_then(|len| len.checked_add(data.len()))
25465                        .is_none_or(|len| len > config.get_memory_limit())
25466                    {
25467                        return alloy_sol_types::private::Err(
25468                            alloy_sol_types::Error::MemoryLimitExceeded(
25469                                config.get_memory_limit(),
25470                            ),
25471                        );
25472                    }
25473                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
25474                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
25475                        log: alloy_sol_types::private::Box::new(
25476                            alloy_sol_types::private::LogData::new_unchecked(
25477                                topics.to_vec(),
25478                                data.to_vec().into(),
25479                            ),
25480                        ),
25481                    })
25482                }
25483            }
25484        }
25485    }
25486    #[automatically_derived]
25487    impl alloy_sol_types::private::IntoLogData for StakeTableV2Events {
25488        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
25489            match self {
25490                Self::CommissionUpdated(inner) => {
25491                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25492                }
25493                Self::ConsensusKeysUpdated(inner) => {
25494                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25495                }
25496                Self::ConsensusKeysUpdatedV2(inner) => {
25497                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25498                }
25499                Self::Delegated(inner) => {
25500                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25501                }
25502                Self::ExitEscrowPeriodUpdated(inner) => {
25503                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25504                }
25505                Self::Initialized(inner) => {
25506                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25507                }
25508                Self::MaxCommissionIncreaseUpdated(inner) => {
25509                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25510                }
25511                Self::MetadataUriUpdated(inner) => {
25512                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25513                }
25514                Self::MinCommissionUpdateIntervalUpdated(inner) => {
25515                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25516                }
25517                Self::MinDelegateAmountUpdated(inner) => {
25518                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25519                }
25520                Self::OwnershipTransferred(inner) => {
25521                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25522                }
25523                Self::Paused(inner) => {
25524                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25525                }
25526                Self::RoleAdminChanged(inner) => {
25527                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25528                }
25529                Self::RoleGranted(inner) => {
25530                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25531                }
25532                Self::RoleRevoked(inner) => {
25533                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25534                }
25535                Self::Undelegated(inner) => {
25536                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25537                }
25538                Self::UndelegatedV2(inner) => {
25539                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25540                }
25541                Self::Unpaused(inner) => {
25542                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25543                }
25544                Self::Upgraded(inner) => {
25545                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25546                }
25547                Self::ValidatorExit(inner) => {
25548                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25549                }
25550                Self::ValidatorExitClaimed(inner) => {
25551                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25552                }
25553                Self::ValidatorExitV2(inner) => {
25554                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25555                }
25556                Self::ValidatorRegistered(inner) => {
25557                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25558                }
25559                Self::ValidatorRegisteredV2(inner) => {
25560                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25561                }
25562                Self::Withdrawal(inner) => {
25563                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25564                }
25565                Self::WithdrawalClaimed(inner) => {
25566                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
25567                }
25568            }
25569        }
25570        fn into_log_data(self) -> alloy_sol_types::private::LogData {
25571            match self {
25572                Self::CommissionUpdated(inner) => {
25573                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25574                }
25575                Self::ConsensusKeysUpdated(inner) => {
25576                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25577                }
25578                Self::ConsensusKeysUpdatedV2(inner) => {
25579                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25580                }
25581                Self::Delegated(inner) => {
25582                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25583                }
25584                Self::ExitEscrowPeriodUpdated(inner) => {
25585                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25586                }
25587                Self::Initialized(inner) => {
25588                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25589                }
25590                Self::MaxCommissionIncreaseUpdated(inner) => {
25591                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25592                }
25593                Self::MetadataUriUpdated(inner) => {
25594                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25595                }
25596                Self::MinCommissionUpdateIntervalUpdated(inner) => {
25597                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25598                }
25599                Self::MinDelegateAmountUpdated(inner) => {
25600                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25601                }
25602                Self::OwnershipTransferred(inner) => {
25603                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25604                }
25605                Self::Paused(inner) => {
25606                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25607                }
25608                Self::RoleAdminChanged(inner) => {
25609                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25610                }
25611                Self::RoleGranted(inner) => {
25612                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25613                }
25614                Self::RoleRevoked(inner) => {
25615                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25616                }
25617                Self::Undelegated(inner) => {
25618                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25619                }
25620                Self::UndelegatedV2(inner) => {
25621                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25622                }
25623                Self::Unpaused(inner) => {
25624                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25625                }
25626                Self::Upgraded(inner) => {
25627                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25628                }
25629                Self::ValidatorExit(inner) => {
25630                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25631                }
25632                Self::ValidatorExitClaimed(inner) => {
25633                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25634                }
25635                Self::ValidatorExitV2(inner) => {
25636                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25637                }
25638                Self::ValidatorRegistered(inner) => {
25639                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25640                }
25641                Self::ValidatorRegisteredV2(inner) => {
25642                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25643                }
25644                Self::Withdrawal(inner) => {
25645                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25646                }
25647                Self::WithdrawalClaimed(inner) => {
25648                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
25649                }
25650            }
25651        }
25652    }
25653    #[automatically_derived]
25654    impl StakeTableV2Events {
25655        /**Creates a [`CommissionUpdated`] event.
25656
25657```solidity
25658event CommissionUpdated(address,uint256,uint16,uint16)
25659```*/
25660        #[inline]
25661        pub fn commission_updated(
25662            validator: alloy::sol_types::private::Address,
25663            timestamp: alloy::sol_types::private::primitives::aliases::U256,
25664            old_commission: u16,
25665            new_commission: u16,
25666        ) -> Self {
25667            Self::CommissionUpdated(CommissionUpdated {
25668                validator: validator,
25669                timestamp: timestamp,
25670                oldCommission: old_commission,
25671                newCommission: new_commission,
25672            })
25673        }
25674        /**Creates a [`ConsensusKeysUpdated`] event.
25675
25676```solidity
25677event ConsensusKeysUpdated(address,(uint256,uint256,uint256,uint256),(uint256,uint256))
25678```*/
25679        #[inline]
25680        pub fn consensus_keys_updated(
25681            account: alloy::sol_types::private::Address,
25682            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25683            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25684        ) -> Self {
25685            Self::ConsensusKeysUpdated(ConsensusKeysUpdated {
25686                account: account,
25687                blsVK: bls_vk,
25688                schnorrVK: schnorr_vk,
25689            })
25690        }
25691        /**Creates a [`ConsensusKeysUpdatedV2`] event.
25692
25693```solidity
25694event ConsensusKeysUpdatedV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),(uint256,uint256),bytes)
25695```*/
25696        #[inline]
25697        pub fn consensus_keys_updated_v_2(
25698            account: alloy::sol_types::private::Address,
25699            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25700            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25701            bls_sig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
25702            schnorr_sig: alloy::sol_types::private::Bytes,
25703        ) -> Self {
25704            Self::ConsensusKeysUpdatedV2(ConsensusKeysUpdatedV2 {
25705                account: account,
25706                blsVK: bls_vk,
25707                schnorrVK: schnorr_vk,
25708                blsSig: bls_sig,
25709                schnorrSig: schnorr_sig,
25710            })
25711        }
25712        /**Creates a [`Delegated`] event.
25713
25714```solidity
25715event Delegated(address,address,uint256)
25716```*/
25717        #[inline]
25718        pub fn delegated(
25719            delegator: alloy::sol_types::private::Address,
25720            validator: alloy::sol_types::private::Address,
25721            amount: alloy::sol_types::private::primitives::aliases::U256,
25722        ) -> Self {
25723            Self::Delegated(Delegated {
25724                delegator: delegator,
25725                validator: validator,
25726                amount: amount,
25727            })
25728        }
25729        /**Creates a [`ExitEscrowPeriodUpdated`] event.
25730
25731```solidity
25732event ExitEscrowPeriodUpdated(uint64)
25733```*/
25734        #[inline]
25735        pub fn exit_escrow_period_updated(new_exit_escrow_period: u64) -> Self {
25736            Self::ExitEscrowPeriodUpdated(ExitEscrowPeriodUpdated {
25737                newExitEscrowPeriod: new_exit_escrow_period,
25738            })
25739        }
25740        /**Creates a [`Initialized`] event.
25741
25742```solidity
25743event Initialized(uint64)
25744```*/
25745        #[inline]
25746        pub fn initialized(version: u64) -> Self {
25747            Self::Initialized(Initialized { version: version })
25748        }
25749        /**Creates a [`MaxCommissionIncreaseUpdated`] event.
25750
25751```solidity
25752event MaxCommissionIncreaseUpdated(uint16)
25753```*/
25754        #[inline]
25755        pub fn max_commission_increase_updated(new_max_increase: u16) -> Self {
25756            Self::MaxCommissionIncreaseUpdated(MaxCommissionIncreaseUpdated {
25757                newMaxIncrease: new_max_increase,
25758            })
25759        }
25760        /**Creates a [`MetadataUriUpdated`] event.
25761
25762```solidity
25763event MetadataUriUpdated(address,string)
25764```*/
25765        #[inline]
25766        pub fn metadata_uri_updated(
25767            validator: alloy::sol_types::private::Address,
25768            metadata_uri: alloy::sol_types::private::String,
25769        ) -> Self {
25770            Self::MetadataUriUpdated(MetadataUriUpdated {
25771                validator: validator,
25772                metadataUri: metadata_uri,
25773            })
25774        }
25775        /**Creates a [`MinCommissionUpdateIntervalUpdated`] event.
25776
25777```solidity
25778event MinCommissionUpdateIntervalUpdated(uint256)
25779```*/
25780        #[inline]
25781        pub fn min_commission_update_interval_updated(
25782            new_interval: alloy::sol_types::private::primitives::aliases::U256,
25783        ) -> Self {
25784            Self::MinCommissionUpdateIntervalUpdated(MinCommissionUpdateIntervalUpdated {
25785                newInterval: new_interval,
25786            })
25787        }
25788        /**Creates a [`MinDelegateAmountUpdated`] event.
25789
25790```solidity
25791event MinDelegateAmountUpdated(uint256)
25792```*/
25793        #[inline]
25794        pub fn min_delegate_amount_updated(
25795            new_min_delegate_amount: alloy::sol_types::private::primitives::aliases::U256,
25796        ) -> Self {
25797            Self::MinDelegateAmountUpdated(MinDelegateAmountUpdated {
25798                newMinDelegateAmount: new_min_delegate_amount,
25799            })
25800        }
25801        /**Creates a [`OwnershipTransferred`] event.
25802
25803```solidity
25804event OwnershipTransferred(address,address)
25805```*/
25806        #[inline]
25807        pub fn ownership_transferred(
25808            previous_owner: alloy::sol_types::private::Address,
25809            new_owner: alloy::sol_types::private::Address,
25810        ) -> Self {
25811            Self::OwnershipTransferred(OwnershipTransferred {
25812                previousOwner: previous_owner,
25813                newOwner: new_owner,
25814            })
25815        }
25816        /**Creates a [`Paused`] event.
25817
25818```solidity
25819event Paused(address)
25820```*/
25821        #[inline]
25822        pub fn paused(account: alloy::sol_types::private::Address) -> Self {
25823            Self::Paused(Paused { account: account })
25824        }
25825        /**Creates a [`RoleAdminChanged`] event.
25826
25827```solidity
25828event RoleAdminChanged(bytes32,bytes32,bytes32)
25829```*/
25830        #[inline]
25831        pub fn role_admin_changed(
25832            role: alloy::sol_types::private::FixedBytes<32>,
25833            previous_admin_role: alloy::sol_types::private::FixedBytes<32>,
25834            new_admin_role: alloy::sol_types::private::FixedBytes<32>,
25835        ) -> Self {
25836            Self::RoleAdminChanged(RoleAdminChanged {
25837                role: role,
25838                previousAdminRole: previous_admin_role,
25839                newAdminRole: new_admin_role,
25840            })
25841        }
25842        /**Creates a [`RoleGranted`] event.
25843
25844```solidity
25845event RoleGranted(bytes32,address,address)
25846```*/
25847        #[inline]
25848        pub fn role_granted(
25849            role: alloy::sol_types::private::FixedBytes<32>,
25850            account: alloy::sol_types::private::Address,
25851            sender: alloy::sol_types::private::Address,
25852        ) -> Self {
25853            Self::RoleGranted(RoleGranted {
25854                role: role,
25855                account: account,
25856                sender: sender,
25857            })
25858        }
25859        /**Creates a [`RoleRevoked`] event.
25860
25861```solidity
25862event RoleRevoked(bytes32,address,address)
25863```*/
25864        #[inline]
25865        pub fn role_revoked(
25866            role: alloy::sol_types::private::FixedBytes<32>,
25867            account: alloy::sol_types::private::Address,
25868            sender: alloy::sol_types::private::Address,
25869        ) -> Self {
25870            Self::RoleRevoked(RoleRevoked {
25871                role: role,
25872                account: account,
25873                sender: sender,
25874            })
25875        }
25876        /**Creates a [`Undelegated`] event.
25877
25878```solidity
25879event Undelegated(address,address,uint256)
25880```*/
25881        #[inline]
25882        pub fn undelegated(
25883            delegator: alloy::sol_types::private::Address,
25884            validator: alloy::sol_types::private::Address,
25885            amount: alloy::sol_types::private::primitives::aliases::U256,
25886        ) -> Self {
25887            Self::Undelegated(Undelegated {
25888                delegator: delegator,
25889                validator: validator,
25890                amount: amount,
25891            })
25892        }
25893        /**Creates a [`UndelegatedV2`] event.
25894
25895```solidity
25896event UndelegatedV2(address,address,uint64,uint256,uint256)
25897```*/
25898        #[inline]
25899        pub fn undelegated_v_2(
25900            delegator: alloy::sol_types::private::Address,
25901            validator: alloy::sol_types::private::Address,
25902            undelegation_id: u64,
25903            amount: alloy::sol_types::private::primitives::aliases::U256,
25904            unlocks_at: alloy::sol_types::private::primitives::aliases::U256,
25905        ) -> Self {
25906            Self::UndelegatedV2(UndelegatedV2 {
25907                delegator: delegator,
25908                validator: validator,
25909                undelegationId: undelegation_id,
25910                amount: amount,
25911                unlocksAt: unlocks_at,
25912            })
25913        }
25914        /**Creates a [`Unpaused`] event.
25915
25916```solidity
25917event Unpaused(address)
25918```*/
25919        #[inline]
25920        pub fn unpaused(account: alloy::sol_types::private::Address) -> Self {
25921            Self::Unpaused(Unpaused { account: account })
25922        }
25923        /**Creates a [`Upgraded`] event.
25924
25925```solidity
25926event Upgraded(address)
25927```*/
25928        #[inline]
25929        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
25930            Self::Upgraded(Upgraded {
25931                implementation: implementation,
25932            })
25933        }
25934        /**Creates a [`ValidatorExit`] event.
25935
25936```solidity
25937event ValidatorExit(address)
25938```*/
25939        #[inline]
25940        pub fn validator_exit(validator: alloy::sol_types::private::Address) -> Self {
25941            Self::ValidatorExit(ValidatorExit {
25942                validator: validator,
25943            })
25944        }
25945        /**Creates a [`ValidatorExitClaimed`] event.
25946
25947```solidity
25948event ValidatorExitClaimed(address,address,uint256)
25949```*/
25950        #[inline]
25951        pub fn validator_exit_claimed(
25952            delegator: alloy::sol_types::private::Address,
25953            validator: alloy::sol_types::private::Address,
25954            amount: alloy::sol_types::private::primitives::aliases::U256,
25955        ) -> Self {
25956            Self::ValidatorExitClaimed(ValidatorExitClaimed {
25957                delegator: delegator,
25958                validator: validator,
25959                amount: amount,
25960            })
25961        }
25962        /**Creates a [`ValidatorExitV2`] event.
25963
25964```solidity
25965event ValidatorExitV2(address,uint256)
25966```*/
25967        #[inline]
25968        pub fn validator_exit_v_2(
25969            validator: alloy::sol_types::private::Address,
25970            unlocks_at: alloy::sol_types::private::primitives::aliases::U256,
25971        ) -> Self {
25972            Self::ValidatorExitV2(ValidatorExitV2 {
25973                validator: validator,
25974                unlocksAt: unlocks_at,
25975            })
25976        }
25977        /**Creates a [`ValidatorRegistered`] event.
25978
25979```solidity
25980event ValidatorRegistered(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16)
25981```*/
25982        #[inline]
25983        pub fn validator_registered(
25984            account: alloy::sol_types::private::Address,
25985            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
25986            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
25987            commission: u16,
25988        ) -> Self {
25989            Self::ValidatorRegistered(ValidatorRegistered {
25990                account: account,
25991                blsVk: bls_vk,
25992                schnorrVk: schnorr_vk,
25993                commission: commission,
25994            })
25995        }
25996        /**Creates a [`ValidatorRegisteredV2`] event.
25997
25998```solidity
25999event ValidatorRegisteredV2(address,(uint256,uint256,uint256,uint256),(uint256,uint256),uint16,(uint256,uint256),bytes,string)
26000```*/
26001        #[inline]
26002        pub fn validator_registered_v_2(
26003            account: alloy::sol_types::private::Address,
26004            bls_vk: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26005            schnorr_vk: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
26006            commission: u16,
26007            bls_sig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
26008            schnorr_sig: alloy::sol_types::private::Bytes,
26009            metadata_uri: alloy::sol_types::private::String,
26010        ) -> Self {
26011            Self::ValidatorRegisteredV2(ValidatorRegisteredV2 {
26012                account: account,
26013                blsVK: bls_vk,
26014                schnorrVK: schnorr_vk,
26015                commission: commission,
26016                blsSig: bls_sig,
26017                schnorrSig: schnorr_sig,
26018                metadataUri: metadata_uri,
26019            })
26020        }
26021        /**Creates a [`Withdrawal`] event.
26022
26023```solidity
26024event Withdrawal(address,uint256)
26025```*/
26026        #[inline]
26027        pub fn withdrawal(
26028            account: alloy::sol_types::private::Address,
26029            amount: alloy::sol_types::private::primitives::aliases::U256,
26030        ) -> Self {
26031            Self::Withdrawal(Withdrawal {
26032                account: account,
26033                amount: amount,
26034            })
26035        }
26036        /**Creates a [`WithdrawalClaimed`] event.
26037
26038```solidity
26039event WithdrawalClaimed(address,address,uint64,uint256)
26040```*/
26041        #[inline]
26042        pub fn withdrawal_claimed(
26043            delegator: alloy::sol_types::private::Address,
26044            validator: alloy::sol_types::private::Address,
26045            undelegation_id: u64,
26046            amount: alloy::sol_types::private::primitives::aliases::U256,
26047        ) -> Self {
26048            Self::WithdrawalClaimed(WithdrawalClaimed {
26049                delegator: delegator,
26050                validator: validator,
26051                undelegationId: undelegation_id,
26052                amount: amount,
26053            })
26054        }
26055    }
26056    use alloy::contract as alloy_contract;
26057    /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
26058
26059See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
26060    #[inline]
26061    pub const fn new<
26062        P: alloy_contract::private::Provider<N>,
26063        N: alloy_contract::private::Network,
26064    >(
26065        address: alloy_sol_types::private::Address,
26066        __provider: P,
26067    ) -> StakeTableV2Instance<P, N> {
26068        StakeTableV2Instance::<P, N>::new(address, __provider)
26069    }
26070    /**Deploys this contract using the given `provider` and constructor arguments, if any.
26071
26072Returns a new instance of the contract, if the deployment was successful.
26073
26074For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
26075    #[inline]
26076    pub fn deploy<
26077        P: alloy_contract::private::Provider<N>,
26078        N: alloy_contract::private::Network,
26079    >(
26080        __provider: P,
26081    ) -> impl ::core::future::Future<
26082        Output = alloy_contract::Result<StakeTableV2Instance<P, N>>,
26083    > {
26084        StakeTableV2Instance::<P, N>::deploy(__provider)
26085    }
26086    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
26087and constructor arguments, if any.
26088
26089This is a simple wrapper around creating a `RawCallBuilder` with the data set to
26090the bytecode concatenated with the constructor's ABI-encoded arguments.*/
26091    #[inline]
26092    pub fn deploy_builder<
26093        P: alloy_contract::private::Provider<N>,
26094        N: alloy_contract::private::Network,
26095    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
26096        StakeTableV2Instance::<P, N>::deploy_builder(__provider)
26097    }
26098    /**A [`StakeTableV2`](self) instance.
26099
26100Contains type-safe methods for interacting with an on-chain instance of the
26101[`StakeTableV2`](self) contract located at a given `address`, using a given
26102provider `P`.
26103
26104If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
26105documentation on how to provide it), the `deploy` and `deploy_builder` methods can
26106be used to deploy a new instance of the contract.
26107
26108See the [module-level documentation](self) for all the available methods.*/
26109    #[derive(Clone)]
26110    pub struct StakeTableV2Instance<P, N = alloy_contract::private::Ethereum> {
26111        address: alloy_sol_types::private::Address,
26112        provider: P,
26113        _network: ::core::marker::PhantomData<N>,
26114    }
26115    #[automatically_derived]
26116    impl<P, N> ::core::fmt::Debug for StakeTableV2Instance<P, N> {
26117        #[inline]
26118        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
26119            f.debug_tuple("StakeTableV2Instance").field(&self.address).finish()
26120        }
26121    }
26122    /// Instantiation and getters/setters.
26123    impl<
26124        P: alloy_contract::private::Provider<N>,
26125        N: alloy_contract::private::Network,
26126    > StakeTableV2Instance<P, N> {
26127        /**Creates a new wrapper around an on-chain [`StakeTableV2`](self) contract instance.
26128
26129See the [wrapper's documentation](`StakeTableV2Instance`) for more details.*/
26130        #[inline]
26131        pub const fn new(
26132            address: alloy_sol_types::private::Address,
26133            __provider: P,
26134        ) -> Self {
26135            Self {
26136                address,
26137                provider: __provider,
26138                _network: ::core::marker::PhantomData,
26139            }
26140        }
26141        /**Deploys this contract using the given `provider` and constructor arguments, if any.
26142
26143Returns a new instance of the contract, if the deployment was successful.
26144
26145For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
26146        #[inline]
26147        pub async fn deploy(
26148            __provider: P,
26149        ) -> alloy_contract::Result<StakeTableV2Instance<P, N>> {
26150            let call_builder = Self::deploy_builder(__provider);
26151            let contract_address = call_builder.deploy().await?;
26152            Ok(Self::new(contract_address, call_builder.provider))
26153        }
26154        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
26155and constructor arguments, if any.
26156
26157This is a simple wrapper around creating a `RawCallBuilder` with the data set to
26158the bytecode concatenated with the constructor's ABI-encoded arguments.*/
26159        #[inline]
26160        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
26161            alloy_contract::RawCallBuilder::new_raw_deploy(
26162                __provider,
26163                ::core::clone::Clone::clone(&BYTECODE),
26164            )
26165        }
26166        /// Returns a reference to the address.
26167        #[inline]
26168        pub const fn address(&self) -> &alloy_sol_types::private::Address {
26169            &self.address
26170        }
26171        /// Sets the address.
26172        #[inline]
26173        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
26174            self.address = address;
26175        }
26176        /// Sets the address and returns `self`.
26177        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
26178            self.set_address(address);
26179            self
26180        }
26181        /// Returns a reference to the provider.
26182        #[inline]
26183        pub const fn provider(&self) -> &P {
26184            &self.provider
26185        }
26186    }
26187    impl<P: ::core::clone::Clone, N> StakeTableV2Instance<&P, N> {
26188        /// Clones the provider and returns a new instance with the cloned provider.
26189        #[inline]
26190        pub fn with_cloned_provider(self) -> StakeTableV2Instance<P, N> {
26191            StakeTableV2Instance {
26192                address: self.address,
26193                provider: ::core::clone::Clone::clone(&self.provider),
26194                _network: ::core::marker::PhantomData,
26195            }
26196        }
26197    }
26198    /// Function calls.
26199    impl<
26200        P: alloy_contract::private::Provider<N>,
26201        N: alloy_contract::private::Network,
26202    > StakeTableV2Instance<P, N> {
26203        /// Creates a new call builder using this contract instance's provider and address.
26204        ///
26205        /// Note that the call can be any function call, not just those defined in this
26206        /// contract. Prefer using the other methods for building type-safe contract calls.
26207        pub fn call_builder<C: alloy_sol_types::SolCall>(
26208            &self,
26209            call: &C,
26210        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
26211            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
26212        }
26213        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
26214        pub fn DEFAULT_ADMIN_ROLE(
26215            &self,
26216        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
26217            self.call_builder(&DEFAULT_ADMIN_ROLECall)
26218        }
26219        ///Creates a new call builder for the [`MAX_COMMISSION_BPS`] function.
26220        pub fn MAX_COMMISSION_BPS(
26221            &self,
26222        ) -> alloy_contract::SolCallBuilder<&P, MAX_COMMISSION_BPSCall, N> {
26223            self.call_builder(&MAX_COMMISSION_BPSCall)
26224        }
26225        ///Creates a new call builder for the [`MAX_EXIT_ESCROW_PERIOD`] function.
26226        pub fn MAX_EXIT_ESCROW_PERIOD(
26227            &self,
26228        ) -> alloy_contract::SolCallBuilder<&P, MAX_EXIT_ESCROW_PERIODCall, N> {
26229            self.call_builder(&MAX_EXIT_ESCROW_PERIODCall)
26230        }
26231        ///Creates a new call builder for the [`MAX_METADATA_URI_LENGTH`] function.
26232        pub fn MAX_METADATA_URI_LENGTH(
26233            &self,
26234        ) -> alloy_contract::SolCallBuilder<&P, MAX_METADATA_URI_LENGTHCall, N> {
26235            self.call_builder(&MAX_METADATA_URI_LENGTHCall)
26236        }
26237        ///Creates a new call builder for the [`MIN_EXIT_ESCROW_PERIOD`] function.
26238        pub fn MIN_EXIT_ESCROW_PERIOD(
26239            &self,
26240        ) -> alloy_contract::SolCallBuilder<&P, MIN_EXIT_ESCROW_PERIODCall, N> {
26241            self.call_builder(&MIN_EXIT_ESCROW_PERIODCall)
26242        }
26243        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
26244        pub fn PAUSER_ROLE(
26245            &self,
26246        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
26247            self.call_builder(&PAUSER_ROLECall)
26248        }
26249        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
26250        pub fn UPGRADE_INTERFACE_VERSION(
26251            &self,
26252        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
26253            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
26254        }
26255        ///Creates a new call builder for the [`_hashBlsKey`] function.
26256        pub fn _hashBlsKey(
26257            &self,
26258            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26259        ) -> alloy_contract::SolCallBuilder<&P, _hashBlsKeyCall, N> {
26260            self.call_builder(&_hashBlsKeyCall { blsVK })
26261        }
26262        ///Creates a new call builder for the [`activeStake`] function.
26263        pub fn activeStake(
26264            &self,
26265        ) -> alloy_contract::SolCallBuilder<&P, activeStakeCall, N> {
26266            self.call_builder(&activeStakeCall)
26267        }
26268        ///Creates a new call builder for the [`blsKeys`] function.
26269        pub fn blsKeys(
26270            &self,
26271            blsKeyHash: alloy::sol_types::private::FixedBytes<32>,
26272        ) -> alloy_contract::SolCallBuilder<&P, blsKeysCall, N> {
26273            self.call_builder(&blsKeysCall { blsKeyHash })
26274        }
26275        ///Creates a new call builder for the [`claimValidatorExit`] function.
26276        pub fn claimValidatorExit(
26277            &self,
26278            validator: alloy::sol_types::private::Address,
26279        ) -> alloy_contract::SolCallBuilder<&P, claimValidatorExitCall, N> {
26280            self.call_builder(
26281                &claimValidatorExitCall {
26282                    validator,
26283                },
26284            )
26285        }
26286        ///Creates a new call builder for the [`claimWithdrawal`] function.
26287        pub fn claimWithdrawal(
26288            &self,
26289            validator: alloy::sol_types::private::Address,
26290        ) -> alloy_contract::SolCallBuilder<&P, claimWithdrawalCall, N> {
26291            self.call_builder(&claimWithdrawalCall { validator })
26292        }
26293        ///Creates a new call builder for the [`commissionTracking`] function.
26294        pub fn commissionTracking(
26295            &self,
26296            validator: alloy::sol_types::private::Address,
26297        ) -> alloy_contract::SolCallBuilder<&P, commissionTrackingCall, N> {
26298            self.call_builder(
26299                &commissionTrackingCall {
26300                    validator,
26301                },
26302            )
26303        }
26304        ///Creates a new call builder for the [`delegate`] function.
26305        pub fn delegate(
26306            &self,
26307            validator: alloy::sol_types::private::Address,
26308            amount: alloy::sol_types::private::primitives::aliases::U256,
26309        ) -> alloy_contract::SolCallBuilder<&P, delegateCall, N> {
26310            self.call_builder(&delegateCall { validator, amount })
26311        }
26312        ///Creates a new call builder for the [`delegations`] function.
26313        pub fn delegations(
26314            &self,
26315            validator: alloy::sol_types::private::Address,
26316            delegator: alloy::sol_types::private::Address,
26317        ) -> alloy_contract::SolCallBuilder<&P, delegationsCall, N> {
26318            self.call_builder(
26319                &delegationsCall {
26320                    validator,
26321                    delegator,
26322                },
26323            )
26324        }
26325        ///Creates a new call builder for the [`deregisterValidator`] function.
26326        pub fn deregisterValidator(
26327            &self,
26328        ) -> alloy_contract::SolCallBuilder<&P, deregisterValidatorCall, N> {
26329            self.call_builder(&deregisterValidatorCall)
26330        }
26331        ///Creates a new call builder for the [`exitEscrowPeriod`] function.
26332        pub fn exitEscrowPeriod(
26333            &self,
26334        ) -> alloy_contract::SolCallBuilder<&P, exitEscrowPeriodCall, N> {
26335            self.call_builder(&exitEscrowPeriodCall)
26336        }
26337        ///Creates a new call builder for the [`getRoleAdmin`] function.
26338        pub fn getRoleAdmin(
26339            &self,
26340            role: alloy::sol_types::private::FixedBytes<32>,
26341        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
26342            self.call_builder(&getRoleAdminCall { role })
26343        }
26344        ///Creates a new call builder for the [`getUndelegation`] function.
26345        pub fn getUndelegation(
26346            &self,
26347            validator: alloy::sol_types::private::Address,
26348            delegator: alloy::sol_types::private::Address,
26349        ) -> alloy_contract::SolCallBuilder<&P, getUndelegationCall, N> {
26350            self.call_builder(
26351                &getUndelegationCall {
26352                    validator,
26353                    delegator,
26354                },
26355            )
26356        }
26357        ///Creates a new call builder for the [`getVersion`] function.
26358        pub fn getVersion(
26359            &self,
26360        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
26361            self.call_builder(&getVersionCall)
26362        }
26363        ///Creates a new call builder for the [`grantRole`] function.
26364        pub fn grantRole(
26365            &self,
26366            role: alloy::sol_types::private::FixedBytes<32>,
26367            account: alloy::sol_types::private::Address,
26368        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
26369            self.call_builder(&grantRoleCall { role, account })
26370        }
26371        ///Creates a new call builder for the [`hasRole`] function.
26372        pub fn hasRole(
26373            &self,
26374            role: alloy::sol_types::private::FixedBytes<32>,
26375            account: alloy::sol_types::private::Address,
26376        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
26377            self.call_builder(&hasRoleCall { role, account })
26378        }
26379        ///Creates a new call builder for the [`initialize`] function.
26380        pub fn initialize(
26381            &self,
26382            _tokenAddress: alloy::sol_types::private::Address,
26383            _lightClientAddress: alloy::sol_types::private::Address,
26384            _exitEscrowPeriod: alloy::sol_types::private::primitives::aliases::U256,
26385            _timelock: alloy::sol_types::private::Address,
26386        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
26387            self.call_builder(
26388                &initializeCall {
26389                    _tokenAddress,
26390                    _lightClientAddress,
26391                    _exitEscrowPeriod,
26392                    _timelock,
26393                },
26394            )
26395        }
26396        ///Creates a new call builder for the [`initializeV2`] function.
26397        pub fn initializeV2(
26398            &self,
26399            pauser: alloy::sol_types::private::Address,
26400            admin: alloy::sol_types::private::Address,
26401            initialActiveStake: alloy::sol_types::private::primitives::aliases::U256,
26402            initialCommissions: alloy::sol_types::private::Vec<
26403                <InitialCommission as alloy::sol_types::SolType>::RustType,
26404            >,
26405        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
26406            self.call_builder(
26407                &initializeV2Call {
26408                    pauser,
26409                    admin,
26410                    initialActiveStake,
26411                    initialCommissions,
26412                },
26413            )
26414        }
26415        ///Creates a new call builder for the [`initializedAtBlock`] function.
26416        pub fn initializedAtBlock(
26417            &self,
26418        ) -> alloy_contract::SolCallBuilder<&P, initializedAtBlockCall, N> {
26419            self.call_builder(&initializedAtBlockCall)
26420        }
26421        ///Creates a new call builder for the [`lightClient`] function.
26422        pub fn lightClient(
26423            &self,
26424        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
26425            self.call_builder(&lightClientCall)
26426        }
26427        ///Creates a new call builder for the [`maxCommissionIncrease`] function.
26428        pub fn maxCommissionIncrease(
26429            &self,
26430        ) -> alloy_contract::SolCallBuilder<&P, maxCommissionIncreaseCall, N> {
26431            self.call_builder(&maxCommissionIncreaseCall)
26432        }
26433        ///Creates a new call builder for the [`minCommissionIncreaseInterval`] function.
26434        pub fn minCommissionIncreaseInterval(
26435            &self,
26436        ) -> alloy_contract::SolCallBuilder<&P, minCommissionIncreaseIntervalCall, N> {
26437            self.call_builder(&minCommissionIncreaseIntervalCall)
26438        }
26439        ///Creates a new call builder for the [`minDelegateAmount`] function.
26440        pub fn minDelegateAmount(
26441            &self,
26442        ) -> alloy_contract::SolCallBuilder<&P, minDelegateAmountCall, N> {
26443            self.call_builder(&minDelegateAmountCall)
26444        }
26445        ///Creates a new call builder for the [`owner`] function.
26446        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
26447            self.call_builder(&ownerCall)
26448        }
26449        ///Creates a new call builder for the [`pause`] function.
26450        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
26451            self.call_builder(&pauseCall)
26452        }
26453        ///Creates a new call builder for the [`paused`] function.
26454        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
26455            self.call_builder(&pausedCall)
26456        }
26457        ///Creates a new call builder for the [`proxiableUUID`] function.
26458        pub fn proxiableUUID(
26459            &self,
26460        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
26461            self.call_builder(&proxiableUUIDCall)
26462        }
26463        ///Creates a new call builder for the [`registerValidator`] function.
26464        pub fn registerValidator(
26465            &self,
26466            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26467            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
26468            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
26469            _3: u16,
26470        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorCall, N> {
26471            self.call_builder(
26472                &registerValidatorCall {
26473                    _0,
26474                    _1,
26475                    _2,
26476                    _3,
26477                },
26478            )
26479        }
26480        ///Creates a new call builder for the [`registerValidatorV2`] function.
26481        pub fn registerValidatorV2(
26482            &self,
26483            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26484            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
26485            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
26486            schnorrSig: alloy::sol_types::private::Bytes,
26487            commission: u16,
26488            metadataUri: alloy::sol_types::private::String,
26489        ) -> alloy_contract::SolCallBuilder<&P, registerValidatorV2Call, N> {
26490            self.call_builder(
26491                &registerValidatorV2Call {
26492                    blsVK,
26493                    schnorrVK,
26494                    blsSig,
26495                    schnorrSig,
26496                    commission,
26497                    metadataUri,
26498                },
26499            )
26500        }
26501        ///Creates a new call builder for the [`renounceOwnership`] function.
26502        pub fn renounceOwnership(
26503            &self,
26504        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
26505            self.call_builder(&renounceOwnershipCall)
26506        }
26507        ///Creates a new call builder for the [`renounceRole`] function.
26508        pub fn renounceRole(
26509            &self,
26510            role: alloy::sol_types::private::FixedBytes<32>,
26511            callerConfirmation: alloy::sol_types::private::Address,
26512        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
26513            self.call_builder(
26514                &renounceRoleCall {
26515                    role,
26516                    callerConfirmation,
26517                },
26518            )
26519        }
26520        ///Creates a new call builder for the [`revokeRole`] function.
26521        pub fn revokeRole(
26522            &self,
26523            role: alloy::sol_types::private::FixedBytes<32>,
26524            account: alloy::sol_types::private::Address,
26525        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
26526            self.call_builder(&revokeRoleCall { role, account })
26527        }
26528        ///Creates a new call builder for the [`schnorrKeys`] function.
26529        pub fn schnorrKeys(
26530            &self,
26531            schnorrKey: alloy::sol_types::private::FixedBytes<32>,
26532        ) -> alloy_contract::SolCallBuilder<&P, schnorrKeysCall, N> {
26533            self.call_builder(&schnorrKeysCall { schnorrKey })
26534        }
26535        ///Creates a new call builder for the [`setMaxCommissionIncrease`] function.
26536        pub fn setMaxCommissionIncrease(
26537            &self,
26538            newMaxIncrease: u16,
26539        ) -> alloy_contract::SolCallBuilder<&P, setMaxCommissionIncreaseCall, N> {
26540            self.call_builder(
26541                &setMaxCommissionIncreaseCall {
26542                    newMaxIncrease,
26543                },
26544            )
26545        }
26546        ///Creates a new call builder for the [`setMinCommissionUpdateInterval`] function.
26547        pub fn setMinCommissionUpdateInterval(
26548            &self,
26549            newInterval: alloy::sol_types::private::primitives::aliases::U256,
26550        ) -> alloy_contract::SolCallBuilder<&P, setMinCommissionUpdateIntervalCall, N> {
26551            self.call_builder(
26552                &setMinCommissionUpdateIntervalCall {
26553                    newInterval,
26554                },
26555            )
26556        }
26557        ///Creates a new call builder for the [`setMinDelegateAmount`] function.
26558        pub fn setMinDelegateAmount(
26559            &self,
26560            newMinDelegateAmount: alloy::sol_types::private::primitives::aliases::U256,
26561        ) -> alloy_contract::SolCallBuilder<&P, setMinDelegateAmountCall, N> {
26562            self.call_builder(
26563                &setMinDelegateAmountCall {
26564                    newMinDelegateAmount,
26565                },
26566            )
26567        }
26568        ///Creates a new call builder for the [`supportsInterface`] function.
26569        pub fn supportsInterface(
26570            &self,
26571            interfaceId: alloy::sol_types::private::FixedBytes<4>,
26572        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
26573            self.call_builder(
26574                &supportsInterfaceCall {
26575                    interfaceId,
26576                },
26577            )
26578        }
26579        ///Creates a new call builder for the [`token`] function.
26580        pub fn token(&self) -> alloy_contract::SolCallBuilder<&P, tokenCall, N> {
26581            self.call_builder(&tokenCall)
26582        }
26583        ///Creates a new call builder for the [`transferOwnership`] function.
26584        pub fn transferOwnership(
26585            &self,
26586            newOwner: alloy::sol_types::private::Address,
26587        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
26588            self.call_builder(&transferOwnershipCall { newOwner })
26589        }
26590        ///Creates a new call builder for the [`undelegate`] function.
26591        pub fn undelegate(
26592            &self,
26593            validator: alloy::sol_types::private::Address,
26594            amount: alloy::sol_types::private::primitives::aliases::U256,
26595        ) -> alloy_contract::SolCallBuilder<&P, undelegateCall, N> {
26596            self.call_builder(
26597                &undelegateCall {
26598                    validator,
26599                    amount,
26600                },
26601            )
26602        }
26603        ///Creates a new call builder for the [`undelegations`] function.
26604        pub fn undelegations(
26605            &self,
26606            validator: alloy::sol_types::private::Address,
26607            delegator: alloy::sol_types::private::Address,
26608        ) -> alloy_contract::SolCallBuilder<&P, undelegationsCall, N> {
26609            self.call_builder(
26610                &undelegationsCall {
26611                    validator,
26612                    delegator,
26613                },
26614            )
26615        }
26616        ///Creates a new call builder for the [`unpause`] function.
26617        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
26618            self.call_builder(&unpauseCall)
26619        }
26620        ///Creates a new call builder for the [`updateCommission`] function.
26621        pub fn updateCommission(
26622            &self,
26623            newCommission: u16,
26624        ) -> alloy_contract::SolCallBuilder<&P, updateCommissionCall, N> {
26625            self.call_builder(
26626                &updateCommissionCall {
26627                    newCommission,
26628                },
26629            )
26630        }
26631        ///Creates a new call builder for the [`updateConsensusKeys`] function.
26632        pub fn updateConsensusKeys(
26633            &self,
26634            _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26635            _1: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
26636            _2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
26637        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysCall, N> {
26638            self.call_builder(
26639                &updateConsensusKeysCall {
26640                    _0,
26641                    _1,
26642                    _2,
26643                },
26644            )
26645        }
26646        ///Creates a new call builder for the [`updateConsensusKeysV2`] function.
26647        pub fn updateConsensusKeysV2(
26648            &self,
26649            blsVK: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
26650            schnorrVK: <EdOnBN254::EdOnBN254Point as alloy::sol_types::SolType>::RustType,
26651            blsSig: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
26652            schnorrSig: alloy::sol_types::private::Bytes,
26653        ) -> alloy_contract::SolCallBuilder<&P, updateConsensusKeysV2Call, N> {
26654            self.call_builder(
26655                &updateConsensusKeysV2Call {
26656                    blsVK,
26657                    schnorrVK,
26658                    blsSig,
26659                    schnorrSig,
26660                },
26661            )
26662        }
26663        ///Creates a new call builder for the [`updateExitEscrowPeriod`] function.
26664        pub fn updateExitEscrowPeriod(
26665            &self,
26666            newExitEscrowPeriod: u64,
26667        ) -> alloy_contract::SolCallBuilder<&P, updateExitEscrowPeriodCall, N> {
26668            self.call_builder(
26669                &updateExitEscrowPeriodCall {
26670                    newExitEscrowPeriod,
26671                },
26672            )
26673        }
26674        ///Creates a new call builder for the [`updateMetadataUri`] function.
26675        pub fn updateMetadataUri(
26676            &self,
26677            metadataUri: alloy::sol_types::private::String,
26678        ) -> alloy_contract::SolCallBuilder<&P, updateMetadataUriCall, N> {
26679            self.call_builder(
26680                &updateMetadataUriCall {
26681                    metadataUri,
26682                },
26683            )
26684        }
26685        ///Creates a new call builder for the [`upgradeToAndCall`] function.
26686        pub fn upgradeToAndCall(
26687            &self,
26688            newImplementation: alloy::sol_types::private::Address,
26689            data: alloy::sol_types::private::Bytes,
26690        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
26691            self.call_builder(
26692                &upgradeToAndCallCall {
26693                    newImplementation,
26694                    data,
26695                },
26696            )
26697        }
26698        ///Creates a new call builder for the [`validateMetadataUri`] function.
26699        pub fn validateMetadataUri(
26700            &self,
26701            metadataUri: alloy::sol_types::private::String,
26702        ) -> alloy_contract::SolCallBuilder<&P, validateMetadataUriCall, N> {
26703            self.call_builder(
26704                &validateMetadataUriCall {
26705                    metadataUri,
26706                },
26707            )
26708        }
26709        ///Creates a new call builder for the [`validatorExits`] function.
26710        pub fn validatorExits(
26711            &self,
26712            validator: alloy::sol_types::private::Address,
26713        ) -> alloy_contract::SolCallBuilder<&P, validatorExitsCall, N> {
26714            self.call_builder(&validatorExitsCall { validator })
26715        }
26716        ///Creates a new call builder for the [`validators`] function.
26717        pub fn validators(
26718            &self,
26719            account: alloy::sol_types::private::Address,
26720        ) -> alloy_contract::SolCallBuilder<&P, validatorsCall, N> {
26721            self.call_builder(&validatorsCall { account })
26722        }
26723    }
26724    /// Event filters.
26725    impl<
26726        P: alloy_contract::private::Provider<N>,
26727        N: alloy_contract::private::Network,
26728    > StakeTableV2Instance<P, N> {
26729        /// Creates a new event filter using this contract instance's provider and address.
26730        ///
26731        /// Note that the type can be any event, not just those defined in this contract.
26732        /// Prefer using the other methods for building type-safe event filters.
26733        pub fn event_filter<E: alloy_sol_types::SolEvent>(
26734            &self,
26735        ) -> alloy_contract::Event<&P, E, N> {
26736            alloy_contract::Event::new_sol(&self.provider, &self.address)
26737        }
26738        ///Creates a new event filter for the [`CommissionUpdated`] event.
26739        pub fn CommissionUpdated_filter(
26740            &self,
26741        ) -> alloy_contract::Event<&P, CommissionUpdated, N> {
26742            self.event_filter::<CommissionUpdated>()
26743        }
26744        ///Creates a new event filter for the [`ConsensusKeysUpdated`] event.
26745        pub fn ConsensusKeysUpdated_filter(
26746            &self,
26747        ) -> alloy_contract::Event<&P, ConsensusKeysUpdated, N> {
26748            self.event_filter::<ConsensusKeysUpdated>()
26749        }
26750        ///Creates a new event filter for the [`ConsensusKeysUpdatedV2`] event.
26751        pub fn ConsensusKeysUpdatedV2_filter(
26752            &self,
26753        ) -> alloy_contract::Event<&P, ConsensusKeysUpdatedV2, N> {
26754            self.event_filter::<ConsensusKeysUpdatedV2>()
26755        }
26756        ///Creates a new event filter for the [`Delegated`] event.
26757        pub fn Delegated_filter(&self) -> alloy_contract::Event<&P, Delegated, N> {
26758            self.event_filter::<Delegated>()
26759        }
26760        ///Creates a new event filter for the [`ExitEscrowPeriodUpdated`] event.
26761        pub fn ExitEscrowPeriodUpdated_filter(
26762            &self,
26763        ) -> alloy_contract::Event<&P, ExitEscrowPeriodUpdated, N> {
26764            self.event_filter::<ExitEscrowPeriodUpdated>()
26765        }
26766        ///Creates a new event filter for the [`Initialized`] event.
26767        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
26768            self.event_filter::<Initialized>()
26769        }
26770        ///Creates a new event filter for the [`MaxCommissionIncreaseUpdated`] event.
26771        pub fn MaxCommissionIncreaseUpdated_filter(
26772            &self,
26773        ) -> alloy_contract::Event<&P, MaxCommissionIncreaseUpdated, N> {
26774            self.event_filter::<MaxCommissionIncreaseUpdated>()
26775        }
26776        ///Creates a new event filter for the [`MetadataUriUpdated`] event.
26777        pub fn MetadataUriUpdated_filter(
26778            &self,
26779        ) -> alloy_contract::Event<&P, MetadataUriUpdated, N> {
26780            self.event_filter::<MetadataUriUpdated>()
26781        }
26782        ///Creates a new event filter for the [`MinCommissionUpdateIntervalUpdated`] event.
26783        pub fn MinCommissionUpdateIntervalUpdated_filter(
26784            &self,
26785        ) -> alloy_contract::Event<&P, MinCommissionUpdateIntervalUpdated, N> {
26786            self.event_filter::<MinCommissionUpdateIntervalUpdated>()
26787        }
26788        ///Creates a new event filter for the [`MinDelegateAmountUpdated`] event.
26789        pub fn MinDelegateAmountUpdated_filter(
26790            &self,
26791        ) -> alloy_contract::Event<&P, MinDelegateAmountUpdated, N> {
26792            self.event_filter::<MinDelegateAmountUpdated>()
26793        }
26794        ///Creates a new event filter for the [`OwnershipTransferred`] event.
26795        pub fn OwnershipTransferred_filter(
26796            &self,
26797        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
26798            self.event_filter::<OwnershipTransferred>()
26799        }
26800        ///Creates a new event filter for the [`Paused`] event.
26801        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
26802            self.event_filter::<Paused>()
26803        }
26804        ///Creates a new event filter for the [`RoleAdminChanged`] event.
26805        pub fn RoleAdminChanged_filter(
26806            &self,
26807        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
26808            self.event_filter::<RoleAdminChanged>()
26809        }
26810        ///Creates a new event filter for the [`RoleGranted`] event.
26811        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
26812            self.event_filter::<RoleGranted>()
26813        }
26814        ///Creates a new event filter for the [`RoleRevoked`] event.
26815        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
26816            self.event_filter::<RoleRevoked>()
26817        }
26818        ///Creates a new event filter for the [`Undelegated`] event.
26819        pub fn Undelegated_filter(&self) -> alloy_contract::Event<&P, Undelegated, N> {
26820            self.event_filter::<Undelegated>()
26821        }
26822        ///Creates a new event filter for the [`UndelegatedV2`] event.
26823        pub fn UndelegatedV2_filter(
26824            &self,
26825        ) -> alloy_contract::Event<&P, UndelegatedV2, N> {
26826            self.event_filter::<UndelegatedV2>()
26827        }
26828        ///Creates a new event filter for the [`Unpaused`] event.
26829        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
26830            self.event_filter::<Unpaused>()
26831        }
26832        ///Creates a new event filter for the [`Upgraded`] event.
26833        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
26834            self.event_filter::<Upgraded>()
26835        }
26836        ///Creates a new event filter for the [`ValidatorExit`] event.
26837        pub fn ValidatorExit_filter(
26838            &self,
26839        ) -> alloy_contract::Event<&P, ValidatorExit, N> {
26840            self.event_filter::<ValidatorExit>()
26841        }
26842        ///Creates a new event filter for the [`ValidatorExitClaimed`] event.
26843        pub fn ValidatorExitClaimed_filter(
26844            &self,
26845        ) -> alloy_contract::Event<&P, ValidatorExitClaimed, N> {
26846            self.event_filter::<ValidatorExitClaimed>()
26847        }
26848        ///Creates a new event filter for the [`ValidatorExitV2`] event.
26849        pub fn ValidatorExitV2_filter(
26850            &self,
26851        ) -> alloy_contract::Event<&P, ValidatorExitV2, N> {
26852            self.event_filter::<ValidatorExitV2>()
26853        }
26854        ///Creates a new event filter for the [`ValidatorRegistered`] event.
26855        pub fn ValidatorRegistered_filter(
26856            &self,
26857        ) -> alloy_contract::Event<&P, ValidatorRegistered, N> {
26858            self.event_filter::<ValidatorRegistered>()
26859        }
26860        ///Creates a new event filter for the [`ValidatorRegisteredV2`] event.
26861        pub fn ValidatorRegisteredV2_filter(
26862            &self,
26863        ) -> alloy_contract::Event<&P, ValidatorRegisteredV2, N> {
26864            self.event_filter::<ValidatorRegisteredV2>()
26865        }
26866        ///Creates a new event filter for the [`Withdrawal`] event.
26867        pub fn Withdrawal_filter(&self) -> alloy_contract::Event<&P, Withdrawal, N> {
26868            self.event_filter::<Withdrawal>()
26869        }
26870        ///Creates a new event filter for the [`WithdrawalClaimed`] event.
26871        pub fn WithdrawalClaimed_filter(
26872            &self,
26873        ) -> alloy_contract::Event<&P, WithdrawalClaimed, N> {
26874            self.event_filter::<WithdrawalClaimed>()
26875        }
26876    }
26877}