hotshot_contract_adapter/bindings/
light_client_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
640    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239///Module containing a contract's types and functions.
2240/**
2241
2242```solidity
2243library LightClient {
2244    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2245    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2246    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2247}
2248```*/
2249#[allow(
2250    non_camel_case_types,
2251    non_snake_case,
2252    clippy::pub_underscore_fields,
2253    clippy::style,
2254    clippy::empty_structs_with_brackets
2255)]
2256pub mod LightClient {
2257    use super::*;
2258    use alloy::sol_types as alloy_sol_types;
2259    #[derive(serde::Serialize, serde::Deserialize)]
2260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2261    /**```solidity
2262struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2263```*/
2264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2265    #[derive(Clone)]
2266    pub struct LightClientState {
2267        #[allow(missing_docs)]
2268        pub viewNum: u64,
2269        #[allow(missing_docs)]
2270        pub blockHeight: u64,
2271        #[allow(missing_docs)]
2272        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2273    }
2274    #[allow(
2275        non_camel_case_types,
2276        non_snake_case,
2277        clippy::pub_underscore_fields,
2278        clippy::style
2279    )]
2280    const _: () = {
2281        use alloy::sol_types as alloy_sol_types;
2282        #[doc(hidden)]
2283        type UnderlyingSolTuple<'a> = (
2284            alloy::sol_types::sol_data::Uint<64>,
2285            alloy::sol_types::sol_data::Uint<64>,
2286            BN254::ScalarField,
2287        );
2288        #[doc(hidden)]
2289        type UnderlyingRustTuple<'a> = (
2290            u64,
2291            u64,
2292            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2293        );
2294        #[cfg(test)]
2295        #[allow(dead_code, unreachable_patterns)]
2296        fn _type_assertion(
2297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2298        ) {
2299            match _t {
2300                alloy_sol_types::private::AssertTypeEq::<
2301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2302                >(_) => {}
2303            }
2304        }
2305        #[automatically_derived]
2306        #[doc(hidden)]
2307        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2308            fn from(value: LightClientState) -> Self {
2309                (value.viewNum, value.blockHeight, value.blockCommRoot)
2310            }
2311        }
2312        #[automatically_derived]
2313        #[doc(hidden)]
2314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2316                Self {
2317                    viewNum: tuple.0,
2318                    blockHeight: tuple.1,
2319                    blockCommRoot: tuple.2,
2320                }
2321            }
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::SolValue for LightClientState {
2325            type SolType = Self;
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2329            #[inline]
2330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2331                (
2332                    <alloy::sol_types::sol_data::Uint<
2333                        64,
2334                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2338                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2339                        &self.blockCommRoot,
2340                    ),
2341                )
2342            }
2343            #[inline]
2344            fn stv_abi_encoded_size(&self) -> usize {
2345                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2346                    return size;
2347                }
2348                let tuple = <UnderlyingRustTuple<
2349                    '_,
2350                > as ::core::convert::From<Self>>::from(self.clone());
2351                <UnderlyingSolTuple<
2352                    '_,
2353                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2354            }
2355            #[inline]
2356            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2357                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2358            }
2359            #[inline]
2360            fn stv_abi_encode_packed_to(
2361                &self,
2362                out: &mut alloy_sol_types::private::Vec<u8>,
2363            ) {
2364                let tuple = <UnderlyingRustTuple<
2365                    '_,
2366                > as ::core::convert::From<Self>>::from(self.clone());
2367                <UnderlyingSolTuple<
2368                    '_,
2369                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2370            }
2371            #[inline]
2372            fn stv_abi_packed_encoded_size(&self) -> usize {
2373                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2374                    return size;
2375                }
2376                let tuple = <UnderlyingRustTuple<
2377                    '_,
2378                > as ::core::convert::From<Self>>::from(self.clone());
2379                <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2382            }
2383        }
2384        #[automatically_derived]
2385        impl alloy_sol_types::SolType for LightClientState {
2386            type RustType = Self;
2387            type Token<'a> = <UnderlyingSolTuple<
2388                'a,
2389            > as alloy_sol_types::SolType>::Token<'a>;
2390            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2391            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2392                '_,
2393            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2394            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2397            #[inline]
2398            fn valid_token(token: &Self::Token<'_>) -> bool {
2399                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2400            }
2401            #[inline]
2402            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2403                let tuple = <UnderlyingSolTuple<
2404                    '_,
2405                > as alloy_sol_types::SolType>::detokenize(token);
2406                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2407            }
2408        }
2409        #[automatically_derived]
2410        impl alloy_sol_types::SolStruct for LightClientState {
2411            const NAME: &'static str = "LightClientState";
2412            #[inline]
2413            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2414                alloy_sol_types::private::Cow::Borrowed(
2415                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2416                )
2417            }
2418            #[inline]
2419            fn eip712_components() -> alloy_sol_types::private::Vec<
2420                alloy_sol_types::private::Cow<'static, str>,
2421            > {
2422                alloy_sol_types::private::Vec::new()
2423            }
2424            #[inline]
2425            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2426                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2427            }
2428            #[inline]
2429            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2430                [
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2434                        .0,
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2438                        .0,
2439                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2440                            &self.blockCommRoot,
2441                        )
2442                        .0,
2443                ]
2444                    .concat()
2445            }
2446        }
2447        #[automatically_derived]
2448        impl alloy_sol_types::EventTopic for LightClientState {
2449            #[inline]
2450            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2451                0usize
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.viewNum,
2456                    )
2457                    + <alloy::sol_types::sol_data::Uint<
2458                        64,
2459                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2460                        &rust.blockHeight,
2461                    )
2462                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockCommRoot,
2464                    )
2465            }
2466            #[inline]
2467            fn encode_topic_preimage(
2468                rust: &Self::RustType,
2469                out: &mut alloy_sol_types::private::Vec<u8>,
2470            ) {
2471                out.reserve(
2472                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2473                );
2474                <alloy::sol_types::sol_data::Uint<
2475                    64,
2476                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2477                    &rust.viewNum,
2478                    out,
2479                );
2480                <alloy::sol_types::sol_data::Uint<
2481                    64,
2482                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockHeight,
2484                    out,
2485                );
2486                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockCommRoot,
2488                    out,
2489                );
2490            }
2491            #[inline]
2492            fn encode_topic(
2493                rust: &Self::RustType,
2494            ) -> alloy_sol_types::abi::token::WordToken {
2495                let mut out = alloy_sol_types::private::Vec::new();
2496                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2497                    rust,
2498                    &mut out,
2499                );
2500                alloy_sol_types::abi::token::WordToken(
2501                    alloy_sol_types::private::keccak256(out),
2502                )
2503            }
2504        }
2505    };
2506    #[derive(serde::Serialize, serde::Deserialize)]
2507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2508    /**```solidity
2509struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2510```*/
2511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2512    #[derive(Clone)]
2513    pub struct StakeTableState {
2514        #[allow(missing_docs)]
2515        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2516        #[allow(missing_docs)]
2517        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518        #[allow(missing_docs)]
2519        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2520        #[allow(missing_docs)]
2521        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522    }
2523    #[allow(
2524        non_camel_case_types,
2525        non_snake_case,
2526        clippy::pub_underscore_fields,
2527        clippy::style
2528    )]
2529    const _: () = {
2530        use alloy::sol_types as alloy_sol_types;
2531        #[doc(hidden)]
2532        type UnderlyingSolTuple<'a> = (
2533            alloy::sol_types::sol_data::Uint<256>,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536            BN254::ScalarField,
2537        );
2538        #[doc(hidden)]
2539        type UnderlyingRustTuple<'a> = (
2540            alloy::sol_types::private::primitives::aliases::U256,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2544        );
2545        #[cfg(test)]
2546        #[allow(dead_code, unreachable_patterns)]
2547        fn _type_assertion(
2548            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2549        ) {
2550            match _t {
2551                alloy_sol_types::private::AssertTypeEq::<
2552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2553                >(_) => {}
2554            }
2555        }
2556        #[automatically_derived]
2557        #[doc(hidden)]
2558        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2559            fn from(value: StakeTableState) -> Self {
2560                (
2561                    value.threshold,
2562                    value.blsKeyComm,
2563                    value.schnorrKeyComm,
2564                    value.amountComm,
2565                )
2566            }
2567        }
2568        #[automatically_derived]
2569        #[doc(hidden)]
2570        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2572                Self {
2573                    threshold: tuple.0,
2574                    blsKeyComm: tuple.1,
2575                    schnorrKeyComm: tuple.2,
2576                    amountComm: tuple.3,
2577                }
2578            }
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::SolValue for StakeTableState {
2582            type SolType = Self;
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2586            #[inline]
2587            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2588                (
2589                    <alloy::sol_types::sol_data::Uint<
2590                        256,
2591                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.blsKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.schnorrKeyComm,
2597                    ),
2598                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2599                        &self.amountComm,
2600                    ),
2601                )
2602            }
2603            #[inline]
2604            fn stv_abi_encoded_size(&self) -> usize {
2605                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2606                    return size;
2607                }
2608                let tuple = <UnderlyingRustTuple<
2609                    '_,
2610                > as ::core::convert::From<Self>>::from(self.clone());
2611                <UnderlyingSolTuple<
2612                    '_,
2613                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2614            }
2615            #[inline]
2616            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2617                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2618            }
2619            #[inline]
2620            fn stv_abi_encode_packed_to(
2621                &self,
2622                out: &mut alloy_sol_types::private::Vec<u8>,
2623            ) {
2624                let tuple = <UnderlyingRustTuple<
2625                    '_,
2626                > as ::core::convert::From<Self>>::from(self.clone());
2627                <UnderlyingSolTuple<
2628                    '_,
2629                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2630            }
2631            #[inline]
2632            fn stv_abi_packed_encoded_size(&self) -> usize {
2633                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2634                    return size;
2635                }
2636                let tuple = <UnderlyingRustTuple<
2637                    '_,
2638                > as ::core::convert::From<Self>>::from(self.clone());
2639                <UnderlyingSolTuple<
2640                    '_,
2641                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolType for StakeTableState {
2646            type RustType = Self;
2647            type Token<'a> = <UnderlyingSolTuple<
2648                'a,
2649            > as alloy_sol_types::SolType>::Token<'a>;
2650            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2651            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2654            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2655                '_,
2656            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2657            #[inline]
2658            fn valid_token(token: &Self::Token<'_>) -> bool {
2659                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2660            }
2661            #[inline]
2662            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2663                let tuple = <UnderlyingSolTuple<
2664                    '_,
2665                > as alloy_sol_types::SolType>::detokenize(token);
2666                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2667            }
2668        }
2669        #[automatically_derived]
2670        impl alloy_sol_types::SolStruct for StakeTableState {
2671            const NAME: &'static str = "StakeTableState";
2672            #[inline]
2673            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2674                alloy_sol_types::private::Cow::Borrowed(
2675                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2676                )
2677            }
2678            #[inline]
2679            fn eip712_components() -> alloy_sol_types::private::Vec<
2680                alloy_sol_types::private::Cow<'static, str>,
2681            > {
2682                alloy_sol_types::private::Vec::new()
2683            }
2684            #[inline]
2685            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2686                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2687            }
2688            #[inline]
2689            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2690                [
2691                    <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.blsKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.schnorrKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.amountComm,
2705                        )
2706                        .0,
2707                ]
2708                    .concat()
2709            }
2710        }
2711        #[automatically_derived]
2712        impl alloy_sol_types::EventTopic for StakeTableState {
2713            #[inline]
2714            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2715                0usize
2716                    + <alloy::sol_types::sol_data::Uint<
2717                        256,
2718                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.threshold,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.blsKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.schnorrKeyComm,
2726                    )
2727                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2728                        &rust.amountComm,
2729                    )
2730            }
2731            #[inline]
2732            fn encode_topic_preimage(
2733                rust: &Self::RustType,
2734                out: &mut alloy_sol_types::private::Vec<u8>,
2735            ) {
2736                out.reserve(
2737                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2738                );
2739                <alloy::sol_types::sol_data::Uint<
2740                    256,
2741                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.threshold,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.blsKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.schnorrKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.amountComm,
2755                    out,
2756                );
2757            }
2758            #[inline]
2759            fn encode_topic(
2760                rust: &Self::RustType,
2761            ) -> alloy_sol_types::abi::token::WordToken {
2762                let mut out = alloy_sol_types::private::Vec::new();
2763                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2764                    rust,
2765                    &mut out,
2766                );
2767                alloy_sol_types::abi::token::WordToken(
2768                    alloy_sol_types::private::keccak256(out),
2769                )
2770            }
2771        }
2772    };
2773    #[derive(serde::Serialize, serde::Deserialize)]
2774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2775    /**```solidity
2776struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2777```*/
2778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2779    #[derive(Clone)]
2780    pub struct StateHistoryCommitment {
2781        #[allow(missing_docs)]
2782        pub l1BlockHeight: u64,
2783        #[allow(missing_docs)]
2784        pub l1BlockTimestamp: u64,
2785        #[allow(missing_docs)]
2786        pub hotShotBlockHeight: u64,
2787        #[allow(missing_docs)]
2788        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2789    }
2790    #[allow(
2791        non_camel_case_types,
2792        non_snake_case,
2793        clippy::pub_underscore_fields,
2794        clippy::style
2795    )]
2796    const _: () = {
2797        use alloy::sol_types as alloy_sol_types;
2798        #[doc(hidden)]
2799        type UnderlyingSolTuple<'a> = (
2800            alloy::sol_types::sol_data::Uint<64>,
2801            alloy::sol_types::sol_data::Uint<64>,
2802            alloy::sol_types::sol_data::Uint<64>,
2803            BN254::ScalarField,
2804        );
2805        #[doc(hidden)]
2806        type UnderlyingRustTuple<'a> = (
2807            u64,
2808            u64,
2809            u64,
2810            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2811        );
2812        #[cfg(test)]
2813        #[allow(dead_code, unreachable_patterns)]
2814        fn _type_assertion(
2815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2816        ) {
2817            match _t {
2818                alloy_sol_types::private::AssertTypeEq::<
2819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2820                >(_) => {}
2821            }
2822        }
2823        #[automatically_derived]
2824        #[doc(hidden)]
2825        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2826            fn from(value: StateHistoryCommitment) -> Self {
2827                (
2828                    value.l1BlockHeight,
2829                    value.l1BlockTimestamp,
2830                    value.hotShotBlockHeight,
2831                    value.hotShotBlockCommRoot,
2832                )
2833            }
2834        }
2835        #[automatically_derived]
2836        #[doc(hidden)]
2837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2839                Self {
2840                    l1BlockHeight: tuple.0,
2841                    l1BlockTimestamp: tuple.1,
2842                    hotShotBlockHeight: tuple.2,
2843                    hotShotBlockCommRoot: tuple.3,
2844                }
2845            }
2846        }
2847        #[automatically_derived]
2848        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2849            type SolType = Self;
2850        }
2851        #[automatically_derived]
2852        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2853            #[inline]
2854            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2855                (
2856                    <alloy::sol_types::sol_data::Uint<
2857                        64,
2858                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2859                    <alloy::sol_types::sol_data::Uint<
2860                        64,
2861                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2865                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2866                        &self.hotShotBlockCommRoot,
2867                    ),
2868                )
2869            }
2870            #[inline]
2871            fn stv_abi_encoded_size(&self) -> usize {
2872                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2873                    return size;
2874                }
2875                let tuple = <UnderlyingRustTuple<
2876                    '_,
2877                > as ::core::convert::From<Self>>::from(self.clone());
2878                <UnderlyingSolTuple<
2879                    '_,
2880                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2881            }
2882            #[inline]
2883            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2884                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2885            }
2886            #[inline]
2887            fn stv_abi_encode_packed_to(
2888                &self,
2889                out: &mut alloy_sol_types::private::Vec<u8>,
2890            ) {
2891                let tuple = <UnderlyingRustTuple<
2892                    '_,
2893                > as ::core::convert::From<Self>>::from(self.clone());
2894                <UnderlyingSolTuple<
2895                    '_,
2896                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2897            }
2898            #[inline]
2899            fn stv_abi_packed_encoded_size(&self) -> usize {
2900                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2901                    return size;
2902                }
2903                let tuple = <UnderlyingRustTuple<
2904                    '_,
2905                > as ::core::convert::From<Self>>::from(self.clone());
2906                <UnderlyingSolTuple<
2907                    '_,
2908                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2909            }
2910        }
2911        #[automatically_derived]
2912        impl alloy_sol_types::SolType for StateHistoryCommitment {
2913            type RustType = Self;
2914            type Token<'a> = <UnderlyingSolTuple<
2915                'a,
2916            > as alloy_sol_types::SolType>::Token<'a>;
2917            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2918            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2919                '_,
2920            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2921            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2922                '_,
2923            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2924            #[inline]
2925            fn valid_token(token: &Self::Token<'_>) -> bool {
2926                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2927            }
2928            #[inline]
2929            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2930                let tuple = <UnderlyingSolTuple<
2931                    '_,
2932                > as alloy_sol_types::SolType>::detokenize(token);
2933                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2934            }
2935        }
2936        #[automatically_derived]
2937        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2938            const NAME: &'static str = "StateHistoryCommitment";
2939            #[inline]
2940            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2941                alloy_sol_types::private::Cow::Borrowed(
2942                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2943                )
2944            }
2945            #[inline]
2946            fn eip712_components() -> alloy_sol_types::private::Vec<
2947                alloy_sol_types::private::Cow<'static, str>,
2948            > {
2949                alloy_sol_types::private::Vec::new()
2950            }
2951            #[inline]
2952            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2953                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2954            }
2955            #[inline]
2956            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2957                [
2958                    <alloy::sol_types::sol_data::Uint<
2959                        64,
2960                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2961                        .0,
2962                    <alloy::sol_types::sol_data::Uint<
2963                        64,
2964                    > as alloy_sol_types::SolType>::eip712_data_word(
2965                            &self.l1BlockTimestamp,
2966                        )
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.hotShotBlockHeight,
2972                        )
2973                        .0,
2974                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2975                            &self.hotShotBlockCommRoot,
2976                        )
2977                        .0,
2978                ]
2979                    .concat()
2980            }
2981        }
2982        #[automatically_derived]
2983        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2984            #[inline]
2985            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2986                0usize
2987                    + <alloy::sol_types::sol_data::Uint<
2988                        64,
2989                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2990                        &rust.l1BlockHeight,
2991                    )
2992                    + <alloy::sol_types::sol_data::Uint<
2993                        64,
2994                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2995                        &rust.l1BlockTimestamp,
2996                    )
2997                    + <alloy::sol_types::sol_data::Uint<
2998                        64,
2999                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3000                        &rust.hotShotBlockHeight,
3001                    )
3002                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3003                        &rust.hotShotBlockCommRoot,
3004                    )
3005            }
3006            #[inline]
3007            fn encode_topic_preimage(
3008                rust: &Self::RustType,
3009                out: &mut alloy_sol_types::private::Vec<u8>,
3010            ) {
3011                out.reserve(
3012                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3013                );
3014                <alloy::sol_types::sol_data::Uint<
3015                    64,
3016                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3017                    &rust.l1BlockHeight,
3018                    out,
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockTimestamp,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.hotShotBlockHeight,
3030                    out,
3031                );
3032                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3033                    &rust.hotShotBlockCommRoot,
3034                    out,
3035                );
3036            }
3037            #[inline]
3038            fn encode_topic(
3039                rust: &Self::RustType,
3040            ) -> alloy_sol_types::abi::token::WordToken {
3041                let mut out = alloy_sol_types::private::Vec::new();
3042                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3043                    rust,
3044                    &mut out,
3045                );
3046                alloy_sol_types::abi::token::WordToken(
3047                    alloy_sol_types::private::keccak256(out),
3048                )
3049            }
3050        }
3051    };
3052    use alloy::contract as alloy_contract;
3053    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3054
3055See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3056    #[inline]
3057    pub const fn new<
3058        P: alloy_contract::private::Provider<N>,
3059        N: alloy_contract::private::Network,
3060    >(
3061        address: alloy_sol_types::private::Address,
3062        provider: P,
3063    ) -> LightClientInstance<P, N> {
3064        LightClientInstance::<P, N>::new(address, provider)
3065    }
3066    /**A [`LightClient`](self) instance.
3067
3068Contains type-safe methods for interacting with an on-chain instance of the
3069[`LightClient`](self) contract located at a given `address`, using a given
3070provider `P`.
3071
3072If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3073documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3074be used to deploy a new instance of the contract.
3075
3076See the [module-level documentation](self) for all the available methods.*/
3077    #[derive(Clone)]
3078    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3079        address: alloy_sol_types::private::Address,
3080        provider: P,
3081        _network: ::core::marker::PhantomData<N>,
3082    }
3083    #[automatically_derived]
3084    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3085        #[inline]
3086        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3087            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3088        }
3089    }
3090    /// Instantiation and getters/setters.
3091    #[automatically_derived]
3092    impl<
3093        P: alloy_contract::private::Provider<N>,
3094        N: alloy_contract::private::Network,
3095    > LightClientInstance<P, N> {
3096        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3097
3098See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3099        #[inline]
3100        pub const fn new(
3101            address: alloy_sol_types::private::Address,
3102            provider: P,
3103        ) -> Self {
3104            Self {
3105                address,
3106                provider,
3107                _network: ::core::marker::PhantomData,
3108            }
3109        }
3110        /// Returns a reference to the address.
3111        #[inline]
3112        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3113            &self.address
3114        }
3115        /// Sets the address.
3116        #[inline]
3117        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3118            self.address = address;
3119        }
3120        /// Sets the address and returns `self`.
3121        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3122            self.set_address(address);
3123            self
3124        }
3125        /// Returns a reference to the provider.
3126        #[inline]
3127        pub const fn provider(&self) -> &P {
3128            &self.provider
3129        }
3130    }
3131    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3132        /// Clones the provider and returns a new instance with the cloned provider.
3133        #[inline]
3134        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3135            LightClientInstance {
3136                address: self.address,
3137                provider: ::core::clone::Clone::clone(&self.provider),
3138                _network: ::core::marker::PhantomData,
3139            }
3140        }
3141    }
3142    /// Function calls.
3143    #[automatically_derived]
3144    impl<
3145        P: alloy_contract::private::Provider<N>,
3146        N: alloy_contract::private::Network,
3147    > LightClientInstance<P, N> {
3148        /// Creates a new call builder using this contract instance's provider and address.
3149        ///
3150        /// Note that the call can be any function call, not just those defined in this
3151        /// contract. Prefer using the other methods for building type-safe contract calls.
3152        pub fn call_builder<C: alloy_sol_types::SolCall>(
3153            &self,
3154            call: &C,
3155        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3156            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3157        }
3158    }
3159    /// Event filters.
3160    #[automatically_derived]
3161    impl<
3162        P: alloy_contract::private::Provider<N>,
3163        N: alloy_contract::private::Network,
3164    > LightClientInstance<P, N> {
3165        /// Creates a new event filter using this contract instance's provider and address.
3166        ///
3167        /// Note that the type can be any event, not just those defined in this contract.
3168        /// Prefer using the other methods for building type-safe event filters.
3169        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3170            &self,
3171        ) -> alloy_contract::Event<&P, E, N> {
3172            alloy_contract::Event::new_sol(&self.provider, &self.address)
3173        }
3174    }
3175}
3176/**
3177
3178Generated by the following Solidity interface...
3179```solidity
3180library BN254 {
3181    type BaseField is uint256;
3182    type ScalarField is uint256;
3183    struct G1Point {
3184        BaseField x;
3185        BaseField y;
3186    }
3187}
3188
3189library IPlonkVerifier {
3190    struct PlonkProof {
3191        BN254.G1Point wire0;
3192        BN254.G1Point wire1;
3193        BN254.G1Point wire2;
3194        BN254.G1Point wire3;
3195        BN254.G1Point wire4;
3196        BN254.G1Point prodPerm;
3197        BN254.G1Point split0;
3198        BN254.G1Point split1;
3199        BN254.G1Point split2;
3200        BN254.G1Point split3;
3201        BN254.G1Point split4;
3202        BN254.G1Point zeta;
3203        BN254.G1Point zetaOmega;
3204        BN254.ScalarField wireEval0;
3205        BN254.ScalarField wireEval1;
3206        BN254.ScalarField wireEval2;
3207        BN254.ScalarField wireEval3;
3208        BN254.ScalarField wireEval4;
3209        BN254.ScalarField sigmaEval0;
3210        BN254.ScalarField sigmaEval1;
3211        BN254.ScalarField sigmaEval2;
3212        BN254.ScalarField sigmaEval3;
3213        BN254.ScalarField prodPermZetaOmegaEval;
3214    }
3215    struct VerifyingKey {
3216        uint256 domainSize;
3217        uint256 numInputs;
3218        BN254.G1Point sigma0;
3219        BN254.G1Point sigma1;
3220        BN254.G1Point sigma2;
3221        BN254.G1Point sigma3;
3222        BN254.G1Point sigma4;
3223        BN254.G1Point q1;
3224        BN254.G1Point q2;
3225        BN254.G1Point q3;
3226        BN254.G1Point q4;
3227        BN254.G1Point qM12;
3228        BN254.G1Point qM34;
3229        BN254.G1Point qO;
3230        BN254.G1Point qC;
3231        BN254.G1Point qH1;
3232        BN254.G1Point qH2;
3233        BN254.G1Point qH3;
3234        BN254.G1Point qH4;
3235        BN254.G1Point qEcc;
3236        bytes32 g2LSB;
3237        bytes32 g2MSB;
3238    }
3239}
3240
3241library LightClient {
3242    struct LightClientState {
3243        uint64 viewNum;
3244        uint64 blockHeight;
3245        BN254.ScalarField blockCommRoot;
3246    }
3247    struct StakeTableState {
3248        uint256 threshold;
3249        BN254.ScalarField blsKeyComm;
3250        BN254.ScalarField schnorrKeyComm;
3251        BN254.ScalarField amountComm;
3252    }
3253    struct StateHistoryCommitment {
3254        uint64 l1BlockHeight;
3255        uint64 l1BlockTimestamp;
3256        uint64 hotShotBlockHeight;
3257        BN254.ScalarField hotShotBlockCommRoot;
3258    }
3259}
3260
3261interface LightClientMock {
3262    error AddressEmptyCode(address target);
3263    error ERC1967InvalidImplementation(address implementation);
3264    error ERC1967NonPayable();
3265    error FailedInnerCall();
3266    error InsufficientSnapshotHistory();
3267    error InvalidAddress();
3268    error InvalidArgs();
3269    error InvalidHotShotBlockForCommitmentCheck();
3270    error InvalidInitialization();
3271    error InvalidMaxStateHistory();
3272    error InvalidProof();
3273    error InvalidScalar();
3274    error NoChangeRequired();
3275    error NotInitializing();
3276    error OutdatedState();
3277    error OwnableInvalidOwner(address owner);
3278    error OwnableUnauthorizedAccount(address account);
3279    error OwnershipCannotBeRenounced();
3280    error ProverNotPermissioned();
3281    error UUPSUnauthorizedCallContext();
3282    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3283    error WrongStakeTableUsed();
3284
3285    event Initialized(uint64 version);
3286    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3287    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3288    event PermissionedProverNotRequired();
3289    event PermissionedProverRequired(address permissionedProver);
3290    event Upgrade(address implementation);
3291    event Upgraded(address indexed implementation);
3292
3293    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3294    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3295    function currentBlockNumber() external view returns (uint256);
3296    function disablePermissionedProverMode() external;
3297    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3298    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3299    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3300    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3301    function getStateHistoryCount() external view returns (uint256);
3302    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3303    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3304    function isPermissionedProverEnabled() external view returns (bool);
3305    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3306    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3307    function owner() external view returns (address);
3308    function permissionedProver() external view returns (address);
3309    function proxiableUUID() external view returns (bytes32);
3310    function renounceOwnership() external;
3311    function setFinalizedState(LightClient.LightClientState memory state) external;
3312    function setHotShotDownSince(uint256 l1Height) external;
3313    function setHotShotUp() external;
3314    function setPermissionedProver(address prover) external;
3315    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3316    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3317    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3318    function stateHistoryFirstIndex() external view returns (uint64);
3319    function stateHistoryRetentionPeriod() external view returns (uint32);
3320    function transferOwnership(address newOwner) external;
3321    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3322}
3323```
3324
3325...which was generated by the following JSON ABI:
3326```json
3327[
3328  {
3329    "type": "function",
3330    "name": "UPGRADE_INTERFACE_VERSION",
3331    "inputs": [],
3332    "outputs": [
3333      {
3334        "name": "",
3335        "type": "string",
3336        "internalType": "string"
3337      }
3338    ],
3339    "stateMutability": "view"
3340  },
3341  {
3342    "type": "function",
3343    "name": "_getVk",
3344    "inputs": [],
3345    "outputs": [
3346      {
3347        "name": "vk",
3348        "type": "tuple",
3349        "internalType": "struct IPlonkVerifier.VerifyingKey",
3350        "components": [
3351          {
3352            "name": "domainSize",
3353            "type": "uint256",
3354            "internalType": "uint256"
3355          },
3356          {
3357            "name": "numInputs",
3358            "type": "uint256",
3359            "internalType": "uint256"
3360          },
3361          {
3362            "name": "sigma0",
3363            "type": "tuple",
3364            "internalType": "struct BN254.G1Point",
3365            "components": [
3366              {
3367                "name": "x",
3368                "type": "uint256",
3369                "internalType": "BN254.BaseField"
3370              },
3371              {
3372                "name": "y",
3373                "type": "uint256",
3374                "internalType": "BN254.BaseField"
3375              }
3376            ]
3377          },
3378          {
3379            "name": "sigma1",
3380            "type": "tuple",
3381            "internalType": "struct BN254.G1Point",
3382            "components": [
3383              {
3384                "name": "x",
3385                "type": "uint256",
3386                "internalType": "BN254.BaseField"
3387              },
3388              {
3389                "name": "y",
3390                "type": "uint256",
3391                "internalType": "BN254.BaseField"
3392              }
3393            ]
3394          },
3395          {
3396            "name": "sigma2",
3397            "type": "tuple",
3398            "internalType": "struct BN254.G1Point",
3399            "components": [
3400              {
3401                "name": "x",
3402                "type": "uint256",
3403                "internalType": "BN254.BaseField"
3404              },
3405              {
3406                "name": "y",
3407                "type": "uint256",
3408                "internalType": "BN254.BaseField"
3409              }
3410            ]
3411          },
3412          {
3413            "name": "sigma3",
3414            "type": "tuple",
3415            "internalType": "struct BN254.G1Point",
3416            "components": [
3417              {
3418                "name": "x",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              },
3422              {
3423                "name": "y",
3424                "type": "uint256",
3425                "internalType": "BN254.BaseField"
3426              }
3427            ]
3428          },
3429          {
3430            "name": "sigma4",
3431            "type": "tuple",
3432            "internalType": "struct BN254.G1Point",
3433            "components": [
3434              {
3435                "name": "x",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              },
3439              {
3440                "name": "y",
3441                "type": "uint256",
3442                "internalType": "BN254.BaseField"
3443              }
3444            ]
3445          },
3446          {
3447            "name": "q1",
3448            "type": "tuple",
3449            "internalType": "struct BN254.G1Point",
3450            "components": [
3451              {
3452                "name": "x",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              },
3456              {
3457                "name": "y",
3458                "type": "uint256",
3459                "internalType": "BN254.BaseField"
3460              }
3461            ]
3462          },
3463          {
3464            "name": "q2",
3465            "type": "tuple",
3466            "internalType": "struct BN254.G1Point",
3467            "components": [
3468              {
3469                "name": "x",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              },
3473              {
3474                "name": "y",
3475                "type": "uint256",
3476                "internalType": "BN254.BaseField"
3477              }
3478            ]
3479          },
3480          {
3481            "name": "q3",
3482            "type": "tuple",
3483            "internalType": "struct BN254.G1Point",
3484            "components": [
3485              {
3486                "name": "x",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              },
3490              {
3491                "name": "y",
3492                "type": "uint256",
3493                "internalType": "BN254.BaseField"
3494              }
3495            ]
3496          },
3497          {
3498            "name": "q4",
3499            "type": "tuple",
3500            "internalType": "struct BN254.G1Point",
3501            "components": [
3502              {
3503                "name": "x",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              },
3507              {
3508                "name": "y",
3509                "type": "uint256",
3510                "internalType": "BN254.BaseField"
3511              }
3512            ]
3513          },
3514          {
3515            "name": "qM12",
3516            "type": "tuple",
3517            "internalType": "struct BN254.G1Point",
3518            "components": [
3519              {
3520                "name": "x",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              },
3524              {
3525                "name": "y",
3526                "type": "uint256",
3527                "internalType": "BN254.BaseField"
3528              }
3529            ]
3530          },
3531          {
3532            "name": "qM34",
3533            "type": "tuple",
3534            "internalType": "struct BN254.G1Point",
3535            "components": [
3536              {
3537                "name": "x",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              },
3541              {
3542                "name": "y",
3543                "type": "uint256",
3544                "internalType": "BN254.BaseField"
3545              }
3546            ]
3547          },
3548          {
3549            "name": "qO",
3550            "type": "tuple",
3551            "internalType": "struct BN254.G1Point",
3552            "components": [
3553              {
3554                "name": "x",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              },
3558              {
3559                "name": "y",
3560                "type": "uint256",
3561                "internalType": "BN254.BaseField"
3562              }
3563            ]
3564          },
3565          {
3566            "name": "qC",
3567            "type": "tuple",
3568            "internalType": "struct BN254.G1Point",
3569            "components": [
3570              {
3571                "name": "x",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              },
3575              {
3576                "name": "y",
3577                "type": "uint256",
3578                "internalType": "BN254.BaseField"
3579              }
3580            ]
3581          },
3582          {
3583            "name": "qH1",
3584            "type": "tuple",
3585            "internalType": "struct BN254.G1Point",
3586            "components": [
3587              {
3588                "name": "x",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              },
3592              {
3593                "name": "y",
3594                "type": "uint256",
3595                "internalType": "BN254.BaseField"
3596              }
3597            ]
3598          },
3599          {
3600            "name": "qH2",
3601            "type": "tuple",
3602            "internalType": "struct BN254.G1Point",
3603            "components": [
3604              {
3605                "name": "x",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              },
3609              {
3610                "name": "y",
3611                "type": "uint256",
3612                "internalType": "BN254.BaseField"
3613              }
3614            ]
3615          },
3616          {
3617            "name": "qH3",
3618            "type": "tuple",
3619            "internalType": "struct BN254.G1Point",
3620            "components": [
3621              {
3622                "name": "x",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              },
3626              {
3627                "name": "y",
3628                "type": "uint256",
3629                "internalType": "BN254.BaseField"
3630              }
3631            ]
3632          },
3633          {
3634            "name": "qH4",
3635            "type": "tuple",
3636            "internalType": "struct BN254.G1Point",
3637            "components": [
3638              {
3639                "name": "x",
3640                "type": "uint256",
3641                "internalType": "BN254.BaseField"
3642              },
3643              {
3644                "name": "y",
3645                "type": "uint256",
3646                "internalType": "BN254.BaseField"
3647              }
3648            ]
3649          },
3650          {
3651            "name": "qEcc",
3652            "type": "tuple",
3653            "internalType": "struct BN254.G1Point",
3654            "components": [
3655              {
3656                "name": "x",
3657                "type": "uint256",
3658                "internalType": "BN254.BaseField"
3659              },
3660              {
3661                "name": "y",
3662                "type": "uint256",
3663                "internalType": "BN254.BaseField"
3664              }
3665            ]
3666          },
3667          {
3668            "name": "g2LSB",
3669            "type": "bytes32",
3670            "internalType": "bytes32"
3671          },
3672          {
3673            "name": "g2MSB",
3674            "type": "bytes32",
3675            "internalType": "bytes32"
3676          }
3677        ]
3678      }
3679    ],
3680    "stateMutability": "pure"
3681  },
3682  {
3683    "type": "function",
3684    "name": "currentBlockNumber",
3685    "inputs": [],
3686    "outputs": [
3687      {
3688        "name": "",
3689        "type": "uint256",
3690        "internalType": "uint256"
3691      }
3692    ],
3693    "stateMutability": "view"
3694  },
3695  {
3696    "type": "function",
3697    "name": "disablePermissionedProverMode",
3698    "inputs": [],
3699    "outputs": [],
3700    "stateMutability": "nonpayable"
3701  },
3702  {
3703    "type": "function",
3704    "name": "finalizedState",
3705    "inputs": [],
3706    "outputs": [
3707      {
3708        "name": "viewNum",
3709        "type": "uint64",
3710        "internalType": "uint64"
3711      },
3712      {
3713        "name": "blockHeight",
3714        "type": "uint64",
3715        "internalType": "uint64"
3716      },
3717      {
3718        "name": "blockCommRoot",
3719        "type": "uint256",
3720        "internalType": "BN254.ScalarField"
3721      }
3722    ],
3723    "stateMutability": "view"
3724  },
3725  {
3726    "type": "function",
3727    "name": "genesisStakeTableState",
3728    "inputs": [],
3729    "outputs": [
3730      {
3731        "name": "threshold",
3732        "type": "uint256",
3733        "internalType": "uint256"
3734      },
3735      {
3736        "name": "blsKeyComm",
3737        "type": "uint256",
3738        "internalType": "BN254.ScalarField"
3739      },
3740      {
3741        "name": "schnorrKeyComm",
3742        "type": "uint256",
3743        "internalType": "BN254.ScalarField"
3744      },
3745      {
3746        "name": "amountComm",
3747        "type": "uint256",
3748        "internalType": "BN254.ScalarField"
3749      }
3750    ],
3751    "stateMutability": "view"
3752  },
3753  {
3754    "type": "function",
3755    "name": "genesisState",
3756    "inputs": [],
3757    "outputs": [
3758      {
3759        "name": "viewNum",
3760        "type": "uint64",
3761        "internalType": "uint64"
3762      },
3763      {
3764        "name": "blockHeight",
3765        "type": "uint64",
3766        "internalType": "uint64"
3767      },
3768      {
3769        "name": "blockCommRoot",
3770        "type": "uint256",
3771        "internalType": "BN254.ScalarField"
3772      }
3773    ],
3774    "stateMutability": "view"
3775  },
3776  {
3777    "type": "function",
3778    "name": "getHotShotCommitment",
3779    "inputs": [
3780      {
3781        "name": "hotShotBlockHeight",
3782        "type": "uint256",
3783        "internalType": "uint256"
3784      }
3785    ],
3786    "outputs": [
3787      {
3788        "name": "hotShotBlockCommRoot",
3789        "type": "uint256",
3790        "internalType": "BN254.ScalarField"
3791      },
3792      {
3793        "name": "hotshotBlockHeight",
3794        "type": "uint64",
3795        "internalType": "uint64"
3796      }
3797    ],
3798    "stateMutability": "view"
3799  },
3800  {
3801    "type": "function",
3802    "name": "getStateHistoryCount",
3803    "inputs": [],
3804    "outputs": [
3805      {
3806        "name": "",
3807        "type": "uint256",
3808        "internalType": "uint256"
3809      }
3810    ],
3811    "stateMutability": "view"
3812  },
3813  {
3814    "type": "function",
3815    "name": "getVersion",
3816    "inputs": [],
3817    "outputs": [
3818      {
3819        "name": "majorVersion",
3820        "type": "uint8",
3821        "internalType": "uint8"
3822      },
3823      {
3824        "name": "minorVersion",
3825        "type": "uint8",
3826        "internalType": "uint8"
3827      },
3828      {
3829        "name": "patchVersion",
3830        "type": "uint8",
3831        "internalType": "uint8"
3832      }
3833    ],
3834    "stateMutability": "pure"
3835  },
3836  {
3837    "type": "function",
3838    "name": "initialize",
3839    "inputs": [
3840      {
3841        "name": "_genesis",
3842        "type": "tuple",
3843        "internalType": "struct LightClient.LightClientState",
3844        "components": [
3845          {
3846            "name": "viewNum",
3847            "type": "uint64",
3848            "internalType": "uint64"
3849          },
3850          {
3851            "name": "blockHeight",
3852            "type": "uint64",
3853            "internalType": "uint64"
3854          },
3855          {
3856            "name": "blockCommRoot",
3857            "type": "uint256",
3858            "internalType": "BN254.ScalarField"
3859          }
3860        ]
3861      },
3862      {
3863        "name": "_genesisStakeTableState",
3864        "type": "tuple",
3865        "internalType": "struct LightClient.StakeTableState",
3866        "components": [
3867          {
3868            "name": "threshold",
3869            "type": "uint256",
3870            "internalType": "uint256"
3871          },
3872          {
3873            "name": "blsKeyComm",
3874            "type": "uint256",
3875            "internalType": "BN254.ScalarField"
3876          },
3877          {
3878            "name": "schnorrKeyComm",
3879            "type": "uint256",
3880            "internalType": "BN254.ScalarField"
3881          },
3882          {
3883            "name": "amountComm",
3884            "type": "uint256",
3885            "internalType": "BN254.ScalarField"
3886          }
3887        ]
3888      },
3889      {
3890        "name": "_stateHistoryRetentionPeriod",
3891        "type": "uint32",
3892        "internalType": "uint32"
3893      },
3894      {
3895        "name": "owner",
3896        "type": "address",
3897        "internalType": "address"
3898      }
3899    ],
3900    "outputs": [],
3901    "stateMutability": "nonpayable"
3902  },
3903  {
3904    "type": "function",
3905    "name": "isPermissionedProverEnabled",
3906    "inputs": [],
3907    "outputs": [
3908      {
3909        "name": "",
3910        "type": "bool",
3911        "internalType": "bool"
3912      }
3913    ],
3914    "stateMutability": "view"
3915  },
3916  {
3917    "type": "function",
3918    "name": "lagOverEscapeHatchThreshold",
3919    "inputs": [
3920      {
3921        "name": "blockNumber",
3922        "type": "uint256",
3923        "internalType": "uint256"
3924      },
3925      {
3926        "name": "threshold",
3927        "type": "uint256",
3928        "internalType": "uint256"
3929      }
3930    ],
3931    "outputs": [
3932      {
3933        "name": "",
3934        "type": "bool",
3935        "internalType": "bool"
3936      }
3937    ],
3938    "stateMutability": "view"
3939  },
3940  {
3941    "type": "function",
3942    "name": "newFinalizedState",
3943    "inputs": [
3944      {
3945        "name": "newState",
3946        "type": "tuple",
3947        "internalType": "struct LightClient.LightClientState",
3948        "components": [
3949          {
3950            "name": "viewNum",
3951            "type": "uint64",
3952            "internalType": "uint64"
3953          },
3954          {
3955            "name": "blockHeight",
3956            "type": "uint64",
3957            "internalType": "uint64"
3958          },
3959          {
3960            "name": "blockCommRoot",
3961            "type": "uint256",
3962            "internalType": "BN254.ScalarField"
3963          }
3964        ]
3965      },
3966      {
3967        "name": "proof",
3968        "type": "tuple",
3969        "internalType": "struct IPlonkVerifier.PlonkProof",
3970        "components": [
3971          {
3972            "name": "wire0",
3973            "type": "tuple",
3974            "internalType": "struct BN254.G1Point",
3975            "components": [
3976              {
3977                "name": "x",
3978                "type": "uint256",
3979                "internalType": "BN254.BaseField"
3980              },
3981              {
3982                "name": "y",
3983                "type": "uint256",
3984                "internalType": "BN254.BaseField"
3985              }
3986            ]
3987          },
3988          {
3989            "name": "wire1",
3990            "type": "tuple",
3991            "internalType": "struct BN254.G1Point",
3992            "components": [
3993              {
3994                "name": "x",
3995                "type": "uint256",
3996                "internalType": "BN254.BaseField"
3997              },
3998              {
3999                "name": "y",
4000                "type": "uint256",
4001                "internalType": "BN254.BaseField"
4002              }
4003            ]
4004          },
4005          {
4006            "name": "wire2",
4007            "type": "tuple",
4008            "internalType": "struct BN254.G1Point",
4009            "components": [
4010              {
4011                "name": "x",
4012                "type": "uint256",
4013                "internalType": "BN254.BaseField"
4014              },
4015              {
4016                "name": "y",
4017                "type": "uint256",
4018                "internalType": "BN254.BaseField"
4019              }
4020            ]
4021          },
4022          {
4023            "name": "wire3",
4024            "type": "tuple",
4025            "internalType": "struct BN254.G1Point",
4026            "components": [
4027              {
4028                "name": "x",
4029                "type": "uint256",
4030                "internalType": "BN254.BaseField"
4031              },
4032              {
4033                "name": "y",
4034                "type": "uint256",
4035                "internalType": "BN254.BaseField"
4036              }
4037            ]
4038          },
4039          {
4040            "name": "wire4",
4041            "type": "tuple",
4042            "internalType": "struct BN254.G1Point",
4043            "components": [
4044              {
4045                "name": "x",
4046                "type": "uint256",
4047                "internalType": "BN254.BaseField"
4048              },
4049              {
4050                "name": "y",
4051                "type": "uint256",
4052                "internalType": "BN254.BaseField"
4053              }
4054            ]
4055          },
4056          {
4057            "name": "prodPerm",
4058            "type": "tuple",
4059            "internalType": "struct BN254.G1Point",
4060            "components": [
4061              {
4062                "name": "x",
4063                "type": "uint256",
4064                "internalType": "BN254.BaseField"
4065              },
4066              {
4067                "name": "y",
4068                "type": "uint256",
4069                "internalType": "BN254.BaseField"
4070              }
4071            ]
4072          },
4073          {
4074            "name": "split0",
4075            "type": "tuple",
4076            "internalType": "struct BN254.G1Point",
4077            "components": [
4078              {
4079                "name": "x",
4080                "type": "uint256",
4081                "internalType": "BN254.BaseField"
4082              },
4083              {
4084                "name": "y",
4085                "type": "uint256",
4086                "internalType": "BN254.BaseField"
4087              }
4088            ]
4089          },
4090          {
4091            "name": "split1",
4092            "type": "tuple",
4093            "internalType": "struct BN254.G1Point",
4094            "components": [
4095              {
4096                "name": "x",
4097                "type": "uint256",
4098                "internalType": "BN254.BaseField"
4099              },
4100              {
4101                "name": "y",
4102                "type": "uint256",
4103                "internalType": "BN254.BaseField"
4104              }
4105            ]
4106          },
4107          {
4108            "name": "split2",
4109            "type": "tuple",
4110            "internalType": "struct BN254.G1Point",
4111            "components": [
4112              {
4113                "name": "x",
4114                "type": "uint256",
4115                "internalType": "BN254.BaseField"
4116              },
4117              {
4118                "name": "y",
4119                "type": "uint256",
4120                "internalType": "BN254.BaseField"
4121              }
4122            ]
4123          },
4124          {
4125            "name": "split3",
4126            "type": "tuple",
4127            "internalType": "struct BN254.G1Point",
4128            "components": [
4129              {
4130                "name": "x",
4131                "type": "uint256",
4132                "internalType": "BN254.BaseField"
4133              },
4134              {
4135                "name": "y",
4136                "type": "uint256",
4137                "internalType": "BN254.BaseField"
4138              }
4139            ]
4140          },
4141          {
4142            "name": "split4",
4143            "type": "tuple",
4144            "internalType": "struct BN254.G1Point",
4145            "components": [
4146              {
4147                "name": "x",
4148                "type": "uint256",
4149                "internalType": "BN254.BaseField"
4150              },
4151              {
4152                "name": "y",
4153                "type": "uint256",
4154                "internalType": "BN254.BaseField"
4155              }
4156            ]
4157          },
4158          {
4159            "name": "zeta",
4160            "type": "tuple",
4161            "internalType": "struct BN254.G1Point",
4162            "components": [
4163              {
4164                "name": "x",
4165                "type": "uint256",
4166                "internalType": "BN254.BaseField"
4167              },
4168              {
4169                "name": "y",
4170                "type": "uint256",
4171                "internalType": "BN254.BaseField"
4172              }
4173            ]
4174          },
4175          {
4176            "name": "zetaOmega",
4177            "type": "tuple",
4178            "internalType": "struct BN254.G1Point",
4179            "components": [
4180              {
4181                "name": "x",
4182                "type": "uint256",
4183                "internalType": "BN254.BaseField"
4184              },
4185              {
4186                "name": "y",
4187                "type": "uint256",
4188                "internalType": "BN254.BaseField"
4189              }
4190            ]
4191          },
4192          {
4193            "name": "wireEval0",
4194            "type": "uint256",
4195            "internalType": "BN254.ScalarField"
4196          },
4197          {
4198            "name": "wireEval1",
4199            "type": "uint256",
4200            "internalType": "BN254.ScalarField"
4201          },
4202          {
4203            "name": "wireEval2",
4204            "type": "uint256",
4205            "internalType": "BN254.ScalarField"
4206          },
4207          {
4208            "name": "wireEval3",
4209            "type": "uint256",
4210            "internalType": "BN254.ScalarField"
4211          },
4212          {
4213            "name": "wireEval4",
4214            "type": "uint256",
4215            "internalType": "BN254.ScalarField"
4216          },
4217          {
4218            "name": "sigmaEval0",
4219            "type": "uint256",
4220            "internalType": "BN254.ScalarField"
4221          },
4222          {
4223            "name": "sigmaEval1",
4224            "type": "uint256",
4225            "internalType": "BN254.ScalarField"
4226          },
4227          {
4228            "name": "sigmaEval2",
4229            "type": "uint256",
4230            "internalType": "BN254.ScalarField"
4231          },
4232          {
4233            "name": "sigmaEval3",
4234            "type": "uint256",
4235            "internalType": "BN254.ScalarField"
4236          },
4237          {
4238            "name": "prodPermZetaOmegaEval",
4239            "type": "uint256",
4240            "internalType": "BN254.ScalarField"
4241          }
4242        ]
4243      }
4244    ],
4245    "outputs": [],
4246    "stateMutability": "nonpayable"
4247  },
4248  {
4249    "type": "function",
4250    "name": "owner",
4251    "inputs": [],
4252    "outputs": [
4253      {
4254        "name": "",
4255        "type": "address",
4256        "internalType": "address"
4257      }
4258    ],
4259    "stateMutability": "view"
4260  },
4261  {
4262    "type": "function",
4263    "name": "permissionedProver",
4264    "inputs": [],
4265    "outputs": [
4266      {
4267        "name": "",
4268        "type": "address",
4269        "internalType": "address"
4270      }
4271    ],
4272    "stateMutability": "view"
4273  },
4274  {
4275    "type": "function",
4276    "name": "proxiableUUID",
4277    "inputs": [],
4278    "outputs": [
4279      {
4280        "name": "",
4281        "type": "bytes32",
4282        "internalType": "bytes32"
4283      }
4284    ],
4285    "stateMutability": "view"
4286  },
4287  {
4288    "type": "function",
4289    "name": "renounceOwnership",
4290    "inputs": [],
4291    "outputs": [],
4292    "stateMutability": "nonpayable"
4293  },
4294  {
4295    "type": "function",
4296    "name": "setFinalizedState",
4297    "inputs": [
4298      {
4299        "name": "state",
4300        "type": "tuple",
4301        "internalType": "struct LightClient.LightClientState",
4302        "components": [
4303          {
4304            "name": "viewNum",
4305            "type": "uint64",
4306            "internalType": "uint64"
4307          },
4308          {
4309            "name": "blockHeight",
4310            "type": "uint64",
4311            "internalType": "uint64"
4312          },
4313          {
4314            "name": "blockCommRoot",
4315            "type": "uint256",
4316            "internalType": "BN254.ScalarField"
4317          }
4318        ]
4319      }
4320    ],
4321    "outputs": [],
4322    "stateMutability": "nonpayable"
4323  },
4324  {
4325    "type": "function",
4326    "name": "setHotShotDownSince",
4327    "inputs": [
4328      {
4329        "name": "l1Height",
4330        "type": "uint256",
4331        "internalType": "uint256"
4332      }
4333    ],
4334    "outputs": [],
4335    "stateMutability": "nonpayable"
4336  },
4337  {
4338    "type": "function",
4339    "name": "setHotShotUp",
4340    "inputs": [],
4341    "outputs": [],
4342    "stateMutability": "nonpayable"
4343  },
4344  {
4345    "type": "function",
4346    "name": "setPermissionedProver",
4347    "inputs": [
4348      {
4349        "name": "prover",
4350        "type": "address",
4351        "internalType": "address"
4352      }
4353    ],
4354    "outputs": [],
4355    "stateMutability": "nonpayable"
4356  },
4357  {
4358    "type": "function",
4359    "name": "setStateHistory",
4360    "inputs": [
4361      {
4362        "name": "_stateHistoryCommitments",
4363        "type": "tuple[]",
4364        "internalType": "struct LightClient.StateHistoryCommitment[]",
4365        "components": [
4366          {
4367            "name": "l1BlockHeight",
4368            "type": "uint64",
4369            "internalType": "uint64"
4370          },
4371          {
4372            "name": "l1BlockTimestamp",
4373            "type": "uint64",
4374            "internalType": "uint64"
4375          },
4376          {
4377            "name": "hotShotBlockHeight",
4378            "type": "uint64",
4379            "internalType": "uint64"
4380          },
4381          {
4382            "name": "hotShotBlockCommRoot",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          }
4386        ]
4387      }
4388    ],
4389    "outputs": [],
4390    "stateMutability": "nonpayable"
4391  },
4392  {
4393    "type": "function",
4394    "name": "setstateHistoryRetentionPeriod",
4395    "inputs": [
4396      {
4397        "name": "historySeconds",
4398        "type": "uint32",
4399        "internalType": "uint32"
4400      }
4401    ],
4402    "outputs": [],
4403    "stateMutability": "nonpayable"
4404  },
4405  {
4406    "type": "function",
4407    "name": "stateHistoryCommitments",
4408    "inputs": [
4409      {
4410        "name": "",
4411        "type": "uint256",
4412        "internalType": "uint256"
4413      }
4414    ],
4415    "outputs": [
4416      {
4417        "name": "l1BlockHeight",
4418        "type": "uint64",
4419        "internalType": "uint64"
4420      },
4421      {
4422        "name": "l1BlockTimestamp",
4423        "type": "uint64",
4424        "internalType": "uint64"
4425      },
4426      {
4427        "name": "hotShotBlockHeight",
4428        "type": "uint64",
4429        "internalType": "uint64"
4430      },
4431      {
4432        "name": "hotShotBlockCommRoot",
4433        "type": "uint256",
4434        "internalType": "BN254.ScalarField"
4435      }
4436    ],
4437    "stateMutability": "view"
4438  },
4439  {
4440    "type": "function",
4441    "name": "stateHistoryFirstIndex",
4442    "inputs": [],
4443    "outputs": [
4444      {
4445        "name": "",
4446        "type": "uint64",
4447        "internalType": "uint64"
4448      }
4449    ],
4450    "stateMutability": "view"
4451  },
4452  {
4453    "type": "function",
4454    "name": "stateHistoryRetentionPeriod",
4455    "inputs": [],
4456    "outputs": [
4457      {
4458        "name": "",
4459        "type": "uint32",
4460        "internalType": "uint32"
4461      }
4462    ],
4463    "stateMutability": "view"
4464  },
4465  {
4466    "type": "function",
4467    "name": "transferOwnership",
4468    "inputs": [
4469      {
4470        "name": "newOwner",
4471        "type": "address",
4472        "internalType": "address"
4473      }
4474    ],
4475    "outputs": [],
4476    "stateMutability": "nonpayable"
4477  },
4478  {
4479    "type": "function",
4480    "name": "upgradeToAndCall",
4481    "inputs": [
4482      {
4483        "name": "newImplementation",
4484        "type": "address",
4485        "internalType": "address"
4486      },
4487      {
4488        "name": "data",
4489        "type": "bytes",
4490        "internalType": "bytes"
4491      }
4492    ],
4493    "outputs": [],
4494    "stateMutability": "payable"
4495  },
4496  {
4497    "type": "event",
4498    "name": "Initialized",
4499    "inputs": [
4500      {
4501        "name": "version",
4502        "type": "uint64",
4503        "indexed": false,
4504        "internalType": "uint64"
4505      }
4506    ],
4507    "anonymous": false
4508  },
4509  {
4510    "type": "event",
4511    "name": "NewState",
4512    "inputs": [
4513      {
4514        "name": "viewNum",
4515        "type": "uint64",
4516        "indexed": true,
4517        "internalType": "uint64"
4518      },
4519      {
4520        "name": "blockHeight",
4521        "type": "uint64",
4522        "indexed": true,
4523        "internalType": "uint64"
4524      },
4525      {
4526        "name": "blockCommRoot",
4527        "type": "uint256",
4528        "indexed": false,
4529        "internalType": "BN254.ScalarField"
4530      }
4531    ],
4532    "anonymous": false
4533  },
4534  {
4535    "type": "event",
4536    "name": "OwnershipTransferred",
4537    "inputs": [
4538      {
4539        "name": "previousOwner",
4540        "type": "address",
4541        "indexed": true,
4542        "internalType": "address"
4543      },
4544      {
4545        "name": "newOwner",
4546        "type": "address",
4547        "indexed": true,
4548        "internalType": "address"
4549      }
4550    ],
4551    "anonymous": false
4552  },
4553  {
4554    "type": "event",
4555    "name": "PermissionedProverNotRequired",
4556    "inputs": [],
4557    "anonymous": false
4558  },
4559  {
4560    "type": "event",
4561    "name": "PermissionedProverRequired",
4562    "inputs": [
4563      {
4564        "name": "permissionedProver",
4565        "type": "address",
4566        "indexed": false,
4567        "internalType": "address"
4568      }
4569    ],
4570    "anonymous": false
4571  },
4572  {
4573    "type": "event",
4574    "name": "Upgrade",
4575    "inputs": [
4576      {
4577        "name": "implementation",
4578        "type": "address",
4579        "indexed": false,
4580        "internalType": "address"
4581      }
4582    ],
4583    "anonymous": false
4584  },
4585  {
4586    "type": "event",
4587    "name": "Upgraded",
4588    "inputs": [
4589      {
4590        "name": "implementation",
4591        "type": "address",
4592        "indexed": true,
4593        "internalType": "address"
4594      }
4595    ],
4596    "anonymous": false
4597  },
4598  {
4599    "type": "error",
4600    "name": "AddressEmptyCode",
4601    "inputs": [
4602      {
4603        "name": "target",
4604        "type": "address",
4605        "internalType": "address"
4606      }
4607    ]
4608  },
4609  {
4610    "type": "error",
4611    "name": "ERC1967InvalidImplementation",
4612    "inputs": [
4613      {
4614        "name": "implementation",
4615        "type": "address",
4616        "internalType": "address"
4617      }
4618    ]
4619  },
4620  {
4621    "type": "error",
4622    "name": "ERC1967NonPayable",
4623    "inputs": []
4624  },
4625  {
4626    "type": "error",
4627    "name": "FailedInnerCall",
4628    "inputs": []
4629  },
4630  {
4631    "type": "error",
4632    "name": "InsufficientSnapshotHistory",
4633    "inputs": []
4634  },
4635  {
4636    "type": "error",
4637    "name": "InvalidAddress",
4638    "inputs": []
4639  },
4640  {
4641    "type": "error",
4642    "name": "InvalidArgs",
4643    "inputs": []
4644  },
4645  {
4646    "type": "error",
4647    "name": "InvalidHotShotBlockForCommitmentCheck",
4648    "inputs": []
4649  },
4650  {
4651    "type": "error",
4652    "name": "InvalidInitialization",
4653    "inputs": []
4654  },
4655  {
4656    "type": "error",
4657    "name": "InvalidMaxStateHistory",
4658    "inputs": []
4659  },
4660  {
4661    "type": "error",
4662    "name": "InvalidProof",
4663    "inputs": []
4664  },
4665  {
4666    "type": "error",
4667    "name": "InvalidScalar",
4668    "inputs": []
4669  },
4670  {
4671    "type": "error",
4672    "name": "NoChangeRequired",
4673    "inputs": []
4674  },
4675  {
4676    "type": "error",
4677    "name": "NotInitializing",
4678    "inputs": []
4679  },
4680  {
4681    "type": "error",
4682    "name": "OutdatedState",
4683    "inputs": []
4684  },
4685  {
4686    "type": "error",
4687    "name": "OwnableInvalidOwner",
4688    "inputs": [
4689      {
4690        "name": "owner",
4691        "type": "address",
4692        "internalType": "address"
4693      }
4694    ]
4695  },
4696  {
4697    "type": "error",
4698    "name": "OwnableUnauthorizedAccount",
4699    "inputs": [
4700      {
4701        "name": "account",
4702        "type": "address",
4703        "internalType": "address"
4704      }
4705    ]
4706  },
4707  {
4708    "type": "error",
4709    "name": "OwnershipCannotBeRenounced",
4710    "inputs": []
4711  },
4712  {
4713    "type": "error",
4714    "name": "ProverNotPermissioned",
4715    "inputs": []
4716  },
4717  {
4718    "type": "error",
4719    "name": "UUPSUnauthorizedCallContext",
4720    "inputs": []
4721  },
4722  {
4723    "type": "error",
4724    "name": "UUPSUnsupportedProxiableUUID",
4725    "inputs": [
4726      {
4727        "name": "slot",
4728        "type": "bytes32",
4729        "internalType": "bytes32"
4730      }
4731    ]
4732  },
4733  {
4734    "type": "error",
4735    "name": "WrongStakeTableUsed",
4736    "inputs": []
4737  }
4738]
4739```*/
4740#[allow(
4741    non_camel_case_types,
4742    non_snake_case,
4743    clippy::pub_underscore_fields,
4744    clippy::style,
4745    clippy::empty_structs_with_brackets
4746)]
4747pub mod LightClientMock {
4748    use super::*;
4749    use alloy::sol_types as alloy_sol_types;
4750    /// The creation / init bytecode of the contract.
4751    ///
4752    /// ```text
4753    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612e8c6100f95f395f8181611791015281816117ba01526119370152612e8c5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612189565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a2565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b9565b348015610293575f5ffd5b506101dd6102a2366004612510565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a2565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126c0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a2565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612776565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278f565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612817565b348015610572575f5ffd5b506101dd61058136600461284c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612866565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612189565b610cf0565b348015610689575f5ffd5b506101dd610698366004612886565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e605f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612992565b81548110610a0957610a096129a5565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a5565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a5565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a5565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612992565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a5565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612127565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b95565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db5565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a5565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd4565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a5565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1d565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e605f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a5565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612992565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a5565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a5565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e34565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612992565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e49565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d2f9190612145565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561216a5780546001600160c01b03191681555f6001820155600201612146565b5090565b80356001600160a01b0381168114612184575f5ffd5b919050565b5f60208284031215612199575f5ffd5b610ce78261216e565b5f602082840312156121b2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121eb604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123f1576123f16123ba565b60405290565b604051608081016001600160401b03811182821017156123f1576123f16123ba565b604051601f8201601f191681016001600160401b0381118282101715612441576124416123ba565b604052919050565b80356001600160401b0381168114612184575f5ffd5b5f6060828403121561246f575f5ffd5b604051606081016001600160401b0381118282101715612491576124916123ba565b6040529050806124a083612449565b81526124ae60208401612449565b6020820152604092830135920191909152919050565b5f604082840312156124d4575f5ffd5b604080519081016001600160401b03811182821017156124f6576124f66123ba565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612523575f5ffd5b61252d858561245f565b9250610480605f1982011215612541575f5ffd5b5061254a6123ce565b61255785606086016124c4565b81526125668560a086016124c4565b60208201526125788560e086016124c4565b604082015261258b8561012086016124c4565b606082015261259e8561016086016124c4565b60808201526125b1856101a086016124c4565b60a08201526125c4856101e086016124c4565b60c08201526125d78561022086016124c4565b60e08201526125ea8561026086016124c4565b6101008201526125fe856102a086016124c4565b610120820152612612856102e086016124c4565b6101408201526126268561032086016124c4565b61016082015261263a8561036086016124c4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126d1575f5ffd5b6126da8361216e565b915060208301356001600160401b038111156126f4575f5ffd5b8301601f81018513612704575f5ffd5b80356001600160401b0381111561271d5761271d6123ba565b612730601f8201601f1916602001612419565b818152866020838501011115612744575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612184575f5ffd5b5f60208284031215612786575f5ffd5b610ce782612763565b5f5f5f5f8486036101208112156127a4575f5ffd5b6127ae878761245f565b94506080605f19820112156127c1575f5ffd5b506127ca6123f7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fd60e08601612763565b915061280c610100860161216e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285c575f5ffd5b610ce7838361245f565b5f5f60408385031215612877575f5ffd5b50508035926020909101359150565b5f60208284031215612896575f5ffd5b81356001600160401b038111156128ab575f5ffd5b8201601f810184136128bb575f5ffd5b80356001600160401b038111156128d4576128d46123ba565b6128e360208260051b01612419565b8082825260208201915060208360071b850101925086831115612904575f5ffd5b6020840193505b828410156129745760808488031215612922575f5ffd5b61292a6123f7565b61293385612449565b815261294160208601612449565b602082015261295260408601612449565b604082015260608581013590820152825260809093019260209091019061290b565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129bc565b6129f082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9f6105008301856129b9565b612dad6105e08301846129db565b949350505050565b5f60208284031215612dc5575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297e565b5f6001600160401b0382166001600160401b038103612e1457612e1461297e565b60010192915050565b5f60208284031215612e2d575f5ffd5b5051919050565b5f81612e4257612e4261297e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4754    /// ```
4755    #[rustfmt::skip]
4756    #[allow(clippy::all)]
4757    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4758        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\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\0qW`@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\xD0W\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[`\x80Qa.\x8Ca\0\xF9_9_\x81\x81a\x17\x91\x01R\x81\x81a\x17\xBA\x01Ra\x197\x01Ra.\x8C_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x89V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA2V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x10V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA2V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xC0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA2V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\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\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'vV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8FV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x17V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(LV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(fV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x89V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x86V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.`_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x92V[\x81T\x81\x10a\n\tWa\n\ta)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA5V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA5V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@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\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x92V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\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[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!'V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x95V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB5V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xDDWa\x15\xDDa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA5V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x7F\x83a-\xF3V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[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\x18\x0CWP\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\x18\0_Q` a.`_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\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\x18\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1DV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[PPPV[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x92V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.4V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x92V[\x11\x97\x96PPPPPPPV[\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[a\x1C\x8B\x82a\x1D(V[`@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\x15a\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_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`@Qa\x1D\xA7\x91\x90a.IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r/\x91\x90a!EV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!jW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!FV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x99W__\xFD[a\x0C\xE7\x82a!nV[_` \x82\x84\x03\x12\x15a!\xB2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xEB`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$AWa$Aa#\xBAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[_``\x82\x84\x03\x12\x15a$oW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x91Wa$\x91a#\xBAV[`@R\x90P\x80a$\xA0\x83a$IV[\x81Ra$\xAE` \x84\x01a$IV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF6Wa$\xF6a#\xBAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%#W__\xFD[a%-\x85\x85a$_V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%AW__\xFD[Pa%Ja#\xCEV[a%W\x85``\x86\x01a$\xC4V[\x81Ra%f\x85`\xA0\x86\x01a$\xC4V[` \x82\x01Ra%x\x85`\xE0\x86\x01a$\xC4V[`@\x82\x01Ra%\x8B\x85a\x01 \x86\x01a$\xC4V[``\x82\x01Ra%\x9E\x85a\x01`\x86\x01a$\xC4V[`\x80\x82\x01Ra%\xB1\x85a\x01\xA0\x86\x01a$\xC4V[`\xA0\x82\x01Ra%\xC4\x85a\x01\xE0\x86\x01a$\xC4V[`\xC0\x82\x01Ra%\xD7\x85a\x02 \x86\x01a$\xC4V[`\xE0\x82\x01Ra%\xEA\x85a\x02`\x86\x01a$\xC4V[a\x01\0\x82\x01Ra%\xFE\x85a\x02\xA0\x86\x01a$\xC4V[a\x01 \x82\x01Ra&\x12\x85a\x02\xE0\x86\x01a$\xC4V[a\x01@\x82\x01Ra&&\x85a\x03 \x86\x01a$\xC4V[a\x01`\x82\x01Ra&:\x85a\x03`\x86\x01a$\xC4V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xD1W__\xFD[a&\xDA\x83a!nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x04W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1DWa'\x1Da#\xBAV[a'0`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x19V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x84W__\xFD[_` \x82\x84\x03\x12\x15a'\x86W__\xFD[a\x0C\xE7\x82a'cV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA4W__\xFD[a'\xAE\x87\x87a$_V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xC1W__\xFD[Pa'\xCAa#\xF7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFD`\xE0\x86\x01a'cV[\x91Pa(\x0Ca\x01\0\x86\x01a!nV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(\\W__\xFD[a\x0C\xE7\x83\x83a$_V[__`@\x83\x85\x03\x12\x15a(wW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xABW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xBBW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD4Wa(\xD4a#\xBAV[a(\xE3` \x82`\x05\x1B\x01a$\x19V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x04W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)tW`\x80\x84\x88\x03\x12\x15a)\"W__\xFD[a)*a#\xF7V[a)3\x85a$IV[\x81Ra)A` \x86\x01a$IV[` \x82\x01Ra)R`@\x86\x01a$IV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\x0BV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBCV[a)\xF0\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xC7`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra-\x9Fa\x05\0\x83\x01\x85a)\xB9V[a-\xADa\x05\xE0\x83\x01\x84a)\xDBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x14Wa.\x14a)~V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.-W__\xFD[PQ\x91\x90PV[_\x81a.BWa.Ba)~V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4759    );
4760    /// The runtime bytecode of the contract, as deployed on the network.
4761    ///
4762    /// ```text
4763    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612189565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a2565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b9565b348015610293575f5ffd5b506101dd6102a2366004612510565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a2565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126c0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a2565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612776565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278f565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612817565b348015610572575f5ffd5b506101dd61058136600461284c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612866565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612189565b610cf0565b348015610689575f5ffd5b506101dd610698366004612886565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e605f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612992565b81548110610a0957610a096129a5565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a5565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a5565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a5565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612992565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a5565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612127565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b95565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db5565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a5565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd4565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a5565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1d565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e605f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a5565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612992565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a5565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a5565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e34565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612992565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e49565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d2f9190612145565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561216a5780546001600160c01b03191681555f6001820155600201612146565b5090565b80356001600160a01b0381168114612184575f5ffd5b919050565b5f60208284031215612199575f5ffd5b610ce78261216e565b5f602082840312156121b2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121eb604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123f1576123f16123ba565b60405290565b604051608081016001600160401b03811182821017156123f1576123f16123ba565b604051601f8201601f191681016001600160401b0381118282101715612441576124416123ba565b604052919050565b80356001600160401b0381168114612184575f5ffd5b5f6060828403121561246f575f5ffd5b604051606081016001600160401b0381118282101715612491576124916123ba565b6040529050806124a083612449565b81526124ae60208401612449565b6020820152604092830135920191909152919050565b5f604082840312156124d4575f5ffd5b604080519081016001600160401b03811182821017156124f6576124f66123ba565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612523575f5ffd5b61252d858561245f565b9250610480605f1982011215612541575f5ffd5b5061254a6123ce565b61255785606086016124c4565b81526125668560a086016124c4565b60208201526125788560e086016124c4565b604082015261258b8561012086016124c4565b606082015261259e8561016086016124c4565b60808201526125b1856101a086016124c4565b60a08201526125c4856101e086016124c4565b60c08201526125d78561022086016124c4565b60e08201526125ea8561026086016124c4565b6101008201526125fe856102a086016124c4565b610120820152612612856102e086016124c4565b6101408201526126268561032086016124c4565b61016082015261263a8561036086016124c4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126d1575f5ffd5b6126da8361216e565b915060208301356001600160401b038111156126f4575f5ffd5b8301601f81018513612704575f5ffd5b80356001600160401b0381111561271d5761271d6123ba565b612730601f8201601f1916602001612419565b818152866020838501011115612744575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612184575f5ffd5b5f60208284031215612786575f5ffd5b610ce782612763565b5f5f5f5f8486036101208112156127a4575f5ffd5b6127ae878761245f565b94506080605f19820112156127c1575f5ffd5b506127ca6123f7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fd60e08601612763565b915061280c610100860161216e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285c575f5ffd5b610ce7838361245f565b5f5f60408385031215612877575f5ffd5b50508035926020909101359150565b5f60208284031215612896575f5ffd5b81356001600160401b038111156128ab575f5ffd5b8201601f810184136128bb575f5ffd5b80356001600160401b038111156128d4576128d46123ba565b6128e360208260051b01612419565b8082825260208201915060208360071b850101925086831115612904575f5ffd5b6020840193505b828410156129745760808488031215612922575f5ffd5b61292a6123f7565b61293385612449565b815261294160208601612449565b602082015261295260408601612449565b604082015260608581013590820152825260809093019260209091019061290b565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129bc565b6129f082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9f6105008301856129b9565b612dad6105e08301846129db565b949350505050565b5f60208284031215612dc5575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297e565b5f6001600160401b0382166001600160401b038103612e1457612e1461297e565b60010192915050565b5f60208284031215612e2d575f5ffd5b5051919050565b5f81612e4257612e4261297e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4764    /// ```
4765    #[rustfmt::skip]
4766    #[allow(clippy::all)]
4767    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4768        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x89V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA2V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x10V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA2V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xC0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA2V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\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\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'vV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8FV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x17V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(LV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(fV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x89V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x86V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.`_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x92V[\x81T\x81\x10a\n\tWa\n\ta)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA5V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA5V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@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\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x92V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\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[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!'V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x95V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB5V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xDDWa\x15\xDDa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA5V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x7F\x83a-\xF3V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[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\x18\x0CWP\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\x18\0_Q` a.`_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\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\x18\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1DV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[PPPV[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x92V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.4V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x92V[\x11\x97\x96PPPPPPPV[\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[a\x1C\x8B\x82a\x1D(V[`@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\x15a\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_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`@Qa\x1D\xA7\x91\x90a.IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r/\x91\x90a!EV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!jW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!FV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x99W__\xFD[a\x0C\xE7\x82a!nV[_` \x82\x84\x03\x12\x15a!\xB2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xEB`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$AWa$Aa#\xBAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[_``\x82\x84\x03\x12\x15a$oW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x91Wa$\x91a#\xBAV[`@R\x90P\x80a$\xA0\x83a$IV[\x81Ra$\xAE` \x84\x01a$IV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF6Wa$\xF6a#\xBAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%#W__\xFD[a%-\x85\x85a$_V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%AW__\xFD[Pa%Ja#\xCEV[a%W\x85``\x86\x01a$\xC4V[\x81Ra%f\x85`\xA0\x86\x01a$\xC4V[` \x82\x01Ra%x\x85`\xE0\x86\x01a$\xC4V[`@\x82\x01Ra%\x8B\x85a\x01 \x86\x01a$\xC4V[``\x82\x01Ra%\x9E\x85a\x01`\x86\x01a$\xC4V[`\x80\x82\x01Ra%\xB1\x85a\x01\xA0\x86\x01a$\xC4V[`\xA0\x82\x01Ra%\xC4\x85a\x01\xE0\x86\x01a$\xC4V[`\xC0\x82\x01Ra%\xD7\x85a\x02 \x86\x01a$\xC4V[`\xE0\x82\x01Ra%\xEA\x85a\x02`\x86\x01a$\xC4V[a\x01\0\x82\x01Ra%\xFE\x85a\x02\xA0\x86\x01a$\xC4V[a\x01 \x82\x01Ra&\x12\x85a\x02\xE0\x86\x01a$\xC4V[a\x01@\x82\x01Ra&&\x85a\x03 \x86\x01a$\xC4V[a\x01`\x82\x01Ra&:\x85a\x03`\x86\x01a$\xC4V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xD1W__\xFD[a&\xDA\x83a!nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x04W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1DWa'\x1Da#\xBAV[a'0`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x19V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x84W__\xFD[_` \x82\x84\x03\x12\x15a'\x86W__\xFD[a\x0C\xE7\x82a'cV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA4W__\xFD[a'\xAE\x87\x87a$_V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xC1W__\xFD[Pa'\xCAa#\xF7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFD`\xE0\x86\x01a'cV[\x91Pa(\x0Ca\x01\0\x86\x01a!nV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(\\W__\xFD[a\x0C\xE7\x83\x83a$_V[__`@\x83\x85\x03\x12\x15a(wW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xABW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xBBW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD4Wa(\xD4a#\xBAV[a(\xE3` \x82`\x05\x1B\x01a$\x19V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x04W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)tW`\x80\x84\x88\x03\x12\x15a)\"W__\xFD[a)*a#\xF7V[a)3\x85a$IV[\x81Ra)A` \x86\x01a$IV[` \x82\x01Ra)R`@\x86\x01a$IV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\x0BV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBCV[a)\xF0\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xC7`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra-\x9Fa\x05\0\x83\x01\x85a)\xB9V[a-\xADa\x05\xE0\x83\x01\x84a)\xDBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x14Wa.\x14a)~V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.-W__\xFD[PQ\x91\x90PV[_\x81a.BWa.Ba)~V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4769    );
4770    #[derive(serde::Serialize, serde::Deserialize)]
4771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4772    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4773```solidity
4774error AddressEmptyCode(address target);
4775```*/
4776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4777    #[derive(Clone)]
4778    pub struct AddressEmptyCode {
4779        #[allow(missing_docs)]
4780        pub target: alloy::sol_types::private::Address,
4781    }
4782    #[allow(
4783        non_camel_case_types,
4784        non_snake_case,
4785        clippy::pub_underscore_fields,
4786        clippy::style
4787    )]
4788    const _: () = {
4789        use alloy::sol_types as alloy_sol_types;
4790        #[doc(hidden)]
4791        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4792        #[doc(hidden)]
4793        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4794        #[cfg(test)]
4795        #[allow(dead_code, unreachable_patterns)]
4796        fn _type_assertion(
4797            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4798        ) {
4799            match _t {
4800                alloy_sol_types::private::AssertTypeEq::<
4801                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4802                >(_) => {}
4803            }
4804        }
4805        #[automatically_derived]
4806        #[doc(hidden)]
4807        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4808            fn from(value: AddressEmptyCode) -> Self {
4809                (value.target,)
4810            }
4811        }
4812        #[automatically_derived]
4813        #[doc(hidden)]
4814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4816                Self { target: tuple.0 }
4817            }
4818        }
4819        #[automatically_derived]
4820        impl alloy_sol_types::SolError for AddressEmptyCode {
4821            type Parameters<'a> = UnderlyingSolTuple<'a>;
4822            type Token<'a> = <Self::Parameters<
4823                'a,
4824            > as alloy_sol_types::SolType>::Token<'a>;
4825            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4826            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4827            #[inline]
4828            fn new<'a>(
4829                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4830            ) -> Self {
4831                tuple.into()
4832            }
4833            #[inline]
4834            fn tokenize(&self) -> Self::Token<'_> {
4835                (
4836                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4837                        &self.target,
4838                    ),
4839                )
4840            }
4841            #[inline]
4842            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4843                <Self::Parameters<
4844                    '_,
4845                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4846                    .map(Self::new)
4847            }
4848        }
4849    };
4850    #[derive(serde::Serialize, serde::Deserialize)]
4851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4852    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4853```solidity
4854error ERC1967InvalidImplementation(address implementation);
4855```*/
4856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4857    #[derive(Clone)]
4858    pub struct ERC1967InvalidImplementation {
4859        #[allow(missing_docs)]
4860        pub implementation: alloy::sol_types::private::Address,
4861    }
4862    #[allow(
4863        non_camel_case_types,
4864        non_snake_case,
4865        clippy::pub_underscore_fields,
4866        clippy::style
4867    )]
4868    const _: () = {
4869        use alloy::sol_types as alloy_sol_types;
4870        #[doc(hidden)]
4871        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4872        #[doc(hidden)]
4873        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4874        #[cfg(test)]
4875        #[allow(dead_code, unreachable_patterns)]
4876        fn _type_assertion(
4877            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4878        ) {
4879            match _t {
4880                alloy_sol_types::private::AssertTypeEq::<
4881                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4882                >(_) => {}
4883            }
4884        }
4885        #[automatically_derived]
4886        #[doc(hidden)]
4887        impl ::core::convert::From<ERC1967InvalidImplementation>
4888        for UnderlyingRustTuple<'_> {
4889            fn from(value: ERC1967InvalidImplementation) -> Self {
4890                (value.implementation,)
4891            }
4892        }
4893        #[automatically_derived]
4894        #[doc(hidden)]
4895        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4896        for ERC1967InvalidImplementation {
4897            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4898                Self { implementation: tuple.0 }
4899            }
4900        }
4901        #[automatically_derived]
4902        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4903            type Parameters<'a> = UnderlyingSolTuple<'a>;
4904            type Token<'a> = <Self::Parameters<
4905                'a,
4906            > as alloy_sol_types::SolType>::Token<'a>;
4907            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4908            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4909            #[inline]
4910            fn new<'a>(
4911                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4912            ) -> Self {
4913                tuple.into()
4914            }
4915            #[inline]
4916            fn tokenize(&self) -> Self::Token<'_> {
4917                (
4918                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4919                        &self.implementation,
4920                    ),
4921                )
4922            }
4923            #[inline]
4924            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4925                <Self::Parameters<
4926                    '_,
4927                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4928                    .map(Self::new)
4929            }
4930        }
4931    };
4932    #[derive(serde::Serialize, serde::Deserialize)]
4933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4934    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4935```solidity
4936error ERC1967NonPayable();
4937```*/
4938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4939    #[derive(Clone)]
4940    pub struct ERC1967NonPayable;
4941    #[allow(
4942        non_camel_case_types,
4943        non_snake_case,
4944        clippy::pub_underscore_fields,
4945        clippy::style
4946    )]
4947    const _: () = {
4948        use alloy::sol_types as alloy_sol_types;
4949        #[doc(hidden)]
4950        type UnderlyingSolTuple<'a> = ();
4951        #[doc(hidden)]
4952        type UnderlyingRustTuple<'a> = ();
4953        #[cfg(test)]
4954        #[allow(dead_code, unreachable_patterns)]
4955        fn _type_assertion(
4956            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4957        ) {
4958            match _t {
4959                alloy_sol_types::private::AssertTypeEq::<
4960                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4961                >(_) => {}
4962            }
4963        }
4964        #[automatically_derived]
4965        #[doc(hidden)]
4966        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4967            fn from(value: ERC1967NonPayable) -> Self {
4968                ()
4969            }
4970        }
4971        #[automatically_derived]
4972        #[doc(hidden)]
4973        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4974            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4975                Self
4976            }
4977        }
4978        #[automatically_derived]
4979        impl alloy_sol_types::SolError for ERC1967NonPayable {
4980            type Parameters<'a> = UnderlyingSolTuple<'a>;
4981            type Token<'a> = <Self::Parameters<
4982                'a,
4983            > as alloy_sol_types::SolType>::Token<'a>;
4984            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4985            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4986            #[inline]
4987            fn new<'a>(
4988                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4989            ) -> Self {
4990                tuple.into()
4991            }
4992            #[inline]
4993            fn tokenize(&self) -> Self::Token<'_> {
4994                ()
4995            }
4996            #[inline]
4997            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4998                <Self::Parameters<
4999                    '_,
5000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5001                    .map(Self::new)
5002            }
5003        }
5004    };
5005    #[derive(serde::Serialize, serde::Deserialize)]
5006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5007    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5008```solidity
5009error FailedInnerCall();
5010```*/
5011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5012    #[derive(Clone)]
5013    pub struct FailedInnerCall;
5014    #[allow(
5015        non_camel_case_types,
5016        non_snake_case,
5017        clippy::pub_underscore_fields,
5018        clippy::style
5019    )]
5020    const _: () = {
5021        use alloy::sol_types as alloy_sol_types;
5022        #[doc(hidden)]
5023        type UnderlyingSolTuple<'a> = ();
5024        #[doc(hidden)]
5025        type UnderlyingRustTuple<'a> = ();
5026        #[cfg(test)]
5027        #[allow(dead_code, unreachable_patterns)]
5028        fn _type_assertion(
5029            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5030        ) {
5031            match _t {
5032                alloy_sol_types::private::AssertTypeEq::<
5033                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5034                >(_) => {}
5035            }
5036        }
5037        #[automatically_derived]
5038        #[doc(hidden)]
5039        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5040            fn from(value: FailedInnerCall) -> Self {
5041                ()
5042            }
5043        }
5044        #[automatically_derived]
5045        #[doc(hidden)]
5046        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5047            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5048                Self
5049            }
5050        }
5051        #[automatically_derived]
5052        impl alloy_sol_types::SolError for FailedInnerCall {
5053            type Parameters<'a> = UnderlyingSolTuple<'a>;
5054            type Token<'a> = <Self::Parameters<
5055                'a,
5056            > as alloy_sol_types::SolType>::Token<'a>;
5057            const SIGNATURE: &'static str = "FailedInnerCall()";
5058            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5059            #[inline]
5060            fn new<'a>(
5061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5062            ) -> Self {
5063                tuple.into()
5064            }
5065            #[inline]
5066            fn tokenize(&self) -> Self::Token<'_> {
5067                ()
5068            }
5069            #[inline]
5070            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5071                <Self::Parameters<
5072                    '_,
5073                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5074                    .map(Self::new)
5075            }
5076        }
5077    };
5078    #[derive(serde::Serialize, serde::Deserialize)]
5079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5080    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5081```solidity
5082error InsufficientSnapshotHistory();
5083```*/
5084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5085    #[derive(Clone)]
5086    pub struct InsufficientSnapshotHistory;
5087    #[allow(
5088        non_camel_case_types,
5089        non_snake_case,
5090        clippy::pub_underscore_fields,
5091        clippy::style
5092    )]
5093    const _: () = {
5094        use alloy::sol_types as alloy_sol_types;
5095        #[doc(hidden)]
5096        type UnderlyingSolTuple<'a> = ();
5097        #[doc(hidden)]
5098        type UnderlyingRustTuple<'a> = ();
5099        #[cfg(test)]
5100        #[allow(dead_code, unreachable_patterns)]
5101        fn _type_assertion(
5102            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5103        ) {
5104            match _t {
5105                alloy_sol_types::private::AssertTypeEq::<
5106                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5107                >(_) => {}
5108            }
5109        }
5110        #[automatically_derived]
5111        #[doc(hidden)]
5112        impl ::core::convert::From<InsufficientSnapshotHistory>
5113        for UnderlyingRustTuple<'_> {
5114            fn from(value: InsufficientSnapshotHistory) -> Self {
5115                ()
5116            }
5117        }
5118        #[automatically_derived]
5119        #[doc(hidden)]
5120        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5121        for InsufficientSnapshotHistory {
5122            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5123                Self
5124            }
5125        }
5126        #[automatically_derived]
5127        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5128            type Parameters<'a> = UnderlyingSolTuple<'a>;
5129            type Token<'a> = <Self::Parameters<
5130                'a,
5131            > as alloy_sol_types::SolType>::Token<'a>;
5132            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5133            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5134            #[inline]
5135            fn new<'a>(
5136                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5137            ) -> Self {
5138                tuple.into()
5139            }
5140            #[inline]
5141            fn tokenize(&self) -> Self::Token<'_> {
5142                ()
5143            }
5144            #[inline]
5145            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5146                <Self::Parameters<
5147                    '_,
5148                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5149                    .map(Self::new)
5150            }
5151        }
5152    };
5153    #[derive(serde::Serialize, serde::Deserialize)]
5154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5155    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5156```solidity
5157error InvalidAddress();
5158```*/
5159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5160    #[derive(Clone)]
5161    pub struct InvalidAddress;
5162    #[allow(
5163        non_camel_case_types,
5164        non_snake_case,
5165        clippy::pub_underscore_fields,
5166        clippy::style
5167    )]
5168    const _: () = {
5169        use alloy::sol_types as alloy_sol_types;
5170        #[doc(hidden)]
5171        type UnderlyingSolTuple<'a> = ();
5172        #[doc(hidden)]
5173        type UnderlyingRustTuple<'a> = ();
5174        #[cfg(test)]
5175        #[allow(dead_code, unreachable_patterns)]
5176        fn _type_assertion(
5177            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5178        ) {
5179            match _t {
5180                alloy_sol_types::private::AssertTypeEq::<
5181                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5182                >(_) => {}
5183            }
5184        }
5185        #[automatically_derived]
5186        #[doc(hidden)]
5187        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5188            fn from(value: InvalidAddress) -> Self {
5189                ()
5190            }
5191        }
5192        #[automatically_derived]
5193        #[doc(hidden)]
5194        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5195            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5196                Self
5197            }
5198        }
5199        #[automatically_derived]
5200        impl alloy_sol_types::SolError for InvalidAddress {
5201            type Parameters<'a> = UnderlyingSolTuple<'a>;
5202            type Token<'a> = <Self::Parameters<
5203                'a,
5204            > as alloy_sol_types::SolType>::Token<'a>;
5205            const SIGNATURE: &'static str = "InvalidAddress()";
5206            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5207            #[inline]
5208            fn new<'a>(
5209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5210            ) -> Self {
5211                tuple.into()
5212            }
5213            #[inline]
5214            fn tokenize(&self) -> Self::Token<'_> {
5215                ()
5216            }
5217            #[inline]
5218            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5219                <Self::Parameters<
5220                    '_,
5221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5222                    .map(Self::new)
5223            }
5224        }
5225    };
5226    #[derive(serde::Serialize, serde::Deserialize)]
5227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5228    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5229```solidity
5230error InvalidArgs();
5231```*/
5232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5233    #[derive(Clone)]
5234    pub struct InvalidArgs;
5235    #[allow(
5236        non_camel_case_types,
5237        non_snake_case,
5238        clippy::pub_underscore_fields,
5239        clippy::style
5240    )]
5241    const _: () = {
5242        use alloy::sol_types as alloy_sol_types;
5243        #[doc(hidden)]
5244        type UnderlyingSolTuple<'a> = ();
5245        #[doc(hidden)]
5246        type UnderlyingRustTuple<'a> = ();
5247        #[cfg(test)]
5248        #[allow(dead_code, unreachable_patterns)]
5249        fn _type_assertion(
5250            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5251        ) {
5252            match _t {
5253                alloy_sol_types::private::AssertTypeEq::<
5254                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5255                >(_) => {}
5256            }
5257        }
5258        #[automatically_derived]
5259        #[doc(hidden)]
5260        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5261            fn from(value: InvalidArgs) -> Self {
5262                ()
5263            }
5264        }
5265        #[automatically_derived]
5266        #[doc(hidden)]
5267        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5268            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5269                Self
5270            }
5271        }
5272        #[automatically_derived]
5273        impl alloy_sol_types::SolError for InvalidArgs {
5274            type Parameters<'a> = UnderlyingSolTuple<'a>;
5275            type Token<'a> = <Self::Parameters<
5276                'a,
5277            > as alloy_sol_types::SolType>::Token<'a>;
5278            const SIGNATURE: &'static str = "InvalidArgs()";
5279            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5280            #[inline]
5281            fn new<'a>(
5282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5283            ) -> Self {
5284                tuple.into()
5285            }
5286            #[inline]
5287            fn tokenize(&self) -> Self::Token<'_> {
5288                ()
5289            }
5290            #[inline]
5291            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5292                <Self::Parameters<
5293                    '_,
5294                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5295                    .map(Self::new)
5296            }
5297        }
5298    };
5299    #[derive(serde::Serialize, serde::Deserialize)]
5300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5301    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5302```solidity
5303error InvalidHotShotBlockForCommitmentCheck();
5304```*/
5305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5306    #[derive(Clone)]
5307    pub struct InvalidHotShotBlockForCommitmentCheck;
5308    #[allow(
5309        non_camel_case_types,
5310        non_snake_case,
5311        clippy::pub_underscore_fields,
5312        clippy::style
5313    )]
5314    const _: () = {
5315        use alloy::sol_types as alloy_sol_types;
5316        #[doc(hidden)]
5317        type UnderlyingSolTuple<'a> = ();
5318        #[doc(hidden)]
5319        type UnderlyingRustTuple<'a> = ();
5320        #[cfg(test)]
5321        #[allow(dead_code, unreachable_patterns)]
5322        fn _type_assertion(
5323            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5324        ) {
5325            match _t {
5326                alloy_sol_types::private::AssertTypeEq::<
5327                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5328                >(_) => {}
5329            }
5330        }
5331        #[automatically_derived]
5332        #[doc(hidden)]
5333        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5334        for UnderlyingRustTuple<'_> {
5335            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5336                ()
5337            }
5338        }
5339        #[automatically_derived]
5340        #[doc(hidden)]
5341        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5342        for InvalidHotShotBlockForCommitmentCheck {
5343            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5344                Self
5345            }
5346        }
5347        #[automatically_derived]
5348        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5349            type Parameters<'a> = UnderlyingSolTuple<'a>;
5350            type Token<'a> = <Self::Parameters<
5351                'a,
5352            > as alloy_sol_types::SolType>::Token<'a>;
5353            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5354            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5355            #[inline]
5356            fn new<'a>(
5357                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5358            ) -> Self {
5359                tuple.into()
5360            }
5361            #[inline]
5362            fn tokenize(&self) -> Self::Token<'_> {
5363                ()
5364            }
5365            #[inline]
5366            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5367                <Self::Parameters<
5368                    '_,
5369                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5370                    .map(Self::new)
5371            }
5372        }
5373    };
5374    #[derive(serde::Serialize, serde::Deserialize)]
5375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5376    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5377```solidity
5378error InvalidInitialization();
5379```*/
5380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5381    #[derive(Clone)]
5382    pub struct InvalidInitialization;
5383    #[allow(
5384        non_camel_case_types,
5385        non_snake_case,
5386        clippy::pub_underscore_fields,
5387        clippy::style
5388    )]
5389    const _: () = {
5390        use alloy::sol_types as alloy_sol_types;
5391        #[doc(hidden)]
5392        type UnderlyingSolTuple<'a> = ();
5393        #[doc(hidden)]
5394        type UnderlyingRustTuple<'a> = ();
5395        #[cfg(test)]
5396        #[allow(dead_code, unreachable_patterns)]
5397        fn _type_assertion(
5398            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5399        ) {
5400            match _t {
5401                alloy_sol_types::private::AssertTypeEq::<
5402                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5403                >(_) => {}
5404            }
5405        }
5406        #[automatically_derived]
5407        #[doc(hidden)]
5408        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5409            fn from(value: InvalidInitialization) -> Self {
5410                ()
5411            }
5412        }
5413        #[automatically_derived]
5414        #[doc(hidden)]
5415        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5416            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5417                Self
5418            }
5419        }
5420        #[automatically_derived]
5421        impl alloy_sol_types::SolError for InvalidInitialization {
5422            type Parameters<'a> = UnderlyingSolTuple<'a>;
5423            type Token<'a> = <Self::Parameters<
5424                'a,
5425            > as alloy_sol_types::SolType>::Token<'a>;
5426            const SIGNATURE: &'static str = "InvalidInitialization()";
5427            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5428            #[inline]
5429            fn new<'a>(
5430                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5431            ) -> Self {
5432                tuple.into()
5433            }
5434            #[inline]
5435            fn tokenize(&self) -> Self::Token<'_> {
5436                ()
5437            }
5438            #[inline]
5439            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5440                <Self::Parameters<
5441                    '_,
5442                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5443                    .map(Self::new)
5444            }
5445        }
5446    };
5447    #[derive(serde::Serialize, serde::Deserialize)]
5448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5449    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5450```solidity
5451error InvalidMaxStateHistory();
5452```*/
5453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5454    #[derive(Clone)]
5455    pub struct InvalidMaxStateHistory;
5456    #[allow(
5457        non_camel_case_types,
5458        non_snake_case,
5459        clippy::pub_underscore_fields,
5460        clippy::style
5461    )]
5462    const _: () = {
5463        use alloy::sol_types as alloy_sol_types;
5464        #[doc(hidden)]
5465        type UnderlyingSolTuple<'a> = ();
5466        #[doc(hidden)]
5467        type UnderlyingRustTuple<'a> = ();
5468        #[cfg(test)]
5469        #[allow(dead_code, unreachable_patterns)]
5470        fn _type_assertion(
5471            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5472        ) {
5473            match _t {
5474                alloy_sol_types::private::AssertTypeEq::<
5475                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5476                >(_) => {}
5477            }
5478        }
5479        #[automatically_derived]
5480        #[doc(hidden)]
5481        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5482            fn from(value: InvalidMaxStateHistory) -> Self {
5483                ()
5484            }
5485        }
5486        #[automatically_derived]
5487        #[doc(hidden)]
5488        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5490                Self
5491            }
5492        }
5493        #[automatically_derived]
5494        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5495            type Parameters<'a> = UnderlyingSolTuple<'a>;
5496            type Token<'a> = <Self::Parameters<
5497                'a,
5498            > as alloy_sol_types::SolType>::Token<'a>;
5499            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5500            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5501            #[inline]
5502            fn new<'a>(
5503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5504            ) -> Self {
5505                tuple.into()
5506            }
5507            #[inline]
5508            fn tokenize(&self) -> Self::Token<'_> {
5509                ()
5510            }
5511            #[inline]
5512            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5513                <Self::Parameters<
5514                    '_,
5515                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5516                    .map(Self::new)
5517            }
5518        }
5519    };
5520    #[derive(serde::Serialize, serde::Deserialize)]
5521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5522    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5523```solidity
5524error InvalidProof();
5525```*/
5526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5527    #[derive(Clone)]
5528    pub struct InvalidProof;
5529    #[allow(
5530        non_camel_case_types,
5531        non_snake_case,
5532        clippy::pub_underscore_fields,
5533        clippy::style
5534    )]
5535    const _: () = {
5536        use alloy::sol_types as alloy_sol_types;
5537        #[doc(hidden)]
5538        type UnderlyingSolTuple<'a> = ();
5539        #[doc(hidden)]
5540        type UnderlyingRustTuple<'a> = ();
5541        #[cfg(test)]
5542        #[allow(dead_code, unreachable_patterns)]
5543        fn _type_assertion(
5544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5545        ) {
5546            match _t {
5547                alloy_sol_types::private::AssertTypeEq::<
5548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5549                >(_) => {}
5550            }
5551        }
5552        #[automatically_derived]
5553        #[doc(hidden)]
5554        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5555            fn from(value: InvalidProof) -> Self {
5556                ()
5557            }
5558        }
5559        #[automatically_derived]
5560        #[doc(hidden)]
5561        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5562            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5563                Self
5564            }
5565        }
5566        #[automatically_derived]
5567        impl alloy_sol_types::SolError for InvalidProof {
5568            type Parameters<'a> = UnderlyingSolTuple<'a>;
5569            type Token<'a> = <Self::Parameters<
5570                'a,
5571            > as alloy_sol_types::SolType>::Token<'a>;
5572            const SIGNATURE: &'static str = "InvalidProof()";
5573            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5574            #[inline]
5575            fn new<'a>(
5576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5577            ) -> Self {
5578                tuple.into()
5579            }
5580            #[inline]
5581            fn tokenize(&self) -> Self::Token<'_> {
5582                ()
5583            }
5584            #[inline]
5585            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5586                <Self::Parameters<
5587                    '_,
5588                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5589                    .map(Self::new)
5590            }
5591        }
5592    };
5593    #[derive(serde::Serialize, serde::Deserialize)]
5594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5595    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5596```solidity
5597error InvalidScalar();
5598```*/
5599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5600    #[derive(Clone)]
5601    pub struct InvalidScalar;
5602    #[allow(
5603        non_camel_case_types,
5604        non_snake_case,
5605        clippy::pub_underscore_fields,
5606        clippy::style
5607    )]
5608    const _: () = {
5609        use alloy::sol_types as alloy_sol_types;
5610        #[doc(hidden)]
5611        type UnderlyingSolTuple<'a> = ();
5612        #[doc(hidden)]
5613        type UnderlyingRustTuple<'a> = ();
5614        #[cfg(test)]
5615        #[allow(dead_code, unreachable_patterns)]
5616        fn _type_assertion(
5617            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5618        ) {
5619            match _t {
5620                alloy_sol_types::private::AssertTypeEq::<
5621                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5622                >(_) => {}
5623            }
5624        }
5625        #[automatically_derived]
5626        #[doc(hidden)]
5627        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5628            fn from(value: InvalidScalar) -> Self {
5629                ()
5630            }
5631        }
5632        #[automatically_derived]
5633        #[doc(hidden)]
5634        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5635            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5636                Self
5637            }
5638        }
5639        #[automatically_derived]
5640        impl alloy_sol_types::SolError for InvalidScalar {
5641            type Parameters<'a> = UnderlyingSolTuple<'a>;
5642            type Token<'a> = <Self::Parameters<
5643                'a,
5644            > as alloy_sol_types::SolType>::Token<'a>;
5645            const SIGNATURE: &'static str = "InvalidScalar()";
5646            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5647            #[inline]
5648            fn new<'a>(
5649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5650            ) -> Self {
5651                tuple.into()
5652            }
5653            #[inline]
5654            fn tokenize(&self) -> Self::Token<'_> {
5655                ()
5656            }
5657            #[inline]
5658            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5659                <Self::Parameters<
5660                    '_,
5661                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5662                    .map(Self::new)
5663            }
5664        }
5665    };
5666    #[derive(serde::Serialize, serde::Deserialize)]
5667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5668    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5669```solidity
5670error NoChangeRequired();
5671```*/
5672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5673    #[derive(Clone)]
5674    pub struct NoChangeRequired;
5675    #[allow(
5676        non_camel_case_types,
5677        non_snake_case,
5678        clippy::pub_underscore_fields,
5679        clippy::style
5680    )]
5681    const _: () = {
5682        use alloy::sol_types as alloy_sol_types;
5683        #[doc(hidden)]
5684        type UnderlyingSolTuple<'a> = ();
5685        #[doc(hidden)]
5686        type UnderlyingRustTuple<'a> = ();
5687        #[cfg(test)]
5688        #[allow(dead_code, unreachable_patterns)]
5689        fn _type_assertion(
5690            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5691        ) {
5692            match _t {
5693                alloy_sol_types::private::AssertTypeEq::<
5694                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5695                >(_) => {}
5696            }
5697        }
5698        #[automatically_derived]
5699        #[doc(hidden)]
5700        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5701            fn from(value: NoChangeRequired) -> Self {
5702                ()
5703            }
5704        }
5705        #[automatically_derived]
5706        #[doc(hidden)]
5707        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5708            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5709                Self
5710            }
5711        }
5712        #[automatically_derived]
5713        impl alloy_sol_types::SolError for NoChangeRequired {
5714            type Parameters<'a> = UnderlyingSolTuple<'a>;
5715            type Token<'a> = <Self::Parameters<
5716                'a,
5717            > as alloy_sol_types::SolType>::Token<'a>;
5718            const SIGNATURE: &'static str = "NoChangeRequired()";
5719            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5720            #[inline]
5721            fn new<'a>(
5722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5723            ) -> Self {
5724                tuple.into()
5725            }
5726            #[inline]
5727            fn tokenize(&self) -> Self::Token<'_> {
5728                ()
5729            }
5730            #[inline]
5731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5732                <Self::Parameters<
5733                    '_,
5734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5735                    .map(Self::new)
5736            }
5737        }
5738    };
5739    #[derive(serde::Serialize, serde::Deserialize)]
5740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5741    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5742```solidity
5743error NotInitializing();
5744```*/
5745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5746    #[derive(Clone)]
5747    pub struct NotInitializing;
5748    #[allow(
5749        non_camel_case_types,
5750        non_snake_case,
5751        clippy::pub_underscore_fields,
5752        clippy::style
5753    )]
5754    const _: () = {
5755        use alloy::sol_types as alloy_sol_types;
5756        #[doc(hidden)]
5757        type UnderlyingSolTuple<'a> = ();
5758        #[doc(hidden)]
5759        type UnderlyingRustTuple<'a> = ();
5760        #[cfg(test)]
5761        #[allow(dead_code, unreachable_patterns)]
5762        fn _type_assertion(
5763            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5764        ) {
5765            match _t {
5766                alloy_sol_types::private::AssertTypeEq::<
5767                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5768                >(_) => {}
5769            }
5770        }
5771        #[automatically_derived]
5772        #[doc(hidden)]
5773        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5774            fn from(value: NotInitializing) -> Self {
5775                ()
5776            }
5777        }
5778        #[automatically_derived]
5779        #[doc(hidden)]
5780        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5782                Self
5783            }
5784        }
5785        #[automatically_derived]
5786        impl alloy_sol_types::SolError for NotInitializing {
5787            type Parameters<'a> = UnderlyingSolTuple<'a>;
5788            type Token<'a> = <Self::Parameters<
5789                'a,
5790            > as alloy_sol_types::SolType>::Token<'a>;
5791            const SIGNATURE: &'static str = "NotInitializing()";
5792            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5793            #[inline]
5794            fn new<'a>(
5795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5796            ) -> Self {
5797                tuple.into()
5798            }
5799            #[inline]
5800            fn tokenize(&self) -> Self::Token<'_> {
5801                ()
5802            }
5803            #[inline]
5804            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5805                <Self::Parameters<
5806                    '_,
5807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5808                    .map(Self::new)
5809            }
5810        }
5811    };
5812    #[derive(serde::Serialize, serde::Deserialize)]
5813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5814    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5815```solidity
5816error OutdatedState();
5817```*/
5818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5819    #[derive(Clone)]
5820    pub struct OutdatedState;
5821    #[allow(
5822        non_camel_case_types,
5823        non_snake_case,
5824        clippy::pub_underscore_fields,
5825        clippy::style
5826    )]
5827    const _: () = {
5828        use alloy::sol_types as alloy_sol_types;
5829        #[doc(hidden)]
5830        type UnderlyingSolTuple<'a> = ();
5831        #[doc(hidden)]
5832        type UnderlyingRustTuple<'a> = ();
5833        #[cfg(test)]
5834        #[allow(dead_code, unreachable_patterns)]
5835        fn _type_assertion(
5836            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5837        ) {
5838            match _t {
5839                alloy_sol_types::private::AssertTypeEq::<
5840                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5841                >(_) => {}
5842            }
5843        }
5844        #[automatically_derived]
5845        #[doc(hidden)]
5846        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5847            fn from(value: OutdatedState) -> Self {
5848                ()
5849            }
5850        }
5851        #[automatically_derived]
5852        #[doc(hidden)]
5853        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5854            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5855                Self
5856            }
5857        }
5858        #[automatically_derived]
5859        impl alloy_sol_types::SolError for OutdatedState {
5860            type Parameters<'a> = UnderlyingSolTuple<'a>;
5861            type Token<'a> = <Self::Parameters<
5862                'a,
5863            > as alloy_sol_types::SolType>::Token<'a>;
5864            const SIGNATURE: &'static str = "OutdatedState()";
5865            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5866            #[inline]
5867            fn new<'a>(
5868                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5869            ) -> Self {
5870                tuple.into()
5871            }
5872            #[inline]
5873            fn tokenize(&self) -> Self::Token<'_> {
5874                ()
5875            }
5876            #[inline]
5877            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5878                <Self::Parameters<
5879                    '_,
5880                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5881                    .map(Self::new)
5882            }
5883        }
5884    };
5885    #[derive(serde::Serialize, serde::Deserialize)]
5886    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5887    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5888```solidity
5889error OwnableInvalidOwner(address owner);
5890```*/
5891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5892    #[derive(Clone)]
5893    pub struct OwnableInvalidOwner {
5894        #[allow(missing_docs)]
5895        pub owner: alloy::sol_types::private::Address,
5896    }
5897    #[allow(
5898        non_camel_case_types,
5899        non_snake_case,
5900        clippy::pub_underscore_fields,
5901        clippy::style
5902    )]
5903    const _: () = {
5904        use alloy::sol_types as alloy_sol_types;
5905        #[doc(hidden)]
5906        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5907        #[doc(hidden)]
5908        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5909        #[cfg(test)]
5910        #[allow(dead_code, unreachable_patterns)]
5911        fn _type_assertion(
5912            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5913        ) {
5914            match _t {
5915                alloy_sol_types::private::AssertTypeEq::<
5916                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5917                >(_) => {}
5918            }
5919        }
5920        #[automatically_derived]
5921        #[doc(hidden)]
5922        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5923            fn from(value: OwnableInvalidOwner) -> Self {
5924                (value.owner,)
5925            }
5926        }
5927        #[automatically_derived]
5928        #[doc(hidden)]
5929        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5930            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5931                Self { owner: tuple.0 }
5932            }
5933        }
5934        #[automatically_derived]
5935        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5936            type Parameters<'a> = UnderlyingSolTuple<'a>;
5937            type Token<'a> = <Self::Parameters<
5938                'a,
5939            > as alloy_sol_types::SolType>::Token<'a>;
5940            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5941            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5942            #[inline]
5943            fn new<'a>(
5944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5945            ) -> Self {
5946                tuple.into()
5947            }
5948            #[inline]
5949            fn tokenize(&self) -> Self::Token<'_> {
5950                (
5951                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5952                        &self.owner,
5953                    ),
5954                )
5955            }
5956            #[inline]
5957            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5958                <Self::Parameters<
5959                    '_,
5960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5961                    .map(Self::new)
5962            }
5963        }
5964    };
5965    #[derive(serde::Serialize, serde::Deserialize)]
5966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5967    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5968```solidity
5969error OwnableUnauthorizedAccount(address account);
5970```*/
5971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5972    #[derive(Clone)]
5973    pub struct OwnableUnauthorizedAccount {
5974        #[allow(missing_docs)]
5975        pub account: alloy::sol_types::private::Address,
5976    }
5977    #[allow(
5978        non_camel_case_types,
5979        non_snake_case,
5980        clippy::pub_underscore_fields,
5981        clippy::style
5982    )]
5983    const _: () = {
5984        use alloy::sol_types as alloy_sol_types;
5985        #[doc(hidden)]
5986        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5987        #[doc(hidden)]
5988        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5989        #[cfg(test)]
5990        #[allow(dead_code, unreachable_patterns)]
5991        fn _type_assertion(
5992            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5993        ) {
5994            match _t {
5995                alloy_sol_types::private::AssertTypeEq::<
5996                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5997                >(_) => {}
5998            }
5999        }
6000        #[automatically_derived]
6001        #[doc(hidden)]
6002        impl ::core::convert::From<OwnableUnauthorizedAccount>
6003        for UnderlyingRustTuple<'_> {
6004            fn from(value: OwnableUnauthorizedAccount) -> Self {
6005                (value.account,)
6006            }
6007        }
6008        #[automatically_derived]
6009        #[doc(hidden)]
6010        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6011        for OwnableUnauthorizedAccount {
6012            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6013                Self { account: tuple.0 }
6014            }
6015        }
6016        #[automatically_derived]
6017        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6018            type Parameters<'a> = UnderlyingSolTuple<'a>;
6019            type Token<'a> = <Self::Parameters<
6020                'a,
6021            > as alloy_sol_types::SolType>::Token<'a>;
6022            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6023            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6024            #[inline]
6025            fn new<'a>(
6026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6027            ) -> Self {
6028                tuple.into()
6029            }
6030            #[inline]
6031            fn tokenize(&self) -> Self::Token<'_> {
6032                (
6033                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6034                        &self.account,
6035                    ),
6036                )
6037            }
6038            #[inline]
6039            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6040                <Self::Parameters<
6041                    '_,
6042                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6043                    .map(Self::new)
6044            }
6045        }
6046    };
6047    #[derive(serde::Serialize, serde::Deserialize)]
6048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6049    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6050```solidity
6051error OwnershipCannotBeRenounced();
6052```*/
6053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6054    #[derive(Clone)]
6055    pub struct OwnershipCannotBeRenounced;
6056    #[allow(
6057        non_camel_case_types,
6058        non_snake_case,
6059        clippy::pub_underscore_fields,
6060        clippy::style
6061    )]
6062    const _: () = {
6063        use alloy::sol_types as alloy_sol_types;
6064        #[doc(hidden)]
6065        type UnderlyingSolTuple<'a> = ();
6066        #[doc(hidden)]
6067        type UnderlyingRustTuple<'a> = ();
6068        #[cfg(test)]
6069        #[allow(dead_code, unreachable_patterns)]
6070        fn _type_assertion(
6071            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6072        ) {
6073            match _t {
6074                alloy_sol_types::private::AssertTypeEq::<
6075                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6076                >(_) => {}
6077            }
6078        }
6079        #[automatically_derived]
6080        #[doc(hidden)]
6081        impl ::core::convert::From<OwnershipCannotBeRenounced>
6082        for UnderlyingRustTuple<'_> {
6083            fn from(value: OwnershipCannotBeRenounced) -> Self {
6084                ()
6085            }
6086        }
6087        #[automatically_derived]
6088        #[doc(hidden)]
6089        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6090        for OwnershipCannotBeRenounced {
6091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6092                Self
6093            }
6094        }
6095        #[automatically_derived]
6096        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6097            type Parameters<'a> = UnderlyingSolTuple<'a>;
6098            type Token<'a> = <Self::Parameters<
6099                'a,
6100            > as alloy_sol_types::SolType>::Token<'a>;
6101            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6102            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6103            #[inline]
6104            fn new<'a>(
6105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6106            ) -> Self {
6107                tuple.into()
6108            }
6109            #[inline]
6110            fn tokenize(&self) -> Self::Token<'_> {
6111                ()
6112            }
6113            #[inline]
6114            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6115                <Self::Parameters<
6116                    '_,
6117                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6118                    .map(Self::new)
6119            }
6120        }
6121    };
6122    #[derive(serde::Serialize, serde::Deserialize)]
6123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6124    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6125```solidity
6126error ProverNotPermissioned();
6127```*/
6128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6129    #[derive(Clone)]
6130    pub struct ProverNotPermissioned;
6131    #[allow(
6132        non_camel_case_types,
6133        non_snake_case,
6134        clippy::pub_underscore_fields,
6135        clippy::style
6136    )]
6137    const _: () = {
6138        use alloy::sol_types as alloy_sol_types;
6139        #[doc(hidden)]
6140        type UnderlyingSolTuple<'a> = ();
6141        #[doc(hidden)]
6142        type UnderlyingRustTuple<'a> = ();
6143        #[cfg(test)]
6144        #[allow(dead_code, unreachable_patterns)]
6145        fn _type_assertion(
6146            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6147        ) {
6148            match _t {
6149                alloy_sol_types::private::AssertTypeEq::<
6150                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6151                >(_) => {}
6152            }
6153        }
6154        #[automatically_derived]
6155        #[doc(hidden)]
6156        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6157            fn from(value: ProverNotPermissioned) -> Self {
6158                ()
6159            }
6160        }
6161        #[automatically_derived]
6162        #[doc(hidden)]
6163        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6164            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6165                Self
6166            }
6167        }
6168        #[automatically_derived]
6169        impl alloy_sol_types::SolError for ProverNotPermissioned {
6170            type Parameters<'a> = UnderlyingSolTuple<'a>;
6171            type Token<'a> = <Self::Parameters<
6172                'a,
6173            > as alloy_sol_types::SolType>::Token<'a>;
6174            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6175            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6176            #[inline]
6177            fn new<'a>(
6178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6179            ) -> Self {
6180                tuple.into()
6181            }
6182            #[inline]
6183            fn tokenize(&self) -> Self::Token<'_> {
6184                ()
6185            }
6186            #[inline]
6187            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6188                <Self::Parameters<
6189                    '_,
6190                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6191                    .map(Self::new)
6192            }
6193        }
6194    };
6195    #[derive(serde::Serialize, serde::Deserialize)]
6196    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6197    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6198```solidity
6199error UUPSUnauthorizedCallContext();
6200```*/
6201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6202    #[derive(Clone)]
6203    pub struct UUPSUnauthorizedCallContext;
6204    #[allow(
6205        non_camel_case_types,
6206        non_snake_case,
6207        clippy::pub_underscore_fields,
6208        clippy::style
6209    )]
6210    const _: () = {
6211        use alloy::sol_types as alloy_sol_types;
6212        #[doc(hidden)]
6213        type UnderlyingSolTuple<'a> = ();
6214        #[doc(hidden)]
6215        type UnderlyingRustTuple<'a> = ();
6216        #[cfg(test)]
6217        #[allow(dead_code, unreachable_patterns)]
6218        fn _type_assertion(
6219            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6220        ) {
6221            match _t {
6222                alloy_sol_types::private::AssertTypeEq::<
6223                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6224                >(_) => {}
6225            }
6226        }
6227        #[automatically_derived]
6228        #[doc(hidden)]
6229        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6230        for UnderlyingRustTuple<'_> {
6231            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6232                ()
6233            }
6234        }
6235        #[automatically_derived]
6236        #[doc(hidden)]
6237        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6238        for UUPSUnauthorizedCallContext {
6239            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6240                Self
6241            }
6242        }
6243        #[automatically_derived]
6244        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6245            type Parameters<'a> = UnderlyingSolTuple<'a>;
6246            type Token<'a> = <Self::Parameters<
6247                'a,
6248            > as alloy_sol_types::SolType>::Token<'a>;
6249            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6250            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6251            #[inline]
6252            fn new<'a>(
6253                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6254            ) -> Self {
6255                tuple.into()
6256            }
6257            #[inline]
6258            fn tokenize(&self) -> Self::Token<'_> {
6259                ()
6260            }
6261            #[inline]
6262            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6263                <Self::Parameters<
6264                    '_,
6265                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6266                    .map(Self::new)
6267            }
6268        }
6269    };
6270    #[derive(serde::Serialize, serde::Deserialize)]
6271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6272    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6273```solidity
6274error UUPSUnsupportedProxiableUUID(bytes32 slot);
6275```*/
6276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6277    #[derive(Clone)]
6278    pub struct UUPSUnsupportedProxiableUUID {
6279        #[allow(missing_docs)]
6280        pub slot: alloy::sol_types::private::FixedBytes<32>,
6281    }
6282    #[allow(
6283        non_camel_case_types,
6284        non_snake_case,
6285        clippy::pub_underscore_fields,
6286        clippy::style
6287    )]
6288    const _: () = {
6289        use alloy::sol_types as alloy_sol_types;
6290        #[doc(hidden)]
6291        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6292        #[doc(hidden)]
6293        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6294        #[cfg(test)]
6295        #[allow(dead_code, unreachable_patterns)]
6296        fn _type_assertion(
6297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6298        ) {
6299            match _t {
6300                alloy_sol_types::private::AssertTypeEq::<
6301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6302                >(_) => {}
6303            }
6304        }
6305        #[automatically_derived]
6306        #[doc(hidden)]
6307        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6308        for UnderlyingRustTuple<'_> {
6309            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6310                (value.slot,)
6311            }
6312        }
6313        #[automatically_derived]
6314        #[doc(hidden)]
6315        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6316        for UUPSUnsupportedProxiableUUID {
6317            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6318                Self { slot: tuple.0 }
6319            }
6320        }
6321        #[automatically_derived]
6322        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6323            type Parameters<'a> = UnderlyingSolTuple<'a>;
6324            type Token<'a> = <Self::Parameters<
6325                'a,
6326            > as alloy_sol_types::SolType>::Token<'a>;
6327            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6328            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6329            #[inline]
6330            fn new<'a>(
6331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6332            ) -> Self {
6333                tuple.into()
6334            }
6335            #[inline]
6336            fn tokenize(&self) -> Self::Token<'_> {
6337                (
6338                    <alloy::sol_types::sol_data::FixedBytes<
6339                        32,
6340                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6341                )
6342            }
6343            #[inline]
6344            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6345                <Self::Parameters<
6346                    '_,
6347                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6348                    .map(Self::new)
6349            }
6350        }
6351    };
6352    #[derive(serde::Serialize, serde::Deserialize)]
6353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6354    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6355```solidity
6356error WrongStakeTableUsed();
6357```*/
6358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6359    #[derive(Clone)]
6360    pub struct WrongStakeTableUsed;
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        type UnderlyingSolTuple<'a> = ();
6371        #[doc(hidden)]
6372        type UnderlyingRustTuple<'a> = ();
6373        #[cfg(test)]
6374        #[allow(dead_code, unreachable_patterns)]
6375        fn _type_assertion(
6376            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6377        ) {
6378            match _t {
6379                alloy_sol_types::private::AssertTypeEq::<
6380                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6381                >(_) => {}
6382            }
6383        }
6384        #[automatically_derived]
6385        #[doc(hidden)]
6386        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6387            fn from(value: WrongStakeTableUsed) -> Self {
6388                ()
6389            }
6390        }
6391        #[automatically_derived]
6392        #[doc(hidden)]
6393        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6394            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6395                Self
6396            }
6397        }
6398        #[automatically_derived]
6399        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6400            type Parameters<'a> = UnderlyingSolTuple<'a>;
6401            type Token<'a> = <Self::Parameters<
6402                'a,
6403            > as alloy_sol_types::SolType>::Token<'a>;
6404            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6405            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6406            #[inline]
6407            fn new<'a>(
6408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6409            ) -> Self {
6410                tuple.into()
6411            }
6412            #[inline]
6413            fn tokenize(&self) -> Self::Token<'_> {
6414                ()
6415            }
6416            #[inline]
6417            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6418                <Self::Parameters<
6419                    '_,
6420                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6421                    .map(Self::new)
6422            }
6423        }
6424    };
6425    #[derive(serde::Serialize, serde::Deserialize)]
6426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6427    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6428```solidity
6429event Initialized(uint64 version);
6430```*/
6431    #[allow(
6432        non_camel_case_types,
6433        non_snake_case,
6434        clippy::pub_underscore_fields,
6435        clippy::style
6436    )]
6437    #[derive(Clone)]
6438    pub struct Initialized {
6439        #[allow(missing_docs)]
6440        pub version: u64,
6441    }
6442    #[allow(
6443        non_camel_case_types,
6444        non_snake_case,
6445        clippy::pub_underscore_fields,
6446        clippy::style
6447    )]
6448    const _: () = {
6449        use alloy::sol_types as alloy_sol_types;
6450        #[automatically_derived]
6451        impl alloy_sol_types::SolEvent for Initialized {
6452            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6453            type DataToken<'a> = <Self::DataTuple<
6454                'a,
6455            > as alloy_sol_types::SolType>::Token<'a>;
6456            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6457            const SIGNATURE: &'static str = "Initialized(uint64)";
6458            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6459                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6460                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6461                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6462            ]);
6463            const ANONYMOUS: bool = false;
6464            #[allow(unused_variables)]
6465            #[inline]
6466            fn new(
6467                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6468                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6469            ) -> Self {
6470                Self { version: data.0 }
6471            }
6472            #[inline]
6473            fn check_signature(
6474                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6475            ) -> alloy_sol_types::Result<()> {
6476                if topics.0 != Self::SIGNATURE_HASH {
6477                    return Err(
6478                        alloy_sol_types::Error::invalid_event_signature_hash(
6479                            Self::SIGNATURE,
6480                            topics.0,
6481                            Self::SIGNATURE_HASH,
6482                        ),
6483                    );
6484                }
6485                Ok(())
6486            }
6487            #[inline]
6488            fn tokenize_body(&self) -> Self::DataToken<'_> {
6489                (
6490                    <alloy::sol_types::sol_data::Uint<
6491                        64,
6492                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6493                )
6494            }
6495            #[inline]
6496            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6497                (Self::SIGNATURE_HASH.into(),)
6498            }
6499            #[inline]
6500            fn encode_topics_raw(
6501                &self,
6502                out: &mut [alloy_sol_types::abi::token::WordToken],
6503            ) -> alloy_sol_types::Result<()> {
6504                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6505                    return Err(alloy_sol_types::Error::Overrun);
6506                }
6507                out[0usize] = alloy_sol_types::abi::token::WordToken(
6508                    Self::SIGNATURE_HASH,
6509                );
6510                Ok(())
6511            }
6512        }
6513        #[automatically_derived]
6514        impl alloy_sol_types::private::IntoLogData for Initialized {
6515            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6516                From::from(self)
6517            }
6518            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6519                From::from(&self)
6520            }
6521        }
6522        #[automatically_derived]
6523        impl From<&Initialized> for alloy_sol_types::private::LogData {
6524            #[inline]
6525            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6526                alloy_sol_types::SolEvent::encode_log_data(this)
6527            }
6528        }
6529    };
6530    #[derive(serde::Serialize, serde::Deserialize)]
6531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6532    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6533```solidity
6534event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6535```*/
6536    #[allow(
6537        non_camel_case_types,
6538        non_snake_case,
6539        clippy::pub_underscore_fields,
6540        clippy::style
6541    )]
6542    #[derive(Clone)]
6543    pub struct NewState {
6544        #[allow(missing_docs)]
6545        pub viewNum: u64,
6546        #[allow(missing_docs)]
6547        pub blockHeight: u64,
6548        #[allow(missing_docs)]
6549        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6550    }
6551    #[allow(
6552        non_camel_case_types,
6553        non_snake_case,
6554        clippy::pub_underscore_fields,
6555        clippy::style
6556    )]
6557    const _: () = {
6558        use alloy::sol_types as alloy_sol_types;
6559        #[automatically_derived]
6560        impl alloy_sol_types::SolEvent for NewState {
6561            type DataTuple<'a> = (BN254::ScalarField,);
6562            type DataToken<'a> = <Self::DataTuple<
6563                'a,
6564            > as alloy_sol_types::SolType>::Token<'a>;
6565            type TopicList = (
6566                alloy_sol_types::sol_data::FixedBytes<32>,
6567                alloy::sol_types::sol_data::Uint<64>,
6568                alloy::sol_types::sol_data::Uint<64>,
6569            );
6570            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6571            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6572                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6573                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6574                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6575            ]);
6576            const ANONYMOUS: bool = false;
6577            #[allow(unused_variables)]
6578            #[inline]
6579            fn new(
6580                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6581                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6582            ) -> Self {
6583                Self {
6584                    viewNum: topics.1,
6585                    blockHeight: topics.2,
6586                    blockCommRoot: data.0,
6587                }
6588            }
6589            #[inline]
6590            fn check_signature(
6591                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6592            ) -> alloy_sol_types::Result<()> {
6593                if topics.0 != Self::SIGNATURE_HASH {
6594                    return Err(
6595                        alloy_sol_types::Error::invalid_event_signature_hash(
6596                            Self::SIGNATURE,
6597                            topics.0,
6598                            Self::SIGNATURE_HASH,
6599                        ),
6600                    );
6601                }
6602                Ok(())
6603            }
6604            #[inline]
6605            fn tokenize_body(&self) -> Self::DataToken<'_> {
6606                (
6607                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6608                        &self.blockCommRoot,
6609                    ),
6610                )
6611            }
6612            #[inline]
6613            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6614                (
6615                    Self::SIGNATURE_HASH.into(),
6616                    self.viewNum.clone(),
6617                    self.blockHeight.clone(),
6618                )
6619            }
6620            #[inline]
6621            fn encode_topics_raw(
6622                &self,
6623                out: &mut [alloy_sol_types::abi::token::WordToken],
6624            ) -> alloy_sol_types::Result<()> {
6625                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6626                    return Err(alloy_sol_types::Error::Overrun);
6627                }
6628                out[0usize] = alloy_sol_types::abi::token::WordToken(
6629                    Self::SIGNATURE_HASH,
6630                );
6631                out[1usize] = <alloy::sol_types::sol_data::Uint<
6632                    64,
6633                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6634                out[2usize] = <alloy::sol_types::sol_data::Uint<
6635                    64,
6636                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6637                Ok(())
6638            }
6639        }
6640        #[automatically_derived]
6641        impl alloy_sol_types::private::IntoLogData for NewState {
6642            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6643                From::from(self)
6644            }
6645            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6646                From::from(&self)
6647            }
6648        }
6649        #[automatically_derived]
6650        impl From<&NewState> for alloy_sol_types::private::LogData {
6651            #[inline]
6652            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6653                alloy_sol_types::SolEvent::encode_log_data(this)
6654            }
6655        }
6656    };
6657    #[derive(serde::Serialize, serde::Deserialize)]
6658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6659    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6660```solidity
6661event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6662```*/
6663    #[allow(
6664        non_camel_case_types,
6665        non_snake_case,
6666        clippy::pub_underscore_fields,
6667        clippy::style
6668    )]
6669    #[derive(Clone)]
6670    pub struct OwnershipTransferred {
6671        #[allow(missing_docs)]
6672        pub previousOwner: alloy::sol_types::private::Address,
6673        #[allow(missing_docs)]
6674        pub newOwner: alloy::sol_types::private::Address,
6675    }
6676    #[allow(
6677        non_camel_case_types,
6678        non_snake_case,
6679        clippy::pub_underscore_fields,
6680        clippy::style
6681    )]
6682    const _: () = {
6683        use alloy::sol_types as alloy_sol_types;
6684        #[automatically_derived]
6685        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6686            type DataTuple<'a> = ();
6687            type DataToken<'a> = <Self::DataTuple<
6688                'a,
6689            > as alloy_sol_types::SolType>::Token<'a>;
6690            type TopicList = (
6691                alloy_sol_types::sol_data::FixedBytes<32>,
6692                alloy::sol_types::sol_data::Address,
6693                alloy::sol_types::sol_data::Address,
6694            );
6695            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6696            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6697                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6698                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6699                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6700            ]);
6701            const ANONYMOUS: bool = false;
6702            #[allow(unused_variables)]
6703            #[inline]
6704            fn new(
6705                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6706                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6707            ) -> Self {
6708                Self {
6709                    previousOwner: topics.1,
6710                    newOwner: topics.2,
6711                }
6712            }
6713            #[inline]
6714            fn check_signature(
6715                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6716            ) -> alloy_sol_types::Result<()> {
6717                if topics.0 != Self::SIGNATURE_HASH {
6718                    return Err(
6719                        alloy_sol_types::Error::invalid_event_signature_hash(
6720                            Self::SIGNATURE,
6721                            topics.0,
6722                            Self::SIGNATURE_HASH,
6723                        ),
6724                    );
6725                }
6726                Ok(())
6727            }
6728            #[inline]
6729            fn tokenize_body(&self) -> Self::DataToken<'_> {
6730                ()
6731            }
6732            #[inline]
6733            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6734                (
6735                    Self::SIGNATURE_HASH.into(),
6736                    self.previousOwner.clone(),
6737                    self.newOwner.clone(),
6738                )
6739            }
6740            #[inline]
6741            fn encode_topics_raw(
6742                &self,
6743                out: &mut [alloy_sol_types::abi::token::WordToken],
6744            ) -> alloy_sol_types::Result<()> {
6745                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6746                    return Err(alloy_sol_types::Error::Overrun);
6747                }
6748                out[0usize] = alloy_sol_types::abi::token::WordToken(
6749                    Self::SIGNATURE_HASH,
6750                );
6751                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6752                    &self.previousOwner,
6753                );
6754                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6755                    &self.newOwner,
6756                );
6757                Ok(())
6758            }
6759        }
6760        #[automatically_derived]
6761        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6762            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6763                From::from(self)
6764            }
6765            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6766                From::from(&self)
6767            }
6768        }
6769        #[automatically_derived]
6770        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6771            #[inline]
6772            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6773                alloy_sol_types::SolEvent::encode_log_data(this)
6774            }
6775        }
6776    };
6777    #[derive(serde::Serialize, serde::Deserialize)]
6778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6779    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6780```solidity
6781event PermissionedProverNotRequired();
6782```*/
6783    #[allow(
6784        non_camel_case_types,
6785        non_snake_case,
6786        clippy::pub_underscore_fields,
6787        clippy::style
6788    )]
6789    #[derive(Clone)]
6790    pub struct PermissionedProverNotRequired;
6791    #[allow(
6792        non_camel_case_types,
6793        non_snake_case,
6794        clippy::pub_underscore_fields,
6795        clippy::style
6796    )]
6797    const _: () = {
6798        use alloy::sol_types as alloy_sol_types;
6799        #[automatically_derived]
6800        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6801            type DataTuple<'a> = ();
6802            type DataToken<'a> = <Self::DataTuple<
6803                'a,
6804            > as alloy_sol_types::SolType>::Token<'a>;
6805            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6806            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6807            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6808                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6809                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6810                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6811            ]);
6812            const ANONYMOUS: bool = false;
6813            #[allow(unused_variables)]
6814            #[inline]
6815            fn new(
6816                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6817                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6818            ) -> Self {
6819                Self {}
6820            }
6821            #[inline]
6822            fn check_signature(
6823                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6824            ) -> alloy_sol_types::Result<()> {
6825                if topics.0 != Self::SIGNATURE_HASH {
6826                    return Err(
6827                        alloy_sol_types::Error::invalid_event_signature_hash(
6828                            Self::SIGNATURE,
6829                            topics.0,
6830                            Self::SIGNATURE_HASH,
6831                        ),
6832                    );
6833                }
6834                Ok(())
6835            }
6836            #[inline]
6837            fn tokenize_body(&self) -> Self::DataToken<'_> {
6838                ()
6839            }
6840            #[inline]
6841            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6842                (Self::SIGNATURE_HASH.into(),)
6843            }
6844            #[inline]
6845            fn encode_topics_raw(
6846                &self,
6847                out: &mut [alloy_sol_types::abi::token::WordToken],
6848            ) -> alloy_sol_types::Result<()> {
6849                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6850                    return Err(alloy_sol_types::Error::Overrun);
6851                }
6852                out[0usize] = alloy_sol_types::abi::token::WordToken(
6853                    Self::SIGNATURE_HASH,
6854                );
6855                Ok(())
6856            }
6857        }
6858        #[automatically_derived]
6859        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6860            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6861                From::from(self)
6862            }
6863            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6864                From::from(&self)
6865            }
6866        }
6867        #[automatically_derived]
6868        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6869            #[inline]
6870            fn from(
6871                this: &PermissionedProverNotRequired,
6872            ) -> alloy_sol_types::private::LogData {
6873                alloy_sol_types::SolEvent::encode_log_data(this)
6874            }
6875        }
6876    };
6877    #[derive(serde::Serialize, serde::Deserialize)]
6878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6879    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6880```solidity
6881event PermissionedProverRequired(address permissionedProver);
6882```*/
6883    #[allow(
6884        non_camel_case_types,
6885        non_snake_case,
6886        clippy::pub_underscore_fields,
6887        clippy::style
6888    )]
6889    #[derive(Clone)]
6890    pub struct PermissionedProverRequired {
6891        #[allow(missing_docs)]
6892        pub permissionedProver: alloy::sol_types::private::Address,
6893    }
6894    #[allow(
6895        non_camel_case_types,
6896        non_snake_case,
6897        clippy::pub_underscore_fields,
6898        clippy::style
6899    )]
6900    const _: () = {
6901        use alloy::sol_types as alloy_sol_types;
6902        #[automatically_derived]
6903        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6904            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6905            type DataToken<'a> = <Self::DataTuple<
6906                'a,
6907            > as alloy_sol_types::SolType>::Token<'a>;
6908            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6909            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6910            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6911                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6912                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6913                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6914            ]);
6915            const ANONYMOUS: bool = false;
6916            #[allow(unused_variables)]
6917            #[inline]
6918            fn new(
6919                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6920                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6921            ) -> Self {
6922                Self { permissionedProver: data.0 }
6923            }
6924            #[inline]
6925            fn check_signature(
6926                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6927            ) -> alloy_sol_types::Result<()> {
6928                if topics.0 != Self::SIGNATURE_HASH {
6929                    return Err(
6930                        alloy_sol_types::Error::invalid_event_signature_hash(
6931                            Self::SIGNATURE,
6932                            topics.0,
6933                            Self::SIGNATURE_HASH,
6934                        ),
6935                    );
6936                }
6937                Ok(())
6938            }
6939            #[inline]
6940            fn tokenize_body(&self) -> Self::DataToken<'_> {
6941                (
6942                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6943                        &self.permissionedProver,
6944                    ),
6945                )
6946            }
6947            #[inline]
6948            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6949                (Self::SIGNATURE_HASH.into(),)
6950            }
6951            #[inline]
6952            fn encode_topics_raw(
6953                &self,
6954                out: &mut [alloy_sol_types::abi::token::WordToken],
6955            ) -> alloy_sol_types::Result<()> {
6956                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6957                    return Err(alloy_sol_types::Error::Overrun);
6958                }
6959                out[0usize] = alloy_sol_types::abi::token::WordToken(
6960                    Self::SIGNATURE_HASH,
6961                );
6962                Ok(())
6963            }
6964        }
6965        #[automatically_derived]
6966        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6967            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6968                From::from(self)
6969            }
6970            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6971                From::from(&self)
6972            }
6973        }
6974        #[automatically_derived]
6975        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6976            #[inline]
6977            fn from(
6978                this: &PermissionedProverRequired,
6979            ) -> alloy_sol_types::private::LogData {
6980                alloy_sol_types::SolEvent::encode_log_data(this)
6981            }
6982        }
6983    };
6984    #[derive(serde::Serialize, serde::Deserialize)]
6985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6986    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6987```solidity
6988event Upgrade(address implementation);
6989```*/
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    #[derive(Clone)]
6997    pub struct Upgrade {
6998        #[allow(missing_docs)]
6999        pub implementation: alloy::sol_types::private::Address,
7000    }
7001    #[allow(
7002        non_camel_case_types,
7003        non_snake_case,
7004        clippy::pub_underscore_fields,
7005        clippy::style
7006    )]
7007    const _: () = {
7008        use alloy::sol_types as alloy_sol_types;
7009        #[automatically_derived]
7010        impl alloy_sol_types::SolEvent for Upgrade {
7011            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7012            type DataToken<'a> = <Self::DataTuple<
7013                'a,
7014            > as alloy_sol_types::SolType>::Token<'a>;
7015            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7016            const SIGNATURE: &'static str = "Upgrade(address)";
7017            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7018                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7019                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7020                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7021            ]);
7022            const ANONYMOUS: bool = false;
7023            #[allow(unused_variables)]
7024            #[inline]
7025            fn new(
7026                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7027                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7028            ) -> Self {
7029                Self { implementation: data.0 }
7030            }
7031            #[inline]
7032            fn check_signature(
7033                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7034            ) -> alloy_sol_types::Result<()> {
7035                if topics.0 != Self::SIGNATURE_HASH {
7036                    return Err(
7037                        alloy_sol_types::Error::invalid_event_signature_hash(
7038                            Self::SIGNATURE,
7039                            topics.0,
7040                            Self::SIGNATURE_HASH,
7041                        ),
7042                    );
7043                }
7044                Ok(())
7045            }
7046            #[inline]
7047            fn tokenize_body(&self) -> Self::DataToken<'_> {
7048                (
7049                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7050                        &self.implementation,
7051                    ),
7052                )
7053            }
7054            #[inline]
7055            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7056                (Self::SIGNATURE_HASH.into(),)
7057            }
7058            #[inline]
7059            fn encode_topics_raw(
7060                &self,
7061                out: &mut [alloy_sol_types::abi::token::WordToken],
7062            ) -> alloy_sol_types::Result<()> {
7063                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7064                    return Err(alloy_sol_types::Error::Overrun);
7065                }
7066                out[0usize] = alloy_sol_types::abi::token::WordToken(
7067                    Self::SIGNATURE_HASH,
7068                );
7069                Ok(())
7070            }
7071        }
7072        #[automatically_derived]
7073        impl alloy_sol_types::private::IntoLogData for Upgrade {
7074            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7075                From::from(self)
7076            }
7077            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7078                From::from(&self)
7079            }
7080        }
7081        #[automatically_derived]
7082        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7083            #[inline]
7084            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7085                alloy_sol_types::SolEvent::encode_log_data(this)
7086            }
7087        }
7088    };
7089    #[derive(serde::Serialize, serde::Deserialize)]
7090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7091    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7092```solidity
7093event Upgraded(address indexed implementation);
7094```*/
7095    #[allow(
7096        non_camel_case_types,
7097        non_snake_case,
7098        clippy::pub_underscore_fields,
7099        clippy::style
7100    )]
7101    #[derive(Clone)]
7102    pub struct Upgraded {
7103        #[allow(missing_docs)]
7104        pub implementation: alloy::sol_types::private::Address,
7105    }
7106    #[allow(
7107        non_camel_case_types,
7108        non_snake_case,
7109        clippy::pub_underscore_fields,
7110        clippy::style
7111    )]
7112    const _: () = {
7113        use alloy::sol_types as alloy_sol_types;
7114        #[automatically_derived]
7115        impl alloy_sol_types::SolEvent for Upgraded {
7116            type DataTuple<'a> = ();
7117            type DataToken<'a> = <Self::DataTuple<
7118                'a,
7119            > as alloy_sol_types::SolType>::Token<'a>;
7120            type TopicList = (
7121                alloy_sol_types::sol_data::FixedBytes<32>,
7122                alloy::sol_types::sol_data::Address,
7123            );
7124            const SIGNATURE: &'static str = "Upgraded(address)";
7125            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7126                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7127                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7128                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7129            ]);
7130            const ANONYMOUS: bool = false;
7131            #[allow(unused_variables)]
7132            #[inline]
7133            fn new(
7134                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7135                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7136            ) -> Self {
7137                Self { implementation: topics.1 }
7138            }
7139            #[inline]
7140            fn check_signature(
7141                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7142            ) -> alloy_sol_types::Result<()> {
7143                if topics.0 != Self::SIGNATURE_HASH {
7144                    return Err(
7145                        alloy_sol_types::Error::invalid_event_signature_hash(
7146                            Self::SIGNATURE,
7147                            topics.0,
7148                            Self::SIGNATURE_HASH,
7149                        ),
7150                    );
7151                }
7152                Ok(())
7153            }
7154            #[inline]
7155            fn tokenize_body(&self) -> Self::DataToken<'_> {
7156                ()
7157            }
7158            #[inline]
7159            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7160                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7161            }
7162            #[inline]
7163            fn encode_topics_raw(
7164                &self,
7165                out: &mut [alloy_sol_types::abi::token::WordToken],
7166            ) -> alloy_sol_types::Result<()> {
7167                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7168                    return Err(alloy_sol_types::Error::Overrun);
7169                }
7170                out[0usize] = alloy_sol_types::abi::token::WordToken(
7171                    Self::SIGNATURE_HASH,
7172                );
7173                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7174                    &self.implementation,
7175                );
7176                Ok(())
7177            }
7178        }
7179        #[automatically_derived]
7180        impl alloy_sol_types::private::IntoLogData for Upgraded {
7181            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7182                From::from(self)
7183            }
7184            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7185                From::from(&self)
7186            }
7187        }
7188        #[automatically_derived]
7189        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7190            #[inline]
7191            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7192                alloy_sol_types::SolEvent::encode_log_data(this)
7193            }
7194        }
7195    };
7196    #[derive(serde::Serialize, serde::Deserialize)]
7197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7198    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7199```solidity
7200function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7201```*/
7202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7203    #[derive(Clone)]
7204    pub struct UPGRADE_INTERFACE_VERSIONCall;
7205    #[derive(serde::Serialize, serde::Deserialize)]
7206    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7207    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7208    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7209    #[derive(Clone)]
7210    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7211        #[allow(missing_docs)]
7212        pub _0: alloy::sol_types::private::String,
7213    }
7214    #[allow(
7215        non_camel_case_types,
7216        non_snake_case,
7217        clippy::pub_underscore_fields,
7218        clippy::style
7219    )]
7220    const _: () = {
7221        use alloy::sol_types as alloy_sol_types;
7222        {
7223            #[doc(hidden)]
7224            type UnderlyingSolTuple<'a> = ();
7225            #[doc(hidden)]
7226            type UnderlyingRustTuple<'a> = ();
7227            #[cfg(test)]
7228            #[allow(dead_code, unreachable_patterns)]
7229            fn _type_assertion(
7230                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7231            ) {
7232                match _t {
7233                    alloy_sol_types::private::AssertTypeEq::<
7234                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7235                    >(_) => {}
7236                }
7237            }
7238            #[automatically_derived]
7239            #[doc(hidden)]
7240            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7241            for UnderlyingRustTuple<'_> {
7242                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7243                    ()
7244                }
7245            }
7246            #[automatically_derived]
7247            #[doc(hidden)]
7248            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7249            for UPGRADE_INTERFACE_VERSIONCall {
7250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7251                    Self
7252                }
7253            }
7254        }
7255        {
7256            #[doc(hidden)]
7257            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7258            #[doc(hidden)]
7259            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7260            #[cfg(test)]
7261            #[allow(dead_code, unreachable_patterns)]
7262            fn _type_assertion(
7263                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7264            ) {
7265                match _t {
7266                    alloy_sol_types::private::AssertTypeEq::<
7267                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7268                    >(_) => {}
7269                }
7270            }
7271            #[automatically_derived]
7272            #[doc(hidden)]
7273            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7274            for UnderlyingRustTuple<'_> {
7275                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7276                    (value._0,)
7277                }
7278            }
7279            #[automatically_derived]
7280            #[doc(hidden)]
7281            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7282            for UPGRADE_INTERFACE_VERSIONReturn {
7283                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7284                    Self { _0: tuple.0 }
7285                }
7286            }
7287        }
7288        #[automatically_derived]
7289        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7290            type Parameters<'a> = ();
7291            type Token<'a> = <Self::Parameters<
7292                'a,
7293            > as alloy_sol_types::SolType>::Token<'a>;
7294            type Return = alloy::sol_types::private::String;
7295            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7296            type ReturnToken<'a> = <Self::ReturnTuple<
7297                'a,
7298            > as alloy_sol_types::SolType>::Token<'a>;
7299            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7300            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7301            #[inline]
7302            fn new<'a>(
7303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7304            ) -> Self {
7305                tuple.into()
7306            }
7307            #[inline]
7308            fn tokenize(&self) -> Self::Token<'_> {
7309                ()
7310            }
7311            #[inline]
7312            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7313                (
7314                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7315                        ret,
7316                    ),
7317                )
7318            }
7319            #[inline]
7320            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7321                <Self::ReturnTuple<
7322                    '_,
7323                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7324                    .map(|r| {
7325                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7326                        r._0
7327                    })
7328            }
7329            #[inline]
7330            fn abi_decode_returns_validate(
7331                data: &[u8],
7332            ) -> alloy_sol_types::Result<Self::Return> {
7333                <Self::ReturnTuple<
7334                    '_,
7335                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7336                    .map(|r| {
7337                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7338                        r._0
7339                    })
7340            }
7341        }
7342    };
7343    #[derive(serde::Serialize, serde::Deserialize)]
7344    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7345    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7346```solidity
7347function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7348```*/
7349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7350    #[derive(Clone)]
7351    pub struct _getVkCall;
7352    #[derive(serde::Serialize, serde::Deserialize)]
7353    #[derive()]
7354    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7356    #[derive(Clone)]
7357    pub struct _getVkReturn {
7358        #[allow(missing_docs)]
7359        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7360    }
7361    #[allow(
7362        non_camel_case_types,
7363        non_snake_case,
7364        clippy::pub_underscore_fields,
7365        clippy::style
7366    )]
7367    const _: () = {
7368        use alloy::sol_types as alloy_sol_types;
7369        {
7370            #[doc(hidden)]
7371            type UnderlyingSolTuple<'a> = ();
7372            #[doc(hidden)]
7373            type UnderlyingRustTuple<'a> = ();
7374            #[cfg(test)]
7375            #[allow(dead_code, unreachable_patterns)]
7376            fn _type_assertion(
7377                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7378            ) {
7379                match _t {
7380                    alloy_sol_types::private::AssertTypeEq::<
7381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7382                    >(_) => {}
7383                }
7384            }
7385            #[automatically_derived]
7386            #[doc(hidden)]
7387            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7388                fn from(value: _getVkCall) -> Self {
7389                    ()
7390                }
7391            }
7392            #[automatically_derived]
7393            #[doc(hidden)]
7394            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7395                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7396                    Self
7397                }
7398            }
7399        }
7400        {
7401            #[doc(hidden)]
7402            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7403            #[doc(hidden)]
7404            type UnderlyingRustTuple<'a> = (
7405                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7406            );
7407            #[cfg(test)]
7408            #[allow(dead_code, unreachable_patterns)]
7409            fn _type_assertion(
7410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7411            ) {
7412                match _t {
7413                    alloy_sol_types::private::AssertTypeEq::<
7414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7415                    >(_) => {}
7416                }
7417            }
7418            #[automatically_derived]
7419            #[doc(hidden)]
7420            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7421                fn from(value: _getVkReturn) -> Self {
7422                    (value.vk,)
7423                }
7424            }
7425            #[automatically_derived]
7426            #[doc(hidden)]
7427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7429                    Self { vk: tuple.0 }
7430                }
7431            }
7432        }
7433        #[automatically_derived]
7434        impl alloy_sol_types::SolCall for _getVkCall {
7435            type Parameters<'a> = ();
7436            type Token<'a> = <Self::Parameters<
7437                'a,
7438            > as alloy_sol_types::SolType>::Token<'a>;
7439            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7440            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7441            type ReturnToken<'a> = <Self::ReturnTuple<
7442                'a,
7443            > as alloy_sol_types::SolType>::Token<'a>;
7444            const SIGNATURE: &'static str = "_getVk()";
7445            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7446            #[inline]
7447            fn new<'a>(
7448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7449            ) -> Self {
7450                tuple.into()
7451            }
7452            #[inline]
7453            fn tokenize(&self) -> Self::Token<'_> {
7454                ()
7455            }
7456            #[inline]
7457            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7458                (
7459                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7460                        ret,
7461                    ),
7462                )
7463            }
7464            #[inline]
7465            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7466                <Self::ReturnTuple<
7467                    '_,
7468                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7469                    .map(|r| {
7470                        let r: _getVkReturn = r.into();
7471                        r.vk
7472                    })
7473            }
7474            #[inline]
7475            fn abi_decode_returns_validate(
7476                data: &[u8],
7477            ) -> alloy_sol_types::Result<Self::Return> {
7478                <Self::ReturnTuple<
7479                    '_,
7480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7481                    .map(|r| {
7482                        let r: _getVkReturn = r.into();
7483                        r.vk
7484                    })
7485            }
7486        }
7487    };
7488    #[derive(serde::Serialize, serde::Deserialize)]
7489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7490    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7491```solidity
7492function currentBlockNumber() external view returns (uint256);
7493```*/
7494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7495    #[derive(Clone)]
7496    pub struct currentBlockNumberCall;
7497    #[derive(serde::Serialize, serde::Deserialize)]
7498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7499    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7501    #[derive(Clone)]
7502    pub struct currentBlockNumberReturn {
7503        #[allow(missing_docs)]
7504        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7505    }
7506    #[allow(
7507        non_camel_case_types,
7508        non_snake_case,
7509        clippy::pub_underscore_fields,
7510        clippy::style
7511    )]
7512    const _: () = {
7513        use alloy::sol_types as alloy_sol_types;
7514        {
7515            #[doc(hidden)]
7516            type UnderlyingSolTuple<'a> = ();
7517            #[doc(hidden)]
7518            type UnderlyingRustTuple<'a> = ();
7519            #[cfg(test)]
7520            #[allow(dead_code, unreachable_patterns)]
7521            fn _type_assertion(
7522                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7523            ) {
7524                match _t {
7525                    alloy_sol_types::private::AssertTypeEq::<
7526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7527                    >(_) => {}
7528                }
7529            }
7530            #[automatically_derived]
7531            #[doc(hidden)]
7532            impl ::core::convert::From<currentBlockNumberCall>
7533            for UnderlyingRustTuple<'_> {
7534                fn from(value: currentBlockNumberCall) -> Self {
7535                    ()
7536                }
7537            }
7538            #[automatically_derived]
7539            #[doc(hidden)]
7540            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7541            for currentBlockNumberCall {
7542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7543                    Self
7544                }
7545            }
7546        }
7547        {
7548            #[doc(hidden)]
7549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7550            #[doc(hidden)]
7551            type UnderlyingRustTuple<'a> = (
7552                alloy::sol_types::private::primitives::aliases::U256,
7553            );
7554            #[cfg(test)]
7555            #[allow(dead_code, unreachable_patterns)]
7556            fn _type_assertion(
7557                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7558            ) {
7559                match _t {
7560                    alloy_sol_types::private::AssertTypeEq::<
7561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7562                    >(_) => {}
7563                }
7564            }
7565            #[automatically_derived]
7566            #[doc(hidden)]
7567            impl ::core::convert::From<currentBlockNumberReturn>
7568            for UnderlyingRustTuple<'_> {
7569                fn from(value: currentBlockNumberReturn) -> Self {
7570                    (value._0,)
7571                }
7572            }
7573            #[automatically_derived]
7574            #[doc(hidden)]
7575            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7576            for currentBlockNumberReturn {
7577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7578                    Self { _0: tuple.0 }
7579                }
7580            }
7581        }
7582        #[automatically_derived]
7583        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7584            type Parameters<'a> = ();
7585            type Token<'a> = <Self::Parameters<
7586                'a,
7587            > as alloy_sol_types::SolType>::Token<'a>;
7588            type Return = alloy::sol_types::private::primitives::aliases::U256;
7589            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7590            type ReturnToken<'a> = <Self::ReturnTuple<
7591                'a,
7592            > as alloy_sol_types::SolType>::Token<'a>;
7593            const SIGNATURE: &'static str = "currentBlockNumber()";
7594            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7595            #[inline]
7596            fn new<'a>(
7597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7598            ) -> Self {
7599                tuple.into()
7600            }
7601            #[inline]
7602            fn tokenize(&self) -> Self::Token<'_> {
7603                ()
7604            }
7605            #[inline]
7606            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7607                (
7608                    <alloy::sol_types::sol_data::Uint<
7609                        256,
7610                    > as alloy_sol_types::SolType>::tokenize(ret),
7611                )
7612            }
7613            #[inline]
7614            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7615                <Self::ReturnTuple<
7616                    '_,
7617                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7618                    .map(|r| {
7619                        let r: currentBlockNumberReturn = r.into();
7620                        r._0
7621                    })
7622            }
7623            #[inline]
7624            fn abi_decode_returns_validate(
7625                data: &[u8],
7626            ) -> alloy_sol_types::Result<Self::Return> {
7627                <Self::ReturnTuple<
7628                    '_,
7629                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7630                    .map(|r| {
7631                        let r: currentBlockNumberReturn = r.into();
7632                        r._0
7633                    })
7634            }
7635        }
7636    };
7637    #[derive(serde::Serialize, serde::Deserialize)]
7638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7639    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7640```solidity
7641function disablePermissionedProverMode() external;
7642```*/
7643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7644    #[derive(Clone)]
7645    pub struct disablePermissionedProverModeCall;
7646    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7648    #[derive(Clone)]
7649    pub struct disablePermissionedProverModeReturn {}
7650    #[allow(
7651        non_camel_case_types,
7652        non_snake_case,
7653        clippy::pub_underscore_fields,
7654        clippy::style
7655    )]
7656    const _: () = {
7657        use alloy::sol_types as alloy_sol_types;
7658        {
7659            #[doc(hidden)]
7660            type UnderlyingSolTuple<'a> = ();
7661            #[doc(hidden)]
7662            type UnderlyingRustTuple<'a> = ();
7663            #[cfg(test)]
7664            #[allow(dead_code, unreachable_patterns)]
7665            fn _type_assertion(
7666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7667            ) {
7668                match _t {
7669                    alloy_sol_types::private::AssertTypeEq::<
7670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7671                    >(_) => {}
7672                }
7673            }
7674            #[automatically_derived]
7675            #[doc(hidden)]
7676            impl ::core::convert::From<disablePermissionedProverModeCall>
7677            for UnderlyingRustTuple<'_> {
7678                fn from(value: disablePermissionedProverModeCall) -> Self {
7679                    ()
7680                }
7681            }
7682            #[automatically_derived]
7683            #[doc(hidden)]
7684            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7685            for disablePermissionedProverModeCall {
7686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7687                    Self
7688                }
7689            }
7690        }
7691        {
7692            #[doc(hidden)]
7693            type UnderlyingSolTuple<'a> = ();
7694            #[doc(hidden)]
7695            type UnderlyingRustTuple<'a> = ();
7696            #[cfg(test)]
7697            #[allow(dead_code, unreachable_patterns)]
7698            fn _type_assertion(
7699                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7700            ) {
7701                match _t {
7702                    alloy_sol_types::private::AssertTypeEq::<
7703                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7704                    >(_) => {}
7705                }
7706            }
7707            #[automatically_derived]
7708            #[doc(hidden)]
7709            impl ::core::convert::From<disablePermissionedProverModeReturn>
7710            for UnderlyingRustTuple<'_> {
7711                fn from(value: disablePermissionedProverModeReturn) -> Self {
7712                    ()
7713                }
7714            }
7715            #[automatically_derived]
7716            #[doc(hidden)]
7717            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7718            for disablePermissionedProverModeReturn {
7719                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7720                    Self {}
7721                }
7722            }
7723        }
7724        impl disablePermissionedProverModeReturn {
7725            fn _tokenize(
7726                &self,
7727            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7728                '_,
7729            > {
7730                ()
7731            }
7732        }
7733        #[automatically_derived]
7734        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7735            type Parameters<'a> = ();
7736            type Token<'a> = <Self::Parameters<
7737                'a,
7738            > as alloy_sol_types::SolType>::Token<'a>;
7739            type Return = disablePermissionedProverModeReturn;
7740            type ReturnTuple<'a> = ();
7741            type ReturnToken<'a> = <Self::ReturnTuple<
7742                'a,
7743            > as alloy_sol_types::SolType>::Token<'a>;
7744            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7745            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7746            #[inline]
7747            fn new<'a>(
7748                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7749            ) -> Self {
7750                tuple.into()
7751            }
7752            #[inline]
7753            fn tokenize(&self) -> Self::Token<'_> {
7754                ()
7755            }
7756            #[inline]
7757            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7758                disablePermissionedProverModeReturn::_tokenize(ret)
7759            }
7760            #[inline]
7761            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7762                <Self::ReturnTuple<
7763                    '_,
7764                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7765                    .map(Into::into)
7766            }
7767            #[inline]
7768            fn abi_decode_returns_validate(
7769                data: &[u8],
7770            ) -> alloy_sol_types::Result<Self::Return> {
7771                <Self::ReturnTuple<
7772                    '_,
7773                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7774                    .map(Into::into)
7775            }
7776        }
7777    };
7778    #[derive(serde::Serialize, serde::Deserialize)]
7779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7780    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7781```solidity
7782function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7783```*/
7784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7785    #[derive(Clone)]
7786    pub struct finalizedStateCall;
7787    #[derive(serde::Serialize, serde::Deserialize)]
7788    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7789    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7791    #[derive(Clone)]
7792    pub struct finalizedStateReturn {
7793        #[allow(missing_docs)]
7794        pub viewNum: u64,
7795        #[allow(missing_docs)]
7796        pub blockHeight: u64,
7797        #[allow(missing_docs)]
7798        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7799    }
7800    #[allow(
7801        non_camel_case_types,
7802        non_snake_case,
7803        clippy::pub_underscore_fields,
7804        clippy::style
7805    )]
7806    const _: () = {
7807        use alloy::sol_types as alloy_sol_types;
7808        {
7809            #[doc(hidden)]
7810            type UnderlyingSolTuple<'a> = ();
7811            #[doc(hidden)]
7812            type UnderlyingRustTuple<'a> = ();
7813            #[cfg(test)]
7814            #[allow(dead_code, unreachable_patterns)]
7815            fn _type_assertion(
7816                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7817            ) {
7818                match _t {
7819                    alloy_sol_types::private::AssertTypeEq::<
7820                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7821                    >(_) => {}
7822                }
7823            }
7824            #[automatically_derived]
7825            #[doc(hidden)]
7826            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7827                fn from(value: finalizedStateCall) -> Self {
7828                    ()
7829                }
7830            }
7831            #[automatically_derived]
7832            #[doc(hidden)]
7833            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7834                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7835                    Self
7836                }
7837            }
7838        }
7839        {
7840            #[doc(hidden)]
7841            type UnderlyingSolTuple<'a> = (
7842                alloy::sol_types::sol_data::Uint<64>,
7843                alloy::sol_types::sol_data::Uint<64>,
7844                BN254::ScalarField,
7845            );
7846            #[doc(hidden)]
7847            type UnderlyingRustTuple<'a> = (
7848                u64,
7849                u64,
7850                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7851            );
7852            #[cfg(test)]
7853            #[allow(dead_code, unreachable_patterns)]
7854            fn _type_assertion(
7855                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7856            ) {
7857                match _t {
7858                    alloy_sol_types::private::AssertTypeEq::<
7859                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7860                    >(_) => {}
7861                }
7862            }
7863            #[automatically_derived]
7864            #[doc(hidden)]
7865            impl ::core::convert::From<finalizedStateReturn>
7866            for UnderlyingRustTuple<'_> {
7867                fn from(value: finalizedStateReturn) -> Self {
7868                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7869                }
7870            }
7871            #[automatically_derived]
7872            #[doc(hidden)]
7873            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7874            for finalizedStateReturn {
7875                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7876                    Self {
7877                        viewNum: tuple.0,
7878                        blockHeight: tuple.1,
7879                        blockCommRoot: tuple.2,
7880                    }
7881                }
7882            }
7883        }
7884        impl finalizedStateReturn {
7885            fn _tokenize(
7886                &self,
7887            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7888                (
7889                    <alloy::sol_types::sol_data::Uint<
7890                        64,
7891                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7892                    <alloy::sol_types::sol_data::Uint<
7893                        64,
7894                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7895                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7896                        &self.blockCommRoot,
7897                    ),
7898                )
7899            }
7900        }
7901        #[automatically_derived]
7902        impl alloy_sol_types::SolCall for finalizedStateCall {
7903            type Parameters<'a> = ();
7904            type Token<'a> = <Self::Parameters<
7905                'a,
7906            > as alloy_sol_types::SolType>::Token<'a>;
7907            type Return = finalizedStateReturn;
7908            type ReturnTuple<'a> = (
7909                alloy::sol_types::sol_data::Uint<64>,
7910                alloy::sol_types::sol_data::Uint<64>,
7911                BN254::ScalarField,
7912            );
7913            type ReturnToken<'a> = <Self::ReturnTuple<
7914                'a,
7915            > as alloy_sol_types::SolType>::Token<'a>;
7916            const SIGNATURE: &'static str = "finalizedState()";
7917            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7918            #[inline]
7919            fn new<'a>(
7920                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7921            ) -> Self {
7922                tuple.into()
7923            }
7924            #[inline]
7925            fn tokenize(&self) -> Self::Token<'_> {
7926                ()
7927            }
7928            #[inline]
7929            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7930                finalizedStateReturn::_tokenize(ret)
7931            }
7932            #[inline]
7933            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7934                <Self::ReturnTuple<
7935                    '_,
7936                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7937                    .map(Into::into)
7938            }
7939            #[inline]
7940            fn abi_decode_returns_validate(
7941                data: &[u8],
7942            ) -> alloy_sol_types::Result<Self::Return> {
7943                <Self::ReturnTuple<
7944                    '_,
7945                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7946                    .map(Into::into)
7947            }
7948        }
7949    };
7950    #[derive(serde::Serialize, serde::Deserialize)]
7951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7952    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7953```solidity
7954function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7955```*/
7956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7957    #[derive(Clone)]
7958    pub struct genesisStakeTableStateCall;
7959    #[derive(serde::Serialize, serde::Deserialize)]
7960    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7961    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7963    #[derive(Clone)]
7964    pub struct genesisStakeTableStateReturn {
7965        #[allow(missing_docs)]
7966        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7967        #[allow(missing_docs)]
7968        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7969        #[allow(missing_docs)]
7970        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7971        #[allow(missing_docs)]
7972        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7973    }
7974    #[allow(
7975        non_camel_case_types,
7976        non_snake_case,
7977        clippy::pub_underscore_fields,
7978        clippy::style
7979    )]
7980    const _: () = {
7981        use alloy::sol_types as alloy_sol_types;
7982        {
7983            #[doc(hidden)]
7984            type UnderlyingSolTuple<'a> = ();
7985            #[doc(hidden)]
7986            type UnderlyingRustTuple<'a> = ();
7987            #[cfg(test)]
7988            #[allow(dead_code, unreachable_patterns)]
7989            fn _type_assertion(
7990                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7991            ) {
7992                match _t {
7993                    alloy_sol_types::private::AssertTypeEq::<
7994                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7995                    >(_) => {}
7996                }
7997            }
7998            #[automatically_derived]
7999            #[doc(hidden)]
8000            impl ::core::convert::From<genesisStakeTableStateCall>
8001            for UnderlyingRustTuple<'_> {
8002                fn from(value: genesisStakeTableStateCall) -> Self {
8003                    ()
8004                }
8005            }
8006            #[automatically_derived]
8007            #[doc(hidden)]
8008            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8009            for genesisStakeTableStateCall {
8010                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8011                    Self
8012                }
8013            }
8014        }
8015        {
8016            #[doc(hidden)]
8017            type UnderlyingSolTuple<'a> = (
8018                alloy::sol_types::sol_data::Uint<256>,
8019                BN254::ScalarField,
8020                BN254::ScalarField,
8021                BN254::ScalarField,
8022            );
8023            #[doc(hidden)]
8024            type UnderlyingRustTuple<'a> = (
8025                alloy::sol_types::private::primitives::aliases::U256,
8026                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8027                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8028                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8029            );
8030            #[cfg(test)]
8031            #[allow(dead_code, unreachable_patterns)]
8032            fn _type_assertion(
8033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8034            ) {
8035                match _t {
8036                    alloy_sol_types::private::AssertTypeEq::<
8037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8038                    >(_) => {}
8039                }
8040            }
8041            #[automatically_derived]
8042            #[doc(hidden)]
8043            impl ::core::convert::From<genesisStakeTableStateReturn>
8044            for UnderlyingRustTuple<'_> {
8045                fn from(value: genesisStakeTableStateReturn) -> Self {
8046                    (
8047                        value.threshold,
8048                        value.blsKeyComm,
8049                        value.schnorrKeyComm,
8050                        value.amountComm,
8051                    )
8052                }
8053            }
8054            #[automatically_derived]
8055            #[doc(hidden)]
8056            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8057            for genesisStakeTableStateReturn {
8058                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8059                    Self {
8060                        threshold: tuple.0,
8061                        blsKeyComm: tuple.1,
8062                        schnorrKeyComm: tuple.2,
8063                        amountComm: tuple.3,
8064                    }
8065                }
8066            }
8067        }
8068        impl genesisStakeTableStateReturn {
8069            fn _tokenize(
8070                &self,
8071            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
8072                '_,
8073            > {
8074                (
8075                    <alloy::sol_types::sol_data::Uint<
8076                        256,
8077                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
8078                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8079                        &self.blsKeyComm,
8080                    ),
8081                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8082                        &self.schnorrKeyComm,
8083                    ),
8084                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8085                        &self.amountComm,
8086                    ),
8087                )
8088            }
8089        }
8090        #[automatically_derived]
8091        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8092            type Parameters<'a> = ();
8093            type Token<'a> = <Self::Parameters<
8094                'a,
8095            > as alloy_sol_types::SolType>::Token<'a>;
8096            type Return = genesisStakeTableStateReturn;
8097            type ReturnTuple<'a> = (
8098                alloy::sol_types::sol_data::Uint<256>,
8099                BN254::ScalarField,
8100                BN254::ScalarField,
8101                BN254::ScalarField,
8102            );
8103            type ReturnToken<'a> = <Self::ReturnTuple<
8104                'a,
8105            > as alloy_sol_types::SolType>::Token<'a>;
8106            const SIGNATURE: &'static str = "genesisStakeTableState()";
8107            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8108            #[inline]
8109            fn new<'a>(
8110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8111            ) -> Self {
8112                tuple.into()
8113            }
8114            #[inline]
8115            fn tokenize(&self) -> Self::Token<'_> {
8116                ()
8117            }
8118            #[inline]
8119            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8120                genesisStakeTableStateReturn::_tokenize(ret)
8121            }
8122            #[inline]
8123            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8124                <Self::ReturnTuple<
8125                    '_,
8126                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8127                    .map(Into::into)
8128            }
8129            #[inline]
8130            fn abi_decode_returns_validate(
8131                data: &[u8],
8132            ) -> alloy_sol_types::Result<Self::Return> {
8133                <Self::ReturnTuple<
8134                    '_,
8135                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8136                    .map(Into::into)
8137            }
8138        }
8139    };
8140    #[derive(serde::Serialize, serde::Deserialize)]
8141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8142    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8143```solidity
8144function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8145```*/
8146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8147    #[derive(Clone)]
8148    pub struct genesisStateCall;
8149    #[derive(serde::Serialize, serde::Deserialize)]
8150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8151    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8153    #[derive(Clone)]
8154    pub struct genesisStateReturn {
8155        #[allow(missing_docs)]
8156        pub viewNum: u64,
8157        #[allow(missing_docs)]
8158        pub blockHeight: u64,
8159        #[allow(missing_docs)]
8160        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8161    }
8162    #[allow(
8163        non_camel_case_types,
8164        non_snake_case,
8165        clippy::pub_underscore_fields,
8166        clippy::style
8167    )]
8168    const _: () = {
8169        use alloy::sol_types as alloy_sol_types;
8170        {
8171            #[doc(hidden)]
8172            type UnderlyingSolTuple<'a> = ();
8173            #[doc(hidden)]
8174            type UnderlyingRustTuple<'a> = ();
8175            #[cfg(test)]
8176            #[allow(dead_code, unreachable_patterns)]
8177            fn _type_assertion(
8178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8179            ) {
8180                match _t {
8181                    alloy_sol_types::private::AssertTypeEq::<
8182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8183                    >(_) => {}
8184                }
8185            }
8186            #[automatically_derived]
8187            #[doc(hidden)]
8188            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8189                fn from(value: genesisStateCall) -> Self {
8190                    ()
8191                }
8192            }
8193            #[automatically_derived]
8194            #[doc(hidden)]
8195            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8197                    Self
8198                }
8199            }
8200        }
8201        {
8202            #[doc(hidden)]
8203            type UnderlyingSolTuple<'a> = (
8204                alloy::sol_types::sol_data::Uint<64>,
8205                alloy::sol_types::sol_data::Uint<64>,
8206                BN254::ScalarField,
8207            );
8208            #[doc(hidden)]
8209            type UnderlyingRustTuple<'a> = (
8210                u64,
8211                u64,
8212                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8213            );
8214            #[cfg(test)]
8215            #[allow(dead_code, unreachable_patterns)]
8216            fn _type_assertion(
8217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8218            ) {
8219                match _t {
8220                    alloy_sol_types::private::AssertTypeEq::<
8221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8222                    >(_) => {}
8223                }
8224            }
8225            #[automatically_derived]
8226            #[doc(hidden)]
8227            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8228                fn from(value: genesisStateReturn) -> Self {
8229                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8230                }
8231            }
8232            #[automatically_derived]
8233            #[doc(hidden)]
8234            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8236                    Self {
8237                        viewNum: tuple.0,
8238                        blockHeight: tuple.1,
8239                        blockCommRoot: tuple.2,
8240                    }
8241                }
8242            }
8243        }
8244        impl genesisStateReturn {
8245            fn _tokenize(
8246                &self,
8247            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8248                (
8249                    <alloy::sol_types::sol_data::Uint<
8250                        64,
8251                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8252                    <alloy::sol_types::sol_data::Uint<
8253                        64,
8254                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8255                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8256                        &self.blockCommRoot,
8257                    ),
8258                )
8259            }
8260        }
8261        #[automatically_derived]
8262        impl alloy_sol_types::SolCall for genesisStateCall {
8263            type Parameters<'a> = ();
8264            type Token<'a> = <Self::Parameters<
8265                'a,
8266            > as alloy_sol_types::SolType>::Token<'a>;
8267            type Return = genesisStateReturn;
8268            type ReturnTuple<'a> = (
8269                alloy::sol_types::sol_data::Uint<64>,
8270                alloy::sol_types::sol_data::Uint<64>,
8271                BN254::ScalarField,
8272            );
8273            type ReturnToken<'a> = <Self::ReturnTuple<
8274                'a,
8275            > as alloy_sol_types::SolType>::Token<'a>;
8276            const SIGNATURE: &'static str = "genesisState()";
8277            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8278            #[inline]
8279            fn new<'a>(
8280                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8281            ) -> Self {
8282                tuple.into()
8283            }
8284            #[inline]
8285            fn tokenize(&self) -> Self::Token<'_> {
8286                ()
8287            }
8288            #[inline]
8289            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8290                genesisStateReturn::_tokenize(ret)
8291            }
8292            #[inline]
8293            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8294                <Self::ReturnTuple<
8295                    '_,
8296                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8297                    .map(Into::into)
8298            }
8299            #[inline]
8300            fn abi_decode_returns_validate(
8301                data: &[u8],
8302            ) -> alloy_sol_types::Result<Self::Return> {
8303                <Self::ReturnTuple<
8304                    '_,
8305                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8306                    .map(Into::into)
8307            }
8308        }
8309    };
8310    #[derive(serde::Serialize, serde::Deserialize)]
8311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8312    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8313```solidity
8314function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8315```*/
8316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8317    #[derive(Clone)]
8318    pub struct getHotShotCommitmentCall {
8319        #[allow(missing_docs)]
8320        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8321    }
8322    #[derive(serde::Serialize, serde::Deserialize)]
8323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8324    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8326    #[derive(Clone)]
8327    pub struct getHotShotCommitmentReturn {
8328        #[allow(missing_docs)]
8329        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8330        #[allow(missing_docs)]
8331        pub hotshotBlockHeight: u64,
8332    }
8333    #[allow(
8334        non_camel_case_types,
8335        non_snake_case,
8336        clippy::pub_underscore_fields,
8337        clippy::style
8338    )]
8339    const _: () = {
8340        use alloy::sol_types as alloy_sol_types;
8341        {
8342            #[doc(hidden)]
8343            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8344            #[doc(hidden)]
8345            type UnderlyingRustTuple<'a> = (
8346                alloy::sol_types::private::primitives::aliases::U256,
8347            );
8348            #[cfg(test)]
8349            #[allow(dead_code, unreachable_patterns)]
8350            fn _type_assertion(
8351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8352            ) {
8353                match _t {
8354                    alloy_sol_types::private::AssertTypeEq::<
8355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8356                    >(_) => {}
8357                }
8358            }
8359            #[automatically_derived]
8360            #[doc(hidden)]
8361            impl ::core::convert::From<getHotShotCommitmentCall>
8362            for UnderlyingRustTuple<'_> {
8363                fn from(value: getHotShotCommitmentCall) -> Self {
8364                    (value.hotShotBlockHeight,)
8365                }
8366            }
8367            #[automatically_derived]
8368            #[doc(hidden)]
8369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8370            for getHotShotCommitmentCall {
8371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8372                    Self {
8373                        hotShotBlockHeight: tuple.0,
8374                    }
8375                }
8376            }
8377        }
8378        {
8379            #[doc(hidden)]
8380            type UnderlyingSolTuple<'a> = (
8381                BN254::ScalarField,
8382                alloy::sol_types::sol_data::Uint<64>,
8383            );
8384            #[doc(hidden)]
8385            type UnderlyingRustTuple<'a> = (
8386                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8387                u64,
8388            );
8389            #[cfg(test)]
8390            #[allow(dead_code, unreachable_patterns)]
8391            fn _type_assertion(
8392                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8393            ) {
8394                match _t {
8395                    alloy_sol_types::private::AssertTypeEq::<
8396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8397                    >(_) => {}
8398                }
8399            }
8400            #[automatically_derived]
8401            #[doc(hidden)]
8402            impl ::core::convert::From<getHotShotCommitmentReturn>
8403            for UnderlyingRustTuple<'_> {
8404                fn from(value: getHotShotCommitmentReturn) -> Self {
8405                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8406                }
8407            }
8408            #[automatically_derived]
8409            #[doc(hidden)]
8410            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8411            for getHotShotCommitmentReturn {
8412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8413                    Self {
8414                        hotShotBlockCommRoot: tuple.0,
8415                        hotshotBlockHeight: tuple.1,
8416                    }
8417                }
8418            }
8419        }
8420        impl getHotShotCommitmentReturn {
8421            fn _tokenize(
8422                &self,
8423            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8424                '_,
8425            > {
8426                (
8427                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8428                        &self.hotShotBlockCommRoot,
8429                    ),
8430                    <alloy::sol_types::sol_data::Uint<
8431                        64,
8432                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8433                )
8434            }
8435        }
8436        #[automatically_derived]
8437        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8438            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8439            type Token<'a> = <Self::Parameters<
8440                'a,
8441            > as alloy_sol_types::SolType>::Token<'a>;
8442            type Return = getHotShotCommitmentReturn;
8443            type ReturnTuple<'a> = (
8444                BN254::ScalarField,
8445                alloy::sol_types::sol_data::Uint<64>,
8446            );
8447            type ReturnToken<'a> = <Self::ReturnTuple<
8448                'a,
8449            > as alloy_sol_types::SolType>::Token<'a>;
8450            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8451            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8452            #[inline]
8453            fn new<'a>(
8454                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8455            ) -> Self {
8456                tuple.into()
8457            }
8458            #[inline]
8459            fn tokenize(&self) -> Self::Token<'_> {
8460                (
8461                    <alloy::sol_types::sol_data::Uint<
8462                        256,
8463                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8464                )
8465            }
8466            #[inline]
8467            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8468                getHotShotCommitmentReturn::_tokenize(ret)
8469            }
8470            #[inline]
8471            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8472                <Self::ReturnTuple<
8473                    '_,
8474                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8475                    .map(Into::into)
8476            }
8477            #[inline]
8478            fn abi_decode_returns_validate(
8479                data: &[u8],
8480            ) -> alloy_sol_types::Result<Self::Return> {
8481                <Self::ReturnTuple<
8482                    '_,
8483                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8484                    .map(Into::into)
8485            }
8486        }
8487    };
8488    #[derive(serde::Serialize, serde::Deserialize)]
8489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8490    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8491```solidity
8492function getStateHistoryCount() external view returns (uint256);
8493```*/
8494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8495    #[derive(Clone)]
8496    pub struct getStateHistoryCountCall;
8497    #[derive(serde::Serialize, serde::Deserialize)]
8498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8499    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8501    #[derive(Clone)]
8502    pub struct getStateHistoryCountReturn {
8503        #[allow(missing_docs)]
8504        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8505    }
8506    #[allow(
8507        non_camel_case_types,
8508        non_snake_case,
8509        clippy::pub_underscore_fields,
8510        clippy::style
8511    )]
8512    const _: () = {
8513        use alloy::sol_types as alloy_sol_types;
8514        {
8515            #[doc(hidden)]
8516            type UnderlyingSolTuple<'a> = ();
8517            #[doc(hidden)]
8518            type UnderlyingRustTuple<'a> = ();
8519            #[cfg(test)]
8520            #[allow(dead_code, unreachable_patterns)]
8521            fn _type_assertion(
8522                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8523            ) {
8524                match _t {
8525                    alloy_sol_types::private::AssertTypeEq::<
8526                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8527                    >(_) => {}
8528                }
8529            }
8530            #[automatically_derived]
8531            #[doc(hidden)]
8532            impl ::core::convert::From<getStateHistoryCountCall>
8533            for UnderlyingRustTuple<'_> {
8534                fn from(value: getStateHistoryCountCall) -> Self {
8535                    ()
8536                }
8537            }
8538            #[automatically_derived]
8539            #[doc(hidden)]
8540            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8541            for getStateHistoryCountCall {
8542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8543                    Self
8544                }
8545            }
8546        }
8547        {
8548            #[doc(hidden)]
8549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8550            #[doc(hidden)]
8551            type UnderlyingRustTuple<'a> = (
8552                alloy::sol_types::private::primitives::aliases::U256,
8553            );
8554            #[cfg(test)]
8555            #[allow(dead_code, unreachable_patterns)]
8556            fn _type_assertion(
8557                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8558            ) {
8559                match _t {
8560                    alloy_sol_types::private::AssertTypeEq::<
8561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8562                    >(_) => {}
8563                }
8564            }
8565            #[automatically_derived]
8566            #[doc(hidden)]
8567            impl ::core::convert::From<getStateHistoryCountReturn>
8568            for UnderlyingRustTuple<'_> {
8569                fn from(value: getStateHistoryCountReturn) -> Self {
8570                    (value._0,)
8571                }
8572            }
8573            #[automatically_derived]
8574            #[doc(hidden)]
8575            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8576            for getStateHistoryCountReturn {
8577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8578                    Self { _0: tuple.0 }
8579                }
8580            }
8581        }
8582        #[automatically_derived]
8583        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8584            type Parameters<'a> = ();
8585            type Token<'a> = <Self::Parameters<
8586                'a,
8587            > as alloy_sol_types::SolType>::Token<'a>;
8588            type Return = alloy::sol_types::private::primitives::aliases::U256;
8589            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8590            type ReturnToken<'a> = <Self::ReturnTuple<
8591                'a,
8592            > as alloy_sol_types::SolType>::Token<'a>;
8593            const SIGNATURE: &'static str = "getStateHistoryCount()";
8594            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8595            #[inline]
8596            fn new<'a>(
8597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8598            ) -> Self {
8599                tuple.into()
8600            }
8601            #[inline]
8602            fn tokenize(&self) -> Self::Token<'_> {
8603                ()
8604            }
8605            #[inline]
8606            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8607                (
8608                    <alloy::sol_types::sol_data::Uint<
8609                        256,
8610                    > as alloy_sol_types::SolType>::tokenize(ret),
8611                )
8612            }
8613            #[inline]
8614            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8615                <Self::ReturnTuple<
8616                    '_,
8617                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8618                    .map(|r| {
8619                        let r: getStateHistoryCountReturn = r.into();
8620                        r._0
8621                    })
8622            }
8623            #[inline]
8624            fn abi_decode_returns_validate(
8625                data: &[u8],
8626            ) -> alloy_sol_types::Result<Self::Return> {
8627                <Self::ReturnTuple<
8628                    '_,
8629                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8630                    .map(|r| {
8631                        let r: getStateHistoryCountReturn = r.into();
8632                        r._0
8633                    })
8634            }
8635        }
8636    };
8637    #[derive(serde::Serialize, serde::Deserialize)]
8638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8639    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8640```solidity
8641function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8642```*/
8643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8644    #[derive(Clone)]
8645    pub struct getVersionCall;
8646    #[derive(serde::Serialize, serde::Deserialize)]
8647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8648    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8649    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8650    #[derive(Clone)]
8651    pub struct getVersionReturn {
8652        #[allow(missing_docs)]
8653        pub majorVersion: u8,
8654        #[allow(missing_docs)]
8655        pub minorVersion: u8,
8656        #[allow(missing_docs)]
8657        pub patchVersion: u8,
8658    }
8659    #[allow(
8660        non_camel_case_types,
8661        non_snake_case,
8662        clippy::pub_underscore_fields,
8663        clippy::style
8664    )]
8665    const _: () = {
8666        use alloy::sol_types as alloy_sol_types;
8667        {
8668            #[doc(hidden)]
8669            type UnderlyingSolTuple<'a> = ();
8670            #[doc(hidden)]
8671            type UnderlyingRustTuple<'a> = ();
8672            #[cfg(test)]
8673            #[allow(dead_code, unreachable_patterns)]
8674            fn _type_assertion(
8675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8676            ) {
8677                match _t {
8678                    alloy_sol_types::private::AssertTypeEq::<
8679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8680                    >(_) => {}
8681                }
8682            }
8683            #[automatically_derived]
8684            #[doc(hidden)]
8685            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8686                fn from(value: getVersionCall) -> Self {
8687                    ()
8688                }
8689            }
8690            #[automatically_derived]
8691            #[doc(hidden)]
8692            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8693                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8694                    Self
8695                }
8696            }
8697        }
8698        {
8699            #[doc(hidden)]
8700            type UnderlyingSolTuple<'a> = (
8701                alloy::sol_types::sol_data::Uint<8>,
8702                alloy::sol_types::sol_data::Uint<8>,
8703                alloy::sol_types::sol_data::Uint<8>,
8704            );
8705            #[doc(hidden)]
8706            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8707            #[cfg(test)]
8708            #[allow(dead_code, unreachable_patterns)]
8709            fn _type_assertion(
8710                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8711            ) {
8712                match _t {
8713                    alloy_sol_types::private::AssertTypeEq::<
8714                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8715                    >(_) => {}
8716                }
8717            }
8718            #[automatically_derived]
8719            #[doc(hidden)]
8720            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8721                fn from(value: getVersionReturn) -> Self {
8722                    (value.majorVersion, value.minorVersion, value.patchVersion)
8723                }
8724            }
8725            #[automatically_derived]
8726            #[doc(hidden)]
8727            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8728                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8729                    Self {
8730                        majorVersion: tuple.0,
8731                        minorVersion: tuple.1,
8732                        patchVersion: tuple.2,
8733                    }
8734                }
8735            }
8736        }
8737        impl getVersionReturn {
8738            fn _tokenize(
8739                &self,
8740            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8741                (
8742                    <alloy::sol_types::sol_data::Uint<
8743                        8,
8744                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8745                    <alloy::sol_types::sol_data::Uint<
8746                        8,
8747                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8748                    <alloy::sol_types::sol_data::Uint<
8749                        8,
8750                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8751                )
8752            }
8753        }
8754        #[automatically_derived]
8755        impl alloy_sol_types::SolCall for getVersionCall {
8756            type Parameters<'a> = ();
8757            type Token<'a> = <Self::Parameters<
8758                'a,
8759            > as alloy_sol_types::SolType>::Token<'a>;
8760            type Return = getVersionReturn;
8761            type ReturnTuple<'a> = (
8762                alloy::sol_types::sol_data::Uint<8>,
8763                alloy::sol_types::sol_data::Uint<8>,
8764                alloy::sol_types::sol_data::Uint<8>,
8765            );
8766            type ReturnToken<'a> = <Self::ReturnTuple<
8767                'a,
8768            > as alloy_sol_types::SolType>::Token<'a>;
8769            const SIGNATURE: &'static str = "getVersion()";
8770            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8771            #[inline]
8772            fn new<'a>(
8773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8774            ) -> Self {
8775                tuple.into()
8776            }
8777            #[inline]
8778            fn tokenize(&self) -> Self::Token<'_> {
8779                ()
8780            }
8781            #[inline]
8782            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8783                getVersionReturn::_tokenize(ret)
8784            }
8785            #[inline]
8786            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8787                <Self::ReturnTuple<
8788                    '_,
8789                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8790                    .map(Into::into)
8791            }
8792            #[inline]
8793            fn abi_decode_returns_validate(
8794                data: &[u8],
8795            ) -> alloy_sol_types::Result<Self::Return> {
8796                <Self::ReturnTuple<
8797                    '_,
8798                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8799                    .map(Into::into)
8800            }
8801        }
8802    };
8803    #[derive(serde::Serialize, serde::Deserialize)]
8804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8805    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8806```solidity
8807function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8808```*/
8809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8810    #[derive(Clone)]
8811    pub struct initializeCall {
8812        #[allow(missing_docs)]
8813        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8814        #[allow(missing_docs)]
8815        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8816        #[allow(missing_docs)]
8817        pub _stateHistoryRetentionPeriod: u32,
8818        #[allow(missing_docs)]
8819        pub owner: alloy::sol_types::private::Address,
8820    }
8821    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8823    #[derive(Clone)]
8824    pub struct initializeReturn {}
8825    #[allow(
8826        non_camel_case_types,
8827        non_snake_case,
8828        clippy::pub_underscore_fields,
8829        clippy::style
8830    )]
8831    const _: () = {
8832        use alloy::sol_types as alloy_sol_types;
8833        {
8834            #[doc(hidden)]
8835            type UnderlyingSolTuple<'a> = (
8836                LightClient::LightClientState,
8837                LightClient::StakeTableState,
8838                alloy::sol_types::sol_data::Uint<32>,
8839                alloy::sol_types::sol_data::Address,
8840            );
8841            #[doc(hidden)]
8842            type UnderlyingRustTuple<'a> = (
8843                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8844                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8845                u32,
8846                alloy::sol_types::private::Address,
8847            );
8848            #[cfg(test)]
8849            #[allow(dead_code, unreachable_patterns)]
8850            fn _type_assertion(
8851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8852            ) {
8853                match _t {
8854                    alloy_sol_types::private::AssertTypeEq::<
8855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8856                    >(_) => {}
8857                }
8858            }
8859            #[automatically_derived]
8860            #[doc(hidden)]
8861            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8862                fn from(value: initializeCall) -> Self {
8863                    (
8864                        value._genesis,
8865                        value._genesisStakeTableState,
8866                        value._stateHistoryRetentionPeriod,
8867                        value.owner,
8868                    )
8869                }
8870            }
8871            #[automatically_derived]
8872            #[doc(hidden)]
8873            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8874                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8875                    Self {
8876                        _genesis: tuple.0,
8877                        _genesisStakeTableState: tuple.1,
8878                        _stateHistoryRetentionPeriod: tuple.2,
8879                        owner: tuple.3,
8880                    }
8881                }
8882            }
8883        }
8884        {
8885            #[doc(hidden)]
8886            type UnderlyingSolTuple<'a> = ();
8887            #[doc(hidden)]
8888            type UnderlyingRustTuple<'a> = ();
8889            #[cfg(test)]
8890            #[allow(dead_code, unreachable_patterns)]
8891            fn _type_assertion(
8892                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8893            ) {
8894                match _t {
8895                    alloy_sol_types::private::AssertTypeEq::<
8896                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8897                    >(_) => {}
8898                }
8899            }
8900            #[automatically_derived]
8901            #[doc(hidden)]
8902            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8903                fn from(value: initializeReturn) -> Self {
8904                    ()
8905                }
8906            }
8907            #[automatically_derived]
8908            #[doc(hidden)]
8909            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8910                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8911                    Self {}
8912                }
8913            }
8914        }
8915        impl initializeReturn {
8916            fn _tokenize(
8917                &self,
8918            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8919                ()
8920            }
8921        }
8922        #[automatically_derived]
8923        impl alloy_sol_types::SolCall for initializeCall {
8924            type Parameters<'a> = (
8925                LightClient::LightClientState,
8926                LightClient::StakeTableState,
8927                alloy::sol_types::sol_data::Uint<32>,
8928                alloy::sol_types::sol_data::Address,
8929            );
8930            type Token<'a> = <Self::Parameters<
8931                'a,
8932            > as alloy_sol_types::SolType>::Token<'a>;
8933            type Return = initializeReturn;
8934            type ReturnTuple<'a> = ();
8935            type ReturnToken<'a> = <Self::ReturnTuple<
8936                'a,
8937            > as alloy_sol_types::SolType>::Token<'a>;
8938            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8939            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8940            #[inline]
8941            fn new<'a>(
8942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8943            ) -> Self {
8944                tuple.into()
8945            }
8946            #[inline]
8947            fn tokenize(&self) -> Self::Token<'_> {
8948                (
8949                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8950                        &self._genesis,
8951                    ),
8952                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8953                        &self._genesisStakeTableState,
8954                    ),
8955                    <alloy::sol_types::sol_data::Uint<
8956                        32,
8957                    > as alloy_sol_types::SolType>::tokenize(
8958                        &self._stateHistoryRetentionPeriod,
8959                    ),
8960                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8961                        &self.owner,
8962                    ),
8963                )
8964            }
8965            #[inline]
8966            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8967                initializeReturn::_tokenize(ret)
8968            }
8969            #[inline]
8970            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8971                <Self::ReturnTuple<
8972                    '_,
8973                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8974                    .map(Into::into)
8975            }
8976            #[inline]
8977            fn abi_decode_returns_validate(
8978                data: &[u8],
8979            ) -> alloy_sol_types::Result<Self::Return> {
8980                <Self::ReturnTuple<
8981                    '_,
8982                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8983                    .map(Into::into)
8984            }
8985        }
8986    };
8987    #[derive(serde::Serialize, serde::Deserialize)]
8988    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8989    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8990```solidity
8991function isPermissionedProverEnabled() external view returns (bool);
8992```*/
8993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8994    #[derive(Clone)]
8995    pub struct isPermissionedProverEnabledCall;
8996    #[derive(serde::Serialize, serde::Deserialize)]
8997    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8998    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9000    #[derive(Clone)]
9001    pub struct isPermissionedProverEnabledReturn {
9002        #[allow(missing_docs)]
9003        pub _0: bool,
9004    }
9005    #[allow(
9006        non_camel_case_types,
9007        non_snake_case,
9008        clippy::pub_underscore_fields,
9009        clippy::style
9010    )]
9011    const _: () = {
9012        use alloy::sol_types as alloy_sol_types;
9013        {
9014            #[doc(hidden)]
9015            type UnderlyingSolTuple<'a> = ();
9016            #[doc(hidden)]
9017            type UnderlyingRustTuple<'a> = ();
9018            #[cfg(test)]
9019            #[allow(dead_code, unreachable_patterns)]
9020            fn _type_assertion(
9021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9022            ) {
9023                match _t {
9024                    alloy_sol_types::private::AssertTypeEq::<
9025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9026                    >(_) => {}
9027                }
9028            }
9029            #[automatically_derived]
9030            #[doc(hidden)]
9031            impl ::core::convert::From<isPermissionedProverEnabledCall>
9032            for UnderlyingRustTuple<'_> {
9033                fn from(value: isPermissionedProverEnabledCall) -> Self {
9034                    ()
9035                }
9036            }
9037            #[automatically_derived]
9038            #[doc(hidden)]
9039            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9040            for isPermissionedProverEnabledCall {
9041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9042                    Self
9043                }
9044            }
9045        }
9046        {
9047            #[doc(hidden)]
9048            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9049            #[doc(hidden)]
9050            type UnderlyingRustTuple<'a> = (bool,);
9051            #[cfg(test)]
9052            #[allow(dead_code, unreachable_patterns)]
9053            fn _type_assertion(
9054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9055            ) {
9056                match _t {
9057                    alloy_sol_types::private::AssertTypeEq::<
9058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9059                    >(_) => {}
9060                }
9061            }
9062            #[automatically_derived]
9063            #[doc(hidden)]
9064            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9065            for UnderlyingRustTuple<'_> {
9066                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9067                    (value._0,)
9068                }
9069            }
9070            #[automatically_derived]
9071            #[doc(hidden)]
9072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9073            for isPermissionedProverEnabledReturn {
9074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9075                    Self { _0: tuple.0 }
9076                }
9077            }
9078        }
9079        #[automatically_derived]
9080        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9081            type Parameters<'a> = ();
9082            type Token<'a> = <Self::Parameters<
9083                'a,
9084            > as alloy_sol_types::SolType>::Token<'a>;
9085            type Return = bool;
9086            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9087            type ReturnToken<'a> = <Self::ReturnTuple<
9088                'a,
9089            > as alloy_sol_types::SolType>::Token<'a>;
9090            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9091            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9092            #[inline]
9093            fn new<'a>(
9094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9095            ) -> Self {
9096                tuple.into()
9097            }
9098            #[inline]
9099            fn tokenize(&self) -> Self::Token<'_> {
9100                ()
9101            }
9102            #[inline]
9103            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9104                (
9105                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9106                        ret,
9107                    ),
9108                )
9109            }
9110            #[inline]
9111            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9112                <Self::ReturnTuple<
9113                    '_,
9114                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9115                    .map(|r| {
9116                        let r: isPermissionedProverEnabledReturn = r.into();
9117                        r._0
9118                    })
9119            }
9120            #[inline]
9121            fn abi_decode_returns_validate(
9122                data: &[u8],
9123            ) -> alloy_sol_types::Result<Self::Return> {
9124                <Self::ReturnTuple<
9125                    '_,
9126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9127                    .map(|r| {
9128                        let r: isPermissionedProverEnabledReturn = r.into();
9129                        r._0
9130                    })
9131            }
9132        }
9133    };
9134    #[derive(serde::Serialize, serde::Deserialize)]
9135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9136    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9137```solidity
9138function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
9139```*/
9140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9141    #[derive(Clone)]
9142    pub struct lagOverEscapeHatchThresholdCall {
9143        #[allow(missing_docs)]
9144        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9145        #[allow(missing_docs)]
9146        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9147    }
9148    #[derive(serde::Serialize, serde::Deserialize)]
9149    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9150    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9152    #[derive(Clone)]
9153    pub struct lagOverEscapeHatchThresholdReturn {
9154        #[allow(missing_docs)]
9155        pub _0: bool,
9156    }
9157    #[allow(
9158        non_camel_case_types,
9159        non_snake_case,
9160        clippy::pub_underscore_fields,
9161        clippy::style
9162    )]
9163    const _: () = {
9164        use alloy::sol_types as alloy_sol_types;
9165        {
9166            #[doc(hidden)]
9167            type UnderlyingSolTuple<'a> = (
9168                alloy::sol_types::sol_data::Uint<256>,
9169                alloy::sol_types::sol_data::Uint<256>,
9170            );
9171            #[doc(hidden)]
9172            type UnderlyingRustTuple<'a> = (
9173                alloy::sol_types::private::primitives::aliases::U256,
9174                alloy::sol_types::private::primitives::aliases::U256,
9175            );
9176            #[cfg(test)]
9177            #[allow(dead_code, unreachable_patterns)]
9178            fn _type_assertion(
9179                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9180            ) {
9181                match _t {
9182                    alloy_sol_types::private::AssertTypeEq::<
9183                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9184                    >(_) => {}
9185                }
9186            }
9187            #[automatically_derived]
9188            #[doc(hidden)]
9189            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9190            for UnderlyingRustTuple<'_> {
9191                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9192                    (value.blockNumber, value.threshold)
9193                }
9194            }
9195            #[automatically_derived]
9196            #[doc(hidden)]
9197            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9198            for lagOverEscapeHatchThresholdCall {
9199                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9200                    Self {
9201                        blockNumber: tuple.0,
9202                        threshold: tuple.1,
9203                    }
9204                }
9205            }
9206        }
9207        {
9208            #[doc(hidden)]
9209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9210            #[doc(hidden)]
9211            type UnderlyingRustTuple<'a> = (bool,);
9212            #[cfg(test)]
9213            #[allow(dead_code, unreachable_patterns)]
9214            fn _type_assertion(
9215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9216            ) {
9217                match _t {
9218                    alloy_sol_types::private::AssertTypeEq::<
9219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9220                    >(_) => {}
9221                }
9222            }
9223            #[automatically_derived]
9224            #[doc(hidden)]
9225            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9226            for UnderlyingRustTuple<'_> {
9227                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9228                    (value._0,)
9229                }
9230            }
9231            #[automatically_derived]
9232            #[doc(hidden)]
9233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9234            for lagOverEscapeHatchThresholdReturn {
9235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9236                    Self { _0: tuple.0 }
9237                }
9238            }
9239        }
9240        #[automatically_derived]
9241        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9242            type Parameters<'a> = (
9243                alloy::sol_types::sol_data::Uint<256>,
9244                alloy::sol_types::sol_data::Uint<256>,
9245            );
9246            type Token<'a> = <Self::Parameters<
9247                'a,
9248            > as alloy_sol_types::SolType>::Token<'a>;
9249            type Return = bool;
9250            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9251            type ReturnToken<'a> = <Self::ReturnTuple<
9252                'a,
9253            > as alloy_sol_types::SolType>::Token<'a>;
9254            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9255            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9256            #[inline]
9257            fn new<'a>(
9258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9259            ) -> Self {
9260                tuple.into()
9261            }
9262            #[inline]
9263            fn tokenize(&self) -> Self::Token<'_> {
9264                (
9265                    <alloy::sol_types::sol_data::Uint<
9266                        256,
9267                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9268                    <alloy::sol_types::sol_data::Uint<
9269                        256,
9270                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9271                )
9272            }
9273            #[inline]
9274            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9275                (
9276                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9277                        ret,
9278                    ),
9279                )
9280            }
9281            #[inline]
9282            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9283                <Self::ReturnTuple<
9284                    '_,
9285                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9286                    .map(|r| {
9287                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9288                        r._0
9289                    })
9290            }
9291            #[inline]
9292            fn abi_decode_returns_validate(
9293                data: &[u8],
9294            ) -> alloy_sol_types::Result<Self::Return> {
9295                <Self::ReturnTuple<
9296                    '_,
9297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9298                    .map(|r| {
9299                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9300                        r._0
9301                    })
9302            }
9303        }
9304    };
9305    #[derive(serde::Serialize, serde::Deserialize)]
9306    #[derive()]
9307    /**Function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7`.
9308```solidity
9309function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
9310```*/
9311    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9312    #[derive(Clone)]
9313    pub struct newFinalizedStateCall {
9314        #[allow(missing_docs)]
9315        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9316        #[allow(missing_docs)]
9317        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9318    }
9319    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedStateCall) function.
9320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9321    #[derive(Clone)]
9322    pub struct newFinalizedStateReturn {}
9323    #[allow(
9324        non_camel_case_types,
9325        non_snake_case,
9326        clippy::pub_underscore_fields,
9327        clippy::style
9328    )]
9329    const _: () = {
9330        use alloy::sol_types as alloy_sol_types;
9331        {
9332            #[doc(hidden)]
9333            type UnderlyingSolTuple<'a> = (
9334                LightClient::LightClientState,
9335                IPlonkVerifier::PlonkProof,
9336            );
9337            #[doc(hidden)]
9338            type UnderlyingRustTuple<'a> = (
9339                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9340                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9341            );
9342            #[cfg(test)]
9343            #[allow(dead_code, unreachable_patterns)]
9344            fn _type_assertion(
9345                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9346            ) {
9347                match _t {
9348                    alloy_sol_types::private::AssertTypeEq::<
9349                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9350                    >(_) => {}
9351                }
9352            }
9353            #[automatically_derived]
9354            #[doc(hidden)]
9355            impl ::core::convert::From<newFinalizedStateCall>
9356            for UnderlyingRustTuple<'_> {
9357                fn from(value: newFinalizedStateCall) -> Self {
9358                    (value.newState, value.proof)
9359                }
9360            }
9361            #[automatically_derived]
9362            #[doc(hidden)]
9363            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9364            for newFinalizedStateCall {
9365                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9366                    Self {
9367                        newState: tuple.0,
9368                        proof: tuple.1,
9369                    }
9370                }
9371            }
9372        }
9373        {
9374            #[doc(hidden)]
9375            type UnderlyingSolTuple<'a> = ();
9376            #[doc(hidden)]
9377            type UnderlyingRustTuple<'a> = ();
9378            #[cfg(test)]
9379            #[allow(dead_code, unreachable_patterns)]
9380            fn _type_assertion(
9381                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9382            ) {
9383                match _t {
9384                    alloy_sol_types::private::AssertTypeEq::<
9385                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9386                    >(_) => {}
9387                }
9388            }
9389            #[automatically_derived]
9390            #[doc(hidden)]
9391            impl ::core::convert::From<newFinalizedStateReturn>
9392            for UnderlyingRustTuple<'_> {
9393                fn from(value: newFinalizedStateReturn) -> Self {
9394                    ()
9395                }
9396            }
9397            #[automatically_derived]
9398            #[doc(hidden)]
9399            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9400            for newFinalizedStateReturn {
9401                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9402                    Self {}
9403                }
9404            }
9405        }
9406        impl newFinalizedStateReturn {
9407            fn _tokenize(
9408                &self,
9409            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9410                ()
9411            }
9412        }
9413        #[automatically_derived]
9414        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9415            type Parameters<'a> = (
9416                LightClient::LightClientState,
9417                IPlonkVerifier::PlonkProof,
9418            );
9419            type Token<'a> = <Self::Parameters<
9420                'a,
9421            > as alloy_sol_types::SolType>::Token<'a>;
9422            type Return = newFinalizedStateReturn;
9423            type ReturnTuple<'a> = ();
9424            type ReturnToken<'a> = <Self::ReturnTuple<
9425                'a,
9426            > as alloy_sol_types::SolType>::Token<'a>;
9427            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
9428            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9429            #[inline]
9430            fn new<'a>(
9431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9432            ) -> Self {
9433                tuple.into()
9434            }
9435            #[inline]
9436            fn tokenize(&self) -> Self::Token<'_> {
9437                (
9438                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9439                        &self.newState,
9440                    ),
9441                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9442                        &self.proof,
9443                    ),
9444                )
9445            }
9446            #[inline]
9447            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9448                newFinalizedStateReturn::_tokenize(ret)
9449            }
9450            #[inline]
9451            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9452                <Self::ReturnTuple<
9453                    '_,
9454                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9455                    .map(Into::into)
9456            }
9457            #[inline]
9458            fn abi_decode_returns_validate(
9459                data: &[u8],
9460            ) -> alloy_sol_types::Result<Self::Return> {
9461                <Self::ReturnTuple<
9462                    '_,
9463                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9464                    .map(Into::into)
9465            }
9466        }
9467    };
9468    #[derive(serde::Serialize, serde::Deserialize)]
9469    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9470    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9471```solidity
9472function owner() external view returns (address);
9473```*/
9474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9475    #[derive(Clone)]
9476    pub struct ownerCall;
9477    #[derive(serde::Serialize, serde::Deserialize)]
9478    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9479    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9480    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9481    #[derive(Clone)]
9482    pub struct ownerReturn {
9483        #[allow(missing_docs)]
9484        pub _0: alloy::sol_types::private::Address,
9485    }
9486    #[allow(
9487        non_camel_case_types,
9488        non_snake_case,
9489        clippy::pub_underscore_fields,
9490        clippy::style
9491    )]
9492    const _: () = {
9493        use alloy::sol_types as alloy_sol_types;
9494        {
9495            #[doc(hidden)]
9496            type UnderlyingSolTuple<'a> = ();
9497            #[doc(hidden)]
9498            type UnderlyingRustTuple<'a> = ();
9499            #[cfg(test)]
9500            #[allow(dead_code, unreachable_patterns)]
9501            fn _type_assertion(
9502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9503            ) {
9504                match _t {
9505                    alloy_sol_types::private::AssertTypeEq::<
9506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9507                    >(_) => {}
9508                }
9509            }
9510            #[automatically_derived]
9511            #[doc(hidden)]
9512            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9513                fn from(value: ownerCall) -> Self {
9514                    ()
9515                }
9516            }
9517            #[automatically_derived]
9518            #[doc(hidden)]
9519            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9520                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9521                    Self
9522                }
9523            }
9524        }
9525        {
9526            #[doc(hidden)]
9527            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9528            #[doc(hidden)]
9529            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9530            #[cfg(test)]
9531            #[allow(dead_code, unreachable_patterns)]
9532            fn _type_assertion(
9533                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9534            ) {
9535                match _t {
9536                    alloy_sol_types::private::AssertTypeEq::<
9537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9538                    >(_) => {}
9539                }
9540            }
9541            #[automatically_derived]
9542            #[doc(hidden)]
9543            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9544                fn from(value: ownerReturn) -> Self {
9545                    (value._0,)
9546                }
9547            }
9548            #[automatically_derived]
9549            #[doc(hidden)]
9550            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9552                    Self { _0: tuple.0 }
9553                }
9554            }
9555        }
9556        #[automatically_derived]
9557        impl alloy_sol_types::SolCall for ownerCall {
9558            type Parameters<'a> = ();
9559            type Token<'a> = <Self::Parameters<
9560                'a,
9561            > as alloy_sol_types::SolType>::Token<'a>;
9562            type Return = alloy::sol_types::private::Address;
9563            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9564            type ReturnToken<'a> = <Self::ReturnTuple<
9565                'a,
9566            > as alloy_sol_types::SolType>::Token<'a>;
9567            const SIGNATURE: &'static str = "owner()";
9568            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9569            #[inline]
9570            fn new<'a>(
9571                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9572            ) -> Self {
9573                tuple.into()
9574            }
9575            #[inline]
9576            fn tokenize(&self) -> Self::Token<'_> {
9577                ()
9578            }
9579            #[inline]
9580            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9581                (
9582                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9583                        ret,
9584                    ),
9585                )
9586            }
9587            #[inline]
9588            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9589                <Self::ReturnTuple<
9590                    '_,
9591                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9592                    .map(|r| {
9593                        let r: ownerReturn = r.into();
9594                        r._0
9595                    })
9596            }
9597            #[inline]
9598            fn abi_decode_returns_validate(
9599                data: &[u8],
9600            ) -> alloy_sol_types::Result<Self::Return> {
9601                <Self::ReturnTuple<
9602                    '_,
9603                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9604                    .map(|r| {
9605                        let r: ownerReturn = r.into();
9606                        r._0
9607                    })
9608            }
9609        }
9610    };
9611    #[derive(serde::Serialize, serde::Deserialize)]
9612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9613    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9614```solidity
9615function permissionedProver() external view returns (address);
9616```*/
9617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9618    #[derive(Clone)]
9619    pub struct permissionedProverCall;
9620    #[derive(serde::Serialize, serde::Deserialize)]
9621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9622    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9624    #[derive(Clone)]
9625    pub struct permissionedProverReturn {
9626        #[allow(missing_docs)]
9627        pub _0: alloy::sol_types::private::Address,
9628    }
9629    #[allow(
9630        non_camel_case_types,
9631        non_snake_case,
9632        clippy::pub_underscore_fields,
9633        clippy::style
9634    )]
9635    const _: () = {
9636        use alloy::sol_types as alloy_sol_types;
9637        {
9638            #[doc(hidden)]
9639            type UnderlyingSolTuple<'a> = ();
9640            #[doc(hidden)]
9641            type UnderlyingRustTuple<'a> = ();
9642            #[cfg(test)]
9643            #[allow(dead_code, unreachable_patterns)]
9644            fn _type_assertion(
9645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9646            ) {
9647                match _t {
9648                    alloy_sol_types::private::AssertTypeEq::<
9649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9650                    >(_) => {}
9651                }
9652            }
9653            #[automatically_derived]
9654            #[doc(hidden)]
9655            impl ::core::convert::From<permissionedProverCall>
9656            for UnderlyingRustTuple<'_> {
9657                fn from(value: permissionedProverCall) -> Self {
9658                    ()
9659                }
9660            }
9661            #[automatically_derived]
9662            #[doc(hidden)]
9663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9664            for permissionedProverCall {
9665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9666                    Self
9667                }
9668            }
9669        }
9670        {
9671            #[doc(hidden)]
9672            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9673            #[doc(hidden)]
9674            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9675            #[cfg(test)]
9676            #[allow(dead_code, unreachable_patterns)]
9677            fn _type_assertion(
9678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9679            ) {
9680                match _t {
9681                    alloy_sol_types::private::AssertTypeEq::<
9682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9683                    >(_) => {}
9684                }
9685            }
9686            #[automatically_derived]
9687            #[doc(hidden)]
9688            impl ::core::convert::From<permissionedProverReturn>
9689            for UnderlyingRustTuple<'_> {
9690                fn from(value: permissionedProverReturn) -> Self {
9691                    (value._0,)
9692                }
9693            }
9694            #[automatically_derived]
9695            #[doc(hidden)]
9696            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9697            for permissionedProverReturn {
9698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9699                    Self { _0: tuple.0 }
9700                }
9701            }
9702        }
9703        #[automatically_derived]
9704        impl alloy_sol_types::SolCall for permissionedProverCall {
9705            type Parameters<'a> = ();
9706            type Token<'a> = <Self::Parameters<
9707                'a,
9708            > as alloy_sol_types::SolType>::Token<'a>;
9709            type Return = alloy::sol_types::private::Address;
9710            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9711            type ReturnToken<'a> = <Self::ReturnTuple<
9712                'a,
9713            > as alloy_sol_types::SolType>::Token<'a>;
9714            const SIGNATURE: &'static str = "permissionedProver()";
9715            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9716            #[inline]
9717            fn new<'a>(
9718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9719            ) -> Self {
9720                tuple.into()
9721            }
9722            #[inline]
9723            fn tokenize(&self) -> Self::Token<'_> {
9724                ()
9725            }
9726            #[inline]
9727            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9728                (
9729                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9730                        ret,
9731                    ),
9732                )
9733            }
9734            #[inline]
9735            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9736                <Self::ReturnTuple<
9737                    '_,
9738                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9739                    .map(|r| {
9740                        let r: permissionedProverReturn = r.into();
9741                        r._0
9742                    })
9743            }
9744            #[inline]
9745            fn abi_decode_returns_validate(
9746                data: &[u8],
9747            ) -> alloy_sol_types::Result<Self::Return> {
9748                <Self::ReturnTuple<
9749                    '_,
9750                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9751                    .map(|r| {
9752                        let r: permissionedProverReturn = r.into();
9753                        r._0
9754                    })
9755            }
9756        }
9757    };
9758    #[derive(serde::Serialize, serde::Deserialize)]
9759    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9760    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9761```solidity
9762function proxiableUUID() external view returns (bytes32);
9763```*/
9764    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9765    #[derive(Clone)]
9766    pub struct proxiableUUIDCall;
9767    #[derive(serde::Serialize, serde::Deserialize)]
9768    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9769    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9771    #[derive(Clone)]
9772    pub struct proxiableUUIDReturn {
9773        #[allow(missing_docs)]
9774        pub _0: alloy::sol_types::private::FixedBytes<32>,
9775    }
9776    #[allow(
9777        non_camel_case_types,
9778        non_snake_case,
9779        clippy::pub_underscore_fields,
9780        clippy::style
9781    )]
9782    const _: () = {
9783        use alloy::sol_types as alloy_sol_types;
9784        {
9785            #[doc(hidden)]
9786            type UnderlyingSolTuple<'a> = ();
9787            #[doc(hidden)]
9788            type UnderlyingRustTuple<'a> = ();
9789            #[cfg(test)]
9790            #[allow(dead_code, unreachable_patterns)]
9791            fn _type_assertion(
9792                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9793            ) {
9794                match _t {
9795                    alloy_sol_types::private::AssertTypeEq::<
9796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9797                    >(_) => {}
9798                }
9799            }
9800            #[automatically_derived]
9801            #[doc(hidden)]
9802            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9803                fn from(value: proxiableUUIDCall) -> Self {
9804                    ()
9805                }
9806            }
9807            #[automatically_derived]
9808            #[doc(hidden)]
9809            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9811                    Self
9812                }
9813            }
9814        }
9815        {
9816            #[doc(hidden)]
9817            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9818            #[doc(hidden)]
9819            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9820            #[cfg(test)]
9821            #[allow(dead_code, unreachable_patterns)]
9822            fn _type_assertion(
9823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9824            ) {
9825                match _t {
9826                    alloy_sol_types::private::AssertTypeEq::<
9827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9828                    >(_) => {}
9829                }
9830            }
9831            #[automatically_derived]
9832            #[doc(hidden)]
9833            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9834                fn from(value: proxiableUUIDReturn) -> Self {
9835                    (value._0,)
9836                }
9837            }
9838            #[automatically_derived]
9839            #[doc(hidden)]
9840            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9842                    Self { _0: tuple.0 }
9843                }
9844            }
9845        }
9846        #[automatically_derived]
9847        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9848            type Parameters<'a> = ();
9849            type Token<'a> = <Self::Parameters<
9850                'a,
9851            > as alloy_sol_types::SolType>::Token<'a>;
9852            type Return = alloy::sol_types::private::FixedBytes<32>;
9853            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9854            type ReturnToken<'a> = <Self::ReturnTuple<
9855                'a,
9856            > as alloy_sol_types::SolType>::Token<'a>;
9857            const SIGNATURE: &'static str = "proxiableUUID()";
9858            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9859            #[inline]
9860            fn new<'a>(
9861                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9862            ) -> Self {
9863                tuple.into()
9864            }
9865            #[inline]
9866            fn tokenize(&self) -> Self::Token<'_> {
9867                ()
9868            }
9869            #[inline]
9870            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9871                (
9872                    <alloy::sol_types::sol_data::FixedBytes<
9873                        32,
9874                    > as alloy_sol_types::SolType>::tokenize(ret),
9875                )
9876            }
9877            #[inline]
9878            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9879                <Self::ReturnTuple<
9880                    '_,
9881                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9882                    .map(|r| {
9883                        let r: proxiableUUIDReturn = r.into();
9884                        r._0
9885                    })
9886            }
9887            #[inline]
9888            fn abi_decode_returns_validate(
9889                data: &[u8],
9890            ) -> alloy_sol_types::Result<Self::Return> {
9891                <Self::ReturnTuple<
9892                    '_,
9893                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9894                    .map(|r| {
9895                        let r: proxiableUUIDReturn = r.into();
9896                        r._0
9897                    })
9898            }
9899        }
9900    };
9901    #[derive(serde::Serialize, serde::Deserialize)]
9902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9903    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9904```solidity
9905function renounceOwnership() external;
9906```*/
9907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9908    #[derive(Clone)]
9909    pub struct renounceOwnershipCall;
9910    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9912    #[derive(Clone)]
9913    pub struct renounceOwnershipReturn {}
9914    #[allow(
9915        non_camel_case_types,
9916        non_snake_case,
9917        clippy::pub_underscore_fields,
9918        clippy::style
9919    )]
9920    const _: () = {
9921        use alloy::sol_types as alloy_sol_types;
9922        {
9923            #[doc(hidden)]
9924            type UnderlyingSolTuple<'a> = ();
9925            #[doc(hidden)]
9926            type UnderlyingRustTuple<'a> = ();
9927            #[cfg(test)]
9928            #[allow(dead_code, unreachable_patterns)]
9929            fn _type_assertion(
9930                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9931            ) {
9932                match _t {
9933                    alloy_sol_types::private::AssertTypeEq::<
9934                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9935                    >(_) => {}
9936                }
9937            }
9938            #[automatically_derived]
9939            #[doc(hidden)]
9940            impl ::core::convert::From<renounceOwnershipCall>
9941            for UnderlyingRustTuple<'_> {
9942                fn from(value: renounceOwnershipCall) -> Self {
9943                    ()
9944                }
9945            }
9946            #[automatically_derived]
9947            #[doc(hidden)]
9948            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9949            for renounceOwnershipCall {
9950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9951                    Self
9952                }
9953            }
9954        }
9955        {
9956            #[doc(hidden)]
9957            type UnderlyingSolTuple<'a> = ();
9958            #[doc(hidden)]
9959            type UnderlyingRustTuple<'a> = ();
9960            #[cfg(test)]
9961            #[allow(dead_code, unreachable_patterns)]
9962            fn _type_assertion(
9963                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9964            ) {
9965                match _t {
9966                    alloy_sol_types::private::AssertTypeEq::<
9967                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9968                    >(_) => {}
9969                }
9970            }
9971            #[automatically_derived]
9972            #[doc(hidden)]
9973            impl ::core::convert::From<renounceOwnershipReturn>
9974            for UnderlyingRustTuple<'_> {
9975                fn from(value: renounceOwnershipReturn) -> Self {
9976                    ()
9977                }
9978            }
9979            #[automatically_derived]
9980            #[doc(hidden)]
9981            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9982            for renounceOwnershipReturn {
9983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9984                    Self {}
9985                }
9986            }
9987        }
9988        impl renounceOwnershipReturn {
9989            fn _tokenize(
9990                &self,
9991            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9992                ()
9993            }
9994        }
9995        #[automatically_derived]
9996        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9997            type Parameters<'a> = ();
9998            type Token<'a> = <Self::Parameters<
9999                'a,
10000            > as alloy_sol_types::SolType>::Token<'a>;
10001            type Return = renounceOwnershipReturn;
10002            type ReturnTuple<'a> = ();
10003            type ReturnToken<'a> = <Self::ReturnTuple<
10004                'a,
10005            > as alloy_sol_types::SolType>::Token<'a>;
10006            const SIGNATURE: &'static str = "renounceOwnership()";
10007            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10008            #[inline]
10009            fn new<'a>(
10010                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10011            ) -> Self {
10012                tuple.into()
10013            }
10014            #[inline]
10015            fn tokenize(&self) -> Self::Token<'_> {
10016                ()
10017            }
10018            #[inline]
10019            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10020                renounceOwnershipReturn::_tokenize(ret)
10021            }
10022            #[inline]
10023            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10024                <Self::ReturnTuple<
10025                    '_,
10026                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10027                    .map(Into::into)
10028            }
10029            #[inline]
10030            fn abi_decode_returns_validate(
10031                data: &[u8],
10032            ) -> alloy_sol_types::Result<Self::Return> {
10033                <Self::ReturnTuple<
10034                    '_,
10035                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10036                    .map(Into::into)
10037            }
10038        }
10039    };
10040    #[derive(serde::Serialize, serde::Deserialize)]
10041    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10042    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
10043```solidity
10044function setFinalizedState(LightClient.LightClientState memory state) external;
10045```*/
10046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10047    #[derive(Clone)]
10048    pub struct setFinalizedStateCall {
10049        #[allow(missing_docs)]
10050        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10051    }
10052    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
10053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10054    #[derive(Clone)]
10055    pub struct setFinalizedStateReturn {}
10056    #[allow(
10057        non_camel_case_types,
10058        non_snake_case,
10059        clippy::pub_underscore_fields,
10060        clippy::style
10061    )]
10062    const _: () = {
10063        use alloy::sol_types as alloy_sol_types;
10064        {
10065            #[doc(hidden)]
10066            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
10067            #[doc(hidden)]
10068            type UnderlyingRustTuple<'a> = (
10069                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10070            );
10071            #[cfg(test)]
10072            #[allow(dead_code, unreachable_patterns)]
10073            fn _type_assertion(
10074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10075            ) {
10076                match _t {
10077                    alloy_sol_types::private::AssertTypeEq::<
10078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10079                    >(_) => {}
10080                }
10081            }
10082            #[automatically_derived]
10083            #[doc(hidden)]
10084            impl ::core::convert::From<setFinalizedStateCall>
10085            for UnderlyingRustTuple<'_> {
10086                fn from(value: setFinalizedStateCall) -> Self {
10087                    (value.state,)
10088                }
10089            }
10090            #[automatically_derived]
10091            #[doc(hidden)]
10092            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10093            for setFinalizedStateCall {
10094                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10095                    Self { state: tuple.0 }
10096                }
10097            }
10098        }
10099        {
10100            #[doc(hidden)]
10101            type UnderlyingSolTuple<'a> = ();
10102            #[doc(hidden)]
10103            type UnderlyingRustTuple<'a> = ();
10104            #[cfg(test)]
10105            #[allow(dead_code, unreachable_patterns)]
10106            fn _type_assertion(
10107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10108            ) {
10109                match _t {
10110                    alloy_sol_types::private::AssertTypeEq::<
10111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10112                    >(_) => {}
10113                }
10114            }
10115            #[automatically_derived]
10116            #[doc(hidden)]
10117            impl ::core::convert::From<setFinalizedStateReturn>
10118            for UnderlyingRustTuple<'_> {
10119                fn from(value: setFinalizedStateReturn) -> Self {
10120                    ()
10121                }
10122            }
10123            #[automatically_derived]
10124            #[doc(hidden)]
10125            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10126            for setFinalizedStateReturn {
10127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10128                    Self {}
10129                }
10130            }
10131        }
10132        impl setFinalizedStateReturn {
10133            fn _tokenize(
10134                &self,
10135            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10136                ()
10137            }
10138        }
10139        #[automatically_derived]
10140        impl alloy_sol_types::SolCall for setFinalizedStateCall {
10141            type Parameters<'a> = (LightClient::LightClientState,);
10142            type Token<'a> = <Self::Parameters<
10143                'a,
10144            > as alloy_sol_types::SolType>::Token<'a>;
10145            type Return = setFinalizedStateReturn;
10146            type ReturnTuple<'a> = ();
10147            type ReturnToken<'a> = <Self::ReturnTuple<
10148                'a,
10149            > as alloy_sol_types::SolType>::Token<'a>;
10150            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
10151            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
10152            #[inline]
10153            fn new<'a>(
10154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10155            ) -> Self {
10156                tuple.into()
10157            }
10158            #[inline]
10159            fn tokenize(&self) -> Self::Token<'_> {
10160                (
10161                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10162                        &self.state,
10163                    ),
10164                )
10165            }
10166            #[inline]
10167            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10168                setFinalizedStateReturn::_tokenize(ret)
10169            }
10170            #[inline]
10171            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10172                <Self::ReturnTuple<
10173                    '_,
10174                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10175                    .map(Into::into)
10176            }
10177            #[inline]
10178            fn abi_decode_returns_validate(
10179                data: &[u8],
10180            ) -> alloy_sol_types::Result<Self::Return> {
10181                <Self::ReturnTuple<
10182                    '_,
10183                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10184                    .map(Into::into)
10185            }
10186        }
10187    };
10188    #[derive(serde::Serialize, serde::Deserialize)]
10189    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10190    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
10191```solidity
10192function setHotShotDownSince(uint256 l1Height) external;
10193```*/
10194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10195    #[derive(Clone)]
10196    pub struct setHotShotDownSinceCall {
10197        #[allow(missing_docs)]
10198        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
10199    }
10200    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
10201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10202    #[derive(Clone)]
10203    pub struct setHotShotDownSinceReturn {}
10204    #[allow(
10205        non_camel_case_types,
10206        non_snake_case,
10207        clippy::pub_underscore_fields,
10208        clippy::style
10209    )]
10210    const _: () = {
10211        use alloy::sol_types as alloy_sol_types;
10212        {
10213            #[doc(hidden)]
10214            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10215            #[doc(hidden)]
10216            type UnderlyingRustTuple<'a> = (
10217                alloy::sol_types::private::primitives::aliases::U256,
10218            );
10219            #[cfg(test)]
10220            #[allow(dead_code, unreachable_patterns)]
10221            fn _type_assertion(
10222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10223            ) {
10224                match _t {
10225                    alloy_sol_types::private::AssertTypeEq::<
10226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10227                    >(_) => {}
10228                }
10229            }
10230            #[automatically_derived]
10231            #[doc(hidden)]
10232            impl ::core::convert::From<setHotShotDownSinceCall>
10233            for UnderlyingRustTuple<'_> {
10234                fn from(value: setHotShotDownSinceCall) -> Self {
10235                    (value.l1Height,)
10236                }
10237            }
10238            #[automatically_derived]
10239            #[doc(hidden)]
10240            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10241            for setHotShotDownSinceCall {
10242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10243                    Self { l1Height: tuple.0 }
10244                }
10245            }
10246        }
10247        {
10248            #[doc(hidden)]
10249            type UnderlyingSolTuple<'a> = ();
10250            #[doc(hidden)]
10251            type UnderlyingRustTuple<'a> = ();
10252            #[cfg(test)]
10253            #[allow(dead_code, unreachable_patterns)]
10254            fn _type_assertion(
10255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10256            ) {
10257                match _t {
10258                    alloy_sol_types::private::AssertTypeEq::<
10259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10260                    >(_) => {}
10261                }
10262            }
10263            #[automatically_derived]
10264            #[doc(hidden)]
10265            impl ::core::convert::From<setHotShotDownSinceReturn>
10266            for UnderlyingRustTuple<'_> {
10267                fn from(value: setHotShotDownSinceReturn) -> Self {
10268                    ()
10269                }
10270            }
10271            #[automatically_derived]
10272            #[doc(hidden)]
10273            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10274            for setHotShotDownSinceReturn {
10275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10276                    Self {}
10277                }
10278            }
10279        }
10280        impl setHotShotDownSinceReturn {
10281            fn _tokenize(
10282                &self,
10283            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10284                ()
10285            }
10286        }
10287        #[automatically_derived]
10288        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
10289            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10290            type Token<'a> = <Self::Parameters<
10291                'a,
10292            > as alloy_sol_types::SolType>::Token<'a>;
10293            type Return = setHotShotDownSinceReturn;
10294            type ReturnTuple<'a> = ();
10295            type ReturnToken<'a> = <Self::ReturnTuple<
10296                'a,
10297            > as alloy_sol_types::SolType>::Token<'a>;
10298            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
10299            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
10300            #[inline]
10301            fn new<'a>(
10302                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10303            ) -> Self {
10304                tuple.into()
10305            }
10306            #[inline]
10307            fn tokenize(&self) -> Self::Token<'_> {
10308                (
10309                    <alloy::sol_types::sol_data::Uint<
10310                        256,
10311                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
10312                )
10313            }
10314            #[inline]
10315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10316                setHotShotDownSinceReturn::_tokenize(ret)
10317            }
10318            #[inline]
10319            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10320                <Self::ReturnTuple<
10321                    '_,
10322                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10323                    .map(Into::into)
10324            }
10325            #[inline]
10326            fn abi_decode_returns_validate(
10327                data: &[u8],
10328            ) -> alloy_sol_types::Result<Self::Return> {
10329                <Self::ReturnTuple<
10330                    '_,
10331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10332                    .map(Into::into)
10333            }
10334        }
10335    };
10336    #[derive(serde::Serialize, serde::Deserialize)]
10337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10338    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
10339```solidity
10340function setHotShotUp() external;
10341```*/
10342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10343    #[derive(Clone)]
10344    pub struct setHotShotUpCall;
10345    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
10346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10347    #[derive(Clone)]
10348    pub struct setHotShotUpReturn {}
10349    #[allow(
10350        non_camel_case_types,
10351        non_snake_case,
10352        clippy::pub_underscore_fields,
10353        clippy::style
10354    )]
10355    const _: () = {
10356        use alloy::sol_types as alloy_sol_types;
10357        {
10358            #[doc(hidden)]
10359            type UnderlyingSolTuple<'a> = ();
10360            #[doc(hidden)]
10361            type UnderlyingRustTuple<'a> = ();
10362            #[cfg(test)]
10363            #[allow(dead_code, unreachable_patterns)]
10364            fn _type_assertion(
10365                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10366            ) {
10367                match _t {
10368                    alloy_sol_types::private::AssertTypeEq::<
10369                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10370                    >(_) => {}
10371                }
10372            }
10373            #[automatically_derived]
10374            #[doc(hidden)]
10375            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
10376                fn from(value: setHotShotUpCall) -> Self {
10377                    ()
10378                }
10379            }
10380            #[automatically_derived]
10381            #[doc(hidden)]
10382            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
10383                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10384                    Self
10385                }
10386            }
10387        }
10388        {
10389            #[doc(hidden)]
10390            type UnderlyingSolTuple<'a> = ();
10391            #[doc(hidden)]
10392            type UnderlyingRustTuple<'a> = ();
10393            #[cfg(test)]
10394            #[allow(dead_code, unreachable_patterns)]
10395            fn _type_assertion(
10396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10397            ) {
10398                match _t {
10399                    alloy_sol_types::private::AssertTypeEq::<
10400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10401                    >(_) => {}
10402                }
10403            }
10404            #[automatically_derived]
10405            #[doc(hidden)]
10406            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
10407                fn from(value: setHotShotUpReturn) -> Self {
10408                    ()
10409                }
10410            }
10411            #[automatically_derived]
10412            #[doc(hidden)]
10413            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
10414                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10415                    Self {}
10416                }
10417            }
10418        }
10419        impl setHotShotUpReturn {
10420            fn _tokenize(
10421                &self,
10422            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10423                ()
10424            }
10425        }
10426        #[automatically_derived]
10427        impl alloy_sol_types::SolCall for setHotShotUpCall {
10428            type Parameters<'a> = ();
10429            type Token<'a> = <Self::Parameters<
10430                'a,
10431            > as alloy_sol_types::SolType>::Token<'a>;
10432            type Return = setHotShotUpReturn;
10433            type ReturnTuple<'a> = ();
10434            type ReturnToken<'a> = <Self::ReturnTuple<
10435                'a,
10436            > as alloy_sol_types::SolType>::Token<'a>;
10437            const SIGNATURE: &'static str = "setHotShotUp()";
10438            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
10439            #[inline]
10440            fn new<'a>(
10441                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10442            ) -> Self {
10443                tuple.into()
10444            }
10445            #[inline]
10446            fn tokenize(&self) -> Self::Token<'_> {
10447                ()
10448            }
10449            #[inline]
10450            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10451                setHotShotUpReturn::_tokenize(ret)
10452            }
10453            #[inline]
10454            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10455                <Self::ReturnTuple<
10456                    '_,
10457                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10458                    .map(Into::into)
10459            }
10460            #[inline]
10461            fn abi_decode_returns_validate(
10462                data: &[u8],
10463            ) -> alloy_sol_types::Result<Self::Return> {
10464                <Self::ReturnTuple<
10465                    '_,
10466                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10467                    .map(Into::into)
10468            }
10469        }
10470    };
10471    #[derive(serde::Serialize, serde::Deserialize)]
10472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10473    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10474```solidity
10475function setPermissionedProver(address prover) external;
10476```*/
10477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10478    #[derive(Clone)]
10479    pub struct setPermissionedProverCall {
10480        #[allow(missing_docs)]
10481        pub prover: alloy::sol_types::private::Address,
10482    }
10483    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10485    #[derive(Clone)]
10486    pub struct setPermissionedProverReturn {}
10487    #[allow(
10488        non_camel_case_types,
10489        non_snake_case,
10490        clippy::pub_underscore_fields,
10491        clippy::style
10492    )]
10493    const _: () = {
10494        use alloy::sol_types as alloy_sol_types;
10495        {
10496            #[doc(hidden)]
10497            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10498            #[doc(hidden)]
10499            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10500            #[cfg(test)]
10501            #[allow(dead_code, unreachable_patterns)]
10502            fn _type_assertion(
10503                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10504            ) {
10505                match _t {
10506                    alloy_sol_types::private::AssertTypeEq::<
10507                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10508                    >(_) => {}
10509                }
10510            }
10511            #[automatically_derived]
10512            #[doc(hidden)]
10513            impl ::core::convert::From<setPermissionedProverCall>
10514            for UnderlyingRustTuple<'_> {
10515                fn from(value: setPermissionedProverCall) -> Self {
10516                    (value.prover,)
10517                }
10518            }
10519            #[automatically_derived]
10520            #[doc(hidden)]
10521            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10522            for setPermissionedProverCall {
10523                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10524                    Self { prover: tuple.0 }
10525                }
10526            }
10527        }
10528        {
10529            #[doc(hidden)]
10530            type UnderlyingSolTuple<'a> = ();
10531            #[doc(hidden)]
10532            type UnderlyingRustTuple<'a> = ();
10533            #[cfg(test)]
10534            #[allow(dead_code, unreachable_patterns)]
10535            fn _type_assertion(
10536                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10537            ) {
10538                match _t {
10539                    alloy_sol_types::private::AssertTypeEq::<
10540                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10541                    >(_) => {}
10542                }
10543            }
10544            #[automatically_derived]
10545            #[doc(hidden)]
10546            impl ::core::convert::From<setPermissionedProverReturn>
10547            for UnderlyingRustTuple<'_> {
10548                fn from(value: setPermissionedProverReturn) -> Self {
10549                    ()
10550                }
10551            }
10552            #[automatically_derived]
10553            #[doc(hidden)]
10554            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10555            for setPermissionedProverReturn {
10556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10557                    Self {}
10558                }
10559            }
10560        }
10561        impl setPermissionedProverReturn {
10562            fn _tokenize(
10563                &self,
10564            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
10565                '_,
10566            > {
10567                ()
10568            }
10569        }
10570        #[automatically_derived]
10571        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10572            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10573            type Token<'a> = <Self::Parameters<
10574                'a,
10575            > as alloy_sol_types::SolType>::Token<'a>;
10576            type Return = setPermissionedProverReturn;
10577            type ReturnTuple<'a> = ();
10578            type ReturnToken<'a> = <Self::ReturnTuple<
10579                'a,
10580            > as alloy_sol_types::SolType>::Token<'a>;
10581            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10582            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10583            #[inline]
10584            fn new<'a>(
10585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10586            ) -> Self {
10587                tuple.into()
10588            }
10589            #[inline]
10590            fn tokenize(&self) -> Self::Token<'_> {
10591                (
10592                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10593                        &self.prover,
10594                    ),
10595                )
10596            }
10597            #[inline]
10598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10599                setPermissionedProverReturn::_tokenize(ret)
10600            }
10601            #[inline]
10602            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10603                <Self::ReturnTuple<
10604                    '_,
10605                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10606                    .map(Into::into)
10607            }
10608            #[inline]
10609            fn abi_decode_returns_validate(
10610                data: &[u8],
10611            ) -> alloy_sol_types::Result<Self::Return> {
10612                <Self::ReturnTuple<
10613                    '_,
10614                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10615                    .map(Into::into)
10616            }
10617        }
10618    };
10619    #[derive(serde::Serialize, serde::Deserialize)]
10620    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10621    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
10622```solidity
10623function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
10624```*/
10625    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10626    #[derive(Clone)]
10627    pub struct setStateHistoryCall {
10628        #[allow(missing_docs)]
10629        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
10630            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10631        >,
10632    }
10633    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
10634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10635    #[derive(Clone)]
10636    pub struct setStateHistoryReturn {}
10637    #[allow(
10638        non_camel_case_types,
10639        non_snake_case,
10640        clippy::pub_underscore_fields,
10641        clippy::style
10642    )]
10643    const _: () = {
10644        use alloy::sol_types as alloy_sol_types;
10645        {
10646            #[doc(hidden)]
10647            type UnderlyingSolTuple<'a> = (
10648                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10649            );
10650            #[doc(hidden)]
10651            type UnderlyingRustTuple<'a> = (
10652                alloy::sol_types::private::Vec<
10653                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10654                >,
10655            );
10656            #[cfg(test)]
10657            #[allow(dead_code, unreachable_patterns)]
10658            fn _type_assertion(
10659                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10660            ) {
10661                match _t {
10662                    alloy_sol_types::private::AssertTypeEq::<
10663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10664                    >(_) => {}
10665                }
10666            }
10667            #[automatically_derived]
10668            #[doc(hidden)]
10669            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
10670                fn from(value: setStateHistoryCall) -> Self {
10671                    (value._stateHistoryCommitments,)
10672                }
10673            }
10674            #[automatically_derived]
10675            #[doc(hidden)]
10676            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
10677                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10678                    Self {
10679                        _stateHistoryCommitments: tuple.0,
10680                    }
10681                }
10682            }
10683        }
10684        {
10685            #[doc(hidden)]
10686            type UnderlyingSolTuple<'a> = ();
10687            #[doc(hidden)]
10688            type UnderlyingRustTuple<'a> = ();
10689            #[cfg(test)]
10690            #[allow(dead_code, unreachable_patterns)]
10691            fn _type_assertion(
10692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10693            ) {
10694                match _t {
10695                    alloy_sol_types::private::AssertTypeEq::<
10696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10697                    >(_) => {}
10698                }
10699            }
10700            #[automatically_derived]
10701            #[doc(hidden)]
10702            impl ::core::convert::From<setStateHistoryReturn>
10703            for UnderlyingRustTuple<'_> {
10704                fn from(value: setStateHistoryReturn) -> Self {
10705                    ()
10706                }
10707            }
10708            #[automatically_derived]
10709            #[doc(hidden)]
10710            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10711            for setStateHistoryReturn {
10712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10713                    Self {}
10714                }
10715            }
10716        }
10717        impl setStateHistoryReturn {
10718            fn _tokenize(
10719                &self,
10720            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10721                ()
10722            }
10723        }
10724        #[automatically_derived]
10725        impl alloy_sol_types::SolCall for setStateHistoryCall {
10726            type Parameters<'a> = (
10727                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10728            );
10729            type Token<'a> = <Self::Parameters<
10730                'a,
10731            > as alloy_sol_types::SolType>::Token<'a>;
10732            type Return = setStateHistoryReturn;
10733            type ReturnTuple<'a> = ();
10734            type ReturnToken<'a> = <Self::ReturnTuple<
10735                'a,
10736            > as alloy_sol_types::SolType>::Token<'a>;
10737            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
10738            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
10739            #[inline]
10740            fn new<'a>(
10741                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10742            ) -> Self {
10743                tuple.into()
10744            }
10745            #[inline]
10746            fn tokenize(&self) -> Self::Token<'_> {
10747                (
10748                    <alloy::sol_types::sol_data::Array<
10749                        LightClient::StateHistoryCommitment,
10750                    > as alloy_sol_types::SolType>::tokenize(
10751                        &self._stateHistoryCommitments,
10752                    ),
10753                )
10754            }
10755            #[inline]
10756            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10757                setStateHistoryReturn::_tokenize(ret)
10758            }
10759            #[inline]
10760            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10761                <Self::ReturnTuple<
10762                    '_,
10763                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10764                    .map(Into::into)
10765            }
10766            #[inline]
10767            fn abi_decode_returns_validate(
10768                data: &[u8],
10769            ) -> alloy_sol_types::Result<Self::Return> {
10770                <Self::ReturnTuple<
10771                    '_,
10772                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10773                    .map(Into::into)
10774            }
10775        }
10776    };
10777    #[derive(serde::Serialize, serde::Deserialize)]
10778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10779    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10780```solidity
10781function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10782```*/
10783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10784    #[derive(Clone)]
10785    pub struct setstateHistoryRetentionPeriodCall {
10786        #[allow(missing_docs)]
10787        pub historySeconds: u32,
10788    }
10789    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
10790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10791    #[derive(Clone)]
10792    pub struct setstateHistoryRetentionPeriodReturn {}
10793    #[allow(
10794        non_camel_case_types,
10795        non_snake_case,
10796        clippy::pub_underscore_fields,
10797        clippy::style
10798    )]
10799    const _: () = {
10800        use alloy::sol_types as alloy_sol_types;
10801        {
10802            #[doc(hidden)]
10803            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10804            #[doc(hidden)]
10805            type UnderlyingRustTuple<'a> = (u32,);
10806            #[cfg(test)]
10807            #[allow(dead_code, unreachable_patterns)]
10808            fn _type_assertion(
10809                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10810            ) {
10811                match _t {
10812                    alloy_sol_types::private::AssertTypeEq::<
10813                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10814                    >(_) => {}
10815                }
10816            }
10817            #[automatically_derived]
10818            #[doc(hidden)]
10819            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
10820            for UnderlyingRustTuple<'_> {
10821                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
10822                    (value.historySeconds,)
10823                }
10824            }
10825            #[automatically_derived]
10826            #[doc(hidden)]
10827            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10828            for setstateHistoryRetentionPeriodCall {
10829                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10830                    Self { historySeconds: tuple.0 }
10831                }
10832            }
10833        }
10834        {
10835            #[doc(hidden)]
10836            type UnderlyingSolTuple<'a> = ();
10837            #[doc(hidden)]
10838            type UnderlyingRustTuple<'a> = ();
10839            #[cfg(test)]
10840            #[allow(dead_code, unreachable_patterns)]
10841            fn _type_assertion(
10842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10843            ) {
10844                match _t {
10845                    alloy_sol_types::private::AssertTypeEq::<
10846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10847                    >(_) => {}
10848                }
10849            }
10850            #[automatically_derived]
10851            #[doc(hidden)]
10852            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
10853            for UnderlyingRustTuple<'_> {
10854                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
10855                    ()
10856                }
10857            }
10858            #[automatically_derived]
10859            #[doc(hidden)]
10860            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10861            for setstateHistoryRetentionPeriodReturn {
10862                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10863                    Self {}
10864                }
10865            }
10866        }
10867        impl setstateHistoryRetentionPeriodReturn {
10868            fn _tokenize(
10869                &self,
10870            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
10871                '_,
10872            > {
10873                ()
10874            }
10875        }
10876        #[automatically_derived]
10877        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10878            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10879            type Token<'a> = <Self::Parameters<
10880                'a,
10881            > as alloy_sol_types::SolType>::Token<'a>;
10882            type Return = setstateHistoryRetentionPeriodReturn;
10883            type ReturnTuple<'a> = ();
10884            type ReturnToken<'a> = <Self::ReturnTuple<
10885                'a,
10886            > as alloy_sol_types::SolType>::Token<'a>;
10887            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10888            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10889            #[inline]
10890            fn new<'a>(
10891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10892            ) -> Self {
10893                tuple.into()
10894            }
10895            #[inline]
10896            fn tokenize(&self) -> Self::Token<'_> {
10897                (
10898                    <alloy::sol_types::sol_data::Uint<
10899                        32,
10900                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10901                )
10902            }
10903            #[inline]
10904            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10905                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
10906            }
10907            #[inline]
10908            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10909                <Self::ReturnTuple<
10910                    '_,
10911                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10912                    .map(Into::into)
10913            }
10914            #[inline]
10915            fn abi_decode_returns_validate(
10916                data: &[u8],
10917            ) -> alloy_sol_types::Result<Self::Return> {
10918                <Self::ReturnTuple<
10919                    '_,
10920                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10921                    .map(Into::into)
10922            }
10923        }
10924    };
10925    #[derive(serde::Serialize, serde::Deserialize)]
10926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10927    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10928```solidity
10929function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10930```*/
10931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10932    #[derive(Clone)]
10933    pub struct stateHistoryCommitmentsCall(
10934        pub alloy::sol_types::private::primitives::aliases::U256,
10935    );
10936    #[derive(serde::Serialize, serde::Deserialize)]
10937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10938    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10940    #[derive(Clone)]
10941    pub struct stateHistoryCommitmentsReturn {
10942        #[allow(missing_docs)]
10943        pub l1BlockHeight: u64,
10944        #[allow(missing_docs)]
10945        pub l1BlockTimestamp: u64,
10946        #[allow(missing_docs)]
10947        pub hotShotBlockHeight: u64,
10948        #[allow(missing_docs)]
10949        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10950    }
10951    #[allow(
10952        non_camel_case_types,
10953        non_snake_case,
10954        clippy::pub_underscore_fields,
10955        clippy::style
10956    )]
10957    const _: () = {
10958        use alloy::sol_types as alloy_sol_types;
10959        {
10960            #[doc(hidden)]
10961            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10962            #[doc(hidden)]
10963            type UnderlyingRustTuple<'a> = (
10964                alloy::sol_types::private::primitives::aliases::U256,
10965            );
10966            #[cfg(test)]
10967            #[allow(dead_code, unreachable_patterns)]
10968            fn _type_assertion(
10969                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10970            ) {
10971                match _t {
10972                    alloy_sol_types::private::AssertTypeEq::<
10973                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10974                    >(_) => {}
10975                }
10976            }
10977            #[automatically_derived]
10978            #[doc(hidden)]
10979            impl ::core::convert::From<stateHistoryCommitmentsCall>
10980            for UnderlyingRustTuple<'_> {
10981                fn from(value: stateHistoryCommitmentsCall) -> Self {
10982                    (value.0,)
10983                }
10984            }
10985            #[automatically_derived]
10986            #[doc(hidden)]
10987            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10988            for stateHistoryCommitmentsCall {
10989                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10990                    Self(tuple.0)
10991                }
10992            }
10993        }
10994        {
10995            #[doc(hidden)]
10996            type UnderlyingSolTuple<'a> = (
10997                alloy::sol_types::sol_data::Uint<64>,
10998                alloy::sol_types::sol_data::Uint<64>,
10999                alloy::sol_types::sol_data::Uint<64>,
11000                BN254::ScalarField,
11001            );
11002            #[doc(hidden)]
11003            type UnderlyingRustTuple<'a> = (
11004                u64,
11005                u64,
11006                u64,
11007                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11008            );
11009            #[cfg(test)]
11010            #[allow(dead_code, unreachable_patterns)]
11011            fn _type_assertion(
11012                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11013            ) {
11014                match _t {
11015                    alloy_sol_types::private::AssertTypeEq::<
11016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11017                    >(_) => {}
11018                }
11019            }
11020            #[automatically_derived]
11021            #[doc(hidden)]
11022            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11023            for UnderlyingRustTuple<'_> {
11024                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11025                    (
11026                        value.l1BlockHeight,
11027                        value.l1BlockTimestamp,
11028                        value.hotShotBlockHeight,
11029                        value.hotShotBlockCommRoot,
11030                    )
11031                }
11032            }
11033            #[automatically_derived]
11034            #[doc(hidden)]
11035            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11036            for stateHistoryCommitmentsReturn {
11037                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11038                    Self {
11039                        l1BlockHeight: tuple.0,
11040                        l1BlockTimestamp: tuple.1,
11041                        hotShotBlockHeight: tuple.2,
11042                        hotShotBlockCommRoot: tuple.3,
11043                    }
11044                }
11045            }
11046        }
11047        impl stateHistoryCommitmentsReturn {
11048            fn _tokenize(
11049                &self,
11050            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
11051                '_,
11052            > {
11053                (
11054                    <alloy::sol_types::sol_data::Uint<
11055                        64,
11056                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
11057                    <alloy::sol_types::sol_data::Uint<
11058                        64,
11059                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
11060                    <alloy::sol_types::sol_data::Uint<
11061                        64,
11062                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
11063                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
11064                        &self.hotShotBlockCommRoot,
11065                    ),
11066                )
11067            }
11068        }
11069        #[automatically_derived]
11070        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11071            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11072            type Token<'a> = <Self::Parameters<
11073                'a,
11074            > as alloy_sol_types::SolType>::Token<'a>;
11075            type Return = stateHistoryCommitmentsReturn;
11076            type ReturnTuple<'a> = (
11077                alloy::sol_types::sol_data::Uint<64>,
11078                alloy::sol_types::sol_data::Uint<64>,
11079                alloy::sol_types::sol_data::Uint<64>,
11080                BN254::ScalarField,
11081            );
11082            type ReturnToken<'a> = <Self::ReturnTuple<
11083                'a,
11084            > as alloy_sol_types::SolType>::Token<'a>;
11085            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11086            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11087            #[inline]
11088            fn new<'a>(
11089                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11090            ) -> Self {
11091                tuple.into()
11092            }
11093            #[inline]
11094            fn tokenize(&self) -> Self::Token<'_> {
11095                (
11096                    <alloy::sol_types::sol_data::Uint<
11097                        256,
11098                    > as alloy_sol_types::SolType>::tokenize(&self.0),
11099                )
11100            }
11101            #[inline]
11102            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11103                stateHistoryCommitmentsReturn::_tokenize(ret)
11104            }
11105            #[inline]
11106            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11107                <Self::ReturnTuple<
11108                    '_,
11109                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11110                    .map(Into::into)
11111            }
11112            #[inline]
11113            fn abi_decode_returns_validate(
11114                data: &[u8],
11115            ) -> alloy_sol_types::Result<Self::Return> {
11116                <Self::ReturnTuple<
11117                    '_,
11118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11119                    .map(Into::into)
11120            }
11121        }
11122    };
11123    #[derive(serde::Serialize, serde::Deserialize)]
11124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11125    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11126```solidity
11127function stateHistoryFirstIndex() external view returns (uint64);
11128```*/
11129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11130    #[derive(Clone)]
11131    pub struct stateHistoryFirstIndexCall;
11132    #[derive(serde::Serialize, serde::Deserialize)]
11133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11134    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11135    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11136    #[derive(Clone)]
11137    pub struct stateHistoryFirstIndexReturn {
11138        #[allow(missing_docs)]
11139        pub _0: u64,
11140    }
11141    #[allow(
11142        non_camel_case_types,
11143        non_snake_case,
11144        clippy::pub_underscore_fields,
11145        clippy::style
11146    )]
11147    const _: () = {
11148        use alloy::sol_types as alloy_sol_types;
11149        {
11150            #[doc(hidden)]
11151            type UnderlyingSolTuple<'a> = ();
11152            #[doc(hidden)]
11153            type UnderlyingRustTuple<'a> = ();
11154            #[cfg(test)]
11155            #[allow(dead_code, unreachable_patterns)]
11156            fn _type_assertion(
11157                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11158            ) {
11159                match _t {
11160                    alloy_sol_types::private::AssertTypeEq::<
11161                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11162                    >(_) => {}
11163                }
11164            }
11165            #[automatically_derived]
11166            #[doc(hidden)]
11167            impl ::core::convert::From<stateHistoryFirstIndexCall>
11168            for UnderlyingRustTuple<'_> {
11169                fn from(value: stateHistoryFirstIndexCall) -> Self {
11170                    ()
11171                }
11172            }
11173            #[automatically_derived]
11174            #[doc(hidden)]
11175            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11176            for stateHistoryFirstIndexCall {
11177                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11178                    Self
11179                }
11180            }
11181        }
11182        {
11183            #[doc(hidden)]
11184            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11185            #[doc(hidden)]
11186            type UnderlyingRustTuple<'a> = (u64,);
11187            #[cfg(test)]
11188            #[allow(dead_code, unreachable_patterns)]
11189            fn _type_assertion(
11190                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11191            ) {
11192                match _t {
11193                    alloy_sol_types::private::AssertTypeEq::<
11194                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11195                    >(_) => {}
11196                }
11197            }
11198            #[automatically_derived]
11199            #[doc(hidden)]
11200            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11201            for UnderlyingRustTuple<'_> {
11202                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11203                    (value._0,)
11204                }
11205            }
11206            #[automatically_derived]
11207            #[doc(hidden)]
11208            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11209            for stateHistoryFirstIndexReturn {
11210                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11211                    Self { _0: tuple.0 }
11212                }
11213            }
11214        }
11215        #[automatically_derived]
11216        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11217            type Parameters<'a> = ();
11218            type Token<'a> = <Self::Parameters<
11219                'a,
11220            > as alloy_sol_types::SolType>::Token<'a>;
11221            type Return = u64;
11222            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11223            type ReturnToken<'a> = <Self::ReturnTuple<
11224                'a,
11225            > as alloy_sol_types::SolType>::Token<'a>;
11226            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11227            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11228            #[inline]
11229            fn new<'a>(
11230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11231            ) -> Self {
11232                tuple.into()
11233            }
11234            #[inline]
11235            fn tokenize(&self) -> Self::Token<'_> {
11236                ()
11237            }
11238            #[inline]
11239            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11240                (
11241                    <alloy::sol_types::sol_data::Uint<
11242                        64,
11243                    > as alloy_sol_types::SolType>::tokenize(ret),
11244                )
11245            }
11246            #[inline]
11247            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11248                <Self::ReturnTuple<
11249                    '_,
11250                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11251                    .map(|r| {
11252                        let r: stateHistoryFirstIndexReturn = r.into();
11253                        r._0
11254                    })
11255            }
11256            #[inline]
11257            fn abi_decode_returns_validate(
11258                data: &[u8],
11259            ) -> alloy_sol_types::Result<Self::Return> {
11260                <Self::ReturnTuple<
11261                    '_,
11262                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11263                    .map(|r| {
11264                        let r: stateHistoryFirstIndexReturn = r.into();
11265                        r._0
11266                    })
11267            }
11268        }
11269    };
11270    #[derive(serde::Serialize, serde::Deserialize)]
11271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11272    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11273```solidity
11274function stateHistoryRetentionPeriod() external view returns (uint32);
11275```*/
11276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11277    #[derive(Clone)]
11278    pub struct stateHistoryRetentionPeriodCall;
11279    #[derive(serde::Serialize, serde::Deserialize)]
11280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11281    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11283    #[derive(Clone)]
11284    pub struct stateHistoryRetentionPeriodReturn {
11285        #[allow(missing_docs)]
11286        pub _0: u32,
11287    }
11288    #[allow(
11289        non_camel_case_types,
11290        non_snake_case,
11291        clippy::pub_underscore_fields,
11292        clippy::style
11293    )]
11294    const _: () = {
11295        use alloy::sol_types as alloy_sol_types;
11296        {
11297            #[doc(hidden)]
11298            type UnderlyingSolTuple<'a> = ();
11299            #[doc(hidden)]
11300            type UnderlyingRustTuple<'a> = ();
11301            #[cfg(test)]
11302            #[allow(dead_code, unreachable_patterns)]
11303            fn _type_assertion(
11304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11305            ) {
11306                match _t {
11307                    alloy_sol_types::private::AssertTypeEq::<
11308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11309                    >(_) => {}
11310                }
11311            }
11312            #[automatically_derived]
11313            #[doc(hidden)]
11314            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11315            for UnderlyingRustTuple<'_> {
11316                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11317                    ()
11318                }
11319            }
11320            #[automatically_derived]
11321            #[doc(hidden)]
11322            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11323            for stateHistoryRetentionPeriodCall {
11324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11325                    Self
11326                }
11327            }
11328        }
11329        {
11330            #[doc(hidden)]
11331            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11332            #[doc(hidden)]
11333            type UnderlyingRustTuple<'a> = (u32,);
11334            #[cfg(test)]
11335            #[allow(dead_code, unreachable_patterns)]
11336            fn _type_assertion(
11337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11338            ) {
11339                match _t {
11340                    alloy_sol_types::private::AssertTypeEq::<
11341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11342                    >(_) => {}
11343                }
11344            }
11345            #[automatically_derived]
11346            #[doc(hidden)]
11347            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11348            for UnderlyingRustTuple<'_> {
11349                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11350                    (value._0,)
11351                }
11352            }
11353            #[automatically_derived]
11354            #[doc(hidden)]
11355            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11356            for stateHistoryRetentionPeriodReturn {
11357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11358                    Self { _0: tuple.0 }
11359                }
11360            }
11361        }
11362        #[automatically_derived]
11363        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11364            type Parameters<'a> = ();
11365            type Token<'a> = <Self::Parameters<
11366                'a,
11367            > as alloy_sol_types::SolType>::Token<'a>;
11368            type Return = u32;
11369            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11370            type ReturnToken<'a> = <Self::ReturnTuple<
11371                'a,
11372            > as alloy_sol_types::SolType>::Token<'a>;
11373            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11374            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11375            #[inline]
11376            fn new<'a>(
11377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11378            ) -> Self {
11379                tuple.into()
11380            }
11381            #[inline]
11382            fn tokenize(&self) -> Self::Token<'_> {
11383                ()
11384            }
11385            #[inline]
11386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11387                (
11388                    <alloy::sol_types::sol_data::Uint<
11389                        32,
11390                    > as alloy_sol_types::SolType>::tokenize(ret),
11391                )
11392            }
11393            #[inline]
11394            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11395                <Self::ReturnTuple<
11396                    '_,
11397                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11398                    .map(|r| {
11399                        let r: stateHistoryRetentionPeriodReturn = r.into();
11400                        r._0
11401                    })
11402            }
11403            #[inline]
11404            fn abi_decode_returns_validate(
11405                data: &[u8],
11406            ) -> alloy_sol_types::Result<Self::Return> {
11407                <Self::ReturnTuple<
11408                    '_,
11409                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11410                    .map(|r| {
11411                        let r: stateHistoryRetentionPeriodReturn = r.into();
11412                        r._0
11413                    })
11414            }
11415        }
11416    };
11417    #[derive(serde::Serialize, serde::Deserialize)]
11418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11419    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11420```solidity
11421function transferOwnership(address newOwner) external;
11422```*/
11423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11424    #[derive(Clone)]
11425    pub struct transferOwnershipCall {
11426        #[allow(missing_docs)]
11427        pub newOwner: alloy::sol_types::private::Address,
11428    }
11429    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11431    #[derive(Clone)]
11432    pub struct transferOwnershipReturn {}
11433    #[allow(
11434        non_camel_case_types,
11435        non_snake_case,
11436        clippy::pub_underscore_fields,
11437        clippy::style
11438    )]
11439    const _: () = {
11440        use alloy::sol_types as alloy_sol_types;
11441        {
11442            #[doc(hidden)]
11443            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11444            #[doc(hidden)]
11445            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11446            #[cfg(test)]
11447            #[allow(dead_code, unreachable_patterns)]
11448            fn _type_assertion(
11449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11450            ) {
11451                match _t {
11452                    alloy_sol_types::private::AssertTypeEq::<
11453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11454                    >(_) => {}
11455                }
11456            }
11457            #[automatically_derived]
11458            #[doc(hidden)]
11459            impl ::core::convert::From<transferOwnershipCall>
11460            for UnderlyingRustTuple<'_> {
11461                fn from(value: transferOwnershipCall) -> Self {
11462                    (value.newOwner,)
11463                }
11464            }
11465            #[automatically_derived]
11466            #[doc(hidden)]
11467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11468            for transferOwnershipCall {
11469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11470                    Self { newOwner: tuple.0 }
11471                }
11472            }
11473        }
11474        {
11475            #[doc(hidden)]
11476            type UnderlyingSolTuple<'a> = ();
11477            #[doc(hidden)]
11478            type UnderlyingRustTuple<'a> = ();
11479            #[cfg(test)]
11480            #[allow(dead_code, unreachable_patterns)]
11481            fn _type_assertion(
11482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11483            ) {
11484                match _t {
11485                    alloy_sol_types::private::AssertTypeEq::<
11486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11487                    >(_) => {}
11488                }
11489            }
11490            #[automatically_derived]
11491            #[doc(hidden)]
11492            impl ::core::convert::From<transferOwnershipReturn>
11493            for UnderlyingRustTuple<'_> {
11494                fn from(value: transferOwnershipReturn) -> Self {
11495                    ()
11496                }
11497            }
11498            #[automatically_derived]
11499            #[doc(hidden)]
11500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11501            for transferOwnershipReturn {
11502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11503                    Self {}
11504                }
11505            }
11506        }
11507        impl transferOwnershipReturn {
11508            fn _tokenize(
11509                &self,
11510            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11511                ()
11512            }
11513        }
11514        #[automatically_derived]
11515        impl alloy_sol_types::SolCall for transferOwnershipCall {
11516            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11517            type Token<'a> = <Self::Parameters<
11518                'a,
11519            > as alloy_sol_types::SolType>::Token<'a>;
11520            type Return = transferOwnershipReturn;
11521            type ReturnTuple<'a> = ();
11522            type ReturnToken<'a> = <Self::ReturnTuple<
11523                'a,
11524            > as alloy_sol_types::SolType>::Token<'a>;
11525            const SIGNATURE: &'static str = "transferOwnership(address)";
11526            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11527            #[inline]
11528            fn new<'a>(
11529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11530            ) -> Self {
11531                tuple.into()
11532            }
11533            #[inline]
11534            fn tokenize(&self) -> Self::Token<'_> {
11535                (
11536                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11537                        &self.newOwner,
11538                    ),
11539                )
11540            }
11541            #[inline]
11542            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11543                transferOwnershipReturn::_tokenize(ret)
11544            }
11545            #[inline]
11546            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11547                <Self::ReturnTuple<
11548                    '_,
11549                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11550                    .map(Into::into)
11551            }
11552            #[inline]
11553            fn abi_decode_returns_validate(
11554                data: &[u8],
11555            ) -> alloy_sol_types::Result<Self::Return> {
11556                <Self::ReturnTuple<
11557                    '_,
11558                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11559                    .map(Into::into)
11560            }
11561        }
11562    };
11563    #[derive(serde::Serialize, serde::Deserialize)]
11564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11565    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11566```solidity
11567function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11568```*/
11569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11570    #[derive(Clone)]
11571    pub struct upgradeToAndCallCall {
11572        #[allow(missing_docs)]
11573        pub newImplementation: alloy::sol_types::private::Address,
11574        #[allow(missing_docs)]
11575        pub data: alloy::sol_types::private::Bytes,
11576    }
11577    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11579    #[derive(Clone)]
11580    pub struct upgradeToAndCallReturn {}
11581    #[allow(
11582        non_camel_case_types,
11583        non_snake_case,
11584        clippy::pub_underscore_fields,
11585        clippy::style
11586    )]
11587    const _: () = {
11588        use alloy::sol_types as alloy_sol_types;
11589        {
11590            #[doc(hidden)]
11591            type UnderlyingSolTuple<'a> = (
11592                alloy::sol_types::sol_data::Address,
11593                alloy::sol_types::sol_data::Bytes,
11594            );
11595            #[doc(hidden)]
11596            type UnderlyingRustTuple<'a> = (
11597                alloy::sol_types::private::Address,
11598                alloy::sol_types::private::Bytes,
11599            );
11600            #[cfg(test)]
11601            #[allow(dead_code, unreachable_patterns)]
11602            fn _type_assertion(
11603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11604            ) {
11605                match _t {
11606                    alloy_sol_types::private::AssertTypeEq::<
11607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11608                    >(_) => {}
11609                }
11610            }
11611            #[automatically_derived]
11612            #[doc(hidden)]
11613            impl ::core::convert::From<upgradeToAndCallCall>
11614            for UnderlyingRustTuple<'_> {
11615                fn from(value: upgradeToAndCallCall) -> Self {
11616                    (value.newImplementation, value.data)
11617                }
11618            }
11619            #[automatically_derived]
11620            #[doc(hidden)]
11621            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11622            for upgradeToAndCallCall {
11623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11624                    Self {
11625                        newImplementation: tuple.0,
11626                        data: tuple.1,
11627                    }
11628                }
11629            }
11630        }
11631        {
11632            #[doc(hidden)]
11633            type UnderlyingSolTuple<'a> = ();
11634            #[doc(hidden)]
11635            type UnderlyingRustTuple<'a> = ();
11636            #[cfg(test)]
11637            #[allow(dead_code, unreachable_patterns)]
11638            fn _type_assertion(
11639                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11640            ) {
11641                match _t {
11642                    alloy_sol_types::private::AssertTypeEq::<
11643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11644                    >(_) => {}
11645                }
11646            }
11647            #[automatically_derived]
11648            #[doc(hidden)]
11649            impl ::core::convert::From<upgradeToAndCallReturn>
11650            for UnderlyingRustTuple<'_> {
11651                fn from(value: upgradeToAndCallReturn) -> Self {
11652                    ()
11653                }
11654            }
11655            #[automatically_derived]
11656            #[doc(hidden)]
11657            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11658            for upgradeToAndCallReturn {
11659                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11660                    Self {}
11661                }
11662            }
11663        }
11664        impl upgradeToAndCallReturn {
11665            fn _tokenize(
11666                &self,
11667            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11668                ()
11669            }
11670        }
11671        #[automatically_derived]
11672        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11673            type Parameters<'a> = (
11674                alloy::sol_types::sol_data::Address,
11675                alloy::sol_types::sol_data::Bytes,
11676            );
11677            type Token<'a> = <Self::Parameters<
11678                'a,
11679            > as alloy_sol_types::SolType>::Token<'a>;
11680            type Return = upgradeToAndCallReturn;
11681            type ReturnTuple<'a> = ();
11682            type ReturnToken<'a> = <Self::ReturnTuple<
11683                'a,
11684            > as alloy_sol_types::SolType>::Token<'a>;
11685            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11686            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11687            #[inline]
11688            fn new<'a>(
11689                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11690            ) -> Self {
11691                tuple.into()
11692            }
11693            #[inline]
11694            fn tokenize(&self) -> Self::Token<'_> {
11695                (
11696                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11697                        &self.newImplementation,
11698                    ),
11699                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11700                        &self.data,
11701                    ),
11702                )
11703            }
11704            #[inline]
11705            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11706                upgradeToAndCallReturn::_tokenize(ret)
11707            }
11708            #[inline]
11709            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11710                <Self::ReturnTuple<
11711                    '_,
11712                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11713                    .map(Into::into)
11714            }
11715            #[inline]
11716            fn abi_decode_returns_validate(
11717                data: &[u8],
11718            ) -> alloy_sol_types::Result<Self::Return> {
11719                <Self::ReturnTuple<
11720                    '_,
11721                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11722                    .map(Into::into)
11723            }
11724        }
11725    };
11726    ///Container for all the [`LightClientMock`](self) function calls.
11727    #[derive(serde::Serialize, serde::Deserialize)]
11728    #[derive()]
11729    pub enum LightClientMockCalls {
11730        #[allow(missing_docs)]
11731        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
11732        #[allow(missing_docs)]
11733        _getVk(_getVkCall),
11734        #[allow(missing_docs)]
11735        currentBlockNumber(currentBlockNumberCall),
11736        #[allow(missing_docs)]
11737        disablePermissionedProverMode(disablePermissionedProverModeCall),
11738        #[allow(missing_docs)]
11739        finalizedState(finalizedStateCall),
11740        #[allow(missing_docs)]
11741        genesisStakeTableState(genesisStakeTableStateCall),
11742        #[allow(missing_docs)]
11743        genesisState(genesisStateCall),
11744        #[allow(missing_docs)]
11745        getHotShotCommitment(getHotShotCommitmentCall),
11746        #[allow(missing_docs)]
11747        getStateHistoryCount(getStateHistoryCountCall),
11748        #[allow(missing_docs)]
11749        getVersion(getVersionCall),
11750        #[allow(missing_docs)]
11751        initialize(initializeCall),
11752        #[allow(missing_docs)]
11753        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
11754        #[allow(missing_docs)]
11755        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
11756        #[allow(missing_docs)]
11757        newFinalizedState(newFinalizedStateCall),
11758        #[allow(missing_docs)]
11759        owner(ownerCall),
11760        #[allow(missing_docs)]
11761        permissionedProver(permissionedProverCall),
11762        #[allow(missing_docs)]
11763        proxiableUUID(proxiableUUIDCall),
11764        #[allow(missing_docs)]
11765        renounceOwnership(renounceOwnershipCall),
11766        #[allow(missing_docs)]
11767        setFinalizedState(setFinalizedStateCall),
11768        #[allow(missing_docs)]
11769        setHotShotDownSince(setHotShotDownSinceCall),
11770        #[allow(missing_docs)]
11771        setHotShotUp(setHotShotUpCall),
11772        #[allow(missing_docs)]
11773        setPermissionedProver(setPermissionedProverCall),
11774        #[allow(missing_docs)]
11775        setStateHistory(setStateHistoryCall),
11776        #[allow(missing_docs)]
11777        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
11778        #[allow(missing_docs)]
11779        stateHistoryCommitments(stateHistoryCommitmentsCall),
11780        #[allow(missing_docs)]
11781        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
11782        #[allow(missing_docs)]
11783        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
11784        #[allow(missing_docs)]
11785        transferOwnership(transferOwnershipCall),
11786        #[allow(missing_docs)]
11787        upgradeToAndCall(upgradeToAndCallCall),
11788    }
11789    #[automatically_derived]
11790    impl LightClientMockCalls {
11791        /// All the selectors of this enum.
11792        ///
11793        /// Note that the selectors might not be in the same order as the variants.
11794        /// No guarantees are made about the order of the selectors.
11795        ///
11796        /// Prefer using `SolInterface` methods instead.
11797        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11798            [1u8, 63u8, 165u8, 252u8],
11799            [2u8, 181u8, 146u8, 243u8],
11800            [13u8, 142u8, 110u8, 44u8],
11801            [18u8, 23u8, 60u8, 44u8],
11802            [32u8, 99u8, 212u8, 247u8],
11803            [45u8, 82u8, 170u8, 214u8],
11804            [47u8, 121u8, 136u8, 157u8],
11805            [49u8, 61u8, 247u8, 177u8],
11806            [55u8, 142u8, 194u8, 59u8],
11807            [66u8, 109u8, 49u8, 148u8],
11808            [79u8, 30u8, 242u8, 134u8],
11809            [82u8, 209u8, 144u8, 45u8],
11810            [105u8, 204u8, 106u8, 4u8],
11811            [113u8, 80u8, 24u8, 166u8],
11812            [130u8, 110u8, 65u8, 252u8],
11813            [133u8, 132u8, 210u8, 63u8],
11814            [141u8, 165u8, 203u8, 91u8],
11815            [150u8, 193u8, 202u8, 97u8],
11816            [155u8, 170u8, 60u8, 201u8],
11817            [159u8, 219u8, 84u8, 167u8],
11818            [173u8, 60u8, 177u8, 204u8],
11819            [181u8, 173u8, 234u8, 60u8],
11820            [194u8, 59u8, 158u8, 158u8],
11821            [200u8, 229u8, 228u8, 152u8],
11822            [210u8, 77u8, 147u8, 61u8],
11823            [224u8, 48u8, 51u8, 1u8],
11824            [242u8, 253u8, 227u8, 139u8],
11825            [245u8, 103u8, 97u8, 96u8],
11826            [249u8, 229u8, 13u8, 25u8],
11827        ];
11828    }
11829    #[automatically_derived]
11830    impl alloy_sol_types::SolInterface for LightClientMockCalls {
11831        const NAME: &'static str = "LightClientMockCalls";
11832        const MIN_DATA_LENGTH: usize = 0usize;
11833        const COUNT: usize = 29usize;
11834        #[inline]
11835        fn selector(&self) -> [u8; 4] {
11836            match self {
11837                Self::UPGRADE_INTERFACE_VERSION(_) => {
11838                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11839                }
11840                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
11841                Self::currentBlockNumber(_) => {
11842                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11843                }
11844                Self::disablePermissionedProverMode(_) => {
11845                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
11846                }
11847                Self::finalizedState(_) => {
11848                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11849                }
11850                Self::genesisStakeTableState(_) => {
11851                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11852                }
11853                Self::genesisState(_) => {
11854                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
11855                }
11856                Self::getHotShotCommitment(_) => {
11857                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
11858                }
11859                Self::getStateHistoryCount(_) => {
11860                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
11861                }
11862                Self::getVersion(_) => {
11863                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
11864                }
11865                Self::initialize(_) => {
11866                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
11867                }
11868                Self::isPermissionedProverEnabled(_) => {
11869                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
11870                }
11871                Self::lagOverEscapeHatchThreshold(_) => {
11872                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
11873                }
11874                Self::newFinalizedState(_) => {
11875                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11876                }
11877                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
11878                Self::permissionedProver(_) => {
11879                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11880                }
11881                Self::proxiableUUID(_) => {
11882                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
11883                }
11884                Self::renounceOwnership(_) => {
11885                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11886                }
11887                Self::setFinalizedState(_) => {
11888                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11889                }
11890                Self::setHotShotDownSince(_) => {
11891                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
11892                }
11893                Self::setHotShotUp(_) => {
11894                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
11895                }
11896                Self::setPermissionedProver(_) => {
11897                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11898                }
11899                Self::setStateHistory(_) => {
11900                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
11901                }
11902                Self::setstateHistoryRetentionPeriod(_) => {
11903                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11904                }
11905                Self::stateHistoryCommitments(_) => {
11906                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
11907                }
11908                Self::stateHistoryFirstIndex(_) => {
11909                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
11910                }
11911                Self::stateHistoryRetentionPeriod(_) => {
11912                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11913                }
11914                Self::transferOwnership(_) => {
11915                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11916                }
11917                Self::upgradeToAndCall(_) => {
11918                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
11919                }
11920            }
11921        }
11922        #[inline]
11923        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11924            Self::SELECTORS.get(i).copied()
11925        }
11926        #[inline]
11927        fn valid_selector(selector: [u8; 4]) -> bool {
11928            Self::SELECTORS.binary_search(&selector).is_ok()
11929        }
11930        #[inline]
11931        #[allow(non_snake_case)]
11932        fn abi_decode_raw(
11933            selector: [u8; 4],
11934            data: &[u8],
11935        ) -> alloy_sol_types::Result<Self> {
11936            static DECODE_SHIMS: &[fn(
11937                &[u8],
11938            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
11939                {
11940                    fn setPermissionedProver(
11941                        data: &[u8],
11942                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11943                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11944                                data,
11945                            )
11946                            .map(LightClientMockCalls::setPermissionedProver)
11947                    }
11948                    setPermissionedProver
11949                },
11950                {
11951                    fn stateHistoryCommitments(
11952                        data: &[u8],
11953                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11954                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
11955                                data,
11956                            )
11957                            .map(LightClientMockCalls::stateHistoryCommitments)
11958                    }
11959                    stateHistoryCommitments
11960                },
11961                {
11962                    fn getVersion(
11963                        data: &[u8],
11964                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11965                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
11966                                data,
11967                            )
11968                            .map(LightClientMockCalls::getVersion)
11969                    }
11970                    getVersion
11971                },
11972                {
11973                    fn _getVk(
11974                        data: &[u8],
11975                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11976                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11977                            .map(LightClientMockCalls::_getVk)
11978                    }
11979                    _getVk
11980                },
11981                {
11982                    fn newFinalizedState(
11983                        data: &[u8],
11984                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11985                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11986                                data,
11987                            )
11988                            .map(LightClientMockCalls::newFinalizedState)
11989                    }
11990                    newFinalizedState
11991                },
11992                {
11993                    fn setHotShotDownSince(
11994                        data: &[u8],
11995                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11996                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
11997                                data,
11998                            )
11999                            .map(LightClientMockCalls::setHotShotDownSince)
12000                    }
12001                    setHotShotDownSince
12002                },
12003                {
12004                    fn stateHistoryFirstIndex(
12005                        data: &[u8],
12006                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12007                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12008                                data,
12009                            )
12010                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12011                    }
12012                    stateHistoryFirstIndex
12013                },
12014                {
12015                    fn permissionedProver(
12016                        data: &[u8],
12017                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12018                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12019                                data,
12020                            )
12021                            .map(LightClientMockCalls::permissionedProver)
12022                    }
12023                    permissionedProver
12024                },
12025                {
12026                    fn currentBlockNumber(
12027                        data: &[u8],
12028                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12029                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12030                                data,
12031                            )
12032                            .map(LightClientMockCalls::currentBlockNumber)
12033                    }
12034                    currentBlockNumber
12035                },
12036                {
12037                    fn genesisStakeTableState(
12038                        data: &[u8],
12039                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12040                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12041                                data,
12042                            )
12043                            .map(LightClientMockCalls::genesisStakeTableState)
12044                    }
12045                    genesisStakeTableState
12046                },
12047                {
12048                    fn upgradeToAndCall(
12049                        data: &[u8],
12050                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12051                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12052                                data,
12053                            )
12054                            .map(LightClientMockCalls::upgradeToAndCall)
12055                    }
12056                    upgradeToAndCall
12057                },
12058                {
12059                    fn proxiableUUID(
12060                        data: &[u8],
12061                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12062                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12063                                data,
12064                            )
12065                            .map(LightClientMockCalls::proxiableUUID)
12066                    }
12067                    proxiableUUID
12068                },
12069                {
12070                    fn disablePermissionedProverMode(
12071                        data: &[u8],
12072                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12073                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12074                                data,
12075                            )
12076                            .map(LightClientMockCalls::disablePermissionedProverMode)
12077                    }
12078                    disablePermissionedProverMode
12079                },
12080                {
12081                    fn renounceOwnership(
12082                        data: &[u8],
12083                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12084                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12085                                data,
12086                            )
12087                            .map(LightClientMockCalls::renounceOwnership)
12088                    }
12089                    renounceOwnership
12090                },
12091                {
12092                    fn isPermissionedProverEnabled(
12093                        data: &[u8],
12094                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12095                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12096                                data,
12097                            )
12098                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12099                    }
12100                    isPermissionedProverEnabled
12101                },
12102                {
12103                    fn getHotShotCommitment(
12104                        data: &[u8],
12105                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12106                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12107                                data,
12108                            )
12109                            .map(LightClientMockCalls::getHotShotCommitment)
12110                    }
12111                    getHotShotCommitment
12112                },
12113                {
12114                    fn owner(
12115                        data: &[u8],
12116                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12117                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
12118                            .map(LightClientMockCalls::owner)
12119                    }
12120                    owner
12121                },
12122                {
12123                    fn setstateHistoryRetentionPeriod(
12124                        data: &[u8],
12125                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12126                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12127                                data,
12128                            )
12129                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12130                    }
12131                    setstateHistoryRetentionPeriod
12132                },
12133                {
12134                    fn initialize(
12135                        data: &[u8],
12136                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12137                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12138                                data,
12139                            )
12140                            .map(LightClientMockCalls::initialize)
12141                    }
12142                    initialize
12143                },
12144                {
12145                    fn finalizedState(
12146                        data: &[u8],
12147                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12148                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12149                                data,
12150                            )
12151                            .map(LightClientMockCalls::finalizedState)
12152                    }
12153                    finalizedState
12154                },
12155                {
12156                    fn UPGRADE_INTERFACE_VERSION(
12157                        data: &[u8],
12158                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12159                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12160                                data,
12161                            )
12162                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12163                    }
12164                    UPGRADE_INTERFACE_VERSION
12165                },
12166                {
12167                    fn setFinalizedState(
12168                        data: &[u8],
12169                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12170                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12171                                data,
12172                            )
12173                            .map(LightClientMockCalls::setFinalizedState)
12174                    }
12175                    setFinalizedState
12176                },
12177                {
12178                    fn stateHistoryRetentionPeriod(
12179                        data: &[u8],
12180                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12181                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12182                                data,
12183                            )
12184                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12185                    }
12186                    stateHistoryRetentionPeriod
12187                },
12188                {
12189                    fn setHotShotUp(
12190                        data: &[u8],
12191                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12192                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
12193                                data,
12194                            )
12195                            .map(LightClientMockCalls::setHotShotUp)
12196                    }
12197                    setHotShotUp
12198                },
12199                {
12200                    fn genesisState(
12201                        data: &[u8],
12202                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12203                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12204                                data,
12205                            )
12206                            .map(LightClientMockCalls::genesisState)
12207                    }
12208                    genesisState
12209                },
12210                {
12211                    fn lagOverEscapeHatchThreshold(
12212                        data: &[u8],
12213                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12214                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
12215                                data,
12216                            )
12217                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12218                    }
12219                    lagOverEscapeHatchThreshold
12220                },
12221                {
12222                    fn transferOwnership(
12223                        data: &[u8],
12224                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12225                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12226                                data,
12227                            )
12228                            .map(LightClientMockCalls::transferOwnership)
12229                    }
12230                    transferOwnership
12231                },
12232                {
12233                    fn setStateHistory(
12234                        data: &[u8],
12235                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12236                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
12237                                data,
12238                            )
12239                            .map(LightClientMockCalls::setStateHistory)
12240                    }
12241                    setStateHistory
12242                },
12243                {
12244                    fn getStateHistoryCount(
12245                        data: &[u8],
12246                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12247                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
12248                                data,
12249                            )
12250                            .map(LightClientMockCalls::getStateHistoryCount)
12251                    }
12252                    getStateHistoryCount
12253                },
12254            ];
12255            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12256                return Err(
12257                    alloy_sol_types::Error::unknown_selector(
12258                        <Self as alloy_sol_types::SolInterface>::NAME,
12259                        selector,
12260                    ),
12261                );
12262            };
12263            DECODE_SHIMS[idx](data)
12264        }
12265        #[inline]
12266        #[allow(non_snake_case)]
12267        fn abi_decode_raw_validate(
12268            selector: [u8; 4],
12269            data: &[u8],
12270        ) -> alloy_sol_types::Result<Self> {
12271            static DECODE_VALIDATE_SHIMS: &[fn(
12272                &[u8],
12273            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
12274                {
12275                    fn setPermissionedProver(
12276                        data: &[u8],
12277                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12278                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12279                                data,
12280                            )
12281                            .map(LightClientMockCalls::setPermissionedProver)
12282                    }
12283                    setPermissionedProver
12284                },
12285                {
12286                    fn stateHistoryCommitments(
12287                        data: &[u8],
12288                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12289                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12290                                data,
12291                            )
12292                            .map(LightClientMockCalls::stateHistoryCommitments)
12293                    }
12294                    stateHistoryCommitments
12295                },
12296                {
12297                    fn getVersion(
12298                        data: &[u8],
12299                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12300                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12301                                data,
12302                            )
12303                            .map(LightClientMockCalls::getVersion)
12304                    }
12305                    getVersion
12306                },
12307                {
12308                    fn _getVk(
12309                        data: &[u8],
12310                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12311                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12312                                data,
12313                            )
12314                            .map(LightClientMockCalls::_getVk)
12315                    }
12316                    _getVk
12317                },
12318                {
12319                    fn newFinalizedState(
12320                        data: &[u8],
12321                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12322                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12323                                data,
12324                            )
12325                            .map(LightClientMockCalls::newFinalizedState)
12326                    }
12327                    newFinalizedState
12328                },
12329                {
12330                    fn setHotShotDownSince(
12331                        data: &[u8],
12332                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12333                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12334                                data,
12335                            )
12336                            .map(LightClientMockCalls::setHotShotDownSince)
12337                    }
12338                    setHotShotDownSince
12339                },
12340                {
12341                    fn stateHistoryFirstIndex(
12342                        data: &[u8],
12343                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12344                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12345                                data,
12346                            )
12347                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12348                    }
12349                    stateHistoryFirstIndex
12350                },
12351                {
12352                    fn permissionedProver(
12353                        data: &[u8],
12354                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12355                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12356                                data,
12357                            )
12358                            .map(LightClientMockCalls::permissionedProver)
12359                    }
12360                    permissionedProver
12361                },
12362                {
12363                    fn currentBlockNumber(
12364                        data: &[u8],
12365                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12366                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12367                                data,
12368                            )
12369                            .map(LightClientMockCalls::currentBlockNumber)
12370                    }
12371                    currentBlockNumber
12372                },
12373                {
12374                    fn genesisStakeTableState(
12375                        data: &[u8],
12376                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12377                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12378                                data,
12379                            )
12380                            .map(LightClientMockCalls::genesisStakeTableState)
12381                    }
12382                    genesisStakeTableState
12383                },
12384                {
12385                    fn upgradeToAndCall(
12386                        data: &[u8],
12387                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12388                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12389                                data,
12390                            )
12391                            .map(LightClientMockCalls::upgradeToAndCall)
12392                    }
12393                    upgradeToAndCall
12394                },
12395                {
12396                    fn proxiableUUID(
12397                        data: &[u8],
12398                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12399                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12400                                data,
12401                            )
12402                            .map(LightClientMockCalls::proxiableUUID)
12403                    }
12404                    proxiableUUID
12405                },
12406                {
12407                    fn disablePermissionedProverMode(
12408                        data: &[u8],
12409                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12410                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12411                                data,
12412                            )
12413                            .map(LightClientMockCalls::disablePermissionedProverMode)
12414                    }
12415                    disablePermissionedProverMode
12416                },
12417                {
12418                    fn renounceOwnership(
12419                        data: &[u8],
12420                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12421                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12422                                data,
12423                            )
12424                            .map(LightClientMockCalls::renounceOwnership)
12425                    }
12426                    renounceOwnership
12427                },
12428                {
12429                    fn isPermissionedProverEnabled(
12430                        data: &[u8],
12431                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12432                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12433                                data,
12434                            )
12435                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12436                    }
12437                    isPermissionedProverEnabled
12438                },
12439                {
12440                    fn getHotShotCommitment(
12441                        data: &[u8],
12442                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12443                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12444                                data,
12445                            )
12446                            .map(LightClientMockCalls::getHotShotCommitment)
12447                    }
12448                    getHotShotCommitment
12449                },
12450                {
12451                    fn owner(
12452                        data: &[u8],
12453                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12454                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12455                                data,
12456                            )
12457                            .map(LightClientMockCalls::owner)
12458                    }
12459                    owner
12460                },
12461                {
12462                    fn setstateHistoryRetentionPeriod(
12463                        data: &[u8],
12464                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12465                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12466                                data,
12467                            )
12468                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12469                    }
12470                    setstateHistoryRetentionPeriod
12471                },
12472                {
12473                    fn initialize(
12474                        data: &[u8],
12475                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12476                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12477                                data,
12478                            )
12479                            .map(LightClientMockCalls::initialize)
12480                    }
12481                    initialize
12482                },
12483                {
12484                    fn finalizedState(
12485                        data: &[u8],
12486                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12487                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12488                                data,
12489                            )
12490                            .map(LightClientMockCalls::finalizedState)
12491                    }
12492                    finalizedState
12493                },
12494                {
12495                    fn UPGRADE_INTERFACE_VERSION(
12496                        data: &[u8],
12497                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12498                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12499                                data,
12500                            )
12501                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12502                    }
12503                    UPGRADE_INTERFACE_VERSION
12504                },
12505                {
12506                    fn setFinalizedState(
12507                        data: &[u8],
12508                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12509                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12510                                data,
12511                            )
12512                            .map(LightClientMockCalls::setFinalizedState)
12513                    }
12514                    setFinalizedState
12515                },
12516                {
12517                    fn stateHistoryRetentionPeriod(
12518                        data: &[u8],
12519                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12520                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12521                                data,
12522                            )
12523                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12524                    }
12525                    stateHistoryRetentionPeriod
12526                },
12527                {
12528                    fn setHotShotUp(
12529                        data: &[u8],
12530                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12531                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12532                                data,
12533                            )
12534                            .map(LightClientMockCalls::setHotShotUp)
12535                    }
12536                    setHotShotUp
12537                },
12538                {
12539                    fn genesisState(
12540                        data: &[u8],
12541                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12542                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12543                                data,
12544                            )
12545                            .map(LightClientMockCalls::genesisState)
12546                    }
12547                    genesisState
12548                },
12549                {
12550                    fn lagOverEscapeHatchThreshold(
12551                        data: &[u8],
12552                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12553                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12554                                data,
12555                            )
12556                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12557                    }
12558                    lagOverEscapeHatchThreshold
12559                },
12560                {
12561                    fn transferOwnership(
12562                        data: &[u8],
12563                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12564                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12565                                data,
12566                            )
12567                            .map(LightClientMockCalls::transferOwnership)
12568                    }
12569                    transferOwnership
12570                },
12571                {
12572                    fn setStateHistory(
12573                        data: &[u8],
12574                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12575                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12576                                data,
12577                            )
12578                            .map(LightClientMockCalls::setStateHistory)
12579                    }
12580                    setStateHistory
12581                },
12582                {
12583                    fn getStateHistoryCount(
12584                        data: &[u8],
12585                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12586                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12587                                data,
12588                            )
12589                            .map(LightClientMockCalls::getStateHistoryCount)
12590                    }
12591                    getStateHistoryCount
12592                },
12593            ];
12594            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12595                return Err(
12596                    alloy_sol_types::Error::unknown_selector(
12597                        <Self as alloy_sol_types::SolInterface>::NAME,
12598                        selector,
12599                    ),
12600                );
12601            };
12602            DECODE_VALIDATE_SHIMS[idx](data)
12603        }
12604        #[inline]
12605        fn abi_encoded_size(&self) -> usize {
12606            match self {
12607                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12608                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12609                        inner,
12610                    )
12611                }
12612                Self::_getVk(inner) => {
12613                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12614                }
12615                Self::currentBlockNumber(inner) => {
12616                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12617                        inner,
12618                    )
12619                }
12620                Self::disablePermissionedProverMode(inner) => {
12621                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12622                        inner,
12623                    )
12624                }
12625                Self::finalizedState(inner) => {
12626                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12627                        inner,
12628                    )
12629                }
12630                Self::genesisStakeTableState(inner) => {
12631                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12632                        inner,
12633                    )
12634                }
12635                Self::genesisState(inner) => {
12636                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12637                        inner,
12638                    )
12639                }
12640                Self::getHotShotCommitment(inner) => {
12641                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12642                        inner,
12643                    )
12644                }
12645                Self::getStateHistoryCount(inner) => {
12646                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12647                        inner,
12648                    )
12649                }
12650                Self::getVersion(inner) => {
12651                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12652                }
12653                Self::initialize(inner) => {
12654                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12655                }
12656                Self::isPermissionedProverEnabled(inner) => {
12657                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12658                        inner,
12659                    )
12660                }
12661                Self::lagOverEscapeHatchThreshold(inner) => {
12662                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12663                        inner,
12664                    )
12665                }
12666                Self::newFinalizedState(inner) => {
12667                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12668                        inner,
12669                    )
12670                }
12671                Self::owner(inner) => {
12672                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12673                }
12674                Self::permissionedProver(inner) => {
12675                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12676                        inner,
12677                    )
12678                }
12679                Self::proxiableUUID(inner) => {
12680                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12681                        inner,
12682                    )
12683                }
12684                Self::renounceOwnership(inner) => {
12685                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12686                        inner,
12687                    )
12688                }
12689                Self::setFinalizedState(inner) => {
12690                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12691                        inner,
12692                    )
12693                }
12694                Self::setHotShotDownSince(inner) => {
12695                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
12696                        inner,
12697                    )
12698                }
12699                Self::setHotShotUp(inner) => {
12700                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
12701                        inner,
12702                    )
12703                }
12704                Self::setPermissionedProver(inner) => {
12705                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12706                        inner,
12707                    )
12708                }
12709                Self::setStateHistory(inner) => {
12710                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
12711                        inner,
12712                    )
12713                }
12714                Self::setstateHistoryRetentionPeriod(inner) => {
12715                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12716                        inner,
12717                    )
12718                }
12719                Self::stateHistoryCommitments(inner) => {
12720                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
12721                        inner,
12722                    )
12723                }
12724                Self::stateHistoryFirstIndex(inner) => {
12725                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12726                        inner,
12727                    )
12728                }
12729                Self::stateHistoryRetentionPeriod(inner) => {
12730                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12731                        inner,
12732                    )
12733                }
12734                Self::transferOwnership(inner) => {
12735                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12736                        inner,
12737                    )
12738                }
12739                Self::upgradeToAndCall(inner) => {
12740                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
12741                        inner,
12742                    )
12743                }
12744            }
12745        }
12746        #[inline]
12747        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12748            match self {
12749                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12750                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
12751                        inner,
12752                        out,
12753                    )
12754                }
12755                Self::_getVk(inner) => {
12756                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12757                }
12758                Self::currentBlockNumber(inner) => {
12759                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
12760                        inner,
12761                        out,
12762                    )
12763                }
12764                Self::disablePermissionedProverMode(inner) => {
12765                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12766                        inner,
12767                        out,
12768                    )
12769                }
12770                Self::finalizedState(inner) => {
12771                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12772                        inner,
12773                        out,
12774                    )
12775                }
12776                Self::genesisStakeTableState(inner) => {
12777                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12778                        inner,
12779                        out,
12780                    )
12781                }
12782                Self::genesisState(inner) => {
12783                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12784                        inner,
12785                        out,
12786                    )
12787                }
12788                Self::getHotShotCommitment(inner) => {
12789                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
12790                        inner,
12791                        out,
12792                    )
12793                }
12794                Self::getStateHistoryCount(inner) => {
12795                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
12796                        inner,
12797                        out,
12798                    )
12799                }
12800                Self::getVersion(inner) => {
12801                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
12802                        inner,
12803                        out,
12804                    )
12805                }
12806                Self::initialize(inner) => {
12807                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12808                        inner,
12809                        out,
12810                    )
12811                }
12812                Self::isPermissionedProverEnabled(inner) => {
12813                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
12814                        inner,
12815                        out,
12816                    )
12817                }
12818                Self::lagOverEscapeHatchThreshold(inner) => {
12819                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
12820                        inner,
12821                        out,
12822                    )
12823                }
12824                Self::newFinalizedState(inner) => {
12825                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12826                        inner,
12827                        out,
12828                    )
12829                }
12830                Self::owner(inner) => {
12831                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12832                }
12833                Self::permissionedProver(inner) => {
12834                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12835                        inner,
12836                        out,
12837                    )
12838                }
12839                Self::proxiableUUID(inner) => {
12840                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
12841                        inner,
12842                        out,
12843                    )
12844                }
12845                Self::renounceOwnership(inner) => {
12846                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
12847                        inner,
12848                        out,
12849                    )
12850                }
12851                Self::setFinalizedState(inner) => {
12852                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12853                        inner,
12854                        out,
12855                    )
12856                }
12857                Self::setHotShotDownSince(inner) => {
12858                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
12859                        inner,
12860                        out,
12861                    )
12862                }
12863                Self::setHotShotUp(inner) => {
12864                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
12865                        inner,
12866                        out,
12867                    )
12868                }
12869                Self::setPermissionedProver(inner) => {
12870                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12871                        inner,
12872                        out,
12873                    )
12874                }
12875                Self::setStateHistory(inner) => {
12876                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
12877                        inner,
12878                        out,
12879                    )
12880                }
12881                Self::setstateHistoryRetentionPeriod(inner) => {
12882                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12883                        inner,
12884                        out,
12885                    )
12886                }
12887                Self::stateHistoryCommitments(inner) => {
12888                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
12889                        inner,
12890                        out,
12891                    )
12892                }
12893                Self::stateHistoryFirstIndex(inner) => {
12894                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
12895                        inner,
12896                        out,
12897                    )
12898                }
12899                Self::stateHistoryRetentionPeriod(inner) => {
12900                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12901                        inner,
12902                        out,
12903                    )
12904                }
12905                Self::transferOwnership(inner) => {
12906                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
12907                        inner,
12908                        out,
12909                    )
12910                }
12911                Self::upgradeToAndCall(inner) => {
12912                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
12913                        inner,
12914                        out,
12915                    )
12916                }
12917            }
12918        }
12919    }
12920    ///Container for all the [`LightClientMock`](self) custom errors.
12921    #[derive(serde::Serialize, serde::Deserialize)]
12922    #[derive(Debug, PartialEq, Eq, Hash)]
12923    pub enum LightClientMockErrors {
12924        #[allow(missing_docs)]
12925        AddressEmptyCode(AddressEmptyCode),
12926        #[allow(missing_docs)]
12927        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
12928        #[allow(missing_docs)]
12929        ERC1967NonPayable(ERC1967NonPayable),
12930        #[allow(missing_docs)]
12931        FailedInnerCall(FailedInnerCall),
12932        #[allow(missing_docs)]
12933        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
12934        #[allow(missing_docs)]
12935        InvalidAddress(InvalidAddress),
12936        #[allow(missing_docs)]
12937        InvalidArgs(InvalidArgs),
12938        #[allow(missing_docs)]
12939        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
12940        #[allow(missing_docs)]
12941        InvalidInitialization(InvalidInitialization),
12942        #[allow(missing_docs)]
12943        InvalidMaxStateHistory(InvalidMaxStateHistory),
12944        #[allow(missing_docs)]
12945        InvalidProof(InvalidProof),
12946        #[allow(missing_docs)]
12947        InvalidScalar(InvalidScalar),
12948        #[allow(missing_docs)]
12949        NoChangeRequired(NoChangeRequired),
12950        #[allow(missing_docs)]
12951        NotInitializing(NotInitializing),
12952        #[allow(missing_docs)]
12953        OutdatedState(OutdatedState),
12954        #[allow(missing_docs)]
12955        OwnableInvalidOwner(OwnableInvalidOwner),
12956        #[allow(missing_docs)]
12957        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
12958        #[allow(missing_docs)]
12959        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
12960        #[allow(missing_docs)]
12961        ProverNotPermissioned(ProverNotPermissioned),
12962        #[allow(missing_docs)]
12963        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
12964        #[allow(missing_docs)]
12965        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
12966        #[allow(missing_docs)]
12967        WrongStakeTableUsed(WrongStakeTableUsed),
12968    }
12969    #[automatically_derived]
12970    impl LightClientMockErrors {
12971        /// All the selectors of this enum.
12972        ///
12973        /// Note that the selectors might not be in the same order as the variants.
12974        /// No guarantees are made about the order of the selectors.
12975        ///
12976        /// Prefer using `SolInterface` methods instead.
12977        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12978            [5u8, 28u8, 70u8, 239u8],
12979            [5u8, 176u8, 92u8, 204u8],
12980            [9u8, 189u8, 227u8, 57u8],
12981            [17u8, 140u8, 218u8, 167u8],
12982            [20u8, 37u8, 234u8, 66u8],
12983            [30u8, 79u8, 189u8, 247u8],
12984            [47u8, 171u8, 146u8, 202u8],
12985            [76u8, 156u8, 140u8, 227u8],
12986            [81u8, 97u8, 128u8, 137u8],
12987            [97u8, 90u8, 146u8, 100u8],
12988            [153u8, 150u8, 179u8, 21u8],
12989            [161u8, 186u8, 7u8, 238u8],
12990            [163u8, 166u8, 71u8, 128u8],
12991            [168u8, 99u8, 174u8, 201u8],
12992            [170u8, 29u8, 73u8, 164u8],
12993            [176u8, 180u8, 56u8, 119u8],
12994            [179u8, 152u8, 151u8, 159u8],
12995            [215u8, 230u8, 188u8, 248u8],
12996            [224u8, 124u8, 141u8, 186u8],
12997            [230u8, 196u8, 36u8, 123u8],
12998            [244u8, 160u8, 238u8, 224u8],
12999            [249u8, 46u8, 232u8, 169u8],
13000        ];
13001    }
13002    #[automatically_derived]
13003    impl alloy_sol_types::SolInterface for LightClientMockErrors {
13004        const NAME: &'static str = "LightClientMockErrors";
13005        const MIN_DATA_LENGTH: usize = 0usize;
13006        const COUNT: usize = 22usize;
13007        #[inline]
13008        fn selector(&self) -> [u8; 4] {
13009            match self {
13010                Self::AddressEmptyCode(_) => {
13011                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13012                }
13013                Self::ERC1967InvalidImplementation(_) => {
13014                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13015                }
13016                Self::ERC1967NonPayable(_) => {
13017                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13018                }
13019                Self::FailedInnerCall(_) => {
13020                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13021                }
13022                Self::InsufficientSnapshotHistory(_) => {
13023                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13024                }
13025                Self::InvalidAddress(_) => {
13026                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13027                }
13028                Self::InvalidArgs(_) => {
13029                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13030                }
13031                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13032                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13033                }
13034                Self::InvalidInitialization(_) => {
13035                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13036                }
13037                Self::InvalidMaxStateHistory(_) => {
13038                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13039                }
13040                Self::InvalidProof(_) => {
13041                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13042                }
13043                Self::InvalidScalar(_) => {
13044                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
13045                }
13046                Self::NoChangeRequired(_) => {
13047                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13048                }
13049                Self::NotInitializing(_) => {
13050                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13051                }
13052                Self::OutdatedState(_) => {
13053                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13054                }
13055                Self::OwnableInvalidOwner(_) => {
13056                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13057                }
13058                Self::OwnableUnauthorizedAccount(_) => {
13059                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13060                }
13061                Self::OwnershipCannotBeRenounced(_) => {
13062                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
13063                }
13064                Self::ProverNotPermissioned(_) => {
13065                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13066                }
13067                Self::UUPSUnauthorizedCallContext(_) => {
13068                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13069                }
13070                Self::UUPSUnsupportedProxiableUUID(_) => {
13071                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13072                }
13073                Self::WrongStakeTableUsed(_) => {
13074                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13075                }
13076            }
13077        }
13078        #[inline]
13079        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13080            Self::SELECTORS.get(i).copied()
13081        }
13082        #[inline]
13083        fn valid_selector(selector: [u8; 4]) -> bool {
13084            Self::SELECTORS.binary_search(&selector).is_ok()
13085        }
13086        #[inline]
13087        #[allow(non_snake_case)]
13088        fn abi_decode_raw(
13089            selector: [u8; 4],
13090            data: &[u8],
13091        ) -> alloy_sol_types::Result<Self> {
13092            static DECODE_SHIMS: &[fn(
13093                &[u8],
13094            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13095                {
13096                    fn OutdatedState(
13097                        data: &[u8],
13098                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13099                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
13100                                data,
13101                            )
13102                            .map(LightClientMockErrors::OutdatedState)
13103                    }
13104                    OutdatedState
13105                },
13106                {
13107                    fn InvalidScalar(
13108                        data: &[u8],
13109                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13110                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
13111                                data,
13112                            )
13113                            .map(LightClientMockErrors::InvalidScalar)
13114                    }
13115                    InvalidScalar
13116                },
13117                {
13118                    fn InvalidProof(
13119                        data: &[u8],
13120                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13121                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
13122                            .map(LightClientMockErrors::InvalidProof)
13123                    }
13124                    InvalidProof
13125                },
13126                {
13127                    fn OwnableUnauthorizedAccount(
13128                        data: &[u8],
13129                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13130                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13131                                data,
13132                            )
13133                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13134                    }
13135                    OwnableUnauthorizedAccount
13136                },
13137                {
13138                    fn FailedInnerCall(
13139                        data: &[u8],
13140                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13141                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13142                                data,
13143                            )
13144                            .map(LightClientMockErrors::FailedInnerCall)
13145                    }
13146                    FailedInnerCall
13147                },
13148                {
13149                    fn OwnableInvalidOwner(
13150                        data: &[u8],
13151                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13152                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13153                                data,
13154                            )
13155                            .map(LightClientMockErrors::OwnableInvalidOwner)
13156                    }
13157                    OwnableInvalidOwner
13158                },
13159                {
13160                    fn OwnershipCannotBeRenounced(
13161                        data: &[u8],
13162                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13163                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
13164                                data,
13165                            )
13166                            .map(LightClientMockErrors::OwnershipCannotBeRenounced)
13167                    }
13168                    OwnershipCannotBeRenounced
13169                },
13170                {
13171                    fn ERC1967InvalidImplementation(
13172                        data: &[u8],
13173                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13174                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13175                                data,
13176                            )
13177                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13178                    }
13179                    ERC1967InvalidImplementation
13180                },
13181                {
13182                    fn WrongStakeTableUsed(
13183                        data: &[u8],
13184                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13185                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13186                                data,
13187                            )
13188                            .map(LightClientMockErrors::WrongStakeTableUsed)
13189                    }
13190                    WrongStakeTableUsed
13191                },
13192                {
13193                    fn InvalidHotShotBlockForCommitmentCheck(
13194                        data: &[u8],
13195                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13196                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13197                                data,
13198                            )
13199                            .map(
13200                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13201                            )
13202                    }
13203                    InvalidHotShotBlockForCommitmentCheck
13204                },
13205                {
13206                    fn AddressEmptyCode(
13207                        data: &[u8],
13208                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13209                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13210                                data,
13211                            )
13212                            .map(LightClientMockErrors::AddressEmptyCode)
13213                    }
13214                    AddressEmptyCode
13215                },
13216                {
13217                    fn InvalidArgs(
13218                        data: &[u8],
13219                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13220                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
13221                            .map(LightClientMockErrors::InvalidArgs)
13222                    }
13223                    InvalidArgs
13224                },
13225                {
13226                    fn ProverNotPermissioned(
13227                        data: &[u8],
13228                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13229                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13230                                data,
13231                            )
13232                            .map(LightClientMockErrors::ProverNotPermissioned)
13233                    }
13234                    ProverNotPermissioned
13235                },
13236                {
13237                    fn NoChangeRequired(
13238                        data: &[u8],
13239                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13240                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13241                                data,
13242                            )
13243                            .map(LightClientMockErrors::NoChangeRequired)
13244                    }
13245                    NoChangeRequired
13246                },
13247                {
13248                    fn UUPSUnsupportedProxiableUUID(
13249                        data: &[u8],
13250                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13251                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13252                                data,
13253                            )
13254                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13255                    }
13256                    UUPSUnsupportedProxiableUUID
13257                },
13258                {
13259                    fn InsufficientSnapshotHistory(
13260                        data: &[u8],
13261                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13262                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13263                                data,
13264                            )
13265                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13266                    }
13267                    InsufficientSnapshotHistory
13268                },
13269                {
13270                    fn ERC1967NonPayable(
13271                        data: &[u8],
13272                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13273                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13274                                data,
13275                            )
13276                            .map(LightClientMockErrors::ERC1967NonPayable)
13277                    }
13278                    ERC1967NonPayable
13279                },
13280                {
13281                    fn NotInitializing(
13282                        data: &[u8],
13283                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13284                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13285                                data,
13286                            )
13287                            .map(LightClientMockErrors::NotInitializing)
13288                    }
13289                    NotInitializing
13290                },
13291                {
13292                    fn UUPSUnauthorizedCallContext(
13293                        data: &[u8],
13294                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13295                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13296                                data,
13297                            )
13298                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13299                    }
13300                    UUPSUnauthorizedCallContext
13301                },
13302                {
13303                    fn InvalidAddress(
13304                        data: &[u8],
13305                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13306                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13307                                data,
13308                            )
13309                            .map(LightClientMockErrors::InvalidAddress)
13310                    }
13311                    InvalidAddress
13312                },
13313                {
13314                    fn InvalidMaxStateHistory(
13315                        data: &[u8],
13316                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13317                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13318                                data,
13319                            )
13320                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13321                    }
13322                    InvalidMaxStateHistory
13323                },
13324                {
13325                    fn InvalidInitialization(
13326                        data: &[u8],
13327                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13328                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13329                                data,
13330                            )
13331                            .map(LightClientMockErrors::InvalidInitialization)
13332                    }
13333                    InvalidInitialization
13334                },
13335            ];
13336            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13337                return Err(
13338                    alloy_sol_types::Error::unknown_selector(
13339                        <Self as alloy_sol_types::SolInterface>::NAME,
13340                        selector,
13341                    ),
13342                );
13343            };
13344            DECODE_SHIMS[idx](data)
13345        }
13346        #[inline]
13347        #[allow(non_snake_case)]
13348        fn abi_decode_raw_validate(
13349            selector: [u8; 4],
13350            data: &[u8],
13351        ) -> alloy_sol_types::Result<Self> {
13352            static DECODE_VALIDATE_SHIMS: &[fn(
13353                &[u8],
13354            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13355                {
13356                    fn OutdatedState(
13357                        data: &[u8],
13358                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13359                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
13360                                data,
13361                            )
13362                            .map(LightClientMockErrors::OutdatedState)
13363                    }
13364                    OutdatedState
13365                },
13366                {
13367                    fn InvalidScalar(
13368                        data: &[u8],
13369                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13370                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
13371                                data,
13372                            )
13373                            .map(LightClientMockErrors::InvalidScalar)
13374                    }
13375                    InvalidScalar
13376                },
13377                {
13378                    fn InvalidProof(
13379                        data: &[u8],
13380                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13381                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
13382                                data,
13383                            )
13384                            .map(LightClientMockErrors::InvalidProof)
13385                    }
13386                    InvalidProof
13387                },
13388                {
13389                    fn OwnableUnauthorizedAccount(
13390                        data: &[u8],
13391                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13392                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
13393                                data,
13394                            )
13395                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13396                    }
13397                    OwnableUnauthorizedAccount
13398                },
13399                {
13400                    fn FailedInnerCall(
13401                        data: &[u8],
13402                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13403                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
13404                                data,
13405                            )
13406                            .map(LightClientMockErrors::FailedInnerCall)
13407                    }
13408                    FailedInnerCall
13409                },
13410                {
13411                    fn OwnableInvalidOwner(
13412                        data: &[u8],
13413                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13414                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
13415                                data,
13416                            )
13417                            .map(LightClientMockErrors::OwnableInvalidOwner)
13418                    }
13419                    OwnableInvalidOwner
13420                },
13421                {
13422                    fn OwnershipCannotBeRenounced(
13423                        data: &[u8],
13424                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13425                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
13426                                data,
13427                            )
13428                            .map(LightClientMockErrors::OwnershipCannotBeRenounced)
13429                    }
13430                    OwnershipCannotBeRenounced
13431                },
13432                {
13433                    fn ERC1967InvalidImplementation(
13434                        data: &[u8],
13435                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13436                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
13437                                data,
13438                            )
13439                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13440                    }
13441                    ERC1967InvalidImplementation
13442                },
13443                {
13444                    fn WrongStakeTableUsed(
13445                        data: &[u8],
13446                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13447                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
13448                                data,
13449                            )
13450                            .map(LightClientMockErrors::WrongStakeTableUsed)
13451                    }
13452                    WrongStakeTableUsed
13453                },
13454                {
13455                    fn InvalidHotShotBlockForCommitmentCheck(
13456                        data: &[u8],
13457                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13458                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
13459                                data,
13460                            )
13461                            .map(
13462                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13463                            )
13464                    }
13465                    InvalidHotShotBlockForCommitmentCheck
13466                },
13467                {
13468                    fn AddressEmptyCode(
13469                        data: &[u8],
13470                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13471                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
13472                                data,
13473                            )
13474                            .map(LightClientMockErrors::AddressEmptyCode)
13475                    }
13476                    AddressEmptyCode
13477                },
13478                {
13479                    fn InvalidArgs(
13480                        data: &[u8],
13481                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13482                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
13483                                data,
13484                            )
13485                            .map(LightClientMockErrors::InvalidArgs)
13486                    }
13487                    InvalidArgs
13488                },
13489                {
13490                    fn ProverNotPermissioned(
13491                        data: &[u8],
13492                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13493                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
13494                                data,
13495                            )
13496                            .map(LightClientMockErrors::ProverNotPermissioned)
13497                    }
13498                    ProverNotPermissioned
13499                },
13500                {
13501                    fn NoChangeRequired(
13502                        data: &[u8],
13503                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13504                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
13505                                data,
13506                            )
13507                            .map(LightClientMockErrors::NoChangeRequired)
13508                    }
13509                    NoChangeRequired
13510                },
13511                {
13512                    fn UUPSUnsupportedProxiableUUID(
13513                        data: &[u8],
13514                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13515                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
13516                                data,
13517                            )
13518                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13519                    }
13520                    UUPSUnsupportedProxiableUUID
13521                },
13522                {
13523                    fn InsufficientSnapshotHistory(
13524                        data: &[u8],
13525                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13526                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13527                                data,
13528                            )
13529                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13530                    }
13531                    InsufficientSnapshotHistory
13532                },
13533                {
13534                    fn ERC1967NonPayable(
13535                        data: &[u8],
13536                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13537                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
13538                                data,
13539                            )
13540                            .map(LightClientMockErrors::ERC1967NonPayable)
13541                    }
13542                    ERC1967NonPayable
13543                },
13544                {
13545                    fn NotInitializing(
13546                        data: &[u8],
13547                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13548                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
13549                                data,
13550                            )
13551                            .map(LightClientMockErrors::NotInitializing)
13552                    }
13553                    NotInitializing
13554                },
13555                {
13556                    fn UUPSUnauthorizedCallContext(
13557                        data: &[u8],
13558                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13559                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
13560                                data,
13561                            )
13562                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13563                    }
13564                    UUPSUnauthorizedCallContext
13565                },
13566                {
13567                    fn InvalidAddress(
13568                        data: &[u8],
13569                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13570                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
13571                                data,
13572                            )
13573                            .map(LightClientMockErrors::InvalidAddress)
13574                    }
13575                    InvalidAddress
13576                },
13577                {
13578                    fn InvalidMaxStateHistory(
13579                        data: &[u8],
13580                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13581                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13582                                data,
13583                            )
13584                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13585                    }
13586                    InvalidMaxStateHistory
13587                },
13588                {
13589                    fn InvalidInitialization(
13590                        data: &[u8],
13591                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13592                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
13593                                data,
13594                            )
13595                            .map(LightClientMockErrors::InvalidInitialization)
13596                    }
13597                    InvalidInitialization
13598                },
13599            ];
13600            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13601                return Err(
13602                    alloy_sol_types::Error::unknown_selector(
13603                        <Self as alloy_sol_types::SolInterface>::NAME,
13604                        selector,
13605                    ),
13606                );
13607            };
13608            DECODE_VALIDATE_SHIMS[idx](data)
13609        }
13610        #[inline]
13611        fn abi_encoded_size(&self) -> usize {
13612            match self {
13613                Self::AddressEmptyCode(inner) => {
13614                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13615                        inner,
13616                    )
13617                }
13618                Self::ERC1967InvalidImplementation(inner) => {
13619                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13620                        inner,
13621                    )
13622                }
13623                Self::ERC1967NonPayable(inner) => {
13624                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13625                        inner,
13626                    )
13627                }
13628                Self::FailedInnerCall(inner) => {
13629                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13630                        inner,
13631                    )
13632                }
13633                Self::InsufficientSnapshotHistory(inner) => {
13634                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13635                        inner,
13636                    )
13637                }
13638                Self::InvalidAddress(inner) => {
13639                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13640                        inner,
13641                    )
13642                }
13643                Self::InvalidArgs(inner) => {
13644                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13645                }
13646                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13647                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13648                        inner,
13649                    )
13650                }
13651                Self::InvalidInitialization(inner) => {
13652                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13653                        inner,
13654                    )
13655                }
13656                Self::InvalidMaxStateHistory(inner) => {
13657                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13658                        inner,
13659                    )
13660                }
13661                Self::InvalidProof(inner) => {
13662                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13663                }
13664                Self::InvalidScalar(inner) => {
13665                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
13666                }
13667                Self::NoChangeRequired(inner) => {
13668                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13669                        inner,
13670                    )
13671                }
13672                Self::NotInitializing(inner) => {
13673                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13674                        inner,
13675                    )
13676                }
13677                Self::OutdatedState(inner) => {
13678                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13679                }
13680                Self::OwnableInvalidOwner(inner) => {
13681                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13682                        inner,
13683                    )
13684                }
13685                Self::OwnableUnauthorizedAccount(inner) => {
13686                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13687                        inner,
13688                    )
13689                }
13690                Self::OwnershipCannotBeRenounced(inner) => {
13691                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
13692                        inner,
13693                    )
13694                }
13695                Self::ProverNotPermissioned(inner) => {
13696                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13697                        inner,
13698                    )
13699                }
13700                Self::UUPSUnauthorizedCallContext(inner) => {
13701                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13702                        inner,
13703                    )
13704                }
13705                Self::UUPSUnsupportedProxiableUUID(inner) => {
13706                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13707                        inner,
13708                    )
13709                }
13710                Self::WrongStakeTableUsed(inner) => {
13711                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13712                        inner,
13713                    )
13714                }
13715            }
13716        }
13717        #[inline]
13718        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13719            match self {
13720                Self::AddressEmptyCode(inner) => {
13721                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13722                        inner,
13723                        out,
13724                    )
13725                }
13726                Self::ERC1967InvalidImplementation(inner) => {
13727                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13728                        inner,
13729                        out,
13730                    )
13731                }
13732                Self::ERC1967NonPayable(inner) => {
13733                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13734                        inner,
13735                        out,
13736                    )
13737                }
13738                Self::FailedInnerCall(inner) => {
13739                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13740                        inner,
13741                        out,
13742                    )
13743                }
13744                Self::InsufficientSnapshotHistory(inner) => {
13745                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13746                        inner,
13747                        out,
13748                    )
13749                }
13750                Self::InvalidAddress(inner) => {
13751                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13752                        inner,
13753                        out,
13754                    )
13755                }
13756                Self::InvalidArgs(inner) => {
13757                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13758                        inner,
13759                        out,
13760                    )
13761                }
13762                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13763                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13764                        inner,
13765                        out,
13766                    )
13767                }
13768                Self::InvalidInitialization(inner) => {
13769                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13770                        inner,
13771                        out,
13772                    )
13773                }
13774                Self::InvalidMaxStateHistory(inner) => {
13775                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
13776                        inner,
13777                        out,
13778                    )
13779                }
13780                Self::InvalidProof(inner) => {
13781                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
13782                        inner,
13783                        out,
13784                    )
13785                }
13786                Self::InvalidScalar(inner) => {
13787                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
13788                        inner,
13789                        out,
13790                    )
13791                }
13792                Self::NoChangeRequired(inner) => {
13793                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
13794                        inner,
13795                        out,
13796                    )
13797                }
13798                Self::NotInitializing(inner) => {
13799                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
13800                        inner,
13801                        out,
13802                    )
13803                }
13804                Self::OutdatedState(inner) => {
13805                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
13806                        inner,
13807                        out,
13808                    )
13809                }
13810                Self::OwnableInvalidOwner(inner) => {
13811                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
13812                        inner,
13813                        out,
13814                    )
13815                }
13816                Self::OwnableUnauthorizedAccount(inner) => {
13817                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13818                        inner,
13819                        out,
13820                    )
13821                }
13822                Self::OwnershipCannotBeRenounced(inner) => {
13823                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
13824                        inner,
13825                        out,
13826                    )
13827                }
13828                Self::ProverNotPermissioned(inner) => {
13829                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
13830                        inner,
13831                        out,
13832                    )
13833                }
13834                Self::UUPSUnauthorizedCallContext(inner) => {
13835                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
13836                        inner,
13837                        out,
13838                    )
13839                }
13840                Self::UUPSUnsupportedProxiableUUID(inner) => {
13841                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
13842                        inner,
13843                        out,
13844                    )
13845                }
13846                Self::WrongStakeTableUsed(inner) => {
13847                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
13848                        inner,
13849                        out,
13850                    )
13851                }
13852            }
13853        }
13854    }
13855    ///Container for all the [`LightClientMock`](self) events.
13856    #[derive(serde::Serialize, serde::Deserialize)]
13857    #[derive(Debug, PartialEq, Eq, Hash)]
13858    pub enum LightClientMockEvents {
13859        #[allow(missing_docs)]
13860        Initialized(Initialized),
13861        #[allow(missing_docs)]
13862        NewState(NewState),
13863        #[allow(missing_docs)]
13864        OwnershipTransferred(OwnershipTransferred),
13865        #[allow(missing_docs)]
13866        PermissionedProverNotRequired(PermissionedProverNotRequired),
13867        #[allow(missing_docs)]
13868        PermissionedProverRequired(PermissionedProverRequired),
13869        #[allow(missing_docs)]
13870        Upgrade(Upgrade),
13871        #[allow(missing_docs)]
13872        Upgraded(Upgraded),
13873    }
13874    #[automatically_derived]
13875    impl LightClientMockEvents {
13876        /// All the selectors of this enum.
13877        ///
13878        /// Note that the selectors might not be in the same order as the variants.
13879        /// No guarantees are made about the order of the selectors.
13880        ///
13881        /// Prefer using `SolInterface` methods instead.
13882        pub const SELECTORS: &'static [[u8; 32usize]] = &[
13883            [
13884                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
13885                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
13886                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
13887            ],
13888            [
13889                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
13890                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
13891                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
13892            ],
13893            [
13894                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
13895                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
13896                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
13897            ],
13898            [
13899                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
13900                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
13901                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
13902            ],
13903            [
13904                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
13905                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
13906                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
13907            ],
13908            [
13909                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
13910                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
13911                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
13912            ],
13913            [
13914                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
13915                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
13916                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
13917            ],
13918        ];
13919    }
13920    #[automatically_derived]
13921    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
13922        const NAME: &'static str = "LightClientMockEvents";
13923        const COUNT: usize = 7usize;
13924        fn decode_raw_log(
13925            topics: &[alloy_sol_types::Word],
13926            data: &[u8],
13927        ) -> alloy_sol_types::Result<Self> {
13928            match topics.first().copied() {
13929                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13930                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
13931                            topics,
13932                            data,
13933                        )
13934                        .map(Self::Initialized)
13935                }
13936                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13937                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13938                        .map(Self::NewState)
13939                }
13940                Some(
13941                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13942                ) => {
13943                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
13944                            topics,
13945                            data,
13946                        )
13947                        .map(Self::OwnershipTransferred)
13948                }
13949                Some(
13950                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13951                ) => {
13952                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13953                            topics,
13954                            data,
13955                        )
13956                        .map(Self::PermissionedProverNotRequired)
13957                }
13958                Some(
13959                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13960                ) => {
13961                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13962                            topics,
13963                            data,
13964                        )
13965                        .map(Self::PermissionedProverRequired)
13966                }
13967                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13968                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13969                        .map(Self::Upgrade)
13970                }
13971                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13972                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13973                        .map(Self::Upgraded)
13974                }
13975                _ => {
13976                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
13977                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
13978                        log: alloy_sol_types::private::Box::new(
13979                            alloy_sol_types::private::LogData::new_unchecked(
13980                                topics.to_vec(),
13981                                data.to_vec().into(),
13982                            ),
13983                        ),
13984                    })
13985                }
13986            }
13987        }
13988    }
13989    #[automatically_derived]
13990    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
13991        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
13992            match self {
13993                Self::Initialized(inner) => {
13994                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13995                }
13996                Self::NewState(inner) => {
13997                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13998                }
13999                Self::OwnershipTransferred(inner) => {
14000                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14001                }
14002                Self::PermissionedProverNotRequired(inner) => {
14003                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14004                }
14005                Self::PermissionedProverRequired(inner) => {
14006                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14007                }
14008                Self::Upgrade(inner) => {
14009                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14010                }
14011                Self::Upgraded(inner) => {
14012                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14013                }
14014            }
14015        }
14016        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14017            match self {
14018                Self::Initialized(inner) => {
14019                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14020                }
14021                Self::NewState(inner) => {
14022                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14023                }
14024                Self::OwnershipTransferred(inner) => {
14025                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14026                }
14027                Self::PermissionedProverNotRequired(inner) => {
14028                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14029                }
14030                Self::PermissionedProverRequired(inner) => {
14031                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14032                }
14033                Self::Upgrade(inner) => {
14034                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14035                }
14036                Self::Upgraded(inner) => {
14037                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14038                }
14039            }
14040        }
14041    }
14042    use alloy::contract as alloy_contract;
14043    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14044
14045See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14046    #[inline]
14047    pub const fn new<
14048        P: alloy_contract::private::Provider<N>,
14049        N: alloy_contract::private::Network,
14050    >(
14051        address: alloy_sol_types::private::Address,
14052        provider: P,
14053    ) -> LightClientMockInstance<P, N> {
14054        LightClientMockInstance::<P, N>::new(address, provider)
14055    }
14056    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14057
14058Returns a new instance of the contract, if the deployment was successful.
14059
14060For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14061    #[inline]
14062    pub fn deploy<
14063        P: alloy_contract::private::Provider<N>,
14064        N: alloy_contract::private::Network,
14065    >(
14066        provider: P,
14067    ) -> impl ::core::future::Future<
14068        Output = alloy_contract::Result<LightClientMockInstance<P, N>>,
14069    > {
14070        LightClientMockInstance::<P, N>::deploy(provider)
14071    }
14072    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14073and constructor arguments, if any.
14074
14075This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14076the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14077    #[inline]
14078    pub fn deploy_builder<
14079        P: alloy_contract::private::Provider<N>,
14080        N: alloy_contract::private::Network,
14081    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14082        LightClientMockInstance::<P, N>::deploy_builder(provider)
14083    }
14084    /**A [`LightClientMock`](self) instance.
14085
14086Contains type-safe methods for interacting with an on-chain instance of the
14087[`LightClientMock`](self) contract located at a given `address`, using a given
14088provider `P`.
14089
14090If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14091documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14092be used to deploy a new instance of the contract.
14093
14094See the [module-level documentation](self) for all the available methods.*/
14095    #[derive(Clone)]
14096    pub struct LightClientMockInstance<P, N = alloy_contract::private::Ethereum> {
14097        address: alloy_sol_types::private::Address,
14098        provider: P,
14099        _network: ::core::marker::PhantomData<N>,
14100    }
14101    #[automatically_derived]
14102    impl<P, N> ::core::fmt::Debug for LightClientMockInstance<P, N> {
14103        #[inline]
14104        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14105            f.debug_tuple("LightClientMockInstance").field(&self.address).finish()
14106        }
14107    }
14108    /// Instantiation and getters/setters.
14109    #[automatically_derived]
14110    impl<
14111        P: alloy_contract::private::Provider<N>,
14112        N: alloy_contract::private::Network,
14113    > LightClientMockInstance<P, N> {
14114        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14115
14116See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14117        #[inline]
14118        pub const fn new(
14119            address: alloy_sol_types::private::Address,
14120            provider: P,
14121        ) -> Self {
14122            Self {
14123                address,
14124                provider,
14125                _network: ::core::marker::PhantomData,
14126            }
14127        }
14128        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14129
14130Returns a new instance of the contract, if the deployment was successful.
14131
14132For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14133        #[inline]
14134        pub async fn deploy(
14135            provider: P,
14136        ) -> alloy_contract::Result<LightClientMockInstance<P, N>> {
14137            let call_builder = Self::deploy_builder(provider);
14138            let contract_address = call_builder.deploy().await?;
14139            Ok(Self::new(contract_address, call_builder.provider))
14140        }
14141        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14142and constructor arguments, if any.
14143
14144This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14145the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14146        #[inline]
14147        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14148            alloy_contract::RawCallBuilder::new_raw_deploy(
14149                provider,
14150                ::core::clone::Clone::clone(&BYTECODE),
14151            )
14152        }
14153        /// Returns a reference to the address.
14154        #[inline]
14155        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14156            &self.address
14157        }
14158        /// Sets the address.
14159        #[inline]
14160        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14161            self.address = address;
14162        }
14163        /// Sets the address and returns `self`.
14164        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14165            self.set_address(address);
14166            self
14167        }
14168        /// Returns a reference to the provider.
14169        #[inline]
14170        pub const fn provider(&self) -> &P {
14171            &self.provider
14172        }
14173    }
14174    impl<P: ::core::clone::Clone, N> LightClientMockInstance<&P, N> {
14175        /// Clones the provider and returns a new instance with the cloned provider.
14176        #[inline]
14177        pub fn with_cloned_provider(self) -> LightClientMockInstance<P, N> {
14178            LightClientMockInstance {
14179                address: self.address,
14180                provider: ::core::clone::Clone::clone(&self.provider),
14181                _network: ::core::marker::PhantomData,
14182            }
14183        }
14184    }
14185    /// Function calls.
14186    #[automatically_derived]
14187    impl<
14188        P: alloy_contract::private::Provider<N>,
14189        N: alloy_contract::private::Network,
14190    > LightClientMockInstance<P, N> {
14191        /// Creates a new call builder using this contract instance's provider and address.
14192        ///
14193        /// Note that the call can be any function call, not just those defined in this
14194        /// contract. Prefer using the other methods for building type-safe contract calls.
14195        pub fn call_builder<C: alloy_sol_types::SolCall>(
14196            &self,
14197            call: &C,
14198        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
14199            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14200        }
14201        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14202        pub fn UPGRADE_INTERFACE_VERSION(
14203            &self,
14204        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
14205            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
14206        }
14207        ///Creates a new call builder for the [`_getVk`] function.
14208        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
14209            self.call_builder(&_getVkCall)
14210        }
14211        ///Creates a new call builder for the [`currentBlockNumber`] function.
14212        pub fn currentBlockNumber(
14213            &self,
14214        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
14215            self.call_builder(&currentBlockNumberCall)
14216        }
14217        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14218        pub fn disablePermissionedProverMode(
14219            &self,
14220        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
14221            self.call_builder(&disablePermissionedProverModeCall)
14222        }
14223        ///Creates a new call builder for the [`finalizedState`] function.
14224        pub fn finalizedState(
14225            &self,
14226        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
14227            self.call_builder(&finalizedStateCall)
14228        }
14229        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14230        pub fn genesisStakeTableState(
14231            &self,
14232        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
14233            self.call_builder(&genesisStakeTableStateCall)
14234        }
14235        ///Creates a new call builder for the [`genesisState`] function.
14236        pub fn genesisState(
14237            &self,
14238        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
14239            self.call_builder(&genesisStateCall)
14240        }
14241        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14242        pub fn getHotShotCommitment(
14243            &self,
14244            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14245        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
14246            self.call_builder(
14247                &getHotShotCommitmentCall {
14248                    hotShotBlockHeight,
14249                },
14250            )
14251        }
14252        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14253        pub fn getStateHistoryCount(
14254            &self,
14255        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
14256            self.call_builder(&getStateHistoryCountCall)
14257        }
14258        ///Creates a new call builder for the [`getVersion`] function.
14259        pub fn getVersion(
14260            &self,
14261        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
14262            self.call_builder(&getVersionCall)
14263        }
14264        ///Creates a new call builder for the [`initialize`] function.
14265        pub fn initialize(
14266            &self,
14267            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14268            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14269            _stateHistoryRetentionPeriod: u32,
14270            owner: alloy::sol_types::private::Address,
14271        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
14272            self.call_builder(
14273                &initializeCall {
14274                    _genesis,
14275                    _genesisStakeTableState,
14276                    _stateHistoryRetentionPeriod,
14277                    owner,
14278                },
14279            )
14280        }
14281        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14282        pub fn isPermissionedProverEnabled(
14283            &self,
14284        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
14285            self.call_builder(&isPermissionedProverEnabledCall)
14286        }
14287        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14288        pub fn lagOverEscapeHatchThreshold(
14289            &self,
14290            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14291            threshold: alloy::sol_types::private::primitives::aliases::U256,
14292        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
14293            self.call_builder(
14294                &lagOverEscapeHatchThresholdCall {
14295                    blockNumber,
14296                    threshold,
14297                },
14298            )
14299        }
14300        ///Creates a new call builder for the [`newFinalizedState`] function.
14301        pub fn newFinalizedState(
14302            &self,
14303            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14304            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14305        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
14306            self.call_builder(
14307                &newFinalizedStateCall {
14308                    newState,
14309                    proof,
14310                },
14311            )
14312        }
14313        ///Creates a new call builder for the [`owner`] function.
14314        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
14315            self.call_builder(&ownerCall)
14316        }
14317        ///Creates a new call builder for the [`permissionedProver`] function.
14318        pub fn permissionedProver(
14319            &self,
14320        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
14321            self.call_builder(&permissionedProverCall)
14322        }
14323        ///Creates a new call builder for the [`proxiableUUID`] function.
14324        pub fn proxiableUUID(
14325            &self,
14326        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
14327            self.call_builder(&proxiableUUIDCall)
14328        }
14329        ///Creates a new call builder for the [`renounceOwnership`] function.
14330        pub fn renounceOwnership(
14331            &self,
14332        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
14333            self.call_builder(&renounceOwnershipCall)
14334        }
14335        ///Creates a new call builder for the [`setFinalizedState`] function.
14336        pub fn setFinalizedState(
14337            &self,
14338            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14339        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
14340            self.call_builder(&setFinalizedStateCall { state })
14341        }
14342        ///Creates a new call builder for the [`setHotShotDownSince`] function.
14343        pub fn setHotShotDownSince(
14344            &self,
14345            l1Height: alloy::sol_types::private::primitives::aliases::U256,
14346        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
14347            self.call_builder(
14348                &setHotShotDownSinceCall {
14349                    l1Height,
14350                },
14351            )
14352        }
14353        ///Creates a new call builder for the [`setHotShotUp`] function.
14354        pub fn setHotShotUp(
14355            &self,
14356        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
14357            self.call_builder(&setHotShotUpCall)
14358        }
14359        ///Creates a new call builder for the [`setPermissionedProver`] function.
14360        pub fn setPermissionedProver(
14361            &self,
14362            prover: alloy::sol_types::private::Address,
14363        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
14364            self.call_builder(
14365                &setPermissionedProverCall {
14366                    prover,
14367                },
14368            )
14369        }
14370        ///Creates a new call builder for the [`setStateHistory`] function.
14371        pub fn setStateHistory(
14372            &self,
14373            _stateHistoryCommitments: alloy::sol_types::private::Vec<
14374                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14375            >,
14376        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
14377            self.call_builder(
14378                &setStateHistoryCall {
14379                    _stateHistoryCommitments,
14380                },
14381            )
14382        }
14383        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14384        pub fn setstateHistoryRetentionPeriod(
14385            &self,
14386            historySeconds: u32,
14387        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
14388            self.call_builder(
14389                &setstateHistoryRetentionPeriodCall {
14390                    historySeconds,
14391                },
14392            )
14393        }
14394        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14395        pub fn stateHistoryCommitments(
14396            &self,
14397            _0: alloy::sol_types::private::primitives::aliases::U256,
14398        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
14399            self.call_builder(&stateHistoryCommitmentsCall(_0))
14400        }
14401        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14402        pub fn stateHistoryFirstIndex(
14403            &self,
14404        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
14405            self.call_builder(&stateHistoryFirstIndexCall)
14406        }
14407        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14408        pub fn stateHistoryRetentionPeriod(
14409            &self,
14410        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
14411            self.call_builder(&stateHistoryRetentionPeriodCall)
14412        }
14413        ///Creates a new call builder for the [`transferOwnership`] function.
14414        pub fn transferOwnership(
14415            &self,
14416            newOwner: alloy::sol_types::private::Address,
14417        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
14418            self.call_builder(&transferOwnershipCall { newOwner })
14419        }
14420        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14421        pub fn upgradeToAndCall(
14422            &self,
14423            newImplementation: alloy::sol_types::private::Address,
14424            data: alloy::sol_types::private::Bytes,
14425        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
14426            self.call_builder(
14427                &upgradeToAndCallCall {
14428                    newImplementation,
14429                    data,
14430                },
14431            )
14432        }
14433    }
14434    /// Event filters.
14435    #[automatically_derived]
14436    impl<
14437        P: alloy_contract::private::Provider<N>,
14438        N: alloy_contract::private::Network,
14439    > LightClientMockInstance<P, N> {
14440        /// Creates a new event filter using this contract instance's provider and address.
14441        ///
14442        /// Note that the type can be any event, not just those defined in this contract.
14443        /// Prefer using the other methods for building type-safe event filters.
14444        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14445            &self,
14446        ) -> alloy_contract::Event<&P, E, N> {
14447            alloy_contract::Event::new_sol(&self.provider, &self.address)
14448        }
14449        ///Creates a new event filter for the [`Initialized`] event.
14450        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
14451            self.event_filter::<Initialized>()
14452        }
14453        ///Creates a new event filter for the [`NewState`] event.
14454        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
14455            self.event_filter::<NewState>()
14456        }
14457        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14458        pub fn OwnershipTransferred_filter(
14459            &self,
14460        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
14461            self.event_filter::<OwnershipTransferred>()
14462        }
14463        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14464        pub fn PermissionedProverNotRequired_filter(
14465            &self,
14466        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
14467            self.event_filter::<PermissionedProverNotRequired>()
14468        }
14469        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14470        pub fn PermissionedProverRequired_filter(
14471            &self,
14472        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
14473            self.event_filter::<PermissionedProverRequired>()
14474        }
14475        ///Creates a new event filter for the [`Upgrade`] event.
14476        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
14477            self.event_filter::<Upgrade>()
14478        }
14479        ///Creates a new event filter for the [`Upgraded`] event.
14480        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
14481            self.event_filter::<Upgraded>()
14482        }
14483    }
14484}