hotshot_contract_adapter/bindings/
lightclientv3mock.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(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    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; }
616    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; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct 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; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "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,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct 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; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "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)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2225}
2226```*/
2227#[allow(
2228    non_camel_case_types,
2229    non_snake_case,
2230    clippy::pub_underscore_fields,
2231    clippy::style,
2232    clippy::empty_structs_with_brackets
2233)]
2234pub mod LightClient {
2235    use super::*;
2236    use alloy::sol_types as alloy_sol_types;
2237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2238    /**```solidity
2239struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240```*/
2241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2242    #[derive(Clone)]
2243    pub struct LightClientState {
2244        #[allow(missing_docs)]
2245        pub viewNum: u64,
2246        #[allow(missing_docs)]
2247        pub blockHeight: u64,
2248        #[allow(missing_docs)]
2249        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2250    }
2251    #[allow(
2252        non_camel_case_types,
2253        non_snake_case,
2254        clippy::pub_underscore_fields,
2255        clippy::style
2256    )]
2257    const _: () = {
2258        use alloy::sol_types as alloy_sol_types;
2259        #[doc(hidden)]
2260        type UnderlyingSolTuple<'a> = (
2261            alloy::sol_types::sol_data::Uint<64>,
2262            alloy::sol_types::sol_data::Uint<64>,
2263            BN254::ScalarField,
2264        );
2265        #[doc(hidden)]
2266        type UnderlyingRustTuple<'a> = (
2267            u64,
2268            u64,
2269            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2270        );
2271        #[cfg(test)]
2272        #[allow(dead_code, unreachable_patterns)]
2273        fn _type_assertion(
2274            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2275        ) {
2276            match _t {
2277                alloy_sol_types::private::AssertTypeEq::<
2278                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2279                >(_) => {}
2280            }
2281        }
2282        #[automatically_derived]
2283        #[doc(hidden)]
2284        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2285            fn from(value: LightClientState) -> Self {
2286                (value.viewNum, value.blockHeight, value.blockCommRoot)
2287            }
2288        }
2289        #[automatically_derived]
2290        #[doc(hidden)]
2291        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2293                Self {
2294                    viewNum: tuple.0,
2295                    blockHeight: tuple.1,
2296                    blockCommRoot: tuple.2,
2297                }
2298            }
2299        }
2300        #[automatically_derived]
2301        impl alloy_sol_types::SolValue for LightClientState {
2302            type SolType = Self;
2303        }
2304        #[automatically_derived]
2305        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2306            #[inline]
2307            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2308                (
2309                    <alloy::sol_types::sol_data::Uint<
2310                        64,
2311                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2312                    <alloy::sol_types::sol_data::Uint<
2313                        64,
2314                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2315                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2316                        &self.blockCommRoot,
2317                    ),
2318                )
2319            }
2320            #[inline]
2321            fn stv_abi_encoded_size(&self) -> usize {
2322                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2323                    return size;
2324                }
2325                let tuple = <UnderlyingRustTuple<
2326                    '_,
2327                > as ::core::convert::From<Self>>::from(self.clone());
2328                <UnderlyingSolTuple<
2329                    '_,
2330                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2331            }
2332            #[inline]
2333            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2334                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2335            }
2336            #[inline]
2337            fn stv_abi_encode_packed_to(
2338                &self,
2339                out: &mut alloy_sol_types::private::Vec<u8>,
2340            ) {
2341                let tuple = <UnderlyingRustTuple<
2342                    '_,
2343                > as ::core::convert::From<Self>>::from(self.clone());
2344                <UnderlyingSolTuple<
2345                    '_,
2346                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2347            }
2348            #[inline]
2349            fn stv_abi_packed_encoded_size(&self) -> usize {
2350                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2351                    return size;
2352                }
2353                let tuple = <UnderlyingRustTuple<
2354                    '_,
2355                > as ::core::convert::From<Self>>::from(self.clone());
2356                <UnderlyingSolTuple<
2357                    '_,
2358                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2359            }
2360        }
2361        #[automatically_derived]
2362        impl alloy_sol_types::SolType for LightClientState {
2363            type RustType = Self;
2364            type Token<'a> = <UnderlyingSolTuple<
2365                'a,
2366            > as alloy_sol_types::SolType>::Token<'a>;
2367            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2368            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2369                '_,
2370            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2371            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2372                '_,
2373            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2374            #[inline]
2375            fn valid_token(token: &Self::Token<'_>) -> bool {
2376                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2377            }
2378            #[inline]
2379            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2380                let tuple = <UnderlyingSolTuple<
2381                    '_,
2382                > as alloy_sol_types::SolType>::detokenize(token);
2383                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2384            }
2385        }
2386        #[automatically_derived]
2387        impl alloy_sol_types::SolStruct for LightClientState {
2388            const NAME: &'static str = "LightClientState";
2389            #[inline]
2390            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2391                alloy_sol_types::private::Cow::Borrowed(
2392                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2393                )
2394            }
2395            #[inline]
2396            fn eip712_components() -> alloy_sol_types::private::Vec<
2397                alloy_sol_types::private::Cow<'static, str>,
2398            > {
2399                alloy_sol_types::private::Vec::new()
2400            }
2401            #[inline]
2402            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2403                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2404            }
2405            #[inline]
2406            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2407                [
2408                    <alloy::sol_types::sol_data::Uint<
2409                        64,
2410                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2411                        .0,
2412                    <alloy::sol_types::sol_data::Uint<
2413                        64,
2414                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2415                        .0,
2416                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2417                            &self.blockCommRoot,
2418                        )
2419                        .0,
2420                ]
2421                    .concat()
2422            }
2423        }
2424        #[automatically_derived]
2425        impl alloy_sol_types::EventTopic for LightClientState {
2426            #[inline]
2427            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2428                0usize
2429                    + <alloy::sol_types::sol_data::Uint<
2430                        64,
2431                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2432                        &rust.viewNum,
2433                    )
2434                    + <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2437                        &rust.blockHeight,
2438                    )
2439                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2440                        &rust.blockCommRoot,
2441                    )
2442            }
2443            #[inline]
2444            fn encode_topic_preimage(
2445                rust: &Self::RustType,
2446                out: &mut alloy_sol_types::private::Vec<u8>,
2447            ) {
2448                out.reserve(
2449                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2450                );
2451                <alloy::sol_types::sol_data::Uint<
2452                    64,
2453                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2454                    &rust.viewNum,
2455                    out,
2456                );
2457                <alloy::sol_types::sol_data::Uint<
2458                    64,
2459                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2460                    &rust.blockHeight,
2461                    out,
2462                );
2463                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2464                    &rust.blockCommRoot,
2465                    out,
2466                );
2467            }
2468            #[inline]
2469            fn encode_topic(
2470                rust: &Self::RustType,
2471            ) -> alloy_sol_types::abi::token::WordToken {
2472                let mut out = alloy_sol_types::private::Vec::new();
2473                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2474                    rust,
2475                    &mut out,
2476                );
2477                alloy_sol_types::abi::token::WordToken(
2478                    alloy_sol_types::private::keccak256(out),
2479                )
2480            }
2481        }
2482    };
2483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2484    /**```solidity
2485struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2486```*/
2487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2488    #[derive(Clone)]
2489    pub struct StakeTableState {
2490        #[allow(missing_docs)]
2491        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2492        #[allow(missing_docs)]
2493        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2494        #[allow(missing_docs)]
2495        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2496        #[allow(missing_docs)]
2497        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2498    }
2499    #[allow(
2500        non_camel_case_types,
2501        non_snake_case,
2502        clippy::pub_underscore_fields,
2503        clippy::style
2504    )]
2505    const _: () = {
2506        use alloy::sol_types as alloy_sol_types;
2507        #[doc(hidden)]
2508        type UnderlyingSolTuple<'a> = (
2509            alloy::sol_types::sol_data::Uint<256>,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512            BN254::ScalarField,
2513        );
2514        #[doc(hidden)]
2515        type UnderlyingRustTuple<'a> = (
2516            alloy::sol_types::private::primitives::aliases::U256,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2520        );
2521        #[cfg(test)]
2522        #[allow(dead_code, unreachable_patterns)]
2523        fn _type_assertion(
2524            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2525        ) {
2526            match _t {
2527                alloy_sol_types::private::AssertTypeEq::<
2528                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2529                >(_) => {}
2530            }
2531        }
2532        #[automatically_derived]
2533        #[doc(hidden)]
2534        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2535            fn from(value: StakeTableState) -> Self {
2536                (
2537                    value.threshold,
2538                    value.blsKeyComm,
2539                    value.schnorrKeyComm,
2540                    value.amountComm,
2541                )
2542            }
2543        }
2544        #[automatically_derived]
2545        #[doc(hidden)]
2546        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2548                Self {
2549                    threshold: tuple.0,
2550                    blsKeyComm: tuple.1,
2551                    schnorrKeyComm: tuple.2,
2552                    amountComm: tuple.3,
2553                }
2554            }
2555        }
2556        #[automatically_derived]
2557        impl alloy_sol_types::SolValue for StakeTableState {
2558            type SolType = Self;
2559        }
2560        #[automatically_derived]
2561        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2562            #[inline]
2563            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2564                (
2565                    <alloy::sol_types::sol_data::Uint<
2566                        256,
2567                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2568                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2569                        &self.blsKeyComm,
2570                    ),
2571                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2572                        &self.schnorrKeyComm,
2573                    ),
2574                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2575                        &self.amountComm,
2576                    ),
2577                )
2578            }
2579            #[inline]
2580            fn stv_abi_encoded_size(&self) -> usize {
2581                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2582                    return size;
2583                }
2584                let tuple = <UnderlyingRustTuple<
2585                    '_,
2586                > as ::core::convert::From<Self>>::from(self.clone());
2587                <UnderlyingSolTuple<
2588                    '_,
2589                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2590            }
2591            #[inline]
2592            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2593                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2594            }
2595            #[inline]
2596            fn stv_abi_encode_packed_to(
2597                &self,
2598                out: &mut alloy_sol_types::private::Vec<u8>,
2599            ) {
2600                let tuple = <UnderlyingRustTuple<
2601                    '_,
2602                > as ::core::convert::From<Self>>::from(self.clone());
2603                <UnderlyingSolTuple<
2604                    '_,
2605                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2606            }
2607            #[inline]
2608            fn stv_abi_packed_encoded_size(&self) -> usize {
2609                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2610                    return size;
2611                }
2612                let tuple = <UnderlyingRustTuple<
2613                    '_,
2614                > as ::core::convert::From<Self>>::from(self.clone());
2615                <UnderlyingSolTuple<
2616                    '_,
2617                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2618            }
2619        }
2620        #[automatically_derived]
2621        impl alloy_sol_types::SolType for StakeTableState {
2622            type RustType = Self;
2623            type Token<'a> = <UnderlyingSolTuple<
2624                'a,
2625            > as alloy_sol_types::SolType>::Token<'a>;
2626            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2627            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2628                '_,
2629            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2630            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2631                '_,
2632            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2633            #[inline]
2634            fn valid_token(token: &Self::Token<'_>) -> bool {
2635                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2636            }
2637            #[inline]
2638            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2639                let tuple = <UnderlyingSolTuple<
2640                    '_,
2641                > as alloy_sol_types::SolType>::detokenize(token);
2642                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2643            }
2644        }
2645        #[automatically_derived]
2646        impl alloy_sol_types::SolStruct for StakeTableState {
2647            const NAME: &'static str = "StakeTableState";
2648            #[inline]
2649            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2650                alloy_sol_types::private::Cow::Borrowed(
2651                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2652                )
2653            }
2654            #[inline]
2655            fn eip712_components() -> alloy_sol_types::private::Vec<
2656                alloy_sol_types::private::Cow<'static, str>,
2657            > {
2658                alloy_sol_types::private::Vec::new()
2659            }
2660            #[inline]
2661            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2662                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2663            }
2664            #[inline]
2665            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2666                [
2667                    <alloy::sol_types::sol_data::Uint<
2668                        256,
2669                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2670                        .0,
2671                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2672                            &self.blsKeyComm,
2673                        )
2674                        .0,
2675                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2676                            &self.schnorrKeyComm,
2677                        )
2678                        .0,
2679                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2680                            &self.amountComm,
2681                        )
2682                        .0,
2683                ]
2684                    .concat()
2685            }
2686        }
2687        #[automatically_derived]
2688        impl alloy_sol_types::EventTopic for StakeTableState {
2689            #[inline]
2690            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2691                0usize
2692                    + <alloy::sol_types::sol_data::Uint<
2693                        256,
2694                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2695                        &rust.threshold,
2696                    )
2697                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2698                        &rust.blsKeyComm,
2699                    )
2700                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2701                        &rust.schnorrKeyComm,
2702                    )
2703                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2704                        &rust.amountComm,
2705                    )
2706            }
2707            #[inline]
2708            fn encode_topic_preimage(
2709                rust: &Self::RustType,
2710                out: &mut alloy_sol_types::private::Vec<u8>,
2711            ) {
2712                out.reserve(
2713                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2714                );
2715                <alloy::sol_types::sol_data::Uint<
2716                    256,
2717                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2718                    &rust.threshold,
2719                    out,
2720                );
2721                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2722                    &rust.blsKeyComm,
2723                    out,
2724                );
2725                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2726                    &rust.schnorrKeyComm,
2727                    out,
2728                );
2729                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2730                    &rust.amountComm,
2731                    out,
2732                );
2733            }
2734            #[inline]
2735            fn encode_topic(
2736                rust: &Self::RustType,
2737            ) -> alloy_sol_types::abi::token::WordToken {
2738                let mut out = alloy_sol_types::private::Vec::new();
2739                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2740                    rust,
2741                    &mut out,
2742                );
2743                alloy_sol_types::abi::token::WordToken(
2744                    alloy_sol_types::private::keccak256(out),
2745                )
2746            }
2747        }
2748    };
2749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2750    /**```solidity
2751struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2752```*/
2753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2754    #[derive(Clone)]
2755    pub struct StateHistoryCommitment {
2756        #[allow(missing_docs)]
2757        pub l1BlockHeight: u64,
2758        #[allow(missing_docs)]
2759        pub l1BlockTimestamp: u64,
2760        #[allow(missing_docs)]
2761        pub hotShotBlockHeight: u64,
2762        #[allow(missing_docs)]
2763        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2764    }
2765    #[allow(
2766        non_camel_case_types,
2767        non_snake_case,
2768        clippy::pub_underscore_fields,
2769        clippy::style
2770    )]
2771    const _: () = {
2772        use alloy::sol_types as alloy_sol_types;
2773        #[doc(hidden)]
2774        type UnderlyingSolTuple<'a> = (
2775            alloy::sol_types::sol_data::Uint<64>,
2776            alloy::sol_types::sol_data::Uint<64>,
2777            alloy::sol_types::sol_data::Uint<64>,
2778            BN254::ScalarField,
2779        );
2780        #[doc(hidden)]
2781        type UnderlyingRustTuple<'a> = (
2782            u64,
2783            u64,
2784            u64,
2785            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786        );
2787        #[cfg(test)]
2788        #[allow(dead_code, unreachable_patterns)]
2789        fn _type_assertion(
2790            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2791        ) {
2792            match _t {
2793                alloy_sol_types::private::AssertTypeEq::<
2794                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2795                >(_) => {}
2796            }
2797        }
2798        #[automatically_derived]
2799        #[doc(hidden)]
2800        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2801            fn from(value: StateHistoryCommitment) -> Self {
2802                (
2803                    value.l1BlockHeight,
2804                    value.l1BlockTimestamp,
2805                    value.hotShotBlockHeight,
2806                    value.hotShotBlockCommRoot,
2807                )
2808            }
2809        }
2810        #[automatically_derived]
2811        #[doc(hidden)]
2812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2814                Self {
2815                    l1BlockHeight: tuple.0,
2816                    l1BlockTimestamp: tuple.1,
2817                    hotShotBlockHeight: tuple.2,
2818                    hotShotBlockCommRoot: tuple.3,
2819                }
2820            }
2821        }
2822        #[automatically_derived]
2823        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2824            type SolType = Self;
2825        }
2826        #[automatically_derived]
2827        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2828            #[inline]
2829            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2830                (
2831                    <alloy::sol_types::sol_data::Uint<
2832                        64,
2833                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2834                    <alloy::sol_types::sol_data::Uint<
2835                        64,
2836                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2837                    <alloy::sol_types::sol_data::Uint<
2838                        64,
2839                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2840                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2841                        &self.hotShotBlockCommRoot,
2842                    ),
2843                )
2844            }
2845            #[inline]
2846            fn stv_abi_encoded_size(&self) -> usize {
2847                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2848                    return size;
2849                }
2850                let tuple = <UnderlyingRustTuple<
2851                    '_,
2852                > as ::core::convert::From<Self>>::from(self.clone());
2853                <UnderlyingSolTuple<
2854                    '_,
2855                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2856            }
2857            #[inline]
2858            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2859                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2860            }
2861            #[inline]
2862            fn stv_abi_encode_packed_to(
2863                &self,
2864                out: &mut alloy_sol_types::private::Vec<u8>,
2865            ) {
2866                let tuple = <UnderlyingRustTuple<
2867                    '_,
2868                > as ::core::convert::From<Self>>::from(self.clone());
2869                <UnderlyingSolTuple<
2870                    '_,
2871                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2872            }
2873            #[inline]
2874            fn stv_abi_packed_encoded_size(&self) -> usize {
2875                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2876                    return size;
2877                }
2878                let tuple = <UnderlyingRustTuple<
2879                    '_,
2880                > as ::core::convert::From<Self>>::from(self.clone());
2881                <UnderlyingSolTuple<
2882                    '_,
2883                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2884            }
2885        }
2886        #[automatically_derived]
2887        impl alloy_sol_types::SolType for StateHistoryCommitment {
2888            type RustType = Self;
2889            type Token<'a> = <UnderlyingSolTuple<
2890                'a,
2891            > as alloy_sol_types::SolType>::Token<'a>;
2892            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2893            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2894                '_,
2895            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2896            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2897                '_,
2898            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2899            #[inline]
2900            fn valid_token(token: &Self::Token<'_>) -> bool {
2901                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2902            }
2903            #[inline]
2904            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2905                let tuple = <UnderlyingSolTuple<
2906                    '_,
2907                > as alloy_sol_types::SolType>::detokenize(token);
2908                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2909            }
2910        }
2911        #[automatically_derived]
2912        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2913            const NAME: &'static str = "StateHistoryCommitment";
2914            #[inline]
2915            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2916                alloy_sol_types::private::Cow::Borrowed(
2917                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2918                )
2919            }
2920            #[inline]
2921            fn eip712_components() -> alloy_sol_types::private::Vec<
2922                alloy_sol_types::private::Cow<'static, str>,
2923            > {
2924                alloy_sol_types::private::Vec::new()
2925            }
2926            #[inline]
2927            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2928                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2929            }
2930            #[inline]
2931            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2932                [
2933                    <alloy::sol_types::sol_data::Uint<
2934                        64,
2935                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2936                        .0,
2937                    <alloy::sol_types::sol_data::Uint<
2938                        64,
2939                    > as alloy_sol_types::SolType>::eip712_data_word(
2940                            &self.l1BlockTimestamp,
2941                        )
2942                        .0,
2943                    <alloy::sol_types::sol_data::Uint<
2944                        64,
2945                    > as alloy_sol_types::SolType>::eip712_data_word(
2946                            &self.hotShotBlockHeight,
2947                        )
2948                        .0,
2949                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2950                            &self.hotShotBlockCommRoot,
2951                        )
2952                        .0,
2953                ]
2954                    .concat()
2955            }
2956        }
2957        #[automatically_derived]
2958        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2959            #[inline]
2960            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2961                0usize
2962                    + <alloy::sol_types::sol_data::Uint<
2963                        64,
2964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2965                        &rust.l1BlockHeight,
2966                    )
2967                    + <alloy::sol_types::sol_data::Uint<
2968                        64,
2969                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2970                        &rust.l1BlockTimestamp,
2971                    )
2972                    + <alloy::sol_types::sol_data::Uint<
2973                        64,
2974                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2975                        &rust.hotShotBlockHeight,
2976                    )
2977                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2978                        &rust.hotShotBlockCommRoot,
2979                    )
2980            }
2981            #[inline]
2982            fn encode_topic_preimage(
2983                rust: &Self::RustType,
2984                out: &mut alloy_sol_types::private::Vec<u8>,
2985            ) {
2986                out.reserve(
2987                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2988                );
2989                <alloy::sol_types::sol_data::Uint<
2990                    64,
2991                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2992                    &rust.l1BlockHeight,
2993                    out,
2994                );
2995                <alloy::sol_types::sol_data::Uint<
2996                    64,
2997                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2998                    &rust.l1BlockTimestamp,
2999                    out,
3000                );
3001                <alloy::sol_types::sol_data::Uint<
3002                    64,
3003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3004                    &rust.hotShotBlockHeight,
3005                    out,
3006                );
3007                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3008                    &rust.hotShotBlockCommRoot,
3009                    out,
3010                );
3011            }
3012            #[inline]
3013            fn encode_topic(
3014                rust: &Self::RustType,
3015            ) -> alloy_sol_types::abi::token::WordToken {
3016                let mut out = alloy_sol_types::private::Vec::new();
3017                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3018                    rust,
3019                    &mut out,
3020                );
3021                alloy_sol_types::abi::token::WordToken(
3022                    alloy_sol_types::private::keccak256(out),
3023                )
3024            }
3025        }
3026    };
3027    use alloy::contract as alloy_contract;
3028    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3029
3030See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3031    #[inline]
3032    pub const fn new<
3033        T: alloy_contract::private::Transport + ::core::clone::Clone,
3034        P: alloy_contract::private::Provider<T, N>,
3035        N: alloy_contract::private::Network,
3036    >(
3037        address: alloy_sol_types::private::Address,
3038        provider: P,
3039    ) -> LightClientInstance<T, P, N> {
3040        LightClientInstance::<T, P, N>::new(address, provider)
3041    }
3042    /**A [`LightClient`](self) instance.
3043
3044Contains type-safe methods for interacting with an on-chain instance of the
3045[`LightClient`](self) contract located at a given `address`, using a given
3046provider `P`.
3047
3048If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3049documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3050be used to deploy a new instance of the contract.
3051
3052See the [module-level documentation](self) for all the available methods.*/
3053    #[derive(Clone)]
3054    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
3055        address: alloy_sol_types::private::Address,
3056        provider: P,
3057        _network_transport: ::core::marker::PhantomData<(N, T)>,
3058    }
3059    #[automatically_derived]
3060    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
3061        #[inline]
3062        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3063            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3064        }
3065    }
3066    /// Instantiation and getters/setters.
3067    #[automatically_derived]
3068    impl<
3069        T: alloy_contract::private::Transport + ::core::clone::Clone,
3070        P: alloy_contract::private::Provider<T, N>,
3071        N: alloy_contract::private::Network,
3072    > LightClientInstance<T, P, N> {
3073        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3074
3075See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3076        #[inline]
3077        pub const fn new(
3078            address: alloy_sol_types::private::Address,
3079            provider: P,
3080        ) -> Self {
3081            Self {
3082                address,
3083                provider,
3084                _network_transport: ::core::marker::PhantomData,
3085            }
3086        }
3087        /// Returns a reference to the address.
3088        #[inline]
3089        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3090            &self.address
3091        }
3092        /// Sets the address.
3093        #[inline]
3094        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3095            self.address = address;
3096        }
3097        /// Sets the address and returns `self`.
3098        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3099            self.set_address(address);
3100            self
3101        }
3102        /// Returns a reference to the provider.
3103        #[inline]
3104        pub const fn provider(&self) -> &P {
3105            &self.provider
3106        }
3107    }
3108    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
3109        /// Clones the provider and returns a new instance with the cloned provider.
3110        #[inline]
3111        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
3112            LightClientInstance {
3113                address: self.address,
3114                provider: ::core::clone::Clone::clone(&self.provider),
3115                _network_transport: ::core::marker::PhantomData,
3116            }
3117        }
3118    }
3119    /// Function calls.
3120    #[automatically_derived]
3121    impl<
3122        T: alloy_contract::private::Transport + ::core::clone::Clone,
3123        P: alloy_contract::private::Provider<T, N>,
3124        N: alloy_contract::private::Network,
3125    > LightClientInstance<T, P, N> {
3126        /// Creates a new call builder using this contract instance's provider and address.
3127        ///
3128        /// Note that the call can be any function call, not just those defined in this
3129        /// contract. Prefer using the other methods for building type-safe contract calls.
3130        pub fn call_builder<C: alloy_sol_types::SolCall>(
3131            &self,
3132            call: &C,
3133        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
3134            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3135        }
3136    }
3137    /// Event filters.
3138    #[automatically_derived]
3139    impl<
3140        T: alloy_contract::private::Transport + ::core::clone::Clone,
3141        P: alloy_contract::private::Provider<T, N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<T, P, N> {
3144        /// Creates a new event filter using this contract instance's provider and address.
3145        ///
3146        /// Note that the type can be any event, not just those defined in this contract.
3147        /// Prefer using the other methods for building type-safe event filters.
3148        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3149            &self,
3150        ) -> alloy_contract::Event<T, &P, E, N> {
3151            alloy_contract::Event::new_sol(&self.provider, &self.address)
3152        }
3153    }
3154}
3155/**
3156
3157Generated by the following Solidity interface...
3158```solidity
3159library BN254 {
3160    type BaseField is uint256;
3161    type ScalarField is uint256;
3162    struct G1Point {
3163        BaseField x;
3164        BaseField y;
3165    }
3166}
3167
3168library IPlonkVerifier {
3169    struct PlonkProof {
3170        BN254.G1Point wire0;
3171        BN254.G1Point wire1;
3172        BN254.G1Point wire2;
3173        BN254.G1Point wire3;
3174        BN254.G1Point wire4;
3175        BN254.G1Point prodPerm;
3176        BN254.G1Point split0;
3177        BN254.G1Point split1;
3178        BN254.G1Point split2;
3179        BN254.G1Point split3;
3180        BN254.G1Point split4;
3181        BN254.G1Point zeta;
3182        BN254.G1Point zetaOmega;
3183        BN254.ScalarField wireEval0;
3184        BN254.ScalarField wireEval1;
3185        BN254.ScalarField wireEval2;
3186        BN254.ScalarField wireEval3;
3187        BN254.ScalarField wireEval4;
3188        BN254.ScalarField sigmaEval0;
3189        BN254.ScalarField sigmaEval1;
3190        BN254.ScalarField sigmaEval2;
3191        BN254.ScalarField sigmaEval3;
3192        BN254.ScalarField prodPermZetaOmegaEval;
3193    }
3194    struct VerifyingKey {
3195        uint256 domainSize;
3196        uint256 numInputs;
3197        BN254.G1Point sigma0;
3198        BN254.G1Point sigma1;
3199        BN254.G1Point sigma2;
3200        BN254.G1Point sigma3;
3201        BN254.G1Point sigma4;
3202        BN254.G1Point q1;
3203        BN254.G1Point q2;
3204        BN254.G1Point q3;
3205        BN254.G1Point q4;
3206        BN254.G1Point qM12;
3207        BN254.G1Point qM34;
3208        BN254.G1Point qO;
3209        BN254.G1Point qC;
3210        BN254.G1Point qH1;
3211        BN254.G1Point qH2;
3212        BN254.G1Point qH3;
3213        BN254.G1Point qH4;
3214        BN254.G1Point qEcc;
3215        bytes32 g2LSB;
3216        bytes32 g2MSB;
3217    }
3218}
3219
3220library LightClient {
3221    struct LightClientState {
3222        uint64 viewNum;
3223        uint64 blockHeight;
3224        BN254.ScalarField blockCommRoot;
3225    }
3226    struct StakeTableState {
3227        uint256 threshold;
3228        BN254.ScalarField blsKeyComm;
3229        BN254.ScalarField schnorrKeyComm;
3230        BN254.ScalarField amountComm;
3231    }
3232    struct StateHistoryCommitment {
3233        uint64 l1BlockHeight;
3234        uint64 l1BlockTimestamp;
3235        uint64 hotShotBlockHeight;
3236        BN254.ScalarField hotShotBlockCommRoot;
3237    }
3238}
3239
3240interface LightClientV3Mock {
3241    error AddressEmptyCode(address target);
3242    error DeprecatedApi();
3243    error ERC1967InvalidImplementation(address implementation);
3244    error ERC1967NonPayable();
3245    error FailedInnerCall();
3246    error InsufficientSnapshotHistory();
3247    error InvalidAddress();
3248    error InvalidArgs();
3249    error InvalidHotShotBlockForCommitmentCheck();
3250    error InvalidInitialization();
3251    error InvalidMaxStateHistory();
3252    error InvalidProof();
3253    error MissingEpochRootUpdate();
3254    error NoChangeRequired();
3255    error NotInitializing();
3256    error OutdatedState();
3257    error OwnableInvalidOwner(address owner);
3258    error OwnableUnauthorizedAccount(address account);
3259    error ProverNotPermissioned();
3260    error UUPSUnauthorizedCallContext();
3261    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3262    error WrongStakeTableUsed();
3263
3264    event Initialized(uint64 version);
3265    event NewEpoch(uint64 epoch);
3266    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3267    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3268    event PermissionedProverNotRequired();
3269    event PermissionedProverRequired(address permissionedProver);
3270    event Upgrade(address implementation);
3271    event Upgraded(address indexed implementation);
3272
3273    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3274    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3275    function authRoot() external view returns (uint256);
3276    function blocksPerEpoch() external view returns (uint64);
3277    function currentBlockNumber() external view returns (uint256);
3278    function currentEpoch() external view returns (uint64);
3279    function disablePermissionedProverMode() external;
3280    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3281    function epochStartBlock() external view returns (uint64);
3282    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3283    function firstEpoch() external view returns (uint64);
3284    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3285    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3286    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3287    function getStateHistoryCount() external view returns (uint256);
3288    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3289    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3290    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3291    function initializeV3() external;
3292    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3293    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3294    function isPermissionedProverEnabled() external view returns (bool);
3295    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3296    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3297    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3298    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3299    function owner() external view returns (address);
3300    function permissionedProver() external view returns (address);
3301    function proxiableUUID() external view returns (bytes32);
3302    function renounceOwnership() external;
3303    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3304    function setFinalizedState(LightClient.LightClientState memory state) external;
3305    function setHotShotDownSince(uint256 l1Height) external;
3306    function setHotShotUp() external;
3307    function setPermissionedProver(address prover) external;
3308    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3309    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3310    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3311    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3312    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3313    function stateHistoryFirstIndex() external view returns (uint64);
3314    function stateHistoryRetentionPeriod() external view returns (uint32);
3315    function transferOwnership(address newOwner) external;
3316    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3317    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3318    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3319}
3320```
3321
3322...which was generated by the following JSON ABI:
3323```json
3324[
3325  {
3326    "type": "function",
3327    "name": "UPGRADE_INTERFACE_VERSION",
3328    "inputs": [],
3329    "outputs": [
3330      {
3331        "name": "",
3332        "type": "string",
3333        "internalType": "string"
3334      }
3335    ],
3336    "stateMutability": "view"
3337  },
3338  {
3339    "type": "function",
3340    "name": "_getVk",
3341    "inputs": [],
3342    "outputs": [
3343      {
3344        "name": "vk",
3345        "type": "tuple",
3346        "internalType": "struct IPlonkVerifier.VerifyingKey",
3347        "components": [
3348          {
3349            "name": "domainSize",
3350            "type": "uint256",
3351            "internalType": "uint256"
3352          },
3353          {
3354            "name": "numInputs",
3355            "type": "uint256",
3356            "internalType": "uint256"
3357          },
3358          {
3359            "name": "sigma0",
3360            "type": "tuple",
3361            "internalType": "struct BN254.G1Point",
3362            "components": [
3363              {
3364                "name": "x",
3365                "type": "uint256",
3366                "internalType": "BN254.BaseField"
3367              },
3368              {
3369                "name": "y",
3370                "type": "uint256",
3371                "internalType": "BN254.BaseField"
3372              }
3373            ]
3374          },
3375          {
3376            "name": "sigma1",
3377            "type": "tuple",
3378            "internalType": "struct BN254.G1Point",
3379            "components": [
3380              {
3381                "name": "x",
3382                "type": "uint256",
3383                "internalType": "BN254.BaseField"
3384              },
3385              {
3386                "name": "y",
3387                "type": "uint256",
3388                "internalType": "BN254.BaseField"
3389              }
3390            ]
3391          },
3392          {
3393            "name": "sigma2",
3394            "type": "tuple",
3395            "internalType": "struct BN254.G1Point",
3396            "components": [
3397              {
3398                "name": "x",
3399                "type": "uint256",
3400                "internalType": "BN254.BaseField"
3401              },
3402              {
3403                "name": "y",
3404                "type": "uint256",
3405                "internalType": "BN254.BaseField"
3406              }
3407            ]
3408          },
3409          {
3410            "name": "sigma3",
3411            "type": "tuple",
3412            "internalType": "struct BN254.G1Point",
3413            "components": [
3414              {
3415                "name": "x",
3416                "type": "uint256",
3417                "internalType": "BN254.BaseField"
3418              },
3419              {
3420                "name": "y",
3421                "type": "uint256",
3422                "internalType": "BN254.BaseField"
3423              }
3424            ]
3425          },
3426          {
3427            "name": "sigma4",
3428            "type": "tuple",
3429            "internalType": "struct BN254.G1Point",
3430            "components": [
3431              {
3432                "name": "x",
3433                "type": "uint256",
3434                "internalType": "BN254.BaseField"
3435              },
3436              {
3437                "name": "y",
3438                "type": "uint256",
3439                "internalType": "BN254.BaseField"
3440              }
3441            ]
3442          },
3443          {
3444            "name": "q1",
3445            "type": "tuple",
3446            "internalType": "struct BN254.G1Point",
3447            "components": [
3448              {
3449                "name": "x",
3450                "type": "uint256",
3451                "internalType": "BN254.BaseField"
3452              },
3453              {
3454                "name": "y",
3455                "type": "uint256",
3456                "internalType": "BN254.BaseField"
3457              }
3458            ]
3459          },
3460          {
3461            "name": "q2",
3462            "type": "tuple",
3463            "internalType": "struct BN254.G1Point",
3464            "components": [
3465              {
3466                "name": "x",
3467                "type": "uint256",
3468                "internalType": "BN254.BaseField"
3469              },
3470              {
3471                "name": "y",
3472                "type": "uint256",
3473                "internalType": "BN254.BaseField"
3474              }
3475            ]
3476          },
3477          {
3478            "name": "q3",
3479            "type": "tuple",
3480            "internalType": "struct BN254.G1Point",
3481            "components": [
3482              {
3483                "name": "x",
3484                "type": "uint256",
3485                "internalType": "BN254.BaseField"
3486              },
3487              {
3488                "name": "y",
3489                "type": "uint256",
3490                "internalType": "BN254.BaseField"
3491              }
3492            ]
3493          },
3494          {
3495            "name": "q4",
3496            "type": "tuple",
3497            "internalType": "struct BN254.G1Point",
3498            "components": [
3499              {
3500                "name": "x",
3501                "type": "uint256",
3502                "internalType": "BN254.BaseField"
3503              },
3504              {
3505                "name": "y",
3506                "type": "uint256",
3507                "internalType": "BN254.BaseField"
3508              }
3509            ]
3510          },
3511          {
3512            "name": "qM12",
3513            "type": "tuple",
3514            "internalType": "struct BN254.G1Point",
3515            "components": [
3516              {
3517                "name": "x",
3518                "type": "uint256",
3519                "internalType": "BN254.BaseField"
3520              },
3521              {
3522                "name": "y",
3523                "type": "uint256",
3524                "internalType": "BN254.BaseField"
3525              }
3526            ]
3527          },
3528          {
3529            "name": "qM34",
3530            "type": "tuple",
3531            "internalType": "struct BN254.G1Point",
3532            "components": [
3533              {
3534                "name": "x",
3535                "type": "uint256",
3536                "internalType": "BN254.BaseField"
3537              },
3538              {
3539                "name": "y",
3540                "type": "uint256",
3541                "internalType": "BN254.BaseField"
3542              }
3543            ]
3544          },
3545          {
3546            "name": "qO",
3547            "type": "tuple",
3548            "internalType": "struct BN254.G1Point",
3549            "components": [
3550              {
3551                "name": "x",
3552                "type": "uint256",
3553                "internalType": "BN254.BaseField"
3554              },
3555              {
3556                "name": "y",
3557                "type": "uint256",
3558                "internalType": "BN254.BaseField"
3559              }
3560            ]
3561          },
3562          {
3563            "name": "qC",
3564            "type": "tuple",
3565            "internalType": "struct BN254.G1Point",
3566            "components": [
3567              {
3568                "name": "x",
3569                "type": "uint256",
3570                "internalType": "BN254.BaseField"
3571              },
3572              {
3573                "name": "y",
3574                "type": "uint256",
3575                "internalType": "BN254.BaseField"
3576              }
3577            ]
3578          },
3579          {
3580            "name": "qH1",
3581            "type": "tuple",
3582            "internalType": "struct BN254.G1Point",
3583            "components": [
3584              {
3585                "name": "x",
3586                "type": "uint256",
3587                "internalType": "BN254.BaseField"
3588              },
3589              {
3590                "name": "y",
3591                "type": "uint256",
3592                "internalType": "BN254.BaseField"
3593              }
3594            ]
3595          },
3596          {
3597            "name": "qH2",
3598            "type": "tuple",
3599            "internalType": "struct BN254.G1Point",
3600            "components": [
3601              {
3602                "name": "x",
3603                "type": "uint256",
3604                "internalType": "BN254.BaseField"
3605              },
3606              {
3607                "name": "y",
3608                "type": "uint256",
3609                "internalType": "BN254.BaseField"
3610              }
3611            ]
3612          },
3613          {
3614            "name": "qH3",
3615            "type": "tuple",
3616            "internalType": "struct BN254.G1Point",
3617            "components": [
3618              {
3619                "name": "x",
3620                "type": "uint256",
3621                "internalType": "BN254.BaseField"
3622              },
3623              {
3624                "name": "y",
3625                "type": "uint256",
3626                "internalType": "BN254.BaseField"
3627              }
3628            ]
3629          },
3630          {
3631            "name": "qH4",
3632            "type": "tuple",
3633            "internalType": "struct BN254.G1Point",
3634            "components": [
3635              {
3636                "name": "x",
3637                "type": "uint256",
3638                "internalType": "BN254.BaseField"
3639              },
3640              {
3641                "name": "y",
3642                "type": "uint256",
3643                "internalType": "BN254.BaseField"
3644              }
3645            ]
3646          },
3647          {
3648            "name": "qEcc",
3649            "type": "tuple",
3650            "internalType": "struct BN254.G1Point",
3651            "components": [
3652              {
3653                "name": "x",
3654                "type": "uint256",
3655                "internalType": "BN254.BaseField"
3656              },
3657              {
3658                "name": "y",
3659                "type": "uint256",
3660                "internalType": "BN254.BaseField"
3661              }
3662            ]
3663          },
3664          {
3665            "name": "g2LSB",
3666            "type": "bytes32",
3667            "internalType": "bytes32"
3668          },
3669          {
3670            "name": "g2MSB",
3671            "type": "bytes32",
3672            "internalType": "bytes32"
3673          }
3674        ]
3675      }
3676    ],
3677    "stateMutability": "pure"
3678  },
3679  {
3680    "type": "function",
3681    "name": "authRoot",
3682    "inputs": [],
3683    "outputs": [
3684      {
3685        "name": "",
3686        "type": "uint256",
3687        "internalType": "uint256"
3688      }
3689    ],
3690    "stateMutability": "view"
3691  },
3692  {
3693    "type": "function",
3694    "name": "blocksPerEpoch",
3695    "inputs": [],
3696    "outputs": [
3697      {
3698        "name": "",
3699        "type": "uint64",
3700        "internalType": "uint64"
3701      }
3702    ],
3703    "stateMutability": "view"
3704  },
3705  {
3706    "type": "function",
3707    "name": "currentBlockNumber",
3708    "inputs": [],
3709    "outputs": [
3710      {
3711        "name": "",
3712        "type": "uint256",
3713        "internalType": "uint256"
3714      }
3715    ],
3716    "stateMutability": "view"
3717  },
3718  {
3719    "type": "function",
3720    "name": "currentEpoch",
3721    "inputs": [],
3722    "outputs": [
3723      {
3724        "name": "",
3725        "type": "uint64",
3726        "internalType": "uint64"
3727      }
3728    ],
3729    "stateMutability": "view"
3730  },
3731  {
3732    "type": "function",
3733    "name": "disablePermissionedProverMode",
3734    "inputs": [],
3735    "outputs": [],
3736    "stateMutability": "nonpayable"
3737  },
3738  {
3739    "type": "function",
3740    "name": "epochFromBlockNumber",
3741    "inputs": [
3742      {
3743        "name": "_blockNum",
3744        "type": "uint64",
3745        "internalType": "uint64"
3746      },
3747      {
3748        "name": "_blocksPerEpoch",
3749        "type": "uint64",
3750        "internalType": "uint64"
3751      }
3752    ],
3753    "outputs": [
3754      {
3755        "name": "",
3756        "type": "uint64",
3757        "internalType": "uint64"
3758      }
3759    ],
3760    "stateMutability": "pure"
3761  },
3762  {
3763    "type": "function",
3764    "name": "epochStartBlock",
3765    "inputs": [],
3766    "outputs": [
3767      {
3768        "name": "",
3769        "type": "uint64",
3770        "internalType": "uint64"
3771      }
3772    ],
3773    "stateMutability": "view"
3774  },
3775  {
3776    "type": "function",
3777    "name": "finalizedState",
3778    "inputs": [],
3779    "outputs": [
3780      {
3781        "name": "viewNum",
3782        "type": "uint64",
3783        "internalType": "uint64"
3784      },
3785      {
3786        "name": "blockHeight",
3787        "type": "uint64",
3788        "internalType": "uint64"
3789      },
3790      {
3791        "name": "blockCommRoot",
3792        "type": "uint256",
3793        "internalType": "BN254.ScalarField"
3794      }
3795    ],
3796    "stateMutability": "view"
3797  },
3798  {
3799    "type": "function",
3800    "name": "firstEpoch",
3801    "inputs": [],
3802    "outputs": [
3803      {
3804        "name": "",
3805        "type": "uint64",
3806        "internalType": "uint64"
3807      }
3808    ],
3809    "stateMutability": "view"
3810  },
3811  {
3812    "type": "function",
3813    "name": "genesisStakeTableState",
3814    "inputs": [],
3815    "outputs": [
3816      {
3817        "name": "threshold",
3818        "type": "uint256",
3819        "internalType": "uint256"
3820      },
3821      {
3822        "name": "blsKeyComm",
3823        "type": "uint256",
3824        "internalType": "BN254.ScalarField"
3825      },
3826      {
3827        "name": "schnorrKeyComm",
3828        "type": "uint256",
3829        "internalType": "BN254.ScalarField"
3830      },
3831      {
3832        "name": "amountComm",
3833        "type": "uint256",
3834        "internalType": "BN254.ScalarField"
3835      }
3836    ],
3837    "stateMutability": "view"
3838  },
3839  {
3840    "type": "function",
3841    "name": "genesisState",
3842    "inputs": [],
3843    "outputs": [
3844      {
3845        "name": "viewNum",
3846        "type": "uint64",
3847        "internalType": "uint64"
3848      },
3849      {
3850        "name": "blockHeight",
3851        "type": "uint64",
3852        "internalType": "uint64"
3853      },
3854      {
3855        "name": "blockCommRoot",
3856        "type": "uint256",
3857        "internalType": "BN254.ScalarField"
3858      }
3859    ],
3860    "stateMutability": "view"
3861  },
3862  {
3863    "type": "function",
3864    "name": "getHotShotCommitment",
3865    "inputs": [
3866      {
3867        "name": "hotShotBlockHeight",
3868        "type": "uint256",
3869        "internalType": "uint256"
3870      }
3871    ],
3872    "outputs": [
3873      {
3874        "name": "hotShotBlockCommRoot",
3875        "type": "uint256",
3876        "internalType": "BN254.ScalarField"
3877      },
3878      {
3879        "name": "hotshotBlockHeight",
3880        "type": "uint64",
3881        "internalType": "uint64"
3882      }
3883    ],
3884    "stateMutability": "view"
3885  },
3886  {
3887    "type": "function",
3888    "name": "getStateHistoryCount",
3889    "inputs": [],
3890    "outputs": [
3891      {
3892        "name": "",
3893        "type": "uint256",
3894        "internalType": "uint256"
3895      }
3896    ],
3897    "stateMutability": "view"
3898  },
3899  {
3900    "type": "function",
3901    "name": "getVersion",
3902    "inputs": [],
3903    "outputs": [
3904      {
3905        "name": "majorVersion",
3906        "type": "uint8",
3907        "internalType": "uint8"
3908      },
3909      {
3910        "name": "minorVersion",
3911        "type": "uint8",
3912        "internalType": "uint8"
3913      },
3914      {
3915        "name": "patchVersion",
3916        "type": "uint8",
3917        "internalType": "uint8"
3918      }
3919    ],
3920    "stateMutability": "pure"
3921  },
3922  {
3923    "type": "function",
3924    "name": "initialize",
3925    "inputs": [
3926      {
3927        "name": "_genesis",
3928        "type": "tuple",
3929        "internalType": "struct LightClient.LightClientState",
3930        "components": [
3931          {
3932            "name": "viewNum",
3933            "type": "uint64",
3934            "internalType": "uint64"
3935          },
3936          {
3937            "name": "blockHeight",
3938            "type": "uint64",
3939            "internalType": "uint64"
3940          },
3941          {
3942            "name": "blockCommRoot",
3943            "type": "uint256",
3944            "internalType": "BN254.ScalarField"
3945          }
3946        ]
3947      },
3948      {
3949        "name": "_genesisStakeTableState",
3950        "type": "tuple",
3951        "internalType": "struct LightClient.StakeTableState",
3952        "components": [
3953          {
3954            "name": "threshold",
3955            "type": "uint256",
3956            "internalType": "uint256"
3957          },
3958          {
3959            "name": "blsKeyComm",
3960            "type": "uint256",
3961            "internalType": "BN254.ScalarField"
3962          },
3963          {
3964            "name": "schnorrKeyComm",
3965            "type": "uint256",
3966            "internalType": "BN254.ScalarField"
3967          },
3968          {
3969            "name": "amountComm",
3970            "type": "uint256",
3971            "internalType": "BN254.ScalarField"
3972          }
3973        ]
3974      },
3975      {
3976        "name": "_stateHistoryRetentionPeriod",
3977        "type": "uint32",
3978        "internalType": "uint32"
3979      },
3980      {
3981        "name": "owner",
3982        "type": "address",
3983        "internalType": "address"
3984      }
3985    ],
3986    "outputs": [],
3987    "stateMutability": "nonpayable"
3988  },
3989  {
3990    "type": "function",
3991    "name": "initializeV2",
3992    "inputs": [
3993      {
3994        "name": "_blocksPerEpoch",
3995        "type": "uint64",
3996        "internalType": "uint64"
3997      },
3998      {
3999        "name": "_epochStartBlock",
4000        "type": "uint64",
4001        "internalType": "uint64"
4002      }
4003    ],
4004    "outputs": [],
4005    "stateMutability": "nonpayable"
4006  },
4007  {
4008    "type": "function",
4009    "name": "initializeV3",
4010    "inputs": [],
4011    "outputs": [],
4012    "stateMutability": "nonpayable"
4013  },
4014  {
4015    "type": "function",
4016    "name": "isEpochRoot",
4017    "inputs": [
4018      {
4019        "name": "blockHeight",
4020        "type": "uint64",
4021        "internalType": "uint64"
4022      }
4023    ],
4024    "outputs": [
4025      {
4026        "name": "",
4027        "type": "bool",
4028        "internalType": "bool"
4029      }
4030    ],
4031    "stateMutability": "view"
4032  },
4033  {
4034    "type": "function",
4035    "name": "isGtEpochRoot",
4036    "inputs": [
4037      {
4038        "name": "blockHeight",
4039        "type": "uint64",
4040        "internalType": "uint64"
4041      }
4042    ],
4043    "outputs": [
4044      {
4045        "name": "",
4046        "type": "bool",
4047        "internalType": "bool"
4048      }
4049    ],
4050    "stateMutability": "view"
4051  },
4052  {
4053    "type": "function",
4054    "name": "isPermissionedProverEnabled",
4055    "inputs": [],
4056    "outputs": [
4057      {
4058        "name": "",
4059        "type": "bool",
4060        "internalType": "bool"
4061      }
4062    ],
4063    "stateMutability": "view"
4064  },
4065  {
4066    "type": "function",
4067    "name": "lagOverEscapeHatchThreshold",
4068    "inputs": [
4069      {
4070        "name": "blockNumber",
4071        "type": "uint256",
4072        "internalType": "uint256"
4073      },
4074      {
4075        "name": "threshold",
4076        "type": "uint256",
4077        "internalType": "uint256"
4078      }
4079    ],
4080    "outputs": [
4081      {
4082        "name": "",
4083        "type": "bool",
4084        "internalType": "bool"
4085      }
4086    ],
4087    "stateMutability": "view"
4088  },
4089  {
4090    "type": "function",
4091    "name": "newFinalizedState",
4092    "inputs": [
4093      {
4094        "name": "",
4095        "type": "tuple",
4096        "internalType": "struct LightClient.LightClientState",
4097        "components": [
4098          {
4099            "name": "viewNum",
4100            "type": "uint64",
4101            "internalType": "uint64"
4102          },
4103          {
4104            "name": "blockHeight",
4105            "type": "uint64",
4106            "internalType": "uint64"
4107          },
4108          {
4109            "name": "blockCommRoot",
4110            "type": "uint256",
4111            "internalType": "BN254.ScalarField"
4112          }
4113        ]
4114      },
4115      {
4116        "name": "",
4117        "type": "tuple",
4118        "internalType": "struct IPlonkVerifier.PlonkProof",
4119        "components": [
4120          {
4121            "name": "wire0",
4122            "type": "tuple",
4123            "internalType": "struct BN254.G1Point",
4124            "components": [
4125              {
4126                "name": "x",
4127                "type": "uint256",
4128                "internalType": "BN254.BaseField"
4129              },
4130              {
4131                "name": "y",
4132                "type": "uint256",
4133                "internalType": "BN254.BaseField"
4134              }
4135            ]
4136          },
4137          {
4138            "name": "wire1",
4139            "type": "tuple",
4140            "internalType": "struct BN254.G1Point",
4141            "components": [
4142              {
4143                "name": "x",
4144                "type": "uint256",
4145                "internalType": "BN254.BaseField"
4146              },
4147              {
4148                "name": "y",
4149                "type": "uint256",
4150                "internalType": "BN254.BaseField"
4151              }
4152            ]
4153          },
4154          {
4155            "name": "wire2",
4156            "type": "tuple",
4157            "internalType": "struct BN254.G1Point",
4158            "components": [
4159              {
4160                "name": "x",
4161                "type": "uint256",
4162                "internalType": "BN254.BaseField"
4163              },
4164              {
4165                "name": "y",
4166                "type": "uint256",
4167                "internalType": "BN254.BaseField"
4168              }
4169            ]
4170          },
4171          {
4172            "name": "wire3",
4173            "type": "tuple",
4174            "internalType": "struct BN254.G1Point",
4175            "components": [
4176              {
4177                "name": "x",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              },
4181              {
4182                "name": "y",
4183                "type": "uint256",
4184                "internalType": "BN254.BaseField"
4185              }
4186            ]
4187          },
4188          {
4189            "name": "wire4",
4190            "type": "tuple",
4191            "internalType": "struct BN254.G1Point",
4192            "components": [
4193              {
4194                "name": "x",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              },
4198              {
4199                "name": "y",
4200                "type": "uint256",
4201                "internalType": "BN254.BaseField"
4202              }
4203            ]
4204          },
4205          {
4206            "name": "prodPerm",
4207            "type": "tuple",
4208            "internalType": "struct BN254.G1Point",
4209            "components": [
4210              {
4211                "name": "x",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              },
4215              {
4216                "name": "y",
4217                "type": "uint256",
4218                "internalType": "BN254.BaseField"
4219              }
4220            ]
4221          },
4222          {
4223            "name": "split0",
4224            "type": "tuple",
4225            "internalType": "struct BN254.G1Point",
4226            "components": [
4227              {
4228                "name": "x",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              },
4232              {
4233                "name": "y",
4234                "type": "uint256",
4235                "internalType": "BN254.BaseField"
4236              }
4237            ]
4238          },
4239          {
4240            "name": "split1",
4241            "type": "tuple",
4242            "internalType": "struct BN254.G1Point",
4243            "components": [
4244              {
4245                "name": "x",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              },
4249              {
4250                "name": "y",
4251                "type": "uint256",
4252                "internalType": "BN254.BaseField"
4253              }
4254            ]
4255          },
4256          {
4257            "name": "split2",
4258            "type": "tuple",
4259            "internalType": "struct BN254.G1Point",
4260            "components": [
4261              {
4262                "name": "x",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              },
4266              {
4267                "name": "y",
4268                "type": "uint256",
4269                "internalType": "BN254.BaseField"
4270              }
4271            ]
4272          },
4273          {
4274            "name": "split3",
4275            "type": "tuple",
4276            "internalType": "struct BN254.G1Point",
4277            "components": [
4278              {
4279                "name": "x",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              },
4283              {
4284                "name": "y",
4285                "type": "uint256",
4286                "internalType": "BN254.BaseField"
4287              }
4288            ]
4289          },
4290          {
4291            "name": "split4",
4292            "type": "tuple",
4293            "internalType": "struct BN254.G1Point",
4294            "components": [
4295              {
4296                "name": "x",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              },
4300              {
4301                "name": "y",
4302                "type": "uint256",
4303                "internalType": "BN254.BaseField"
4304              }
4305            ]
4306          },
4307          {
4308            "name": "zeta",
4309            "type": "tuple",
4310            "internalType": "struct BN254.G1Point",
4311            "components": [
4312              {
4313                "name": "x",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              },
4317              {
4318                "name": "y",
4319                "type": "uint256",
4320                "internalType": "BN254.BaseField"
4321              }
4322            ]
4323          },
4324          {
4325            "name": "zetaOmega",
4326            "type": "tuple",
4327            "internalType": "struct BN254.G1Point",
4328            "components": [
4329              {
4330                "name": "x",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              },
4334              {
4335                "name": "y",
4336                "type": "uint256",
4337                "internalType": "BN254.BaseField"
4338              }
4339            ]
4340          },
4341          {
4342            "name": "wireEval0",
4343            "type": "uint256",
4344            "internalType": "BN254.ScalarField"
4345          },
4346          {
4347            "name": "wireEval1",
4348            "type": "uint256",
4349            "internalType": "BN254.ScalarField"
4350          },
4351          {
4352            "name": "wireEval2",
4353            "type": "uint256",
4354            "internalType": "BN254.ScalarField"
4355          },
4356          {
4357            "name": "wireEval3",
4358            "type": "uint256",
4359            "internalType": "BN254.ScalarField"
4360          },
4361          {
4362            "name": "wireEval4",
4363            "type": "uint256",
4364            "internalType": "BN254.ScalarField"
4365          },
4366          {
4367            "name": "sigmaEval0",
4368            "type": "uint256",
4369            "internalType": "BN254.ScalarField"
4370          },
4371          {
4372            "name": "sigmaEval1",
4373            "type": "uint256",
4374            "internalType": "BN254.ScalarField"
4375          },
4376          {
4377            "name": "sigmaEval2",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          },
4381          {
4382            "name": "sigmaEval3",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          },
4386          {
4387            "name": "prodPermZetaOmegaEval",
4388            "type": "uint256",
4389            "internalType": "BN254.ScalarField"
4390          }
4391        ]
4392      }
4393    ],
4394    "outputs": [],
4395    "stateMutability": "pure"
4396  },
4397  {
4398    "type": "function",
4399    "name": "newFinalizedState",
4400    "inputs": [
4401      {
4402        "name": "",
4403        "type": "tuple",
4404        "internalType": "struct LightClient.LightClientState",
4405        "components": [
4406          {
4407            "name": "viewNum",
4408            "type": "uint64",
4409            "internalType": "uint64"
4410          },
4411          {
4412            "name": "blockHeight",
4413            "type": "uint64",
4414            "internalType": "uint64"
4415          },
4416          {
4417            "name": "blockCommRoot",
4418            "type": "uint256",
4419            "internalType": "BN254.ScalarField"
4420          }
4421        ]
4422      },
4423      {
4424        "name": "",
4425        "type": "tuple",
4426        "internalType": "struct LightClient.StakeTableState",
4427        "components": [
4428          {
4429            "name": "threshold",
4430            "type": "uint256",
4431            "internalType": "uint256"
4432          },
4433          {
4434            "name": "blsKeyComm",
4435            "type": "uint256",
4436            "internalType": "BN254.ScalarField"
4437          },
4438          {
4439            "name": "schnorrKeyComm",
4440            "type": "uint256",
4441            "internalType": "BN254.ScalarField"
4442          },
4443          {
4444            "name": "amountComm",
4445            "type": "uint256",
4446            "internalType": "BN254.ScalarField"
4447          }
4448        ]
4449      },
4450      {
4451        "name": "",
4452        "type": "tuple",
4453        "internalType": "struct IPlonkVerifier.PlonkProof",
4454        "components": [
4455          {
4456            "name": "wire0",
4457            "type": "tuple",
4458            "internalType": "struct BN254.G1Point",
4459            "components": [
4460              {
4461                "name": "x",
4462                "type": "uint256",
4463                "internalType": "BN254.BaseField"
4464              },
4465              {
4466                "name": "y",
4467                "type": "uint256",
4468                "internalType": "BN254.BaseField"
4469              }
4470            ]
4471          },
4472          {
4473            "name": "wire1",
4474            "type": "tuple",
4475            "internalType": "struct BN254.G1Point",
4476            "components": [
4477              {
4478                "name": "x",
4479                "type": "uint256",
4480                "internalType": "BN254.BaseField"
4481              },
4482              {
4483                "name": "y",
4484                "type": "uint256",
4485                "internalType": "BN254.BaseField"
4486              }
4487            ]
4488          },
4489          {
4490            "name": "wire2",
4491            "type": "tuple",
4492            "internalType": "struct BN254.G1Point",
4493            "components": [
4494              {
4495                "name": "x",
4496                "type": "uint256",
4497                "internalType": "BN254.BaseField"
4498              },
4499              {
4500                "name": "y",
4501                "type": "uint256",
4502                "internalType": "BN254.BaseField"
4503              }
4504            ]
4505          },
4506          {
4507            "name": "wire3",
4508            "type": "tuple",
4509            "internalType": "struct BN254.G1Point",
4510            "components": [
4511              {
4512                "name": "x",
4513                "type": "uint256",
4514                "internalType": "BN254.BaseField"
4515              },
4516              {
4517                "name": "y",
4518                "type": "uint256",
4519                "internalType": "BN254.BaseField"
4520              }
4521            ]
4522          },
4523          {
4524            "name": "wire4",
4525            "type": "tuple",
4526            "internalType": "struct BN254.G1Point",
4527            "components": [
4528              {
4529                "name": "x",
4530                "type": "uint256",
4531                "internalType": "BN254.BaseField"
4532              },
4533              {
4534                "name": "y",
4535                "type": "uint256",
4536                "internalType": "BN254.BaseField"
4537              }
4538            ]
4539          },
4540          {
4541            "name": "prodPerm",
4542            "type": "tuple",
4543            "internalType": "struct BN254.G1Point",
4544            "components": [
4545              {
4546                "name": "x",
4547                "type": "uint256",
4548                "internalType": "BN254.BaseField"
4549              },
4550              {
4551                "name": "y",
4552                "type": "uint256",
4553                "internalType": "BN254.BaseField"
4554              }
4555            ]
4556          },
4557          {
4558            "name": "split0",
4559            "type": "tuple",
4560            "internalType": "struct BN254.G1Point",
4561            "components": [
4562              {
4563                "name": "x",
4564                "type": "uint256",
4565                "internalType": "BN254.BaseField"
4566              },
4567              {
4568                "name": "y",
4569                "type": "uint256",
4570                "internalType": "BN254.BaseField"
4571              }
4572            ]
4573          },
4574          {
4575            "name": "split1",
4576            "type": "tuple",
4577            "internalType": "struct BN254.G1Point",
4578            "components": [
4579              {
4580                "name": "x",
4581                "type": "uint256",
4582                "internalType": "BN254.BaseField"
4583              },
4584              {
4585                "name": "y",
4586                "type": "uint256",
4587                "internalType": "BN254.BaseField"
4588              }
4589            ]
4590          },
4591          {
4592            "name": "split2",
4593            "type": "tuple",
4594            "internalType": "struct BN254.G1Point",
4595            "components": [
4596              {
4597                "name": "x",
4598                "type": "uint256",
4599                "internalType": "BN254.BaseField"
4600              },
4601              {
4602                "name": "y",
4603                "type": "uint256",
4604                "internalType": "BN254.BaseField"
4605              }
4606            ]
4607          },
4608          {
4609            "name": "split3",
4610            "type": "tuple",
4611            "internalType": "struct BN254.G1Point",
4612            "components": [
4613              {
4614                "name": "x",
4615                "type": "uint256",
4616                "internalType": "BN254.BaseField"
4617              },
4618              {
4619                "name": "y",
4620                "type": "uint256",
4621                "internalType": "BN254.BaseField"
4622              }
4623            ]
4624          },
4625          {
4626            "name": "split4",
4627            "type": "tuple",
4628            "internalType": "struct BN254.G1Point",
4629            "components": [
4630              {
4631                "name": "x",
4632                "type": "uint256",
4633                "internalType": "BN254.BaseField"
4634              },
4635              {
4636                "name": "y",
4637                "type": "uint256",
4638                "internalType": "BN254.BaseField"
4639              }
4640            ]
4641          },
4642          {
4643            "name": "zeta",
4644            "type": "tuple",
4645            "internalType": "struct BN254.G1Point",
4646            "components": [
4647              {
4648                "name": "x",
4649                "type": "uint256",
4650                "internalType": "BN254.BaseField"
4651              },
4652              {
4653                "name": "y",
4654                "type": "uint256",
4655                "internalType": "BN254.BaseField"
4656              }
4657            ]
4658          },
4659          {
4660            "name": "zetaOmega",
4661            "type": "tuple",
4662            "internalType": "struct BN254.G1Point",
4663            "components": [
4664              {
4665                "name": "x",
4666                "type": "uint256",
4667                "internalType": "BN254.BaseField"
4668              },
4669              {
4670                "name": "y",
4671                "type": "uint256",
4672                "internalType": "BN254.BaseField"
4673              }
4674            ]
4675          },
4676          {
4677            "name": "wireEval0",
4678            "type": "uint256",
4679            "internalType": "BN254.ScalarField"
4680          },
4681          {
4682            "name": "wireEval1",
4683            "type": "uint256",
4684            "internalType": "BN254.ScalarField"
4685          },
4686          {
4687            "name": "wireEval2",
4688            "type": "uint256",
4689            "internalType": "BN254.ScalarField"
4690          },
4691          {
4692            "name": "wireEval3",
4693            "type": "uint256",
4694            "internalType": "BN254.ScalarField"
4695          },
4696          {
4697            "name": "wireEval4",
4698            "type": "uint256",
4699            "internalType": "BN254.ScalarField"
4700          },
4701          {
4702            "name": "sigmaEval0",
4703            "type": "uint256",
4704            "internalType": "BN254.ScalarField"
4705          },
4706          {
4707            "name": "sigmaEval1",
4708            "type": "uint256",
4709            "internalType": "BN254.ScalarField"
4710          },
4711          {
4712            "name": "sigmaEval2",
4713            "type": "uint256",
4714            "internalType": "BN254.ScalarField"
4715          },
4716          {
4717            "name": "sigmaEval3",
4718            "type": "uint256",
4719            "internalType": "BN254.ScalarField"
4720          },
4721          {
4722            "name": "prodPermZetaOmegaEval",
4723            "type": "uint256",
4724            "internalType": "BN254.ScalarField"
4725          }
4726        ]
4727      }
4728    ],
4729    "outputs": [],
4730    "stateMutability": "pure"
4731  },
4732  {
4733    "type": "function",
4734    "name": "newFinalizedState",
4735    "inputs": [
4736      {
4737        "name": "newState",
4738        "type": "tuple",
4739        "internalType": "struct LightClient.LightClientState",
4740        "components": [
4741          {
4742            "name": "viewNum",
4743            "type": "uint64",
4744            "internalType": "uint64"
4745          },
4746          {
4747            "name": "blockHeight",
4748            "type": "uint64",
4749            "internalType": "uint64"
4750          },
4751          {
4752            "name": "blockCommRoot",
4753            "type": "uint256",
4754            "internalType": "BN254.ScalarField"
4755          }
4756        ]
4757      },
4758      {
4759        "name": "nextStakeTable",
4760        "type": "tuple",
4761        "internalType": "struct LightClient.StakeTableState",
4762        "components": [
4763          {
4764            "name": "threshold",
4765            "type": "uint256",
4766            "internalType": "uint256"
4767          },
4768          {
4769            "name": "blsKeyComm",
4770            "type": "uint256",
4771            "internalType": "BN254.ScalarField"
4772          },
4773          {
4774            "name": "schnorrKeyComm",
4775            "type": "uint256",
4776            "internalType": "BN254.ScalarField"
4777          },
4778          {
4779            "name": "amountComm",
4780            "type": "uint256",
4781            "internalType": "BN254.ScalarField"
4782          }
4783        ]
4784      },
4785      {
4786        "name": "newAuthRoot",
4787        "type": "uint256",
4788        "internalType": "uint256"
4789      },
4790      {
4791        "name": "proof",
4792        "type": "tuple",
4793        "internalType": "struct IPlonkVerifier.PlonkProof",
4794        "components": [
4795          {
4796            "name": "wire0",
4797            "type": "tuple",
4798            "internalType": "struct BN254.G1Point",
4799            "components": [
4800              {
4801                "name": "x",
4802                "type": "uint256",
4803                "internalType": "BN254.BaseField"
4804              },
4805              {
4806                "name": "y",
4807                "type": "uint256",
4808                "internalType": "BN254.BaseField"
4809              }
4810            ]
4811          },
4812          {
4813            "name": "wire1",
4814            "type": "tuple",
4815            "internalType": "struct BN254.G1Point",
4816            "components": [
4817              {
4818                "name": "x",
4819                "type": "uint256",
4820                "internalType": "BN254.BaseField"
4821              },
4822              {
4823                "name": "y",
4824                "type": "uint256",
4825                "internalType": "BN254.BaseField"
4826              }
4827            ]
4828          },
4829          {
4830            "name": "wire2",
4831            "type": "tuple",
4832            "internalType": "struct BN254.G1Point",
4833            "components": [
4834              {
4835                "name": "x",
4836                "type": "uint256",
4837                "internalType": "BN254.BaseField"
4838              },
4839              {
4840                "name": "y",
4841                "type": "uint256",
4842                "internalType": "BN254.BaseField"
4843              }
4844            ]
4845          },
4846          {
4847            "name": "wire3",
4848            "type": "tuple",
4849            "internalType": "struct BN254.G1Point",
4850            "components": [
4851              {
4852                "name": "x",
4853                "type": "uint256",
4854                "internalType": "BN254.BaseField"
4855              },
4856              {
4857                "name": "y",
4858                "type": "uint256",
4859                "internalType": "BN254.BaseField"
4860              }
4861            ]
4862          },
4863          {
4864            "name": "wire4",
4865            "type": "tuple",
4866            "internalType": "struct BN254.G1Point",
4867            "components": [
4868              {
4869                "name": "x",
4870                "type": "uint256",
4871                "internalType": "BN254.BaseField"
4872              },
4873              {
4874                "name": "y",
4875                "type": "uint256",
4876                "internalType": "BN254.BaseField"
4877              }
4878            ]
4879          },
4880          {
4881            "name": "prodPerm",
4882            "type": "tuple",
4883            "internalType": "struct BN254.G1Point",
4884            "components": [
4885              {
4886                "name": "x",
4887                "type": "uint256",
4888                "internalType": "BN254.BaseField"
4889              },
4890              {
4891                "name": "y",
4892                "type": "uint256",
4893                "internalType": "BN254.BaseField"
4894              }
4895            ]
4896          },
4897          {
4898            "name": "split0",
4899            "type": "tuple",
4900            "internalType": "struct BN254.G1Point",
4901            "components": [
4902              {
4903                "name": "x",
4904                "type": "uint256",
4905                "internalType": "BN254.BaseField"
4906              },
4907              {
4908                "name": "y",
4909                "type": "uint256",
4910                "internalType": "BN254.BaseField"
4911              }
4912            ]
4913          },
4914          {
4915            "name": "split1",
4916            "type": "tuple",
4917            "internalType": "struct BN254.G1Point",
4918            "components": [
4919              {
4920                "name": "x",
4921                "type": "uint256",
4922                "internalType": "BN254.BaseField"
4923              },
4924              {
4925                "name": "y",
4926                "type": "uint256",
4927                "internalType": "BN254.BaseField"
4928              }
4929            ]
4930          },
4931          {
4932            "name": "split2",
4933            "type": "tuple",
4934            "internalType": "struct BN254.G1Point",
4935            "components": [
4936              {
4937                "name": "x",
4938                "type": "uint256",
4939                "internalType": "BN254.BaseField"
4940              },
4941              {
4942                "name": "y",
4943                "type": "uint256",
4944                "internalType": "BN254.BaseField"
4945              }
4946            ]
4947          },
4948          {
4949            "name": "split3",
4950            "type": "tuple",
4951            "internalType": "struct BN254.G1Point",
4952            "components": [
4953              {
4954                "name": "x",
4955                "type": "uint256",
4956                "internalType": "BN254.BaseField"
4957              },
4958              {
4959                "name": "y",
4960                "type": "uint256",
4961                "internalType": "BN254.BaseField"
4962              }
4963            ]
4964          },
4965          {
4966            "name": "split4",
4967            "type": "tuple",
4968            "internalType": "struct BN254.G1Point",
4969            "components": [
4970              {
4971                "name": "x",
4972                "type": "uint256",
4973                "internalType": "BN254.BaseField"
4974              },
4975              {
4976                "name": "y",
4977                "type": "uint256",
4978                "internalType": "BN254.BaseField"
4979              }
4980            ]
4981          },
4982          {
4983            "name": "zeta",
4984            "type": "tuple",
4985            "internalType": "struct BN254.G1Point",
4986            "components": [
4987              {
4988                "name": "x",
4989                "type": "uint256",
4990                "internalType": "BN254.BaseField"
4991              },
4992              {
4993                "name": "y",
4994                "type": "uint256",
4995                "internalType": "BN254.BaseField"
4996              }
4997            ]
4998          },
4999          {
5000            "name": "zetaOmega",
5001            "type": "tuple",
5002            "internalType": "struct BN254.G1Point",
5003            "components": [
5004              {
5005                "name": "x",
5006                "type": "uint256",
5007                "internalType": "BN254.BaseField"
5008              },
5009              {
5010                "name": "y",
5011                "type": "uint256",
5012                "internalType": "BN254.BaseField"
5013              }
5014            ]
5015          },
5016          {
5017            "name": "wireEval0",
5018            "type": "uint256",
5019            "internalType": "BN254.ScalarField"
5020          },
5021          {
5022            "name": "wireEval1",
5023            "type": "uint256",
5024            "internalType": "BN254.ScalarField"
5025          },
5026          {
5027            "name": "wireEval2",
5028            "type": "uint256",
5029            "internalType": "BN254.ScalarField"
5030          },
5031          {
5032            "name": "wireEval3",
5033            "type": "uint256",
5034            "internalType": "BN254.ScalarField"
5035          },
5036          {
5037            "name": "wireEval4",
5038            "type": "uint256",
5039            "internalType": "BN254.ScalarField"
5040          },
5041          {
5042            "name": "sigmaEval0",
5043            "type": "uint256",
5044            "internalType": "BN254.ScalarField"
5045          },
5046          {
5047            "name": "sigmaEval1",
5048            "type": "uint256",
5049            "internalType": "BN254.ScalarField"
5050          },
5051          {
5052            "name": "sigmaEval2",
5053            "type": "uint256",
5054            "internalType": "BN254.ScalarField"
5055          },
5056          {
5057            "name": "sigmaEval3",
5058            "type": "uint256",
5059            "internalType": "BN254.ScalarField"
5060          },
5061          {
5062            "name": "prodPermZetaOmegaEval",
5063            "type": "uint256",
5064            "internalType": "BN254.ScalarField"
5065          }
5066        ]
5067      }
5068    ],
5069    "outputs": [],
5070    "stateMutability": "nonpayable"
5071  },
5072  {
5073    "type": "function",
5074    "name": "owner",
5075    "inputs": [],
5076    "outputs": [
5077      {
5078        "name": "",
5079        "type": "address",
5080        "internalType": "address"
5081      }
5082    ],
5083    "stateMutability": "view"
5084  },
5085  {
5086    "type": "function",
5087    "name": "permissionedProver",
5088    "inputs": [],
5089    "outputs": [
5090      {
5091        "name": "",
5092        "type": "address",
5093        "internalType": "address"
5094      }
5095    ],
5096    "stateMutability": "view"
5097  },
5098  {
5099    "type": "function",
5100    "name": "proxiableUUID",
5101    "inputs": [],
5102    "outputs": [
5103      {
5104        "name": "",
5105        "type": "bytes32",
5106        "internalType": "bytes32"
5107      }
5108    ],
5109    "stateMutability": "view"
5110  },
5111  {
5112    "type": "function",
5113    "name": "renounceOwnership",
5114    "inputs": [],
5115    "outputs": [],
5116    "stateMutability": "nonpayable"
5117  },
5118  {
5119    "type": "function",
5120    "name": "setBlocksPerEpoch",
5121    "inputs": [
5122      {
5123        "name": "newBlocksPerEpoch",
5124        "type": "uint64",
5125        "internalType": "uint64"
5126      }
5127    ],
5128    "outputs": [],
5129    "stateMutability": "nonpayable"
5130  },
5131  {
5132    "type": "function",
5133    "name": "setFinalizedState",
5134    "inputs": [
5135      {
5136        "name": "state",
5137        "type": "tuple",
5138        "internalType": "struct LightClient.LightClientState",
5139        "components": [
5140          {
5141            "name": "viewNum",
5142            "type": "uint64",
5143            "internalType": "uint64"
5144          },
5145          {
5146            "name": "blockHeight",
5147            "type": "uint64",
5148            "internalType": "uint64"
5149          },
5150          {
5151            "name": "blockCommRoot",
5152            "type": "uint256",
5153            "internalType": "BN254.ScalarField"
5154          }
5155        ]
5156      }
5157    ],
5158    "outputs": [],
5159    "stateMutability": "nonpayable"
5160  },
5161  {
5162    "type": "function",
5163    "name": "setHotShotDownSince",
5164    "inputs": [
5165      {
5166        "name": "l1Height",
5167        "type": "uint256",
5168        "internalType": "uint256"
5169      }
5170    ],
5171    "outputs": [],
5172    "stateMutability": "nonpayable"
5173  },
5174  {
5175    "type": "function",
5176    "name": "setHotShotUp",
5177    "inputs": [],
5178    "outputs": [],
5179    "stateMutability": "nonpayable"
5180  },
5181  {
5182    "type": "function",
5183    "name": "setPermissionedProver",
5184    "inputs": [
5185      {
5186        "name": "prover",
5187        "type": "address",
5188        "internalType": "address"
5189      }
5190    ],
5191    "outputs": [],
5192    "stateMutability": "nonpayable"
5193  },
5194  {
5195    "type": "function",
5196    "name": "setStateHistory",
5197    "inputs": [
5198      {
5199        "name": "_stateHistoryCommitments",
5200        "type": "tuple[]",
5201        "internalType": "struct LightClient.StateHistoryCommitment[]",
5202        "components": [
5203          {
5204            "name": "l1BlockHeight",
5205            "type": "uint64",
5206            "internalType": "uint64"
5207          },
5208          {
5209            "name": "l1BlockTimestamp",
5210            "type": "uint64",
5211            "internalType": "uint64"
5212          },
5213          {
5214            "name": "hotShotBlockHeight",
5215            "type": "uint64",
5216            "internalType": "uint64"
5217          },
5218          {
5219            "name": "hotShotBlockCommRoot",
5220            "type": "uint256",
5221            "internalType": "BN254.ScalarField"
5222          }
5223        ]
5224      }
5225    ],
5226    "outputs": [],
5227    "stateMutability": "nonpayable"
5228  },
5229  {
5230    "type": "function",
5231    "name": "setStateHistoryRetentionPeriod",
5232    "inputs": [
5233      {
5234        "name": "historySeconds",
5235        "type": "uint32",
5236        "internalType": "uint32"
5237      }
5238    ],
5239    "outputs": [],
5240    "stateMutability": "nonpayable"
5241  },
5242  {
5243    "type": "function",
5244    "name": "setVotingStakeTableState",
5245    "inputs": [
5246      {
5247        "name": "stake",
5248        "type": "tuple",
5249        "internalType": "struct LightClient.StakeTableState",
5250        "components": [
5251          {
5252            "name": "threshold",
5253            "type": "uint256",
5254            "internalType": "uint256"
5255          },
5256          {
5257            "name": "blsKeyComm",
5258            "type": "uint256",
5259            "internalType": "BN254.ScalarField"
5260          },
5261          {
5262            "name": "schnorrKeyComm",
5263            "type": "uint256",
5264            "internalType": "BN254.ScalarField"
5265          },
5266          {
5267            "name": "amountComm",
5268            "type": "uint256",
5269            "internalType": "BN254.ScalarField"
5270          }
5271        ]
5272      }
5273    ],
5274    "outputs": [],
5275    "stateMutability": "nonpayable"
5276  },
5277  {
5278    "type": "function",
5279    "name": "setstateHistoryRetentionPeriod",
5280    "inputs": [
5281      {
5282        "name": "historySeconds",
5283        "type": "uint32",
5284        "internalType": "uint32"
5285      }
5286    ],
5287    "outputs": [],
5288    "stateMutability": "nonpayable"
5289  },
5290  {
5291    "type": "function",
5292    "name": "stateHistoryCommitments",
5293    "inputs": [
5294      {
5295        "name": "",
5296        "type": "uint256",
5297        "internalType": "uint256"
5298      }
5299    ],
5300    "outputs": [
5301      {
5302        "name": "l1BlockHeight",
5303        "type": "uint64",
5304        "internalType": "uint64"
5305      },
5306      {
5307        "name": "l1BlockTimestamp",
5308        "type": "uint64",
5309        "internalType": "uint64"
5310      },
5311      {
5312        "name": "hotShotBlockHeight",
5313        "type": "uint64",
5314        "internalType": "uint64"
5315      },
5316      {
5317        "name": "hotShotBlockCommRoot",
5318        "type": "uint256",
5319        "internalType": "BN254.ScalarField"
5320      }
5321    ],
5322    "stateMutability": "view"
5323  },
5324  {
5325    "type": "function",
5326    "name": "stateHistoryFirstIndex",
5327    "inputs": [],
5328    "outputs": [
5329      {
5330        "name": "",
5331        "type": "uint64",
5332        "internalType": "uint64"
5333      }
5334    ],
5335    "stateMutability": "view"
5336  },
5337  {
5338    "type": "function",
5339    "name": "stateHistoryRetentionPeriod",
5340    "inputs": [],
5341    "outputs": [
5342      {
5343        "name": "",
5344        "type": "uint32",
5345        "internalType": "uint32"
5346      }
5347    ],
5348    "stateMutability": "view"
5349  },
5350  {
5351    "type": "function",
5352    "name": "transferOwnership",
5353    "inputs": [
5354      {
5355        "name": "newOwner",
5356        "type": "address",
5357        "internalType": "address"
5358      }
5359    ],
5360    "outputs": [],
5361    "stateMutability": "nonpayable"
5362  },
5363  {
5364    "type": "function",
5365    "name": "updateEpochStartBlock",
5366    "inputs": [
5367      {
5368        "name": "newEpochStartBlock",
5369        "type": "uint64",
5370        "internalType": "uint64"
5371      }
5372    ],
5373    "outputs": [],
5374    "stateMutability": "nonpayable"
5375  },
5376  {
5377    "type": "function",
5378    "name": "upgradeToAndCall",
5379    "inputs": [
5380      {
5381        "name": "newImplementation",
5382        "type": "address",
5383        "internalType": "address"
5384      },
5385      {
5386        "name": "data",
5387        "type": "bytes",
5388        "internalType": "bytes"
5389      }
5390    ],
5391    "outputs": [],
5392    "stateMutability": "payable"
5393  },
5394  {
5395    "type": "function",
5396    "name": "votingStakeTableState",
5397    "inputs": [],
5398    "outputs": [
5399      {
5400        "name": "threshold",
5401        "type": "uint256",
5402        "internalType": "uint256"
5403      },
5404      {
5405        "name": "blsKeyComm",
5406        "type": "uint256",
5407        "internalType": "BN254.ScalarField"
5408      },
5409      {
5410        "name": "schnorrKeyComm",
5411        "type": "uint256",
5412        "internalType": "BN254.ScalarField"
5413      },
5414      {
5415        "name": "amountComm",
5416        "type": "uint256",
5417        "internalType": "BN254.ScalarField"
5418      }
5419    ],
5420    "stateMutability": "view"
5421  },
5422  {
5423    "type": "event",
5424    "name": "Initialized",
5425    "inputs": [
5426      {
5427        "name": "version",
5428        "type": "uint64",
5429        "indexed": false,
5430        "internalType": "uint64"
5431      }
5432    ],
5433    "anonymous": false
5434  },
5435  {
5436    "type": "event",
5437    "name": "NewEpoch",
5438    "inputs": [
5439      {
5440        "name": "epoch",
5441        "type": "uint64",
5442        "indexed": false,
5443        "internalType": "uint64"
5444      }
5445    ],
5446    "anonymous": false
5447  },
5448  {
5449    "type": "event",
5450    "name": "NewState",
5451    "inputs": [
5452      {
5453        "name": "viewNum",
5454        "type": "uint64",
5455        "indexed": true,
5456        "internalType": "uint64"
5457      },
5458      {
5459        "name": "blockHeight",
5460        "type": "uint64",
5461        "indexed": true,
5462        "internalType": "uint64"
5463      },
5464      {
5465        "name": "blockCommRoot",
5466        "type": "uint256",
5467        "indexed": false,
5468        "internalType": "BN254.ScalarField"
5469      }
5470    ],
5471    "anonymous": false
5472  },
5473  {
5474    "type": "event",
5475    "name": "OwnershipTransferred",
5476    "inputs": [
5477      {
5478        "name": "previousOwner",
5479        "type": "address",
5480        "indexed": true,
5481        "internalType": "address"
5482      },
5483      {
5484        "name": "newOwner",
5485        "type": "address",
5486        "indexed": true,
5487        "internalType": "address"
5488      }
5489    ],
5490    "anonymous": false
5491  },
5492  {
5493    "type": "event",
5494    "name": "PermissionedProverNotRequired",
5495    "inputs": [],
5496    "anonymous": false
5497  },
5498  {
5499    "type": "event",
5500    "name": "PermissionedProverRequired",
5501    "inputs": [
5502      {
5503        "name": "permissionedProver",
5504        "type": "address",
5505        "indexed": false,
5506        "internalType": "address"
5507      }
5508    ],
5509    "anonymous": false
5510  },
5511  {
5512    "type": "event",
5513    "name": "Upgrade",
5514    "inputs": [
5515      {
5516        "name": "implementation",
5517        "type": "address",
5518        "indexed": false,
5519        "internalType": "address"
5520      }
5521    ],
5522    "anonymous": false
5523  },
5524  {
5525    "type": "event",
5526    "name": "Upgraded",
5527    "inputs": [
5528      {
5529        "name": "implementation",
5530        "type": "address",
5531        "indexed": true,
5532        "internalType": "address"
5533      }
5534    ],
5535    "anonymous": false
5536  },
5537  {
5538    "type": "error",
5539    "name": "AddressEmptyCode",
5540    "inputs": [
5541      {
5542        "name": "target",
5543        "type": "address",
5544        "internalType": "address"
5545      }
5546    ]
5547  },
5548  {
5549    "type": "error",
5550    "name": "DeprecatedApi",
5551    "inputs": []
5552  },
5553  {
5554    "type": "error",
5555    "name": "ERC1967InvalidImplementation",
5556    "inputs": [
5557      {
5558        "name": "implementation",
5559        "type": "address",
5560        "internalType": "address"
5561      }
5562    ]
5563  },
5564  {
5565    "type": "error",
5566    "name": "ERC1967NonPayable",
5567    "inputs": []
5568  },
5569  {
5570    "type": "error",
5571    "name": "FailedInnerCall",
5572    "inputs": []
5573  },
5574  {
5575    "type": "error",
5576    "name": "InsufficientSnapshotHistory",
5577    "inputs": []
5578  },
5579  {
5580    "type": "error",
5581    "name": "InvalidAddress",
5582    "inputs": []
5583  },
5584  {
5585    "type": "error",
5586    "name": "InvalidArgs",
5587    "inputs": []
5588  },
5589  {
5590    "type": "error",
5591    "name": "InvalidHotShotBlockForCommitmentCheck",
5592    "inputs": []
5593  },
5594  {
5595    "type": "error",
5596    "name": "InvalidInitialization",
5597    "inputs": []
5598  },
5599  {
5600    "type": "error",
5601    "name": "InvalidMaxStateHistory",
5602    "inputs": []
5603  },
5604  {
5605    "type": "error",
5606    "name": "InvalidProof",
5607    "inputs": []
5608  },
5609  {
5610    "type": "error",
5611    "name": "MissingEpochRootUpdate",
5612    "inputs": []
5613  },
5614  {
5615    "type": "error",
5616    "name": "NoChangeRequired",
5617    "inputs": []
5618  },
5619  {
5620    "type": "error",
5621    "name": "NotInitializing",
5622    "inputs": []
5623  },
5624  {
5625    "type": "error",
5626    "name": "OutdatedState",
5627    "inputs": []
5628  },
5629  {
5630    "type": "error",
5631    "name": "OwnableInvalidOwner",
5632    "inputs": [
5633      {
5634        "name": "owner",
5635        "type": "address",
5636        "internalType": "address"
5637      }
5638    ]
5639  },
5640  {
5641    "type": "error",
5642    "name": "OwnableUnauthorizedAccount",
5643    "inputs": [
5644      {
5645        "name": "account",
5646        "type": "address",
5647        "internalType": "address"
5648      }
5649    ]
5650  },
5651  {
5652    "type": "error",
5653    "name": "ProverNotPermissioned",
5654    "inputs": []
5655  },
5656  {
5657    "type": "error",
5658    "name": "UUPSUnauthorizedCallContext",
5659    "inputs": []
5660  },
5661  {
5662    "type": "error",
5663    "name": "UUPSUnsupportedProxiableUUID",
5664    "inputs": [
5665      {
5666        "name": "slot",
5667        "type": "bytes32",
5668        "internalType": "bytes32"
5669      }
5670    ]
5671  },
5672  {
5673    "type": "error",
5674    "name": "WrongStakeTableUsed",
5675    "inputs": []
5676  }
5677]
5678```*/
5679#[allow(
5680    non_camel_case_types,
5681    non_snake_case,
5682    clippy::pub_underscore_fields,
5683    clippy::style,
5684    clippy::empty_structs_with_brackets
5685)]
5686pub mod LightClientV3Mock {
5687    use super::*;
5688    use alloy::sol_types as alloy_sol_types;
5689    /// The creation / init bytecode of the contract.
5690    ///
5691    /// ```text
5692    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613acf6100f95f395f8181611d7b01528181611da40152611f210152613acf5ff3fe608060405260043610610275575f3560e01c8063715018a61161014a578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108ab578063e0303301146108da578063f0682054146108f9578063f2fde38b14610918578063f567616014610937578063f9e50d1914610956575f5ffd5b8063aabd5db3146107bb578063ad3cb1cc146107da578063b33bc49114610817578063b5adea3c14610836578063c23b9e9e14610855578063c8e5e4981461088d575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106b857806390c14390146106f457806396c1ca6114610713578063998328e8146107325780639baa3cc9146107475780639fdb54a714610766575f5ffd5b8063715018a61461061b578063757c37ad1461062f5780637667180814610649578063826e41fc1461065d5780638584d23f1461067c575f5ffd5b8063313df7b1116101ec578063426d3194116101a6578063426d319414610568578063433dba9f146105895780634f1ef286146105a857806352d1902d146105bb578063623a1338146105cf57806369cc6a0414610607575f5ffd5b8063313df7b114610481578063378ec23b146104b857806338e454b1146104d45780633c23b6db146104e85780633ed55b7b14610525578063416827441461054b575f5ffd5b8063167ac6181161023d578063167ac618146103855780632063d4f7146103a457806325297427146103c35780632d52aad6146103f25780632f79889d14610424578063300c89dd14610462575f5ffd5b8063013fa5fc1461027957806302b592f31461029a5780630625e19b146102f75780630d8e6e2c1461033957806312173c2c14610364575b5f5ffd5b348015610284575f5ffd5b50610298610293366004612bd6565b61096a565b005b3480156102a5575f5ffd5b506102b96102b4366004612bef565b610a1d565b6040516102ee94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610302575f5ffd5b50600b54600c54600d54600e546103199392919084565b6040805194855260208501939093529183015260608201526080016102ee565b348015610344575f5ffd5b5060408051600381525f60208201819052918101919091526060016102ee565b34801561036f575f5ffd5b50610378610a66565b6040516102ee9190612c06565b348015610390575f5ffd5b5061029861039f366004612e1d565b611095565b3480156103af575f5ffd5b506102986103be366004613101565b61110c565b3480156103ce575f5ffd5b506103e26103dd366004612e1d565b611125565b60405190151581526020016102ee565b3480156103fd575f5ffd5b5061029861040c366004612bef565b6010805460ff60401b1916600160401b179055601155565b34801561042f575f5ffd5b5060085461044a90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102ee565b34801561046d575f5ffd5b506103e261047c366004612e1d565b611187565b34801561048c575f5ffd5b506008546104a0906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b3480156104c3575f5ffd5b50435b6040519081526020016102ee565b3480156104df575f5ffd5b5061029861121c565b3480156104f3575f5ffd5b50610298610502366004612e1d565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b348015610530575f5ffd5b50600a5461044a90600160401b90046001600160401b031681565b348015610556575f5ffd5b506010546001600160401b031661044a565b348015610573575f5ffd5b505f546001546002546003546103199392919084565b348015610594575f5ffd5b506102986105a3366004613148565b61130b565b6102986105b6366004613161565b61131f565b3480156105c6575f5ffd5b506104c661133e565b3480156105da575f5ffd5b506102986105e9366004613247565b8051600b556020810151600c556040810151600d5560600151600e55565b348015610612575f5ffd5b50610298611359565b348015610626575f5ffd5b506102986113c7565b34801561063a575f5ffd5b506102986103be366004613261565b348015610654575f5ffd5b5061044a6113d8565b348015610668575f5ffd5b506008546001600160a01b031615156103e2565b348015610687575f5ffd5b5061069b610696366004612bef565b611402565b604080519283526001600160401b039091166020830152016102ee565b3480156106c3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104a0565b3480156106ff575f5ffd5b5061044a61070e3660046132a5565b61152d565b34801561071e575f5ffd5b5061029861072d366004613148565b61159c565b34801561073d575f5ffd5b506104c6600f5481565b348015610752575f5ffd5b506102986107613660046132cd565b611625565b348015610771575f5ffd5b50600654600754610795916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102ee565b3480156107c6575f5ffd5b506102986107d5366004613322565b611734565b3480156107e5575f5ffd5b5061080a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102ee9190613366565b348015610822575f5ffd5b506102986108313660046132a5565b611a59565b348015610841575f5ffd5b5061029861085036600461339b565b611baa565b348015610860575f5ffd5b5060085461087890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102ee565b348015610898575f5ffd5b506102986010805460ff60401b19169055565b3480156108b6575f5ffd5b50600454600554610795916001600160401b0380821692600160401b909204169083565b3480156108e5575f5ffd5b506103e26108f43660046133b5565b611bf1565b348015610904575f5ffd5b50600a5461044a906001600160401b031681565b348015610923575f5ffd5b50610298610932366004612bd6565b611c2b565b348015610942575f5ffd5b506102986109513660046133d5565b611c6a565b348015610961575f5ffd5b506009546104c6565b610972611d15565b6001600160a01b0381166109995760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109c85760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a2c575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a6e6128f6565b620100008152600560208201527f0577cf9bf82e9f08a752d837709088c137f9cd88cd95b03b27e6c54be38e929f6040820151527f08ff03a27cbe6a980ec660379d28ee76975cef42ba5806b9362632f26a6dfb206020604083015101527f0f4fc36c1ca15b9185959287c9e9773283e15395a92701087d38704fdd0c17ea6060820151527f14b01587bb51202bae56dc992251795655dc44395193f22b39a68e45e501e3f36020606083015101527f0a4ce9176328422b484832155bb3333285a6e0e030667761c9576f502e8b1b1b6080820151527f0a16f5414614d648678c637a0931c14191b232bb1a5d23f6c1673af0596603a66020608083015101527f1c1c5ff424e5a4daef97061e02327a6b8e5bbecc8b55d7f51889c6c391c6fe4b60a0820151527f2bff3ce7c876f111de5e8a0caa063dce26d07b87c31220a7d739a0d88c39d8ea602060a083015101527f2d32dce8d080a1a62afd7360e6550218c76ed1ba7eefe29c0274f5dee372531260c0820151527f260f1d1a8ae6d936ae1f284076ad0a374334b1545cb8e1b04eb45539e36e932e602060c083015101527f25cc09d27d1f2758c7edabfc4ccb753a1e101f07cdaea612bb1bb9e66b57acb160e0820151527f2f87735fcbe11c70121edff1d520c62fe9988ddd15937c3f430aa1dfa467308f602060e083015101527f073aad1f4c59f4f2fffc5f489c7b81f8b6fd69b77328ec8b0093071a41a9b760610100820151527f25bbaae87750964f4a0eabced3363b4c120de7acde7ce3d619d42a98674bcc17602061010083015101527f140f1b0a71a0df100cf0af671bbecc506160ef2cbdc24a976faa459312c1425c610120820151527f0e6ca0733e1f4553bbcca3a7b314c408083834103b20ab3faa2cece9ef7aa980602061012083015101527f0c6cc1b3d364f405fc77865198c954edb87714765f879b057f4720fe139ce861610140820151527f0efad53ac051aee07f7f92c34a779b5f9bc5803a612611710f907bbda3630330602061014083015101527f299b5d26b5da318cfd6ee23542444fbd54a221ae40b043ee7b59e4be8a7cf0bc610160820151527f11bfb70de4b59c717cb73ba6d923f79447d10eb6e7ea91ab8a6d261184ab7ddd602061016083015101527f2e646df45071a61803f5e8e92b75c156cab05f38cf0f84df751cf2442f224482610180820151527eed98ef227ce627fe2e56a11e32e1b490d99dee481c2d812050d2ffbf1ca0df602061018083015101527f10e36bbdf42d56359d2e87932b781b62271c3e6e1b0287d13e5d2478cd96baab6101a0820151527f02d5037fc2543b02b2e2e41f6abca9137206f87b67549abd7d68951b8801aa8d60206101a083015101527f16e1122401b64f03c2da5ebd4d52021e1b86c9bb3d4a6be643ee057731be4efd6101c0820151527f1bf6cca2dc0b7aa23fecaf058d11bbf4c06c6d85b03b6b27e1f37ac870357dd860206101c083015101527f2dc5951c5e5f891003f77d9940ba8a458b9608a3cb3b926d1f0a226900964dca6101e0820151527f0d1148213d633db532d6ec4352ff41e521e016c8fadc8db42c4bf9eb166ad38160206101e083015101527f2d7fed4088b6e73aba7ae1c3be39ab9697137ac1c450aeb971878dcfda7e3281610200820151527f18dc0de1ef57df9c8f492adeba183c610ad5eae06996446e3478076360b29e76602061020083015101527f1b9cd9b879f242f331103d6ac1f52623937c0801a21ccdd23b4dc9d4caf77d9c610220820151527f1dea6a5f2cffff1c5576b73075a96237fdf95153ef68cbf4372b7f1f3806d84a602061022083015101527f012617672c1d38557f385f9ff0d9fce130e8c8cfde27f65b908db4fd30d30d72610240820151527f0ee4840561aa90b4f40257d51c71ed03e0a39069207a5927677cd14668d57477602061024083015101527f13596792a5ef6df4cdbb46effaa45f91d3cc0401a64583cdd74b792310e3fdbd610260820151527f192e2c61cbb5b730ef86a950633c5972c4f956a053c72572498a1e1212487039602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b61109d611d15565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556110e39491909104811692811691161761152d565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111455750600a546001600160401b0316155b1561115157505f919050565b600a546001600160401b03166111688360056134e1565b6111729190613514565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111a75750600a546001600160401b0316155b156111b357505f919050565b600a546111c9906001600160401b031683613514565b6001600160401b031615806112165750600a546111f1906005906001600160401b0316613541565b600a546001600160401b039182169161120b911684613514565b6001600160401b0316115b92915050565b5f516020613aa35f395f51905f52805460039190600160401b900460ff1680611252575080546001600160401b03808416911610155b156112705760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112aa929181048216911661152d565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611313611d15565b61131c8161159c565b50565b611327611d70565b61133082611e14565b61133a8282611e55565b5050565b5f611347611f16565b505f516020613a835f395f51905f5290565b611361611d15565b6008546001600160a01b0316156113ac57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6113cf611d15565b6113c55f611f5f565b600654600a545f916113fd916001600160401b03600160401b9092048216911661152d565b905090565b600980545f91829190611416600183613560565b8154811061142657611426613573565b5f918252602090912060029091020154600160801b90046001600160401b0316841061146557604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561152657846009828154811061149557611495613573565b5f918252602090912060029091020154600160801b90046001600160401b0316111561151e57600981815481106114ce576114ce613573565b905f5260205f20906002020160010154600982815481106114f1576114f1613573565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611479565b5050915091565b5f816001600160401b03165f0361154557505f611216565b826001600160401b03165f0361155d57506001611216565b6115678284613514565b6001600160401b03165f03611587576115808284613587565b9050611216565b6115918284613587565b6115809060016134e1565b6115a4611d15565b610e108163ffffffff1610806115c357506301e133808163ffffffff16115b806115e1575060085463ffffffff600160a01b909104811690821611155b156115ff576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613aa35f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116565750825b90505f826001600160401b031660011480156116715750303b155b90508115801561167f575080155b1561169d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116c757845460ff60401b1916600160401b1785555b6116d086611fcf565b6116d8611fe0565b6116e3898989611fe8565b831561172957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561175957506008546001600160a01b03163314155b15611777576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117b0575060065460208501516001600160401b03600160401b9092048216911611155b156117ce5760405163051c46ef60e01b815260040160405180910390fd5b6117db8460400151612114565b6117e88360200151612114565b6117f58360400151612114565b6118028360600151612114565b5f61180b6113d8565b6020860151600a549192505f9161182b91906001600160401b031661152d565b6010549091506001600160401b039081169082161061186f576118518660200151611187565b1561186f5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561191b5760026118928383613541565b6001600160401b0316106118b95760405163080ae8d960e01b815260040160405180910390fd5b6118c48260016134e1565b6001600160401b0316816001600160401b03161480156118fd57506006546118fb90600160401b90046001600160401b0316611125565b155b1561191b5760405163080ae8d960e01b815260040160405180910390fd5b61192786868686612184565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f85905560105481169082161080159061198457506119848660200151611125565b156119ee578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6119d28260016134e1565b6040516001600160401b03909116815260200160405180910390a15b6119f94342886123ae565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a4991815260200190565b60405180910390a3505050505050565b5f516020613aa35f395f51905f52805460029190600160401b900460ff1680611a8f575080546001600160401b03808416911610155b15611aad5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611af5576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b3e838561152d565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561131c4342836123ae565b6010545f90600160401b900460ff16611c1357611c0e8383612597565b611c24565b8160115484611c229190613560565b115b9392505050565b611c33611d15565b6001600160a01b038116611c6157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61131c81611f5f565b611c7560095f612b5b565b5f5b815181101561133a576009828281518110611c9457611c94613573565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611c77565b33611d477f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113c55760405163118cdaa760e01b8152336004820152602401611c58565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611df657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dea5f516020613a835f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113c55760405163703e46dd60e11b815260040160405180910390fd5b611e1c611d15565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eaf575060408051601f3d908101601f19168201909252611eac918101906135b4565b60015b611ed757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c58565b5f516020613a835f395f51905f528114611f0757604051632a87526960e21b815260048101829052602401611c58565b611f1183836126ef565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113c55760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611fd7612744565b61131c8161277a565b6113c5612744565b82516001600160401b031615158061200c575060208301516001600160401b031615155b8061201957506020820151155b8061202657506040820151155b8061203357506060820151155b8061203d57508151155b8061204f5750610e108163ffffffff16105b8061206357506301e133808163ffffffff16115b15612081576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061133a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611c58565b5f61218d610a66565b9050612197612b79565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906121ef57506121ef8760200151611125565b15612238576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612273565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f19818403018152908290526122c491849089906020016135e2565b60408051601f19818403018152919052805160209091012090506123087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613604565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061234890879087908a906004016137f9565b602060405180830381865af4158015612363573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123879190613a19565b6123a4576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612423575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106123ee576123ee613573565b5f91825260209091206002909102015461241890600160401b90046001600160401b031684613541565b6001600160401b0316115b156124b657600854600980549091600160c01b90046001600160401b031690811061245057612450613573565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861249083613a38565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f90438411806125a8575080155b806125f25750600854600980549091600160c01b90046001600160401b03169081106125d6576125d6613573565b5f9182526020909120600290910201546001600160401b031684105b156126105760405163b0b4387760e01b815260040160405180910390fd5b5f808061261e600185613560565b90505b816126ba57600854600160c01b90046001600160401b031681106126ba57866009828154811061265357612653613573565b5f9182526020909120600290910201546001600160401b0316116126a857600191506009818154811061268857612688613573565b5f9182526020909120600290910201546001600160401b031692506126ba565b806126b281613a62565b915050612621565b816126d85760405163b0b4387760e01b815260040160405180910390fd5b856126e38489613560565b11979650505050505050565b6126f882612782565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561273c57611f1182826127e5565b61133a612857565b5f516020613aa35f395f51905f5254600160401b900460ff166113c557604051631afcd79f60e31b815260040160405180910390fd5b611c33612744565b806001600160a01b03163b5f036127b757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c58565b5f516020613a835f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516128019190613a77565b5f60405180830381855af49150503d805f8114612839576040519150601f19603f3d011682016040523d82523d5f602084013e61283e565b606091505b509150915061284e858383612876565b95945050505050565b34156113c55760405163b398979f60e01b815260040160405180910390fd5b60608261288657611c0e826128cd565b815115801561289d57506001600160a01b0384163b155b156128c657604051639996b31560e01b81526001600160a01b0385166004820152602401611c58565b5092915050565b8051156128dd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161292960405180604001604052805f81526020015f81525090565b815260200161294960405180604001604052805f81526020015f81525090565b815260200161296960405180604001604052805f81526020015f81525090565b815260200161298960405180604001604052805f81526020015f81525090565b81526020016129a960405180604001604052805f81526020015f81525090565b81526020016129c960405180604001604052805f81526020015f81525090565b81526020016129e960405180604001604052805f81526020015f81525090565b8152602001612a0960405180604001604052805f81526020015f81525090565b8152602001612a2960405180604001604052805f81526020015f81525090565b8152602001612a4960405180604001604052805f81526020015f81525090565b8152602001612a6960405180604001604052805f81526020015f81525090565b8152602001612a8960405180604001604052805f81526020015f81525090565b8152602001612aa960405180604001604052805f81526020015f81525090565b8152602001612ac960405180604001604052805f81526020015f81525090565b8152602001612ae960405180604001604052805f81526020015f81525090565b8152602001612b0960405180604001604052805f81526020015f81525090565b8152602001612b2960405180604001604052805f81526020015f81525090565b8152602001612b4960405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061131c9190612b97565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bbc5780546001600160c01b03191681555f6001820155600201612b98565b5090565b80356001600160a01b0381168114611182575f5ffd5b5f60208284031215612be6575f5ffd5b611c2482612bc0565b5f60208284031215612bff575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c38604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114611182575f5ffd5b5f60208284031215612e2d575f5ffd5b611c2482612e07565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e6d57612e6d612e36565b60405290565b604051608081016001600160401b0381118282101715612e6d57612e6d612e36565b604051601f8201601f191681016001600160401b0381118282101715612ebd57612ebd612e36565b604052919050565b5f60608284031215612ed5575f5ffd5b604051606081016001600160401b0381118282101715612ef757612ef7612e36565b604052905080612f0683612e07565b8152612f1460208401612e07565b6020820152604092830135920191909152919050565b5f60408284031215612f3a575f5ffd5b604080519081016001600160401b0381118282101715612f5c57612f5c612e36565b604052823581526020928301359281019290925250919050565b5f6104808284031215612f87575f5ffd5b612f8f612e4a565b9050612f9b8383612f2a565b8152612faa8360408401612f2a565b6020820152612fbc8360808401612f2a565b6040820152612fce8360c08401612f2a565b6060820152612fe1836101008401612f2a565b6080820152612ff4836101408401612f2a565b60a0820152613007836101808401612f2a565b60c082015261301a836101c08401612f2a565b60e082015261302d836102008401612f2a565b610100820152613041836102408401612f2a565b610120820152613055836102808401612f2a565b610140820152613069836102c08401612f2a565b61016082015261307d836103008401612f2a565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215613113575f5ffd5b61311d8484612ec5565b915061312c8460608501612f76565b90509250929050565b803563ffffffff81168114611182575f5ffd5b5f60208284031215613158575f5ffd5b611c2482613135565b5f5f60408385031215613172575f5ffd5b61317b83612bc0565b915060208301356001600160401b03811115613195575f5ffd5b8301601f810185136131a5575f5ffd5b80356001600160401b038111156131be576131be612e36565b6131d1601f8201601f1916602001612e95565b8181528660208385010111156131e5575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613214575f5ffd5b61321c612e73565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613257575f5ffd5b611c248383613204565b5f5f5f6105608486031215613274575f5ffd5b61327e8585612ec5565b925061328d8560608601613204565b915061329c8560e08601612f76565b90509250925092565b5f5f604083850312156132b6575f5ffd5b6132bf83612e07565b915061312c60208401612e07565b5f5f5f5f61012085870312156132e1575f5ffd5b6132eb8686612ec5565b93506132fa8660608701613204565b925061330860e08601613135565b91506133176101008601612bc0565b905092959194509250565b5f5f5f5f6105808587031215613336575f5ffd5b6133408686612ec5565b935061334f8660608701613204565b925060e08501359150613317866101008701612f76565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133ab575f5ffd5b611c248383612ec5565b5f5f604083850312156133c6575f5ffd5b50508035926020909101359150565b5f602082840312156133e5575f5ffd5b81356001600160401b038111156133fa575f5ffd5b8201601f8101841361340a575f5ffd5b80356001600160401b0381111561342357613423612e36565b61343260208260051b01612e95565b8082825260208201915060208360071b850101925086831115613453575f5ffd5b6020840193505b828410156134c35760808488031215613471575f5ffd5b613479612e73565b61348285612e07565b815261349060208601612e07565b60208201526134a160408601612e07565b604082015260608581013590820152825260809093019260209091019061345a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611216576112166134cd565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061352c5761352c613500565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611216576112166134cd565b81810381811115611216576112166134cd565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061359f5761359f613500565b806001600160401b0384160491505092915050565b5f602082840312156135c4575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6135f66135f083876135cb565b856135cb565b928352505060200192915050565b5f8261361257613612613500565b500690565b805f5b600581101561363957815184526020938401939091019060010161361a565b50505050565b61365482825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a20820190508451825260208501516020830152604085015161382b604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a03610500830185613617565b613a116105a083018461363f565b949350505050565b5f60208284031215613a29575f5ffd5b81518015158114611c24575f5ffd5b5f6001600160401b0382166001600160401b038103613a5957613a596134cd565b60010192915050565b5f81613a7057613a706134cd565b505f190190565b5f611c2482846135cb56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5693    /// ```
5694    #[rustfmt::skip]
5695    #[allow(clippy::all)]
5696    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5697        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:\xCFa\0\xF9_9_\x81\x81a\x1D{\x01R\x81\x81a\x1D\xA4\x01Ra\x1F!\x01Ra:\xCF_\xF3\xFE`\x80`@R`\x046\x10a\x02uW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01JW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xABW\x80c\xE003\x01\x14a\x08\xDAW\x80c\xF0h T\x14a\x08\xF9W\x80c\xF2\xFD\xE3\x8B\x14a\t\x18W\x80c\xF5ga`\x14a\t7W\x80c\xF9\xE5\r\x19\x14a\tVW__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xBBW\x80c\xAD<\xB1\xCC\x14a\x07\xDAW\x80c\xB3;\xC4\x91\x14a\x08\x17W\x80c\xB5\xAD\xEA<\x14a\x086W\x80c\xC2;\x9E\x9E\x14a\x08UW\x80c\xC8\xE5\xE4\x98\x14a\x08\x8DW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xB8W\x80c\x90\xC1C\x90\x14a\x06\xF4W\x80c\x96\xC1\xCAa\x14a\x07\x13W\x80c\x99\x83(\xE8\x14a\x072W\x80c\x9B\xAA<\xC9\x14a\x07GW\x80c\x9F\xDBT\xA7\x14a\x07fW__\xFD[\x80cqP\x18\xA6\x14a\x06\x1BW\x80cu|7\xAD\x14a\x06/W\x80cvg\x18\x08\x14a\x06IW\x80c\x82nA\xFC\x14a\x06]W\x80c\x85\x84\xD2?\x14a\x06|W__\xFD[\x80c1=\xF7\xB1\x11a\x01\xECW\x80cBm1\x94\x11a\x01\xA6W\x80cBm1\x94\x14a\x05hW\x80cC=\xBA\x9F\x14a\x05\x89W\x80cO\x1E\xF2\x86\x14a\x05\xA8W\x80cR\xD1\x90-\x14a\x05\xBBW\x80cb:\x138\x14a\x05\xCFW\x80ci\xCCj\x04\x14a\x06\x07W__\xFD[\x80c1=\xF7\xB1\x14a\x04\x81W\x80c7\x8E\xC2;\x14a\x04\xB8W\x80c8\xE4T\xB1\x14a\x04\xD4W\x80c<#\xB6\xDB\x14a\x04\xE8W\x80c>\xD5[{\x14a\x05%W\x80cAh'D\x14a\x05KW__\xFD[\x80c\x16z\xC6\x18\x11a\x02=W\x80c\x16z\xC6\x18\x14a\x03\x85W\x80c c\xD4\xF7\x14a\x03\xA4W\x80c%)t'\x14a\x03\xC3W\x80c-R\xAA\xD6\x14a\x03\xF2W\x80c/y\x88\x9D\x14a\x04$W\x80c0\x0C\x89\xDD\x14a\x04bW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02yW\x80c\x02\xB5\x92\xF3\x14a\x02\x9AW\x80c\x06%\xE1\x9B\x14a\x02\xF7W\x80c\r\x8En,\x14a\x039W\x80c\x12\x17<,\x14a\x03dW[__\xFD[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a+\xD6V[a\tjV[\0[4\x80\x15a\x02\xA5W__\xFD[Pa\x02\xB9a\x02\xB46`\x04a+\xEFV[a\n\x1DV[`@Qa\x02\xEE\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\x03\x02W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03\x19\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xEEV[4\x80\x15a\x03DW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xEEV[4\x80\x15a\x03oW__\xFD[Pa\x03xa\nfV[`@Qa\x02\xEE\x91\x90a,\x06V[4\x80\x15a\x03\x90W__\xFD[Pa\x02\x98a\x03\x9F6`\x04a.\x1DV[a\x10\x95V[4\x80\x15a\x03\xAFW__\xFD[Pa\x02\x98a\x03\xBE6`\x04a1\x01V[a\x11\x0CV[4\x80\x15a\x03\xCEW__\xFD[Pa\x03\xE2a\x03\xDD6`\x04a.\x1DV[a\x11%V[`@Q\x90\x15\x15\x81R` \x01a\x02\xEEV[4\x80\x15a\x03\xFDW__\xFD[Pa\x02\x98a\x04\x0C6`\x04a+\xEFV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04/W__\xFD[P`\x08Ta\x04J\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04mW__\xFD[Pa\x03\xE2a\x04|6`\x04a.\x1DV[a\x11\x87V[4\x80\x15a\x04\x8CW__\xFD[P`\x08Ta\x04\xA0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xC3W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xDFW__\xFD[Pa\x02\x98a\x12\x1CV[4\x80\x15a\x04\xF3W__\xFD[Pa\x02\x98a\x05\x026`\x04a.\x1DV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x050W__\xFD[P`\nTa\x04J\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05VW__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04JV[4\x80\x15a\x05sW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x19\x93\x92\x91\x90\x84V[4\x80\x15a\x05\x94W__\xFD[Pa\x02\x98a\x05\xA36`\x04a1HV[a\x13\x0BV[a\x02\x98a\x05\xB66`\x04a1aV[a\x13\x1FV[4\x80\x15a\x05\xC6W__\xFD[Pa\x04\xC6a\x13>V[4\x80\x15a\x05\xDAW__\xFD[Pa\x02\x98a\x05\xE96`\x04a2GV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06\x12W__\xFD[Pa\x02\x98a\x13YV[4\x80\x15a\x06&W__\xFD[Pa\x02\x98a\x13\xC7V[4\x80\x15a\x06:W__\xFD[Pa\x02\x98a\x03\xBE6`\x04a2aV[4\x80\x15a\x06TW__\xFD[Pa\x04Ja\x13\xD8V[4\x80\x15a\x06hW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xE2V[4\x80\x15a\x06\x87W__\xFD[Pa\x06\x9Ba\x06\x966`\x04a+\xEFV[a\x14\x02V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xEEV[4\x80\x15a\x06\xC3W__\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\x04\xA0V[4\x80\x15a\x06\xFFW__\xFD[Pa\x04Ja\x07\x0E6`\x04a2\xA5V[a\x15-V[4\x80\x15a\x07\x1EW__\xFD[Pa\x02\x98a\x07-6`\x04a1HV[a\x15\x9CV[4\x80\x15a\x07=W__\xFD[Pa\x04\xC6`\x0FT\x81V[4\x80\x15a\x07RW__\xFD[Pa\x02\x98a\x07a6`\x04a2\xCDV[a\x16%V[4\x80\x15a\x07qW__\xFD[P`\x06T`\x07Ta\x07\x95\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\x02\xEEV[4\x80\x15a\x07\xC6W__\xFD[Pa\x02\x98a\x07\xD56`\x04a3\"V[a\x174V[4\x80\x15a\x07\xE5W__\xFD[Pa\x08\n`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xEE\x91\x90a3fV[4\x80\x15a\x08\"W__\xFD[Pa\x02\x98a\x0816`\x04a2\xA5V[a\x1AYV[4\x80\x15a\x08AW__\xFD[Pa\x02\x98a\x08P6`\x04a3\x9BV[a\x1B\xAAV[4\x80\x15a\x08`W__\xFD[P`\x08Ta\x08x\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x08\x98W__\xFD[Pa\x02\x98`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xB6W__\xFD[P`\x04T`\x05Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08\xE5W__\xFD[Pa\x03\xE2a\x08\xF46`\x04a3\xB5V[a\x1B\xF1V[4\x80\x15a\t\x04W__\xFD[P`\nTa\x04J\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\t#W__\xFD[Pa\x02\x98a\t26`\x04a+\xD6V[a\x1C+V[4\x80\x15a\tBW__\xFD[Pa\x02\x98a\tQ6`\x04a3\xD5V[a\x1CjV[4\x80\x15a\taW__\xFD[P`\tTa\x04\xC6V[a\tra\x1D\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x99W`@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\t\xC8W`@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\n,W_\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\nna(\xF6V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x05w\xCF\x9B\xF8.\x9F\x08\xA7R\xD87p\x90\x88\xC17\xF9\xCD\x88\xCD\x95\xB0;'\xE6\xC5K\xE3\x8E\x92\x9F`@\x82\x01QR\x7F\x08\xFF\x03\xA2|\xBEj\x98\x0E\xC6`7\x9D(\xEEv\x97\\\xEFB\xBAX\x06\xB96&2\xF2jm\xFB ` `@\x83\x01Q\x01R\x7F\x0FO\xC3l\x1C\xA1[\x91\x85\x95\x92\x87\xC9\xE9w2\x83\xE1S\x95\xA9'\x01\x08}8pO\xDD\x0C\x17\xEA``\x82\x01QR\x7F\x14\xB0\x15\x87\xBBQ +\xAEV\xDC\x99\"QyVU\xDCD9Q\x93\xF2+9\xA6\x8EE\xE5\x01\xE3\xF3` ``\x83\x01Q\x01R\x7F\nL\xE9\x17c(B+HH2\x15[\xB332\x85\xA6\xE0\xE00fwa\xC9WoP.\x8B\x1B\x1B`\x80\x82\x01QR\x7F\n\x16\xF5AF\x14\xD6Hg\x8Ccz\t1\xC1A\x91\xB22\xBB\x1A]#\xF6\xC1g:\xF0Yf\x03\xA6` `\x80\x83\x01Q\x01R\x7F\x1C\x1C_\xF4$\xE5\xA4\xDA\xEF\x97\x06\x1E\x022zk\x8E[\xBE\xCC\x8BU\xD7\xF5\x18\x89\xC6\xC3\x91\xC6\xFEK`\xA0\x82\x01QR\x7F+\xFF<\xE7\xC8v\xF1\x11\xDE^\x8A\x0C\xAA\x06=\xCE&\xD0{\x87\xC3\x12 \xA7\xD79\xA0\xD8\x8C9\xD8\xEA` `\xA0\x83\x01Q\x01R\x7F-2\xDC\xE8\xD0\x80\xA1\xA6*\xFDs`\xE6U\x02\x18\xC7n\xD1\xBA~\xEF\xE2\x9C\x02t\xF5\xDE\xE3rS\x12`\xC0\x82\x01QR\x7F&\x0F\x1D\x1A\x8A\xE6\xD96\xAE\x1F(@v\xAD\n7C4\xB1T\\\xB8\xE1\xB0N\xB4U9\xE3n\x93.` `\xC0\x83\x01Q\x01R\x7F%\xCC\t\xD2}\x1F'X\xC7\xED\xAB\xFCL\xCBu:\x1E\x10\x1F\x07\xCD\xAE\xA6\x12\xBB\x1B\xB9\xE6kW\xAC\xB1`\xE0\x82\x01QR\x7F/\x87s_\xCB\xE1\x1Cp\x12\x1E\xDF\xF1\xD5 \xC6/\xE9\x98\x8D\xDD\x15\x93|?C\n\xA1\xDF\xA4g0\x8F` `\xE0\x83\x01Q\x01R\x7F\x07:\xAD\x1FLY\xF4\xF2\xFF\xFC_H\x9C{\x81\xF8\xB6\xFDi\xB7s(\xEC\x8B\0\x93\x07\x1AA\xA9\xB7`a\x01\0\x82\x01QR\x7F%\xBB\xAA\xE8wP\x96OJ\x0E\xAB\xCE\xD36;L\x12\r\xE7\xAC\xDE|\xE3\xD6\x19\xD4*\x98gK\xCC\x17` a\x01\0\x83\x01Q\x01R\x7F\x14\x0F\x1B\nq\xA0\xDF\x10\x0C\xF0\xAFg\x1B\xBE\xCCPa`\xEF,\xBD\xC2J\x97o\xAAE\x93\x12\xC1B\\a\x01 \x82\x01QR\x7F\x0El\xA0s>\x1FES\xBB\xCC\xA3\xA7\xB3\x14\xC4\x08\x0884\x10; \xAB?\xAA,\xEC\xE9\xEFz\xA9\x80` a\x01 \x83\x01Q\x01R\x7F\x0Cl\xC1\xB3\xD3d\xF4\x05\xFCw\x86Q\x98\xC9T\xED\xB8w\x14v_\x87\x9B\x05\x7FG \xFE\x13\x9C\xE8aa\x01@\x82\x01QR\x7F\x0E\xFA\xD5:\xC0Q\xAE\xE0\x7F\x7F\x92\xC3Jw\x9B_\x9B\xC5\x80:a&\x11q\x0F\x90{\xBD\xA3c\x030` a\x01@\x83\x01Q\x01R\x7F)\x9B]&\xB5\xDA1\x8C\xFDn\xE25BDO\xBDT\xA2!\xAE@\xB0C\xEE{Y\xE4\xBE\x8A|\xF0\xBCa\x01`\x82\x01QR\x7F\x11\xBF\xB7\r\xE4\xB5\x9Cq|\xB7;\xA6\xD9#\xF7\x94G\xD1\x0E\xB6\xE7\xEA\x91\xAB\x8Am&\x11\x84\xAB}\xDD` a\x01`\x83\x01Q\x01R\x7F.dm\xF4Pq\xA6\x18\x03\xF5\xE8\xE9+u\xC1V\xCA\xB0_8\xCF\x0F\x84\xDFu\x1C\xF2D/\"D\x82a\x01\x80\x82\x01QR~\xED\x98\xEF\"|\xE6'\xFE.V\xA1\x1E2\xE1\xB4\x90\xD9\x9D\xEEH\x1C-\x81 P\xD2\xFF\xBF\x1C\xA0\xDF` a\x01\x80\x83\x01Q\x01R\x7F\x10\xE3k\xBD\xF4-V5\x9D.\x87\x93+x\x1Bb'\x1C>n\x1B\x02\x87\xD1>]$x\xCD\x96\xBA\xABa\x01\xA0\x82\x01QR\x7F\x02\xD5\x03\x7F\xC2T;\x02\xB2\xE2\xE4\x1Fj\xBC\xA9\x13r\x06\xF8{gT\x9A\xBD}h\x95\x1B\x88\x01\xAA\x8D` a\x01\xA0\x83\x01Q\x01R\x7F\x16\xE1\x12$\x01\xB6O\x03\xC2\xDA^\xBDMR\x02\x1E\x1B\x86\xC9\xBB=Jk\xE6C\xEE\x05w1\xBEN\xFDa\x01\xC0\x82\x01QR\x7F\x1B\xF6\xCC\xA2\xDC\x0Bz\xA2?\xEC\xAF\x05\x8D\x11\xBB\xF4\xC0lm\x85\xB0;k'\xE1\xF3z\xC8p5}\xD8` a\x01\xC0\x83\x01Q\x01R\x7F-\xC5\x95\x1C^_\x89\x10\x03\xF7}\x99@\xBA\x8AE\x8B\x96\x08\xA3\xCB;\x92m\x1F\n\"i\0\x96M\xCAa\x01\xE0\x82\x01QR\x7F\r\x11H!=c=\xB52\xD6\xECCR\xFFA\xE5!\xE0\x16\xC8\xFA\xDC\x8D\xB4,K\xF9\xEB\x16j\xD3\x81` a\x01\xE0\x83\x01Q\x01R\x7F-\x7F\xED@\x88\xB6\xE7:\xBAz\xE1\xC3\xBE9\xAB\x96\x97\x13z\xC1\xC4P\xAE\xB9q\x87\x8D\xCF\xDA~2\x81a\x02\0\x82\x01QR\x7F\x18\xDC\r\xE1\xEFW\xDF\x9C\x8FI*\xDE\xBA\x18<a\n\xD5\xEA\xE0i\x96Dn4x\x07c`\xB2\x9Ev` a\x02\0\x83\x01Q\x01R\x7F\x1B\x9C\xD9\xB8y\xF2B\xF31\x10=j\xC1\xF5&#\x93|\x08\x01\xA2\x1C\xCD\xD2;M\xC9\xD4\xCA\xF7}\x9Ca\x02 \x82\x01QR\x7F\x1D\xEAj_,\xFF\xFF\x1CUv\xB70u\xA9b7\xFD\xF9QS\xEFh\xCB\xF47+\x7F\x1F8\x06\xD8J` a\x02 \x83\x01Q\x01R\x7F\x01&\x17g,\x1D8U\x7F8_\x9F\xF0\xD9\xFC\xE10\xE8\xC8\xCF\xDE'\xF6[\x90\x8D\xB4\xFD0\xD3\rra\x02@\x82\x01QR\x7F\x0E\xE4\x84\x05a\xAA\x90\xB4\xF4\x02W\xD5\x1Cq\xED\x03\xE0\xA3\x90i zY'g|\xD1Fh\xD5tw` a\x02@\x83\x01Q\x01R\x7F\x13Yg\x92\xA5\xEFm\xF4\xCD\xBBF\xEF\xFA\xA4_\x91\xD3\xCC\x04\x01\xA6E\x83\xCD\xD7Ky#\x10\xE3\xFD\xBDa\x02`\x82\x01QR\x7F\x19.,a\xCB\xB5\xB70\xEF\x86\xA9Pc<Yr\xC4\xF9V\xA0S\xC7%rI\x8A\x1E\x12\x12Hp9` 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[a\x10\x9Da\x1D\x15V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10\xE3\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15-V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11EWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11QWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11h\x83`\x05a4\xE1V[a\x11r\x91\x90a5\x14V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xA7WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xB3WP_\x91\x90PV[`\nTa\x11\xC9\x90`\x01`\x01`@\x1B\x03\x16\x83a5\x14V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12\x16WP`\nTa\x11\xF1\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5AV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x12\x0B\x91\x16\x84a5\x14V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a:\xA3_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12RWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12pW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x12\xAA\x92\x91\x81\x04\x82\x16\x91\x16a\x15-V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x13a\x1D\x15V[a\x13\x1C\x81a\x15\x9CV[PV[a\x13'a\x1DpV[a\x130\x82a\x1E\x14V[a\x13:\x82\x82a\x1EUV[PPV[_a\x13Ga\x1F\x16V[P_Q` a:\x83_9_Q\x90_R\x90V[a\x13aa\x1D\x15V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xACW`\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\x13\xCFa\x1D\x15V[a\x13\xC5_a\x1F_V[`\x06T`\nT_\x91a\x13\xFD\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15-V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14\x16`\x01\x83a5`V[\x81T\x81\x10a\x14&Wa\x14&a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14eW`@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\x15&W\x84`\t\x82\x81T\x81\x10a\x14\x95Wa\x14\x95a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15\x1EW`\t\x81\x81T\x81\x10a\x14\xCEWa\x14\xCEa5sV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x14\xF1Wa\x14\xF1a5sV[\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\x14yV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15EWP_a\x12\x16V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15]WP`\x01a\x12\x16V[a\x15g\x82\x84a5\x14V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x87Wa\x15\x80\x82\x84a5\x87V[\x90Pa\x12\x16V[a\x15\x91\x82\x84a5\x87V[a\x15\x80\x90`\x01a4\xE1V[a\x15\xA4a\x1D\x15V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x15\xC3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x15\xE1WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x15\xFFW`@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[_Q` a:\xA3_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16VWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16qWP0;\x15[\x90P\x81\x15\x80\x15a\x16\x7FWP\x80\x15[\x15a\x16\x9DW`@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\x16\xC7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x16\xD0\x86a\x1F\xCFV[a\x16\xD8a\x1F\xE0V[a\x16\xE3\x89\x89\x89a\x1F\xE8V[\x83\x15a\x17)W\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[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17YWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17wW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xB0WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x17\xCEW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xDB\x84`@\x01Qa!\x14V[a\x17\xE8\x83` \x01Qa!\x14V[a\x17\xF5\x83`@\x01Qa!\x14V[a\x18\x02\x83``\x01Qa!\x14V[_a\x18\x0Ba\x13\xD8V[` \x86\x01Q`\nT\x91\x92P_\x91a\x18+\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15-V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18oWa\x18Q\x86` \x01Qa\x11\x87V[\x15a\x18oW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19\x1BW`\x02a\x18\x92\x83\x83a5AV[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xB9W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xC4\x82`\x01a4\xE1V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x18\xFDWP`\x06Ta\x18\xFB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11%V[\x15[\x15a\x19\x1BW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19'\x86\x86\x86\x86a!\x84V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\x84WPa\x19\x84\x86` \x01Qa\x11%V[\x15a\x19\xEEW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x19\xD2\x82`\x01a4\xE1V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x19\xF9CB\x88a#\xAEV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1AI\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a:\xA3_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\x8FWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x1A\xF5W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1B>\x83\x85a\x15-V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[\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`@\x81\x01Q`\x07Ua\x13\x1CCB\x83a#\xAEV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C\x13Wa\x1C\x0E\x83\x83a%\x97V[a\x1C$V[\x81`\x11T\x84a\x1C\"\x91\x90a5`V[\x11[\x93\x92PPPV[a\x1C3a\x1D\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CaW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13\x1C\x81a\x1F_V[a\x1Cu`\t_a+[V[_[\x81Q\x81\x10\x15a\x13:W`\t\x82\x82\x81Q\x81\x10a\x1C\x94Wa\x1C\x94a5sV[` \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\x1CwV[3a\x1DG\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\x13\xC5W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1CXV[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\x1D\xF6WP\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\x1D\xEA_Q` a:\x83_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xC5W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x1Ca\x1D\x15V[`@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\n\x12V[\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\x1E\xAFWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xAC\x91\x81\x01\x90a5\xB4V[`\x01[a\x1E\xD7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1CXV[_Q` a:\x83_9_Q\x90_R\x81\x14a\x1F\x07W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1CXV[a\x1F\x11\x83\x83a&\xEFV[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\x13\xC5W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x1F\xD7a'DV[a\x13\x1C\x81a'zV[a\x13\xC5a'DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a \x0CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a \x19WP` \x82\x01Q\x15[\x80a &WP`@\x82\x01Q\x15[\x80a 3WP``\x82\x01Q\x15[\x80a =WP\x81Q\x15[\x80a OWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a cWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \x81W`@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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x1CXV[_a!\x8Da\nfV[\x90Pa!\x97a+yV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\xEFWPa!\xEF\x87` \x01Qa\x11%V[\x15a\"8W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"sV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xC4\x91\x84\x90\x89\x90` \x01a5\xE2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa#\x08\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6\x04V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a#H\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a7\xF9V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#\x87\x91\x90a:\x19V[a#\xA4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a$#WP`\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#\xEEWa#\xEEa5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta$\x18\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$\xB6W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$PWa$Pa5sV[_\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$\x90\x83a:8V[\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[`\tT_\x90C\x84\x11\x80a%\xA8WP\x80\x15[\x80a%\xF2WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\xD6Wa%\xD6a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a&\x10W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a&\x1E`\x01\x85a5`V[\x90P[\x81a&\xBAW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&\xBAW\x86`\t\x82\x81T\x81\x10a&SWa&Sa5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&\xA8W`\x01\x91P`\t\x81\x81T\x81\x10a&\x88Wa&\x88a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&\xBAV[\x80a&\xB2\x81a:bV[\x91PPa&!V[\x81a&\xD8W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\xE3\x84\x89a5`V[\x11\x97\x96PPPPPPPV[a&\xF8\x82a'\x82V[`@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'<Wa\x1F\x11\x82\x82a'\xE5V[a\x13:a(WV[_Q` a:\xA3_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xC5W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C3a'DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xB7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1CXV[_Q` a:\x83_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(\x01\x91\x90a:wV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(>V[``\x91P[P\x91P\x91Pa(N\x85\x83\x83a(vV[\x95\x94PPPPPV[4\x15a\x13\xC5W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\x86Wa\x1C\x0E\x82a(\xCDV[\x81Q\x15\x80\x15a(\x9DWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xC6W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1CXV[P\x92\x91PPV[\x80Q\x15a(\xDDW\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))`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*)`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+)`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+I`@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\x13\x1C\x91\x90a+\x97V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xBCW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\x98V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a+\xE6W__\xFD[a\x1C$\x82a+\xC0V[_` \x82\x84\x03\x12\x15a+\xFFW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,8`@\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[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a.-W__\xFD[a\x1C$\x82a.\x07V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.mWa.ma.6V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.mWa.ma.6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xBDWa.\xBDa.6V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xD5W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xF7Wa.\xF7a.6V[`@R\x90P\x80a/\x06\x83a.\x07V[\x81Ra/\x14` \x84\x01a.\x07V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/:W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\\Wa/\\a.6V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\x87W__\xFD[a/\x8Fa.JV[\x90Pa/\x9B\x83\x83a/*V[\x81Ra/\xAA\x83`@\x84\x01a/*V[` \x82\x01Ra/\xBC\x83`\x80\x84\x01a/*V[`@\x82\x01Ra/\xCE\x83`\xC0\x84\x01a/*V[``\x82\x01Ra/\xE1\x83a\x01\0\x84\x01a/*V[`\x80\x82\x01Ra/\xF4\x83a\x01@\x84\x01a/*V[`\xA0\x82\x01Ra0\x07\x83a\x01\x80\x84\x01a/*V[`\xC0\x82\x01Ra0\x1A\x83a\x01\xC0\x84\x01a/*V[`\xE0\x82\x01Ra0-\x83a\x02\0\x84\x01a/*V[a\x01\0\x82\x01Ra0A\x83a\x02@\x84\x01a/*V[a\x01 \x82\x01Ra0U\x83a\x02\x80\x84\x01a/*V[a\x01@\x82\x01Ra0i\x83a\x02\xC0\x84\x01a/*V[a\x01`\x82\x01Ra0}\x83a\x03\0\x84\x01a/*V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a1\x13W__\xFD[a1\x1D\x84\x84a.\xC5V[\x91Pa1,\x84``\x85\x01a/vV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a1XW__\xFD[a\x1C$\x82a15V[__`@\x83\x85\x03\x12\x15a1rW__\xFD[a1{\x83a+\xC0V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x95W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xA5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xBEWa1\xBEa.6V[a1\xD1`\x1F\x82\x01`\x1F\x19\x16` \x01a.\x95V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xE5W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a2\x14W__\xFD[a2\x1Ca.sV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a2WW__\xFD[a\x1C$\x83\x83a2\x04V[___a\x05`\x84\x86\x03\x12\x15a2tW__\xFD[a2~\x85\x85a.\xC5V[\x92Pa2\x8D\x85``\x86\x01a2\x04V[\x91Pa2\x9C\x85`\xE0\x86\x01a/vV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xB6W__\xFD[a2\xBF\x83a.\x07V[\x91Pa1,` \x84\x01a.\x07V[____a\x01 \x85\x87\x03\x12\x15a2\xE1W__\xFD[a2\xEB\x86\x86a.\xC5V[\x93Pa2\xFA\x86``\x87\x01a2\x04V[\x92Pa3\x08`\xE0\x86\x01a15V[\x91Pa3\x17a\x01\0\x86\x01a+\xC0V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a36W__\xFD[a3@\x86\x86a.\xC5V[\x93Pa3O\x86``\x87\x01a2\x04V[\x92P`\xE0\x85\x015\x91Pa3\x17\x86a\x01\0\x87\x01a/vV[` \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\x15a3\xABW__\xFD[a\x1C$\x83\x83a.\xC5V[__`@\x83\x85\x03\x12\x15a3\xC6W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xE5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xFAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4\nW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4#Wa4#a.6V[a42` \x82`\x05\x1B\x01a.\x95V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4SW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xC3W`\x80\x84\x88\x03\x12\x15a4qW__\xFD[a4ya.sV[a4\x82\x85a.\x07V[\x81Ra4\x90` \x86\x01a.\x07V[` \x82\x01Ra4\xA1`@\x86\x01a.\x07V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4ZV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5,Wa5,a5\0V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[\x81\x81\x03\x81\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\x9FWa5\x9Fa5\0V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xC4W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\xF6a5\xF0\x83\x87a5\xCBV[\x85a5\xCBV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6\x12Wa6\x12a5\0V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a69W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a6\x1AV[PPPPV[a6T\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\x01Qa8+`@\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:\x03a\x05\0\x83\x01\x85a6\x17V[a:\x11a\x05\xA0\x83\x01\x84a6?V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:)W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C$W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:YWa:Ya4\xCDV[`\x01\x01\x92\x91PPV[_\x81a:pWa:pa4\xCDV[P_\x19\x01\x90V[_a\x1C$\x82\x84a5\xCBV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5698    );
5699    /// The runtime bytecode of the contract, as deployed on the network.
5700    ///
5701    /// ```text
5702    ///0x608060405260043610610275575f3560e01c8063715018a61161014a578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108ab578063e0303301146108da578063f0682054146108f9578063f2fde38b14610918578063f567616014610937578063f9e50d1914610956575f5ffd5b8063aabd5db3146107bb578063ad3cb1cc146107da578063b33bc49114610817578063b5adea3c14610836578063c23b9e9e14610855578063c8e5e4981461088d575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106b857806390c14390146106f457806396c1ca6114610713578063998328e8146107325780639baa3cc9146107475780639fdb54a714610766575f5ffd5b8063715018a61461061b578063757c37ad1461062f5780637667180814610649578063826e41fc1461065d5780638584d23f1461067c575f5ffd5b8063313df7b1116101ec578063426d3194116101a6578063426d319414610568578063433dba9f146105895780634f1ef286146105a857806352d1902d146105bb578063623a1338146105cf57806369cc6a0414610607575f5ffd5b8063313df7b114610481578063378ec23b146104b857806338e454b1146104d45780633c23b6db146104e85780633ed55b7b14610525578063416827441461054b575f5ffd5b8063167ac6181161023d578063167ac618146103855780632063d4f7146103a457806325297427146103c35780632d52aad6146103f25780632f79889d14610424578063300c89dd14610462575f5ffd5b8063013fa5fc1461027957806302b592f31461029a5780630625e19b146102f75780630d8e6e2c1461033957806312173c2c14610364575b5f5ffd5b348015610284575f5ffd5b50610298610293366004612bd6565b61096a565b005b3480156102a5575f5ffd5b506102b96102b4366004612bef565b610a1d565b6040516102ee94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610302575f5ffd5b50600b54600c54600d54600e546103199392919084565b6040805194855260208501939093529183015260608201526080016102ee565b348015610344575f5ffd5b5060408051600381525f60208201819052918101919091526060016102ee565b34801561036f575f5ffd5b50610378610a66565b6040516102ee9190612c06565b348015610390575f5ffd5b5061029861039f366004612e1d565b611095565b3480156103af575f5ffd5b506102986103be366004613101565b61110c565b3480156103ce575f5ffd5b506103e26103dd366004612e1d565b611125565b60405190151581526020016102ee565b3480156103fd575f5ffd5b5061029861040c366004612bef565b6010805460ff60401b1916600160401b179055601155565b34801561042f575f5ffd5b5060085461044a90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102ee565b34801561046d575f5ffd5b506103e261047c366004612e1d565b611187565b34801561048c575f5ffd5b506008546104a0906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b3480156104c3575f5ffd5b50435b6040519081526020016102ee565b3480156104df575f5ffd5b5061029861121c565b3480156104f3575f5ffd5b50610298610502366004612e1d565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b348015610530575f5ffd5b50600a5461044a90600160401b90046001600160401b031681565b348015610556575f5ffd5b506010546001600160401b031661044a565b348015610573575f5ffd5b505f546001546002546003546103199392919084565b348015610594575f5ffd5b506102986105a3366004613148565b61130b565b6102986105b6366004613161565b61131f565b3480156105c6575f5ffd5b506104c661133e565b3480156105da575f5ffd5b506102986105e9366004613247565b8051600b556020810151600c556040810151600d5560600151600e55565b348015610612575f5ffd5b50610298611359565b348015610626575f5ffd5b506102986113c7565b34801561063a575f5ffd5b506102986103be366004613261565b348015610654575f5ffd5b5061044a6113d8565b348015610668575f5ffd5b506008546001600160a01b031615156103e2565b348015610687575f5ffd5b5061069b610696366004612bef565b611402565b604080519283526001600160401b039091166020830152016102ee565b3480156106c3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104a0565b3480156106ff575f5ffd5b5061044a61070e3660046132a5565b61152d565b34801561071e575f5ffd5b5061029861072d366004613148565b61159c565b34801561073d575f5ffd5b506104c6600f5481565b348015610752575f5ffd5b506102986107613660046132cd565b611625565b348015610771575f5ffd5b50600654600754610795916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102ee565b3480156107c6575f5ffd5b506102986107d5366004613322565b611734565b3480156107e5575f5ffd5b5061080a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102ee9190613366565b348015610822575f5ffd5b506102986108313660046132a5565b611a59565b348015610841575f5ffd5b5061029861085036600461339b565b611baa565b348015610860575f5ffd5b5060085461087890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102ee565b348015610898575f5ffd5b506102986010805460ff60401b19169055565b3480156108b6575f5ffd5b50600454600554610795916001600160401b0380821692600160401b909204169083565b3480156108e5575f5ffd5b506103e26108f43660046133b5565b611bf1565b348015610904575f5ffd5b50600a5461044a906001600160401b031681565b348015610923575f5ffd5b50610298610932366004612bd6565b611c2b565b348015610942575f5ffd5b506102986109513660046133d5565b611c6a565b348015610961575f5ffd5b506009546104c6565b610972611d15565b6001600160a01b0381166109995760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109c85760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a2c575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a6e6128f6565b620100008152600560208201527f0577cf9bf82e9f08a752d837709088c137f9cd88cd95b03b27e6c54be38e929f6040820151527f08ff03a27cbe6a980ec660379d28ee76975cef42ba5806b9362632f26a6dfb206020604083015101527f0f4fc36c1ca15b9185959287c9e9773283e15395a92701087d38704fdd0c17ea6060820151527f14b01587bb51202bae56dc992251795655dc44395193f22b39a68e45e501e3f36020606083015101527f0a4ce9176328422b484832155bb3333285a6e0e030667761c9576f502e8b1b1b6080820151527f0a16f5414614d648678c637a0931c14191b232bb1a5d23f6c1673af0596603a66020608083015101527f1c1c5ff424e5a4daef97061e02327a6b8e5bbecc8b55d7f51889c6c391c6fe4b60a0820151527f2bff3ce7c876f111de5e8a0caa063dce26d07b87c31220a7d739a0d88c39d8ea602060a083015101527f2d32dce8d080a1a62afd7360e6550218c76ed1ba7eefe29c0274f5dee372531260c0820151527f260f1d1a8ae6d936ae1f284076ad0a374334b1545cb8e1b04eb45539e36e932e602060c083015101527f25cc09d27d1f2758c7edabfc4ccb753a1e101f07cdaea612bb1bb9e66b57acb160e0820151527f2f87735fcbe11c70121edff1d520c62fe9988ddd15937c3f430aa1dfa467308f602060e083015101527f073aad1f4c59f4f2fffc5f489c7b81f8b6fd69b77328ec8b0093071a41a9b760610100820151527f25bbaae87750964f4a0eabced3363b4c120de7acde7ce3d619d42a98674bcc17602061010083015101527f140f1b0a71a0df100cf0af671bbecc506160ef2cbdc24a976faa459312c1425c610120820151527f0e6ca0733e1f4553bbcca3a7b314c408083834103b20ab3faa2cece9ef7aa980602061012083015101527f0c6cc1b3d364f405fc77865198c954edb87714765f879b057f4720fe139ce861610140820151527f0efad53ac051aee07f7f92c34a779b5f9bc5803a612611710f907bbda3630330602061014083015101527f299b5d26b5da318cfd6ee23542444fbd54a221ae40b043ee7b59e4be8a7cf0bc610160820151527f11bfb70de4b59c717cb73ba6d923f79447d10eb6e7ea91ab8a6d261184ab7ddd602061016083015101527f2e646df45071a61803f5e8e92b75c156cab05f38cf0f84df751cf2442f224482610180820151527eed98ef227ce627fe2e56a11e32e1b490d99dee481c2d812050d2ffbf1ca0df602061018083015101527f10e36bbdf42d56359d2e87932b781b62271c3e6e1b0287d13e5d2478cd96baab6101a0820151527f02d5037fc2543b02b2e2e41f6abca9137206f87b67549abd7d68951b8801aa8d60206101a083015101527f16e1122401b64f03c2da5ebd4d52021e1b86c9bb3d4a6be643ee057731be4efd6101c0820151527f1bf6cca2dc0b7aa23fecaf058d11bbf4c06c6d85b03b6b27e1f37ac870357dd860206101c083015101527f2dc5951c5e5f891003f77d9940ba8a458b9608a3cb3b926d1f0a226900964dca6101e0820151527f0d1148213d633db532d6ec4352ff41e521e016c8fadc8db42c4bf9eb166ad38160206101e083015101527f2d7fed4088b6e73aba7ae1c3be39ab9697137ac1c450aeb971878dcfda7e3281610200820151527f18dc0de1ef57df9c8f492adeba183c610ad5eae06996446e3478076360b29e76602061020083015101527f1b9cd9b879f242f331103d6ac1f52623937c0801a21ccdd23b4dc9d4caf77d9c610220820151527f1dea6a5f2cffff1c5576b73075a96237fdf95153ef68cbf4372b7f1f3806d84a602061022083015101527f012617672c1d38557f385f9ff0d9fce130e8c8cfde27f65b908db4fd30d30d72610240820151527f0ee4840561aa90b4f40257d51c71ed03e0a39069207a5927677cd14668d57477602061024083015101527f13596792a5ef6df4cdbb46effaa45f91d3cc0401a64583cdd74b792310e3fdbd610260820151527f192e2c61cbb5b730ef86a950633c5972c4f956a053c72572498a1e1212487039602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b61109d611d15565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556110e39491909104811692811691161761152d565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111455750600a546001600160401b0316155b1561115157505f919050565b600a546001600160401b03166111688360056134e1565b6111729190613514565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111a75750600a546001600160401b0316155b156111b357505f919050565b600a546111c9906001600160401b031683613514565b6001600160401b031615806112165750600a546111f1906005906001600160401b0316613541565b600a546001600160401b039182169161120b911684613514565b6001600160401b0316115b92915050565b5f516020613aa35f395f51905f52805460039190600160401b900460ff1680611252575080546001600160401b03808416911610155b156112705760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112aa929181048216911661152d565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611313611d15565b61131c8161159c565b50565b611327611d70565b61133082611e14565b61133a8282611e55565b5050565b5f611347611f16565b505f516020613a835f395f51905f5290565b611361611d15565b6008546001600160a01b0316156113ac57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6113cf611d15565b6113c55f611f5f565b600654600a545f916113fd916001600160401b03600160401b9092048216911661152d565b905090565b600980545f91829190611416600183613560565b8154811061142657611426613573565b5f918252602090912060029091020154600160801b90046001600160401b0316841061146557604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561152657846009828154811061149557611495613573565b5f918252602090912060029091020154600160801b90046001600160401b0316111561151e57600981815481106114ce576114ce613573565b905f5260205f20906002020160010154600982815481106114f1576114f1613573565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611479565b5050915091565b5f816001600160401b03165f0361154557505f611216565b826001600160401b03165f0361155d57506001611216565b6115678284613514565b6001600160401b03165f03611587576115808284613587565b9050611216565b6115918284613587565b6115809060016134e1565b6115a4611d15565b610e108163ffffffff1610806115c357506301e133808163ffffffff16115b806115e1575060085463ffffffff600160a01b909104811690821611155b156115ff576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613aa35f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116565750825b90505f826001600160401b031660011480156116715750303b155b90508115801561167f575080155b1561169d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156116c757845460ff60401b1916600160401b1785555b6116d086611fcf565b6116d8611fe0565b6116e3898989611fe8565b831561172957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561175957506008546001600160a01b03163314155b15611777576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117b0575060065460208501516001600160401b03600160401b9092048216911611155b156117ce5760405163051c46ef60e01b815260040160405180910390fd5b6117db8460400151612114565b6117e88360200151612114565b6117f58360400151612114565b6118028360600151612114565b5f61180b6113d8565b6020860151600a549192505f9161182b91906001600160401b031661152d565b6010549091506001600160401b039081169082161061186f576118518660200151611187565b1561186f5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561191b5760026118928383613541565b6001600160401b0316106118b95760405163080ae8d960e01b815260040160405180910390fd5b6118c48260016134e1565b6001600160401b0316816001600160401b03161480156118fd57506006546118fb90600160401b90046001600160401b0316611125565b155b1561191b5760405163080ae8d960e01b815260040160405180910390fd5b61192786868686612184565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f85905560105481169082161080159061198457506119848660200151611125565b156119ee578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6119d28260016134e1565b6040516001600160401b03909116815260200160405180910390a15b6119f94342886123ae565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a4991815260200190565b60405180910390a3505050505050565b5f516020613aa35f395f51905f52805460029190600160401b900460ff1680611a8f575080546001600160401b03808416911610155b15611aad5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611af5576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b3e838561152d565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561131c4342836123ae565b6010545f90600160401b900460ff16611c1357611c0e8383612597565b611c24565b8160115484611c229190613560565b115b9392505050565b611c33611d15565b6001600160a01b038116611c6157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61131c81611f5f565b611c7560095f612b5b565b5f5b815181101561133a576009828281518110611c9457611c94613573565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611c77565b33611d477f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113c55760405163118cdaa760e01b8152336004820152602401611c58565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611df657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611dea5f516020613a835f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113c55760405163703e46dd60e11b815260040160405180910390fd5b611e1c611d15565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611eaf575060408051601f3d908101601f19168201909252611eac918101906135b4565b60015b611ed757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611c58565b5f516020613a835f395f51905f528114611f0757604051632a87526960e21b815260048101829052602401611c58565b611f1183836126ef565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113c55760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611fd7612744565b61131c8161277a565b6113c5612744565b82516001600160401b031615158061200c575060208301516001600160401b031615155b8061201957506020820151155b8061202657506040820151155b8061203357506060820151155b8061203d57508151155b8061204f5750610e108163ffffffff16105b8061206357506301e133808163ffffffff16115b15612081576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061133a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611c58565b5f61218d610a66565b9050612197612b79565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906121ef57506121ef8760200151611125565b15612238576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a0016040516020818303038152906040529050612273565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f19818403018152908290526122c491849089906020016135e2565b60408051601f19818403018152919052805160209091012090506123087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613604565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061234890879087908a906004016137f9565b602060405180830381865af4158015612363573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123879190613a19565b6123a4576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612423575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106123ee576123ee613573565b5f91825260209091206002909102015461241890600160401b90046001600160401b031684613541565b6001600160401b0316115b156124b657600854600980549091600160c01b90046001600160401b031690811061245057612450613573565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861249083613a38565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f90438411806125a8575080155b806125f25750600854600980549091600160c01b90046001600160401b03169081106125d6576125d6613573565b5f9182526020909120600290910201546001600160401b031684105b156126105760405163b0b4387760e01b815260040160405180910390fd5b5f808061261e600185613560565b90505b816126ba57600854600160c01b90046001600160401b031681106126ba57866009828154811061265357612653613573565b5f9182526020909120600290910201546001600160401b0316116126a857600191506009818154811061268857612688613573565b5f9182526020909120600290910201546001600160401b031692506126ba565b806126b281613a62565b915050612621565b816126d85760405163b0b4387760e01b815260040160405180910390fd5b856126e38489613560565b11979650505050505050565b6126f882612782565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561273c57611f1182826127e5565b61133a612857565b5f516020613aa35f395f51905f5254600160401b900460ff166113c557604051631afcd79f60e31b815260040160405180910390fd5b611c33612744565b806001600160a01b03163b5f036127b757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611c58565b5f516020613a835f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516128019190613a77565b5f60405180830381855af49150503d805f8114612839576040519150601f19603f3d011682016040523d82523d5f602084013e61283e565b606091505b509150915061284e858383612876565b95945050505050565b34156113c55760405163b398979f60e01b815260040160405180910390fd5b60608261288657611c0e826128cd565b815115801561289d57506001600160a01b0384163b155b156128c657604051639996b31560e01b81526001600160a01b0385166004820152602401611c58565b5092915050565b8051156128dd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161292960405180604001604052805f81526020015f81525090565b815260200161294960405180604001604052805f81526020015f81525090565b815260200161296960405180604001604052805f81526020015f81525090565b815260200161298960405180604001604052805f81526020015f81525090565b81526020016129a960405180604001604052805f81526020015f81525090565b81526020016129c960405180604001604052805f81526020015f81525090565b81526020016129e960405180604001604052805f81526020015f81525090565b8152602001612a0960405180604001604052805f81526020015f81525090565b8152602001612a2960405180604001604052805f81526020015f81525090565b8152602001612a4960405180604001604052805f81526020015f81525090565b8152602001612a6960405180604001604052805f81526020015f81525090565b8152602001612a8960405180604001604052805f81526020015f81525090565b8152602001612aa960405180604001604052805f81526020015f81525090565b8152602001612ac960405180604001604052805f81526020015f81525090565b8152602001612ae960405180604001604052805f81526020015f81525090565b8152602001612b0960405180604001604052805f81526020015f81525090565b8152602001612b2960405180604001604052805f81526020015f81525090565b8152602001612b4960405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061131c9190612b97565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bbc5780546001600160c01b03191681555f6001820155600201612b98565b5090565b80356001600160a01b0381168114611182575f5ffd5b5f60208284031215612be6575f5ffd5b611c2482612bc0565b5f60208284031215612bff575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c38604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114611182575f5ffd5b5f60208284031215612e2d575f5ffd5b611c2482612e07565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e6d57612e6d612e36565b60405290565b604051608081016001600160401b0381118282101715612e6d57612e6d612e36565b604051601f8201601f191681016001600160401b0381118282101715612ebd57612ebd612e36565b604052919050565b5f60608284031215612ed5575f5ffd5b604051606081016001600160401b0381118282101715612ef757612ef7612e36565b604052905080612f0683612e07565b8152612f1460208401612e07565b6020820152604092830135920191909152919050565b5f60408284031215612f3a575f5ffd5b604080519081016001600160401b0381118282101715612f5c57612f5c612e36565b604052823581526020928301359281019290925250919050565b5f6104808284031215612f87575f5ffd5b612f8f612e4a565b9050612f9b8383612f2a565b8152612faa8360408401612f2a565b6020820152612fbc8360808401612f2a565b6040820152612fce8360c08401612f2a565b6060820152612fe1836101008401612f2a565b6080820152612ff4836101408401612f2a565b60a0820152613007836101808401612f2a565b60c082015261301a836101c08401612f2a565b60e082015261302d836102008401612f2a565b610100820152613041836102408401612f2a565b610120820152613055836102808401612f2a565b610140820152613069836102c08401612f2a565b61016082015261307d836103008401612f2a565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215613113575f5ffd5b61311d8484612ec5565b915061312c8460608501612f76565b90509250929050565b803563ffffffff81168114611182575f5ffd5b5f60208284031215613158575f5ffd5b611c2482613135565b5f5f60408385031215613172575f5ffd5b61317b83612bc0565b915060208301356001600160401b03811115613195575f5ffd5b8301601f810185136131a5575f5ffd5b80356001600160401b038111156131be576131be612e36565b6131d1601f8201601f1916602001612e95565b8181528660208385010111156131e5575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613214575f5ffd5b61321c612e73565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613257575f5ffd5b611c248383613204565b5f5f5f6105608486031215613274575f5ffd5b61327e8585612ec5565b925061328d8560608601613204565b915061329c8560e08601612f76565b90509250925092565b5f5f604083850312156132b6575f5ffd5b6132bf83612e07565b915061312c60208401612e07565b5f5f5f5f61012085870312156132e1575f5ffd5b6132eb8686612ec5565b93506132fa8660608701613204565b925061330860e08601613135565b91506133176101008601612bc0565b905092959194509250565b5f5f5f5f6105808587031215613336575f5ffd5b6133408686612ec5565b935061334f8660608701613204565b925060e08501359150613317866101008701612f76565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133ab575f5ffd5b611c248383612ec5565b5f5f604083850312156133c6575f5ffd5b50508035926020909101359150565b5f602082840312156133e5575f5ffd5b81356001600160401b038111156133fa575f5ffd5b8201601f8101841361340a575f5ffd5b80356001600160401b0381111561342357613423612e36565b61343260208260051b01612e95565b8082825260208201915060208360071b850101925086831115613453575f5ffd5b6020840193505b828410156134c35760808488031215613471575f5ffd5b613479612e73565b61348285612e07565b815261349060208601612e07565b60208201526134a160408601612e07565b604082015260608581013590820152825260809093019260209091019061345a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611216576112166134cd565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061352c5761352c613500565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611216576112166134cd565b81810381811115611216576112166134cd565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061359f5761359f613500565b806001600160401b0384160491505092915050565b5f602082840312156135c4575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6135f66135f083876135cb565b856135cb565b928352505060200192915050565b5f8261361257613612613500565b500690565b805f5b600581101561363957815184526020938401939091019060010161361a565b50505050565b61365482825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a20820190508451825260208501516020830152604085015161382b604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a03610500830185613617565b613a116105a083018461363f565b949350505050565b5f60208284031215613a29575f5ffd5b81518015158114611c24575f5ffd5b5f6001600160401b0382166001600160401b038103613a5957613a596134cd565b60010192915050565b5f81613a7057613a706134cd565b505f190190565b5f611c2482846135cb56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5703    /// ```
5704    #[rustfmt::skip]
5705    #[allow(clippy::all)]
5706    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5707        b"`\x80`@R`\x046\x10a\x02uW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01JW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xABW\x80c\xE003\x01\x14a\x08\xDAW\x80c\xF0h T\x14a\x08\xF9W\x80c\xF2\xFD\xE3\x8B\x14a\t\x18W\x80c\xF5ga`\x14a\t7W\x80c\xF9\xE5\r\x19\x14a\tVW__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xBBW\x80c\xAD<\xB1\xCC\x14a\x07\xDAW\x80c\xB3;\xC4\x91\x14a\x08\x17W\x80c\xB5\xAD\xEA<\x14a\x086W\x80c\xC2;\x9E\x9E\x14a\x08UW\x80c\xC8\xE5\xE4\x98\x14a\x08\x8DW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xB8W\x80c\x90\xC1C\x90\x14a\x06\xF4W\x80c\x96\xC1\xCAa\x14a\x07\x13W\x80c\x99\x83(\xE8\x14a\x072W\x80c\x9B\xAA<\xC9\x14a\x07GW\x80c\x9F\xDBT\xA7\x14a\x07fW__\xFD[\x80cqP\x18\xA6\x14a\x06\x1BW\x80cu|7\xAD\x14a\x06/W\x80cvg\x18\x08\x14a\x06IW\x80c\x82nA\xFC\x14a\x06]W\x80c\x85\x84\xD2?\x14a\x06|W__\xFD[\x80c1=\xF7\xB1\x11a\x01\xECW\x80cBm1\x94\x11a\x01\xA6W\x80cBm1\x94\x14a\x05hW\x80cC=\xBA\x9F\x14a\x05\x89W\x80cO\x1E\xF2\x86\x14a\x05\xA8W\x80cR\xD1\x90-\x14a\x05\xBBW\x80cb:\x138\x14a\x05\xCFW\x80ci\xCCj\x04\x14a\x06\x07W__\xFD[\x80c1=\xF7\xB1\x14a\x04\x81W\x80c7\x8E\xC2;\x14a\x04\xB8W\x80c8\xE4T\xB1\x14a\x04\xD4W\x80c<#\xB6\xDB\x14a\x04\xE8W\x80c>\xD5[{\x14a\x05%W\x80cAh'D\x14a\x05KW__\xFD[\x80c\x16z\xC6\x18\x11a\x02=W\x80c\x16z\xC6\x18\x14a\x03\x85W\x80c c\xD4\xF7\x14a\x03\xA4W\x80c%)t'\x14a\x03\xC3W\x80c-R\xAA\xD6\x14a\x03\xF2W\x80c/y\x88\x9D\x14a\x04$W\x80c0\x0C\x89\xDD\x14a\x04bW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02yW\x80c\x02\xB5\x92\xF3\x14a\x02\x9AW\x80c\x06%\xE1\x9B\x14a\x02\xF7W\x80c\r\x8En,\x14a\x039W\x80c\x12\x17<,\x14a\x03dW[__\xFD[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a+\xD6V[a\tjV[\0[4\x80\x15a\x02\xA5W__\xFD[Pa\x02\xB9a\x02\xB46`\x04a+\xEFV[a\n\x1DV[`@Qa\x02\xEE\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\x03\x02W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03\x19\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xEEV[4\x80\x15a\x03DW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xEEV[4\x80\x15a\x03oW__\xFD[Pa\x03xa\nfV[`@Qa\x02\xEE\x91\x90a,\x06V[4\x80\x15a\x03\x90W__\xFD[Pa\x02\x98a\x03\x9F6`\x04a.\x1DV[a\x10\x95V[4\x80\x15a\x03\xAFW__\xFD[Pa\x02\x98a\x03\xBE6`\x04a1\x01V[a\x11\x0CV[4\x80\x15a\x03\xCEW__\xFD[Pa\x03\xE2a\x03\xDD6`\x04a.\x1DV[a\x11%V[`@Q\x90\x15\x15\x81R` \x01a\x02\xEEV[4\x80\x15a\x03\xFDW__\xFD[Pa\x02\x98a\x04\x0C6`\x04a+\xEFV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04/W__\xFD[P`\x08Ta\x04J\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04mW__\xFD[Pa\x03\xE2a\x04|6`\x04a.\x1DV[a\x11\x87V[4\x80\x15a\x04\x8CW__\xFD[P`\x08Ta\x04\xA0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xC3W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xEEV[4\x80\x15a\x04\xDFW__\xFD[Pa\x02\x98a\x12\x1CV[4\x80\x15a\x04\xF3W__\xFD[Pa\x02\x98a\x05\x026`\x04a.\x1DV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x050W__\xFD[P`\nTa\x04J\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05VW__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04JV[4\x80\x15a\x05sW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x19\x93\x92\x91\x90\x84V[4\x80\x15a\x05\x94W__\xFD[Pa\x02\x98a\x05\xA36`\x04a1HV[a\x13\x0BV[a\x02\x98a\x05\xB66`\x04a1aV[a\x13\x1FV[4\x80\x15a\x05\xC6W__\xFD[Pa\x04\xC6a\x13>V[4\x80\x15a\x05\xDAW__\xFD[Pa\x02\x98a\x05\xE96`\x04a2GV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06\x12W__\xFD[Pa\x02\x98a\x13YV[4\x80\x15a\x06&W__\xFD[Pa\x02\x98a\x13\xC7V[4\x80\x15a\x06:W__\xFD[Pa\x02\x98a\x03\xBE6`\x04a2aV[4\x80\x15a\x06TW__\xFD[Pa\x04Ja\x13\xD8V[4\x80\x15a\x06hW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xE2V[4\x80\x15a\x06\x87W__\xFD[Pa\x06\x9Ba\x06\x966`\x04a+\xEFV[a\x14\x02V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xEEV[4\x80\x15a\x06\xC3W__\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\x04\xA0V[4\x80\x15a\x06\xFFW__\xFD[Pa\x04Ja\x07\x0E6`\x04a2\xA5V[a\x15-V[4\x80\x15a\x07\x1EW__\xFD[Pa\x02\x98a\x07-6`\x04a1HV[a\x15\x9CV[4\x80\x15a\x07=W__\xFD[Pa\x04\xC6`\x0FT\x81V[4\x80\x15a\x07RW__\xFD[Pa\x02\x98a\x07a6`\x04a2\xCDV[a\x16%V[4\x80\x15a\x07qW__\xFD[P`\x06T`\x07Ta\x07\x95\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\x02\xEEV[4\x80\x15a\x07\xC6W__\xFD[Pa\x02\x98a\x07\xD56`\x04a3\"V[a\x174V[4\x80\x15a\x07\xE5W__\xFD[Pa\x08\n`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xEE\x91\x90a3fV[4\x80\x15a\x08\"W__\xFD[Pa\x02\x98a\x0816`\x04a2\xA5V[a\x1AYV[4\x80\x15a\x08AW__\xFD[Pa\x02\x98a\x08P6`\x04a3\x9BV[a\x1B\xAAV[4\x80\x15a\x08`W__\xFD[P`\x08Ta\x08x\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xEEV[4\x80\x15a\x08\x98W__\xFD[Pa\x02\x98`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xB6W__\xFD[P`\x04T`\x05Ta\x07\x95\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08\xE5W__\xFD[Pa\x03\xE2a\x08\xF46`\x04a3\xB5V[a\x1B\xF1V[4\x80\x15a\t\x04W__\xFD[P`\nTa\x04J\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\t#W__\xFD[Pa\x02\x98a\t26`\x04a+\xD6V[a\x1C+V[4\x80\x15a\tBW__\xFD[Pa\x02\x98a\tQ6`\x04a3\xD5V[a\x1CjV[4\x80\x15a\taW__\xFD[P`\tTa\x04\xC6V[a\tra\x1D\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\x99W`@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\t\xC8W`@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\n,W_\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\nna(\xF6V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x05w\xCF\x9B\xF8.\x9F\x08\xA7R\xD87p\x90\x88\xC17\xF9\xCD\x88\xCD\x95\xB0;'\xE6\xC5K\xE3\x8E\x92\x9F`@\x82\x01QR\x7F\x08\xFF\x03\xA2|\xBEj\x98\x0E\xC6`7\x9D(\xEEv\x97\\\xEFB\xBAX\x06\xB96&2\xF2jm\xFB ` `@\x83\x01Q\x01R\x7F\x0FO\xC3l\x1C\xA1[\x91\x85\x95\x92\x87\xC9\xE9w2\x83\xE1S\x95\xA9'\x01\x08}8pO\xDD\x0C\x17\xEA``\x82\x01QR\x7F\x14\xB0\x15\x87\xBBQ +\xAEV\xDC\x99\"QyVU\xDCD9Q\x93\xF2+9\xA6\x8EE\xE5\x01\xE3\xF3` ``\x83\x01Q\x01R\x7F\nL\xE9\x17c(B+HH2\x15[\xB332\x85\xA6\xE0\xE00fwa\xC9WoP.\x8B\x1B\x1B`\x80\x82\x01QR\x7F\n\x16\xF5AF\x14\xD6Hg\x8Ccz\t1\xC1A\x91\xB22\xBB\x1A]#\xF6\xC1g:\xF0Yf\x03\xA6` `\x80\x83\x01Q\x01R\x7F\x1C\x1C_\xF4$\xE5\xA4\xDA\xEF\x97\x06\x1E\x022zk\x8E[\xBE\xCC\x8BU\xD7\xF5\x18\x89\xC6\xC3\x91\xC6\xFEK`\xA0\x82\x01QR\x7F+\xFF<\xE7\xC8v\xF1\x11\xDE^\x8A\x0C\xAA\x06=\xCE&\xD0{\x87\xC3\x12 \xA7\xD79\xA0\xD8\x8C9\xD8\xEA` `\xA0\x83\x01Q\x01R\x7F-2\xDC\xE8\xD0\x80\xA1\xA6*\xFDs`\xE6U\x02\x18\xC7n\xD1\xBA~\xEF\xE2\x9C\x02t\xF5\xDE\xE3rS\x12`\xC0\x82\x01QR\x7F&\x0F\x1D\x1A\x8A\xE6\xD96\xAE\x1F(@v\xAD\n7C4\xB1T\\\xB8\xE1\xB0N\xB4U9\xE3n\x93.` `\xC0\x83\x01Q\x01R\x7F%\xCC\t\xD2}\x1F'X\xC7\xED\xAB\xFCL\xCBu:\x1E\x10\x1F\x07\xCD\xAE\xA6\x12\xBB\x1B\xB9\xE6kW\xAC\xB1`\xE0\x82\x01QR\x7F/\x87s_\xCB\xE1\x1Cp\x12\x1E\xDF\xF1\xD5 \xC6/\xE9\x98\x8D\xDD\x15\x93|?C\n\xA1\xDF\xA4g0\x8F` `\xE0\x83\x01Q\x01R\x7F\x07:\xAD\x1FLY\xF4\xF2\xFF\xFC_H\x9C{\x81\xF8\xB6\xFDi\xB7s(\xEC\x8B\0\x93\x07\x1AA\xA9\xB7`a\x01\0\x82\x01QR\x7F%\xBB\xAA\xE8wP\x96OJ\x0E\xAB\xCE\xD36;L\x12\r\xE7\xAC\xDE|\xE3\xD6\x19\xD4*\x98gK\xCC\x17` a\x01\0\x83\x01Q\x01R\x7F\x14\x0F\x1B\nq\xA0\xDF\x10\x0C\xF0\xAFg\x1B\xBE\xCCPa`\xEF,\xBD\xC2J\x97o\xAAE\x93\x12\xC1B\\a\x01 \x82\x01QR\x7F\x0El\xA0s>\x1FES\xBB\xCC\xA3\xA7\xB3\x14\xC4\x08\x0884\x10; \xAB?\xAA,\xEC\xE9\xEFz\xA9\x80` a\x01 \x83\x01Q\x01R\x7F\x0Cl\xC1\xB3\xD3d\xF4\x05\xFCw\x86Q\x98\xC9T\xED\xB8w\x14v_\x87\x9B\x05\x7FG \xFE\x13\x9C\xE8aa\x01@\x82\x01QR\x7F\x0E\xFA\xD5:\xC0Q\xAE\xE0\x7F\x7F\x92\xC3Jw\x9B_\x9B\xC5\x80:a&\x11q\x0F\x90{\xBD\xA3c\x030` a\x01@\x83\x01Q\x01R\x7F)\x9B]&\xB5\xDA1\x8C\xFDn\xE25BDO\xBDT\xA2!\xAE@\xB0C\xEE{Y\xE4\xBE\x8A|\xF0\xBCa\x01`\x82\x01QR\x7F\x11\xBF\xB7\r\xE4\xB5\x9Cq|\xB7;\xA6\xD9#\xF7\x94G\xD1\x0E\xB6\xE7\xEA\x91\xAB\x8Am&\x11\x84\xAB}\xDD` a\x01`\x83\x01Q\x01R\x7F.dm\xF4Pq\xA6\x18\x03\xF5\xE8\xE9+u\xC1V\xCA\xB0_8\xCF\x0F\x84\xDFu\x1C\xF2D/\"D\x82a\x01\x80\x82\x01QR~\xED\x98\xEF\"|\xE6'\xFE.V\xA1\x1E2\xE1\xB4\x90\xD9\x9D\xEEH\x1C-\x81 P\xD2\xFF\xBF\x1C\xA0\xDF` a\x01\x80\x83\x01Q\x01R\x7F\x10\xE3k\xBD\xF4-V5\x9D.\x87\x93+x\x1Bb'\x1C>n\x1B\x02\x87\xD1>]$x\xCD\x96\xBA\xABa\x01\xA0\x82\x01QR\x7F\x02\xD5\x03\x7F\xC2T;\x02\xB2\xE2\xE4\x1Fj\xBC\xA9\x13r\x06\xF8{gT\x9A\xBD}h\x95\x1B\x88\x01\xAA\x8D` a\x01\xA0\x83\x01Q\x01R\x7F\x16\xE1\x12$\x01\xB6O\x03\xC2\xDA^\xBDMR\x02\x1E\x1B\x86\xC9\xBB=Jk\xE6C\xEE\x05w1\xBEN\xFDa\x01\xC0\x82\x01QR\x7F\x1B\xF6\xCC\xA2\xDC\x0Bz\xA2?\xEC\xAF\x05\x8D\x11\xBB\xF4\xC0lm\x85\xB0;k'\xE1\xF3z\xC8p5}\xD8` a\x01\xC0\x83\x01Q\x01R\x7F-\xC5\x95\x1C^_\x89\x10\x03\xF7}\x99@\xBA\x8AE\x8B\x96\x08\xA3\xCB;\x92m\x1F\n\"i\0\x96M\xCAa\x01\xE0\x82\x01QR\x7F\r\x11H!=c=\xB52\xD6\xECCR\xFFA\xE5!\xE0\x16\xC8\xFA\xDC\x8D\xB4,K\xF9\xEB\x16j\xD3\x81` a\x01\xE0\x83\x01Q\x01R\x7F-\x7F\xED@\x88\xB6\xE7:\xBAz\xE1\xC3\xBE9\xAB\x96\x97\x13z\xC1\xC4P\xAE\xB9q\x87\x8D\xCF\xDA~2\x81a\x02\0\x82\x01QR\x7F\x18\xDC\r\xE1\xEFW\xDF\x9C\x8FI*\xDE\xBA\x18<a\n\xD5\xEA\xE0i\x96Dn4x\x07c`\xB2\x9Ev` a\x02\0\x83\x01Q\x01R\x7F\x1B\x9C\xD9\xB8y\xF2B\xF31\x10=j\xC1\xF5&#\x93|\x08\x01\xA2\x1C\xCD\xD2;M\xC9\xD4\xCA\xF7}\x9Ca\x02 \x82\x01QR\x7F\x1D\xEAj_,\xFF\xFF\x1CUv\xB70u\xA9b7\xFD\xF9QS\xEFh\xCB\xF47+\x7F\x1F8\x06\xD8J` a\x02 \x83\x01Q\x01R\x7F\x01&\x17g,\x1D8U\x7F8_\x9F\xF0\xD9\xFC\xE10\xE8\xC8\xCF\xDE'\xF6[\x90\x8D\xB4\xFD0\xD3\rra\x02@\x82\x01QR\x7F\x0E\xE4\x84\x05a\xAA\x90\xB4\xF4\x02W\xD5\x1Cq\xED\x03\xE0\xA3\x90i zY'g|\xD1Fh\xD5tw` a\x02@\x83\x01Q\x01R\x7F\x13Yg\x92\xA5\xEFm\xF4\xCD\xBBF\xEF\xFA\xA4_\x91\xD3\xCC\x04\x01\xA6E\x83\xCD\xD7Ky#\x10\xE3\xFD\xBDa\x02`\x82\x01QR\x7F\x19.,a\xCB\xB5\xB70\xEF\x86\xA9Pc<Yr\xC4\xF9V\xA0S\xC7%rI\x8A\x1E\x12\x12Hp9` 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[a\x10\x9Da\x1D\x15V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10\xE3\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15-V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11EWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11QWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11h\x83`\x05a4\xE1V[a\x11r\x91\x90a5\x14V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xA7WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xB3WP_\x91\x90PV[`\nTa\x11\xC9\x90`\x01`\x01`@\x1B\x03\x16\x83a5\x14V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12\x16WP`\nTa\x11\xF1\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5AV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x12\x0B\x91\x16\x84a5\x14V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_Q` a:\xA3_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12RWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12pW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x90\x81\x17\x83U`\nTa\x12\xAA\x92\x91\x81\x04\x82\x16\x91\x16a\x15-V[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPV[a\x13\x13a\x1D\x15V[a\x13\x1C\x81a\x15\x9CV[PV[a\x13'a\x1DpV[a\x130\x82a\x1E\x14V[a\x13:\x82\x82a\x1EUV[PPV[_a\x13Ga\x1F\x16V[P_Q` a:\x83_9_Q\x90_R\x90V[a\x13aa\x1D\x15V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xACW`\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\x13\xCFa\x1D\x15V[a\x13\xC5_a\x1F_V[`\x06T`\nT_\x91a\x13\xFD\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15-V[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14\x16`\x01\x83a5`V[\x81T\x81\x10a\x14&Wa\x14&a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14eW`@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\x15&W\x84`\t\x82\x81T\x81\x10a\x14\x95Wa\x14\x95a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15\x1EW`\t\x81\x81T\x81\x10a\x14\xCEWa\x14\xCEa5sV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x14\xF1Wa\x14\xF1a5sV[\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\x14yV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15EWP_a\x12\x16V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15]WP`\x01a\x12\x16V[a\x15g\x82\x84a5\x14V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x87Wa\x15\x80\x82\x84a5\x87V[\x90Pa\x12\x16V[a\x15\x91\x82\x84a5\x87V[a\x15\x80\x90`\x01a4\xE1V[a\x15\xA4a\x1D\x15V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x15\xC3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x15\xE1WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x15\xFFW`@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[_Q` a:\xA3_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16VWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16qWP0;\x15[\x90P\x81\x15\x80\x15a\x16\x7FWP\x80\x15[\x15a\x16\x9DW`@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\x16\xC7W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x16\xD0\x86a\x1F\xCFV[a\x16\xD8a\x1F\xE0V[a\x16\xE3\x89\x89\x89a\x1F\xE8V[\x83\x15a\x17)W\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[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17YWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17wW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xB0WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x17\xCEW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xDB\x84`@\x01Qa!\x14V[a\x17\xE8\x83` \x01Qa!\x14V[a\x17\xF5\x83`@\x01Qa!\x14V[a\x18\x02\x83``\x01Qa!\x14V[_a\x18\x0Ba\x13\xD8V[` \x86\x01Q`\nT\x91\x92P_\x91a\x18+\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15-V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18oWa\x18Q\x86` \x01Qa\x11\x87V[\x15a\x18oW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19\x1BW`\x02a\x18\x92\x83\x83a5AV[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xB9W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xC4\x82`\x01a4\xE1V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x18\xFDWP`\x06Ta\x18\xFB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11%V[\x15[\x15a\x19\x1BW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19'\x86\x86\x86\x86a!\x84V[\x85Q`\x06\x80T` \x89\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\x84WPa\x19\x84\x86` \x01Qa\x11%V[\x15a\x19\xEEW\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x19\xD2\x82`\x01a4\xE1V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x19\xF9CB\x88a#\xAEV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1AI\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[_Q` a:\xA3_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\x8FWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xADW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x1A\xF5W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1B>\x83\x85a\x15-V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[\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`@\x81\x01Q`\x07Ua\x13\x1CCB\x83a#\xAEV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C\x13Wa\x1C\x0E\x83\x83a%\x97V[a\x1C$V[\x81`\x11T\x84a\x1C\"\x91\x90a5`V[\x11[\x93\x92PPPV[a\x1C3a\x1D\x15V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1CaW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13\x1C\x81a\x1F_V[a\x1Cu`\t_a+[V[_[\x81Q\x81\x10\x15a\x13:W`\t\x82\x82\x81Q\x81\x10a\x1C\x94Wa\x1C\x94a5sV[` \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\x1CwV[3a\x1DG\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\x13\xC5W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1CXV[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\x1D\xF6WP\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\x1D\xEA_Q` a:\x83_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xC5W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1E\x1Ca\x1D\x15V[`@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\n\x12V[\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\x1E\xAFWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xAC\x91\x81\x01\x90a5\xB4V[`\x01[a\x1E\xD7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1CXV[_Q` a:\x83_9_Q\x90_R\x81\x14a\x1F\x07W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1CXV[a\x1F\x11\x83\x83a&\xEFV[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\x13\xC5W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x1F\xD7a'DV[a\x13\x1C\x81a'zV[a\x13\xC5a'DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a \x0CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a \x19WP` \x82\x01Q\x15[\x80a &WP`@\x82\x01Q\x15[\x80a 3WP``\x82\x01Q\x15[\x80a =WP\x81Q\x15[\x80a OWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a cWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \x81W`@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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13:W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x1CXV[_a!\x8Da\nfV[\x90Pa!\x97a+yV[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\xEFWPa!\xEF\x87` \x01Qa\x11%V[\x15a\"8W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"sV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xC4\x91\x84\x90\x89\x90` \x01a5\xE2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa#\x08\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6\x04V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a#H\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a7\xF9V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#cW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#\x87\x91\x90a:\x19V[a#\xA4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a$#WP`\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#\xEEWa#\xEEa5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta$\x18\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$\xB6W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a$PWa$Pa5sV[_\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$\x90\x83a:8V[\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[`\tT_\x90C\x84\x11\x80a%\xA8WP\x80\x15[\x80a%\xF2WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\xD6Wa%\xD6a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a&\x10W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a&\x1E`\x01\x85a5`V[\x90P[\x81a&\xBAW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&\xBAW\x86`\t\x82\x81T\x81\x10a&SWa&Sa5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&\xA8W`\x01\x91P`\t\x81\x81T\x81\x10a&\x88Wa&\x88a5sV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&\xBAV[\x80a&\xB2\x81a:bV[\x91PPa&!V[\x81a&\xD8W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\xE3\x84\x89a5`V[\x11\x97\x96PPPPPPPV[a&\xF8\x82a'\x82V[`@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'<Wa\x1F\x11\x82\x82a'\xE5V[a\x13:a(WV[_Q` a:\xA3_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xC5W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C3a'DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xB7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1CXV[_Q` a:\x83_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(\x01\x91\x90a:wV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(9W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(>V[``\x91P[P\x91P\x91Pa(N\x85\x83\x83a(vV[\x95\x94PPPPPV[4\x15a\x13\xC5W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\x86Wa\x1C\x0E\x82a(\xCDV[\x81Q\x15\x80\x15a(\x9DWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xC6W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1CXV[P\x92\x91PPV[\x80Q\x15a(\xDDW\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))`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*)`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*I`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*i`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x89`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE9`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\t`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+)`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+I`@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\x13\x1C\x91\x90a+\x97V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xBCW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\x98V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a+\xE6W__\xFD[a\x1C$\x82a+\xC0V[_` \x82\x84\x03\x12\x15a+\xFFW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,8`@\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[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a.-W__\xFD[a\x1C$\x82a.\x07V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.mWa.ma.6V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.mWa.ma.6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xBDWa.\xBDa.6V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xD5W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xF7Wa.\xF7a.6V[`@R\x90P\x80a/\x06\x83a.\x07V[\x81Ra/\x14` \x84\x01a.\x07V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/:W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\\Wa/\\a.6V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\x87W__\xFD[a/\x8Fa.JV[\x90Pa/\x9B\x83\x83a/*V[\x81Ra/\xAA\x83`@\x84\x01a/*V[` \x82\x01Ra/\xBC\x83`\x80\x84\x01a/*V[`@\x82\x01Ra/\xCE\x83`\xC0\x84\x01a/*V[``\x82\x01Ra/\xE1\x83a\x01\0\x84\x01a/*V[`\x80\x82\x01Ra/\xF4\x83a\x01@\x84\x01a/*V[`\xA0\x82\x01Ra0\x07\x83a\x01\x80\x84\x01a/*V[`\xC0\x82\x01Ra0\x1A\x83a\x01\xC0\x84\x01a/*V[`\xE0\x82\x01Ra0-\x83a\x02\0\x84\x01a/*V[a\x01\0\x82\x01Ra0A\x83a\x02@\x84\x01a/*V[a\x01 \x82\x01Ra0U\x83a\x02\x80\x84\x01a/*V[a\x01@\x82\x01Ra0i\x83a\x02\xC0\x84\x01a/*V[a\x01`\x82\x01Ra0}\x83a\x03\0\x84\x01a/*V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a1\x13W__\xFD[a1\x1D\x84\x84a.\xC5V[\x91Pa1,\x84``\x85\x01a/vV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x82W__\xFD[_` \x82\x84\x03\x12\x15a1XW__\xFD[a\x1C$\x82a15V[__`@\x83\x85\x03\x12\x15a1rW__\xFD[a1{\x83a+\xC0V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x95W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xA5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xBEWa1\xBEa.6V[a1\xD1`\x1F\x82\x01`\x1F\x19\x16` \x01a.\x95V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xE5W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a2\x14W__\xFD[a2\x1Ca.sV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a2WW__\xFD[a\x1C$\x83\x83a2\x04V[___a\x05`\x84\x86\x03\x12\x15a2tW__\xFD[a2~\x85\x85a.\xC5V[\x92Pa2\x8D\x85``\x86\x01a2\x04V[\x91Pa2\x9C\x85`\xE0\x86\x01a/vV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xB6W__\xFD[a2\xBF\x83a.\x07V[\x91Pa1,` \x84\x01a.\x07V[____a\x01 \x85\x87\x03\x12\x15a2\xE1W__\xFD[a2\xEB\x86\x86a.\xC5V[\x93Pa2\xFA\x86``\x87\x01a2\x04V[\x92Pa3\x08`\xE0\x86\x01a15V[\x91Pa3\x17a\x01\0\x86\x01a+\xC0V[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a36W__\xFD[a3@\x86\x86a.\xC5V[\x93Pa3O\x86``\x87\x01a2\x04V[\x92P`\xE0\x85\x015\x91Pa3\x17\x86a\x01\0\x87\x01a/vV[` \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\x15a3\xABW__\xFD[a\x1C$\x83\x83a.\xC5V[__`@\x83\x85\x03\x12\x15a3\xC6W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xE5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a3\xFAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4\nW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4#Wa4#a.6V[a42` \x82`\x05\x1B\x01a.\x95V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4SW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xC3W`\x80\x84\x88\x03\x12\x15a4qW__\xFD[a4ya.sV[a4\x82\x85a.\x07V[\x81Ra4\x90` \x86\x01a.\x07V[` \x82\x01Ra4\xA1`@\x86\x01a.\x07V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4ZV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5,Wa5,a5\0V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[\x81\x81\x03\x81\x81\x11\x15a\x12\x16Wa\x12\x16a4\xCDV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\x9FWa5\x9Fa5\0V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xC4W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a5\xF6a5\xF0\x83\x87a5\xCBV[\x85a5\xCBV[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6\x12Wa6\x12a5\0V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a69W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a6\x1AV[PPPPV[a6T\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\x01Qa8+`@\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:\x03a\x05\0\x83\x01\x85a6\x17V[a:\x11a\x05\xA0\x83\x01\x84a6?V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:)W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C$W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:YWa:Ya4\xCDV[`\x01\x01\x92\x91PPV[_\x81a:pWa:pa4\xCDV[P_\x19\x01\x90V[_a\x1C$\x82\x84a5\xCBV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5708    );
5709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5710    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5711```solidity
5712error AddressEmptyCode(address target);
5713```*/
5714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5715    #[derive(Clone)]
5716    pub struct AddressEmptyCode {
5717        #[allow(missing_docs)]
5718        pub target: alloy::sol_types::private::Address,
5719    }
5720    #[allow(
5721        non_camel_case_types,
5722        non_snake_case,
5723        clippy::pub_underscore_fields,
5724        clippy::style
5725    )]
5726    const _: () = {
5727        use alloy::sol_types as alloy_sol_types;
5728        #[doc(hidden)]
5729        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5730        #[doc(hidden)]
5731        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5732        #[cfg(test)]
5733        #[allow(dead_code, unreachable_patterns)]
5734        fn _type_assertion(
5735            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5736        ) {
5737            match _t {
5738                alloy_sol_types::private::AssertTypeEq::<
5739                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5740                >(_) => {}
5741            }
5742        }
5743        #[automatically_derived]
5744        #[doc(hidden)]
5745        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5746            fn from(value: AddressEmptyCode) -> Self {
5747                (value.target,)
5748            }
5749        }
5750        #[automatically_derived]
5751        #[doc(hidden)]
5752        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5753            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5754                Self { target: tuple.0 }
5755            }
5756        }
5757        #[automatically_derived]
5758        impl alloy_sol_types::SolError for AddressEmptyCode {
5759            type Parameters<'a> = UnderlyingSolTuple<'a>;
5760            type Token<'a> = <Self::Parameters<
5761                'a,
5762            > as alloy_sol_types::SolType>::Token<'a>;
5763            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5764            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5765            #[inline]
5766            fn new<'a>(
5767                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5768            ) -> Self {
5769                tuple.into()
5770            }
5771            #[inline]
5772            fn tokenize(&self) -> Self::Token<'_> {
5773                (
5774                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5775                        &self.target,
5776                    ),
5777                )
5778            }
5779        }
5780    };
5781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5782    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5783```solidity
5784error DeprecatedApi();
5785```*/
5786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5787    #[derive(Clone)]
5788    pub struct DeprecatedApi {}
5789    #[allow(
5790        non_camel_case_types,
5791        non_snake_case,
5792        clippy::pub_underscore_fields,
5793        clippy::style
5794    )]
5795    const _: () = {
5796        use alloy::sol_types as alloy_sol_types;
5797        #[doc(hidden)]
5798        type UnderlyingSolTuple<'a> = ();
5799        #[doc(hidden)]
5800        type UnderlyingRustTuple<'a> = ();
5801        #[cfg(test)]
5802        #[allow(dead_code, unreachable_patterns)]
5803        fn _type_assertion(
5804            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5805        ) {
5806            match _t {
5807                alloy_sol_types::private::AssertTypeEq::<
5808                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5809                >(_) => {}
5810            }
5811        }
5812        #[automatically_derived]
5813        #[doc(hidden)]
5814        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5815            fn from(value: DeprecatedApi) -> Self {
5816                ()
5817            }
5818        }
5819        #[automatically_derived]
5820        #[doc(hidden)]
5821        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5822            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5823                Self {}
5824            }
5825        }
5826        #[automatically_derived]
5827        impl alloy_sol_types::SolError for DeprecatedApi {
5828            type Parameters<'a> = UnderlyingSolTuple<'a>;
5829            type Token<'a> = <Self::Parameters<
5830                'a,
5831            > as alloy_sol_types::SolType>::Token<'a>;
5832            const SIGNATURE: &'static str = "DeprecatedApi()";
5833            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5834            #[inline]
5835            fn new<'a>(
5836                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5837            ) -> Self {
5838                tuple.into()
5839            }
5840            #[inline]
5841            fn tokenize(&self) -> Self::Token<'_> {
5842                ()
5843            }
5844        }
5845    };
5846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5847    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5848```solidity
5849error ERC1967InvalidImplementation(address implementation);
5850```*/
5851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5852    #[derive(Clone)]
5853    pub struct ERC1967InvalidImplementation {
5854        #[allow(missing_docs)]
5855        pub implementation: alloy::sol_types::private::Address,
5856    }
5857    #[allow(
5858        non_camel_case_types,
5859        non_snake_case,
5860        clippy::pub_underscore_fields,
5861        clippy::style
5862    )]
5863    const _: () = {
5864        use alloy::sol_types as alloy_sol_types;
5865        #[doc(hidden)]
5866        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5867        #[doc(hidden)]
5868        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5869        #[cfg(test)]
5870        #[allow(dead_code, unreachable_patterns)]
5871        fn _type_assertion(
5872            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5873        ) {
5874            match _t {
5875                alloy_sol_types::private::AssertTypeEq::<
5876                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5877                >(_) => {}
5878            }
5879        }
5880        #[automatically_derived]
5881        #[doc(hidden)]
5882        impl ::core::convert::From<ERC1967InvalidImplementation>
5883        for UnderlyingRustTuple<'_> {
5884            fn from(value: ERC1967InvalidImplementation) -> Self {
5885                (value.implementation,)
5886            }
5887        }
5888        #[automatically_derived]
5889        #[doc(hidden)]
5890        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5891        for ERC1967InvalidImplementation {
5892            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5893                Self { implementation: tuple.0 }
5894            }
5895        }
5896        #[automatically_derived]
5897        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5898            type Parameters<'a> = UnderlyingSolTuple<'a>;
5899            type Token<'a> = <Self::Parameters<
5900                'a,
5901            > as alloy_sol_types::SolType>::Token<'a>;
5902            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5903            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5904            #[inline]
5905            fn new<'a>(
5906                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5907            ) -> Self {
5908                tuple.into()
5909            }
5910            #[inline]
5911            fn tokenize(&self) -> Self::Token<'_> {
5912                (
5913                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5914                        &self.implementation,
5915                    ),
5916                )
5917            }
5918        }
5919    };
5920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5921    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5922```solidity
5923error ERC1967NonPayable();
5924```*/
5925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5926    #[derive(Clone)]
5927    pub struct ERC1967NonPayable {}
5928    #[allow(
5929        non_camel_case_types,
5930        non_snake_case,
5931        clippy::pub_underscore_fields,
5932        clippy::style
5933    )]
5934    const _: () = {
5935        use alloy::sol_types as alloy_sol_types;
5936        #[doc(hidden)]
5937        type UnderlyingSolTuple<'a> = ();
5938        #[doc(hidden)]
5939        type UnderlyingRustTuple<'a> = ();
5940        #[cfg(test)]
5941        #[allow(dead_code, unreachable_patterns)]
5942        fn _type_assertion(
5943            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5944        ) {
5945            match _t {
5946                alloy_sol_types::private::AssertTypeEq::<
5947                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5948                >(_) => {}
5949            }
5950        }
5951        #[automatically_derived]
5952        #[doc(hidden)]
5953        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5954            fn from(value: ERC1967NonPayable) -> Self {
5955                ()
5956            }
5957        }
5958        #[automatically_derived]
5959        #[doc(hidden)]
5960        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5961            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5962                Self {}
5963            }
5964        }
5965        #[automatically_derived]
5966        impl alloy_sol_types::SolError for ERC1967NonPayable {
5967            type Parameters<'a> = UnderlyingSolTuple<'a>;
5968            type Token<'a> = <Self::Parameters<
5969                'a,
5970            > as alloy_sol_types::SolType>::Token<'a>;
5971            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5972            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5973            #[inline]
5974            fn new<'a>(
5975                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5976            ) -> Self {
5977                tuple.into()
5978            }
5979            #[inline]
5980            fn tokenize(&self) -> Self::Token<'_> {
5981                ()
5982            }
5983        }
5984    };
5985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5986    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5987```solidity
5988error FailedInnerCall();
5989```*/
5990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5991    #[derive(Clone)]
5992    pub struct FailedInnerCall {}
5993    #[allow(
5994        non_camel_case_types,
5995        non_snake_case,
5996        clippy::pub_underscore_fields,
5997        clippy::style
5998    )]
5999    const _: () = {
6000        use alloy::sol_types as alloy_sol_types;
6001        #[doc(hidden)]
6002        type UnderlyingSolTuple<'a> = ();
6003        #[doc(hidden)]
6004        type UnderlyingRustTuple<'a> = ();
6005        #[cfg(test)]
6006        #[allow(dead_code, unreachable_patterns)]
6007        fn _type_assertion(
6008            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6009        ) {
6010            match _t {
6011                alloy_sol_types::private::AssertTypeEq::<
6012                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6013                >(_) => {}
6014            }
6015        }
6016        #[automatically_derived]
6017        #[doc(hidden)]
6018        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6019            fn from(value: FailedInnerCall) -> Self {
6020                ()
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6026            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6027                Self {}
6028            }
6029        }
6030        #[automatically_derived]
6031        impl alloy_sol_types::SolError for FailedInnerCall {
6032            type Parameters<'a> = UnderlyingSolTuple<'a>;
6033            type Token<'a> = <Self::Parameters<
6034                'a,
6035            > as alloy_sol_types::SolType>::Token<'a>;
6036            const SIGNATURE: &'static str = "FailedInnerCall()";
6037            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6038            #[inline]
6039            fn new<'a>(
6040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6041            ) -> Self {
6042                tuple.into()
6043            }
6044            #[inline]
6045            fn tokenize(&self) -> Self::Token<'_> {
6046                ()
6047            }
6048        }
6049    };
6050    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6051    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
6052```solidity
6053error InsufficientSnapshotHistory();
6054```*/
6055    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6056    #[derive(Clone)]
6057    pub struct InsufficientSnapshotHistory {}
6058    #[allow(
6059        non_camel_case_types,
6060        non_snake_case,
6061        clippy::pub_underscore_fields,
6062        clippy::style
6063    )]
6064    const _: () = {
6065        use alloy::sol_types as alloy_sol_types;
6066        #[doc(hidden)]
6067        type UnderlyingSolTuple<'a> = ();
6068        #[doc(hidden)]
6069        type UnderlyingRustTuple<'a> = ();
6070        #[cfg(test)]
6071        #[allow(dead_code, unreachable_patterns)]
6072        fn _type_assertion(
6073            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6074        ) {
6075            match _t {
6076                alloy_sol_types::private::AssertTypeEq::<
6077                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6078                >(_) => {}
6079            }
6080        }
6081        #[automatically_derived]
6082        #[doc(hidden)]
6083        impl ::core::convert::From<InsufficientSnapshotHistory>
6084        for UnderlyingRustTuple<'_> {
6085            fn from(value: InsufficientSnapshotHistory) -> Self {
6086                ()
6087            }
6088        }
6089        #[automatically_derived]
6090        #[doc(hidden)]
6091        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6092        for InsufficientSnapshotHistory {
6093            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6094                Self {}
6095            }
6096        }
6097        #[automatically_derived]
6098        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
6099            type Parameters<'a> = UnderlyingSolTuple<'a>;
6100            type Token<'a> = <Self::Parameters<
6101                'a,
6102            > as alloy_sol_types::SolType>::Token<'a>;
6103            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
6104            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
6105            #[inline]
6106            fn new<'a>(
6107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6108            ) -> Self {
6109                tuple.into()
6110            }
6111            #[inline]
6112            fn tokenize(&self) -> Self::Token<'_> {
6113                ()
6114            }
6115        }
6116    };
6117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6118    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
6119```solidity
6120error InvalidAddress();
6121```*/
6122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6123    #[derive(Clone)]
6124    pub struct InvalidAddress {}
6125    #[allow(
6126        non_camel_case_types,
6127        non_snake_case,
6128        clippy::pub_underscore_fields,
6129        clippy::style
6130    )]
6131    const _: () = {
6132        use alloy::sol_types as alloy_sol_types;
6133        #[doc(hidden)]
6134        type UnderlyingSolTuple<'a> = ();
6135        #[doc(hidden)]
6136        type UnderlyingRustTuple<'a> = ();
6137        #[cfg(test)]
6138        #[allow(dead_code, unreachable_patterns)]
6139        fn _type_assertion(
6140            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6141        ) {
6142            match _t {
6143                alloy_sol_types::private::AssertTypeEq::<
6144                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6145                >(_) => {}
6146            }
6147        }
6148        #[automatically_derived]
6149        #[doc(hidden)]
6150        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
6151            fn from(value: InvalidAddress) -> Self {
6152                ()
6153            }
6154        }
6155        #[automatically_derived]
6156        #[doc(hidden)]
6157        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
6158            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6159                Self {}
6160            }
6161        }
6162        #[automatically_derived]
6163        impl alloy_sol_types::SolError for InvalidAddress {
6164            type Parameters<'a> = UnderlyingSolTuple<'a>;
6165            type Token<'a> = <Self::Parameters<
6166                'a,
6167            > as alloy_sol_types::SolType>::Token<'a>;
6168            const SIGNATURE: &'static str = "InvalidAddress()";
6169            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
6170            #[inline]
6171            fn new<'a>(
6172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6173            ) -> Self {
6174                tuple.into()
6175            }
6176            #[inline]
6177            fn tokenize(&self) -> Self::Token<'_> {
6178                ()
6179            }
6180        }
6181    };
6182    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6183    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
6184```solidity
6185error InvalidArgs();
6186```*/
6187    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6188    #[derive(Clone)]
6189    pub struct InvalidArgs {}
6190    #[allow(
6191        non_camel_case_types,
6192        non_snake_case,
6193        clippy::pub_underscore_fields,
6194        clippy::style
6195    )]
6196    const _: () = {
6197        use alloy::sol_types as alloy_sol_types;
6198        #[doc(hidden)]
6199        type UnderlyingSolTuple<'a> = ();
6200        #[doc(hidden)]
6201        type UnderlyingRustTuple<'a> = ();
6202        #[cfg(test)]
6203        #[allow(dead_code, unreachable_patterns)]
6204        fn _type_assertion(
6205            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6206        ) {
6207            match _t {
6208                alloy_sol_types::private::AssertTypeEq::<
6209                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6210                >(_) => {}
6211            }
6212        }
6213        #[automatically_derived]
6214        #[doc(hidden)]
6215        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
6216            fn from(value: InvalidArgs) -> Self {
6217                ()
6218            }
6219        }
6220        #[automatically_derived]
6221        #[doc(hidden)]
6222        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
6223            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6224                Self {}
6225            }
6226        }
6227        #[automatically_derived]
6228        impl alloy_sol_types::SolError for InvalidArgs {
6229            type Parameters<'a> = UnderlyingSolTuple<'a>;
6230            type Token<'a> = <Self::Parameters<
6231                'a,
6232            > as alloy_sol_types::SolType>::Token<'a>;
6233            const SIGNATURE: &'static str = "InvalidArgs()";
6234            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
6235            #[inline]
6236            fn new<'a>(
6237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6238            ) -> Self {
6239                tuple.into()
6240            }
6241            #[inline]
6242            fn tokenize(&self) -> Self::Token<'_> {
6243                ()
6244            }
6245        }
6246    };
6247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6248    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
6249```solidity
6250error InvalidHotShotBlockForCommitmentCheck();
6251```*/
6252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6253    #[derive(Clone)]
6254    pub struct InvalidHotShotBlockForCommitmentCheck {}
6255    #[allow(
6256        non_camel_case_types,
6257        non_snake_case,
6258        clippy::pub_underscore_fields,
6259        clippy::style
6260    )]
6261    const _: () = {
6262        use alloy::sol_types as alloy_sol_types;
6263        #[doc(hidden)]
6264        type UnderlyingSolTuple<'a> = ();
6265        #[doc(hidden)]
6266        type UnderlyingRustTuple<'a> = ();
6267        #[cfg(test)]
6268        #[allow(dead_code, unreachable_patterns)]
6269        fn _type_assertion(
6270            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6271        ) {
6272            match _t {
6273                alloy_sol_types::private::AssertTypeEq::<
6274                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6275                >(_) => {}
6276            }
6277        }
6278        #[automatically_derived]
6279        #[doc(hidden)]
6280        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6281        for UnderlyingRustTuple<'_> {
6282            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6283                ()
6284            }
6285        }
6286        #[automatically_derived]
6287        #[doc(hidden)]
6288        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6289        for InvalidHotShotBlockForCommitmentCheck {
6290            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6291                Self {}
6292            }
6293        }
6294        #[automatically_derived]
6295        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6296            type Parameters<'a> = UnderlyingSolTuple<'a>;
6297            type Token<'a> = <Self::Parameters<
6298                'a,
6299            > as alloy_sol_types::SolType>::Token<'a>;
6300            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6301            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6302            #[inline]
6303            fn new<'a>(
6304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6305            ) -> Self {
6306                tuple.into()
6307            }
6308            #[inline]
6309            fn tokenize(&self) -> Self::Token<'_> {
6310                ()
6311            }
6312        }
6313    };
6314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6315    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6316```solidity
6317error InvalidInitialization();
6318```*/
6319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6320    #[derive(Clone)]
6321    pub struct InvalidInitialization {}
6322    #[allow(
6323        non_camel_case_types,
6324        non_snake_case,
6325        clippy::pub_underscore_fields,
6326        clippy::style
6327    )]
6328    const _: () = {
6329        use alloy::sol_types as alloy_sol_types;
6330        #[doc(hidden)]
6331        type UnderlyingSolTuple<'a> = ();
6332        #[doc(hidden)]
6333        type UnderlyingRustTuple<'a> = ();
6334        #[cfg(test)]
6335        #[allow(dead_code, unreachable_patterns)]
6336        fn _type_assertion(
6337            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6338        ) {
6339            match _t {
6340                alloy_sol_types::private::AssertTypeEq::<
6341                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6342                >(_) => {}
6343            }
6344        }
6345        #[automatically_derived]
6346        #[doc(hidden)]
6347        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6348            fn from(value: InvalidInitialization) -> Self {
6349                ()
6350            }
6351        }
6352        #[automatically_derived]
6353        #[doc(hidden)]
6354        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6355            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6356                Self {}
6357            }
6358        }
6359        #[automatically_derived]
6360        impl alloy_sol_types::SolError for InvalidInitialization {
6361            type Parameters<'a> = UnderlyingSolTuple<'a>;
6362            type Token<'a> = <Self::Parameters<
6363                'a,
6364            > as alloy_sol_types::SolType>::Token<'a>;
6365            const SIGNATURE: &'static str = "InvalidInitialization()";
6366            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6367            #[inline]
6368            fn new<'a>(
6369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6370            ) -> Self {
6371                tuple.into()
6372            }
6373            #[inline]
6374            fn tokenize(&self) -> Self::Token<'_> {
6375                ()
6376            }
6377        }
6378    };
6379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6380    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6381```solidity
6382error InvalidMaxStateHistory();
6383```*/
6384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6385    #[derive(Clone)]
6386    pub struct InvalidMaxStateHistory {}
6387    #[allow(
6388        non_camel_case_types,
6389        non_snake_case,
6390        clippy::pub_underscore_fields,
6391        clippy::style
6392    )]
6393    const _: () = {
6394        use alloy::sol_types as alloy_sol_types;
6395        #[doc(hidden)]
6396        type UnderlyingSolTuple<'a> = ();
6397        #[doc(hidden)]
6398        type UnderlyingRustTuple<'a> = ();
6399        #[cfg(test)]
6400        #[allow(dead_code, unreachable_patterns)]
6401        fn _type_assertion(
6402            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6403        ) {
6404            match _t {
6405                alloy_sol_types::private::AssertTypeEq::<
6406                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6407                >(_) => {}
6408            }
6409        }
6410        #[automatically_derived]
6411        #[doc(hidden)]
6412        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6413            fn from(value: InvalidMaxStateHistory) -> Self {
6414                ()
6415            }
6416        }
6417        #[automatically_derived]
6418        #[doc(hidden)]
6419        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6421                Self {}
6422            }
6423        }
6424        #[automatically_derived]
6425        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6426            type Parameters<'a> = UnderlyingSolTuple<'a>;
6427            type Token<'a> = <Self::Parameters<
6428                'a,
6429            > as alloy_sol_types::SolType>::Token<'a>;
6430            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6431            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6432            #[inline]
6433            fn new<'a>(
6434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6435            ) -> Self {
6436                tuple.into()
6437            }
6438            #[inline]
6439            fn tokenize(&self) -> Self::Token<'_> {
6440                ()
6441            }
6442        }
6443    };
6444    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6445    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6446```solidity
6447error InvalidProof();
6448```*/
6449    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6450    #[derive(Clone)]
6451    pub struct InvalidProof {}
6452    #[allow(
6453        non_camel_case_types,
6454        non_snake_case,
6455        clippy::pub_underscore_fields,
6456        clippy::style
6457    )]
6458    const _: () = {
6459        use alloy::sol_types as alloy_sol_types;
6460        #[doc(hidden)]
6461        type UnderlyingSolTuple<'a> = ();
6462        #[doc(hidden)]
6463        type UnderlyingRustTuple<'a> = ();
6464        #[cfg(test)]
6465        #[allow(dead_code, unreachable_patterns)]
6466        fn _type_assertion(
6467            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6468        ) {
6469            match _t {
6470                alloy_sol_types::private::AssertTypeEq::<
6471                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6472                >(_) => {}
6473            }
6474        }
6475        #[automatically_derived]
6476        #[doc(hidden)]
6477        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6478            fn from(value: InvalidProof) -> Self {
6479                ()
6480            }
6481        }
6482        #[automatically_derived]
6483        #[doc(hidden)]
6484        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6485            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6486                Self {}
6487            }
6488        }
6489        #[automatically_derived]
6490        impl alloy_sol_types::SolError for InvalidProof {
6491            type Parameters<'a> = UnderlyingSolTuple<'a>;
6492            type Token<'a> = <Self::Parameters<
6493                'a,
6494            > as alloy_sol_types::SolType>::Token<'a>;
6495            const SIGNATURE: &'static str = "InvalidProof()";
6496            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6497            #[inline]
6498            fn new<'a>(
6499                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6500            ) -> Self {
6501                tuple.into()
6502            }
6503            #[inline]
6504            fn tokenize(&self) -> Self::Token<'_> {
6505                ()
6506            }
6507        }
6508    };
6509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6510    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6511```solidity
6512error MissingEpochRootUpdate();
6513```*/
6514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6515    #[derive(Clone)]
6516    pub struct MissingEpochRootUpdate {}
6517    #[allow(
6518        non_camel_case_types,
6519        non_snake_case,
6520        clippy::pub_underscore_fields,
6521        clippy::style
6522    )]
6523    const _: () = {
6524        use alloy::sol_types as alloy_sol_types;
6525        #[doc(hidden)]
6526        type UnderlyingSolTuple<'a> = ();
6527        #[doc(hidden)]
6528        type UnderlyingRustTuple<'a> = ();
6529        #[cfg(test)]
6530        #[allow(dead_code, unreachable_patterns)]
6531        fn _type_assertion(
6532            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6533        ) {
6534            match _t {
6535                alloy_sol_types::private::AssertTypeEq::<
6536                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6537                >(_) => {}
6538            }
6539        }
6540        #[automatically_derived]
6541        #[doc(hidden)]
6542        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6543            fn from(value: MissingEpochRootUpdate) -> Self {
6544                ()
6545            }
6546        }
6547        #[automatically_derived]
6548        #[doc(hidden)]
6549        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6550            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6551                Self {}
6552            }
6553        }
6554        #[automatically_derived]
6555        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6556            type Parameters<'a> = UnderlyingSolTuple<'a>;
6557            type Token<'a> = <Self::Parameters<
6558                'a,
6559            > as alloy_sol_types::SolType>::Token<'a>;
6560            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6561            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6562            #[inline]
6563            fn new<'a>(
6564                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6565            ) -> Self {
6566                tuple.into()
6567            }
6568            #[inline]
6569            fn tokenize(&self) -> Self::Token<'_> {
6570                ()
6571            }
6572        }
6573    };
6574    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6575    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6576```solidity
6577error NoChangeRequired();
6578```*/
6579    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6580    #[derive(Clone)]
6581    pub struct NoChangeRequired {}
6582    #[allow(
6583        non_camel_case_types,
6584        non_snake_case,
6585        clippy::pub_underscore_fields,
6586        clippy::style
6587    )]
6588    const _: () = {
6589        use alloy::sol_types as alloy_sol_types;
6590        #[doc(hidden)]
6591        type UnderlyingSolTuple<'a> = ();
6592        #[doc(hidden)]
6593        type UnderlyingRustTuple<'a> = ();
6594        #[cfg(test)]
6595        #[allow(dead_code, unreachable_patterns)]
6596        fn _type_assertion(
6597            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6598        ) {
6599            match _t {
6600                alloy_sol_types::private::AssertTypeEq::<
6601                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6602                >(_) => {}
6603            }
6604        }
6605        #[automatically_derived]
6606        #[doc(hidden)]
6607        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6608            fn from(value: NoChangeRequired) -> Self {
6609                ()
6610            }
6611        }
6612        #[automatically_derived]
6613        #[doc(hidden)]
6614        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6615            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6616                Self {}
6617            }
6618        }
6619        #[automatically_derived]
6620        impl alloy_sol_types::SolError for NoChangeRequired {
6621            type Parameters<'a> = UnderlyingSolTuple<'a>;
6622            type Token<'a> = <Self::Parameters<
6623                'a,
6624            > as alloy_sol_types::SolType>::Token<'a>;
6625            const SIGNATURE: &'static str = "NoChangeRequired()";
6626            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6627            #[inline]
6628            fn new<'a>(
6629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6630            ) -> Self {
6631                tuple.into()
6632            }
6633            #[inline]
6634            fn tokenize(&self) -> Self::Token<'_> {
6635                ()
6636            }
6637        }
6638    };
6639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6640    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6641```solidity
6642error NotInitializing();
6643```*/
6644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6645    #[derive(Clone)]
6646    pub struct NotInitializing {}
6647    #[allow(
6648        non_camel_case_types,
6649        non_snake_case,
6650        clippy::pub_underscore_fields,
6651        clippy::style
6652    )]
6653    const _: () = {
6654        use alloy::sol_types as alloy_sol_types;
6655        #[doc(hidden)]
6656        type UnderlyingSolTuple<'a> = ();
6657        #[doc(hidden)]
6658        type UnderlyingRustTuple<'a> = ();
6659        #[cfg(test)]
6660        #[allow(dead_code, unreachable_patterns)]
6661        fn _type_assertion(
6662            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6663        ) {
6664            match _t {
6665                alloy_sol_types::private::AssertTypeEq::<
6666                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6667                >(_) => {}
6668            }
6669        }
6670        #[automatically_derived]
6671        #[doc(hidden)]
6672        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6673            fn from(value: NotInitializing) -> Self {
6674                ()
6675            }
6676        }
6677        #[automatically_derived]
6678        #[doc(hidden)]
6679        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6680            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6681                Self {}
6682            }
6683        }
6684        #[automatically_derived]
6685        impl alloy_sol_types::SolError for NotInitializing {
6686            type Parameters<'a> = UnderlyingSolTuple<'a>;
6687            type Token<'a> = <Self::Parameters<
6688                'a,
6689            > as alloy_sol_types::SolType>::Token<'a>;
6690            const SIGNATURE: &'static str = "NotInitializing()";
6691            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6692            #[inline]
6693            fn new<'a>(
6694                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6695            ) -> Self {
6696                tuple.into()
6697            }
6698            #[inline]
6699            fn tokenize(&self) -> Self::Token<'_> {
6700                ()
6701            }
6702        }
6703    };
6704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6705    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6706```solidity
6707error OutdatedState();
6708```*/
6709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6710    #[derive(Clone)]
6711    pub struct OutdatedState {}
6712    #[allow(
6713        non_camel_case_types,
6714        non_snake_case,
6715        clippy::pub_underscore_fields,
6716        clippy::style
6717    )]
6718    const _: () = {
6719        use alloy::sol_types as alloy_sol_types;
6720        #[doc(hidden)]
6721        type UnderlyingSolTuple<'a> = ();
6722        #[doc(hidden)]
6723        type UnderlyingRustTuple<'a> = ();
6724        #[cfg(test)]
6725        #[allow(dead_code, unreachable_patterns)]
6726        fn _type_assertion(
6727            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6728        ) {
6729            match _t {
6730                alloy_sol_types::private::AssertTypeEq::<
6731                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6732                >(_) => {}
6733            }
6734        }
6735        #[automatically_derived]
6736        #[doc(hidden)]
6737        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6738            fn from(value: OutdatedState) -> Self {
6739                ()
6740            }
6741        }
6742        #[automatically_derived]
6743        #[doc(hidden)]
6744        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6745            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6746                Self {}
6747            }
6748        }
6749        #[automatically_derived]
6750        impl alloy_sol_types::SolError for OutdatedState {
6751            type Parameters<'a> = UnderlyingSolTuple<'a>;
6752            type Token<'a> = <Self::Parameters<
6753                'a,
6754            > as alloy_sol_types::SolType>::Token<'a>;
6755            const SIGNATURE: &'static str = "OutdatedState()";
6756            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6757            #[inline]
6758            fn new<'a>(
6759                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6760            ) -> Self {
6761                tuple.into()
6762            }
6763            #[inline]
6764            fn tokenize(&self) -> Self::Token<'_> {
6765                ()
6766            }
6767        }
6768    };
6769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6770    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6771```solidity
6772error OwnableInvalidOwner(address owner);
6773```*/
6774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6775    #[derive(Clone)]
6776    pub struct OwnableInvalidOwner {
6777        #[allow(missing_docs)]
6778        pub owner: alloy::sol_types::private::Address,
6779    }
6780    #[allow(
6781        non_camel_case_types,
6782        non_snake_case,
6783        clippy::pub_underscore_fields,
6784        clippy::style
6785    )]
6786    const _: () = {
6787        use alloy::sol_types as alloy_sol_types;
6788        #[doc(hidden)]
6789        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6790        #[doc(hidden)]
6791        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6792        #[cfg(test)]
6793        #[allow(dead_code, unreachable_patterns)]
6794        fn _type_assertion(
6795            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6796        ) {
6797            match _t {
6798                alloy_sol_types::private::AssertTypeEq::<
6799                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6800                >(_) => {}
6801            }
6802        }
6803        #[automatically_derived]
6804        #[doc(hidden)]
6805        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6806            fn from(value: OwnableInvalidOwner) -> Self {
6807                (value.owner,)
6808            }
6809        }
6810        #[automatically_derived]
6811        #[doc(hidden)]
6812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6814                Self { owner: tuple.0 }
6815            }
6816        }
6817        #[automatically_derived]
6818        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6819            type Parameters<'a> = UnderlyingSolTuple<'a>;
6820            type Token<'a> = <Self::Parameters<
6821                'a,
6822            > as alloy_sol_types::SolType>::Token<'a>;
6823            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6824            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6825            #[inline]
6826            fn new<'a>(
6827                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6828            ) -> Self {
6829                tuple.into()
6830            }
6831            #[inline]
6832            fn tokenize(&self) -> Self::Token<'_> {
6833                (
6834                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6835                        &self.owner,
6836                    ),
6837                )
6838            }
6839        }
6840    };
6841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6842    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6843```solidity
6844error OwnableUnauthorizedAccount(address account);
6845```*/
6846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6847    #[derive(Clone)]
6848    pub struct OwnableUnauthorizedAccount {
6849        #[allow(missing_docs)]
6850        pub account: alloy::sol_types::private::Address,
6851    }
6852    #[allow(
6853        non_camel_case_types,
6854        non_snake_case,
6855        clippy::pub_underscore_fields,
6856        clippy::style
6857    )]
6858    const _: () = {
6859        use alloy::sol_types as alloy_sol_types;
6860        #[doc(hidden)]
6861        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6862        #[doc(hidden)]
6863        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6864        #[cfg(test)]
6865        #[allow(dead_code, unreachable_patterns)]
6866        fn _type_assertion(
6867            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6868        ) {
6869            match _t {
6870                alloy_sol_types::private::AssertTypeEq::<
6871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6872                >(_) => {}
6873            }
6874        }
6875        #[automatically_derived]
6876        #[doc(hidden)]
6877        impl ::core::convert::From<OwnableUnauthorizedAccount>
6878        for UnderlyingRustTuple<'_> {
6879            fn from(value: OwnableUnauthorizedAccount) -> Self {
6880                (value.account,)
6881            }
6882        }
6883        #[automatically_derived]
6884        #[doc(hidden)]
6885        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6886        for OwnableUnauthorizedAccount {
6887            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6888                Self { account: tuple.0 }
6889            }
6890        }
6891        #[automatically_derived]
6892        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6893            type Parameters<'a> = UnderlyingSolTuple<'a>;
6894            type Token<'a> = <Self::Parameters<
6895                'a,
6896            > as alloy_sol_types::SolType>::Token<'a>;
6897            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6898            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6899            #[inline]
6900            fn new<'a>(
6901                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6902            ) -> Self {
6903                tuple.into()
6904            }
6905            #[inline]
6906            fn tokenize(&self) -> Self::Token<'_> {
6907                (
6908                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6909                        &self.account,
6910                    ),
6911                )
6912            }
6913        }
6914    };
6915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6916    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6917```solidity
6918error ProverNotPermissioned();
6919```*/
6920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6921    #[derive(Clone)]
6922    pub struct ProverNotPermissioned {}
6923    #[allow(
6924        non_camel_case_types,
6925        non_snake_case,
6926        clippy::pub_underscore_fields,
6927        clippy::style
6928    )]
6929    const _: () = {
6930        use alloy::sol_types as alloy_sol_types;
6931        #[doc(hidden)]
6932        type UnderlyingSolTuple<'a> = ();
6933        #[doc(hidden)]
6934        type UnderlyingRustTuple<'a> = ();
6935        #[cfg(test)]
6936        #[allow(dead_code, unreachable_patterns)]
6937        fn _type_assertion(
6938            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6939        ) {
6940            match _t {
6941                alloy_sol_types::private::AssertTypeEq::<
6942                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6943                >(_) => {}
6944            }
6945        }
6946        #[automatically_derived]
6947        #[doc(hidden)]
6948        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6949            fn from(value: ProverNotPermissioned) -> Self {
6950                ()
6951            }
6952        }
6953        #[automatically_derived]
6954        #[doc(hidden)]
6955        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6956            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6957                Self {}
6958            }
6959        }
6960        #[automatically_derived]
6961        impl alloy_sol_types::SolError for ProverNotPermissioned {
6962            type Parameters<'a> = UnderlyingSolTuple<'a>;
6963            type Token<'a> = <Self::Parameters<
6964                'a,
6965            > as alloy_sol_types::SolType>::Token<'a>;
6966            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6967            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6968            #[inline]
6969            fn new<'a>(
6970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6971            ) -> Self {
6972                tuple.into()
6973            }
6974            #[inline]
6975            fn tokenize(&self) -> Self::Token<'_> {
6976                ()
6977            }
6978        }
6979    };
6980    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6981    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6982```solidity
6983error UUPSUnauthorizedCallContext();
6984```*/
6985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6986    #[derive(Clone)]
6987    pub struct UUPSUnauthorizedCallContext {}
6988    #[allow(
6989        non_camel_case_types,
6990        non_snake_case,
6991        clippy::pub_underscore_fields,
6992        clippy::style
6993    )]
6994    const _: () = {
6995        use alloy::sol_types as alloy_sol_types;
6996        #[doc(hidden)]
6997        type UnderlyingSolTuple<'a> = ();
6998        #[doc(hidden)]
6999        type UnderlyingRustTuple<'a> = ();
7000        #[cfg(test)]
7001        #[allow(dead_code, unreachable_patterns)]
7002        fn _type_assertion(
7003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7004        ) {
7005            match _t {
7006                alloy_sol_types::private::AssertTypeEq::<
7007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7008                >(_) => {}
7009            }
7010        }
7011        #[automatically_derived]
7012        #[doc(hidden)]
7013        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7014        for UnderlyingRustTuple<'_> {
7015            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7016                ()
7017            }
7018        }
7019        #[automatically_derived]
7020        #[doc(hidden)]
7021        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7022        for UUPSUnauthorizedCallContext {
7023            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7024                Self {}
7025            }
7026        }
7027        #[automatically_derived]
7028        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7029            type Parameters<'a> = UnderlyingSolTuple<'a>;
7030            type Token<'a> = <Self::Parameters<
7031                'a,
7032            > as alloy_sol_types::SolType>::Token<'a>;
7033            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7034            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7035            #[inline]
7036            fn new<'a>(
7037                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7038            ) -> Self {
7039                tuple.into()
7040            }
7041            #[inline]
7042            fn tokenize(&self) -> Self::Token<'_> {
7043                ()
7044            }
7045        }
7046    };
7047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7048    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7049```solidity
7050error UUPSUnsupportedProxiableUUID(bytes32 slot);
7051```*/
7052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7053    #[derive(Clone)]
7054    pub struct UUPSUnsupportedProxiableUUID {
7055        #[allow(missing_docs)]
7056        pub slot: alloy::sol_types::private::FixedBytes<32>,
7057    }
7058    #[allow(
7059        non_camel_case_types,
7060        non_snake_case,
7061        clippy::pub_underscore_fields,
7062        clippy::style
7063    )]
7064    const _: () = {
7065        use alloy::sol_types as alloy_sol_types;
7066        #[doc(hidden)]
7067        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7068        #[doc(hidden)]
7069        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7070        #[cfg(test)]
7071        #[allow(dead_code, unreachable_patterns)]
7072        fn _type_assertion(
7073            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7074        ) {
7075            match _t {
7076                alloy_sol_types::private::AssertTypeEq::<
7077                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7078                >(_) => {}
7079            }
7080        }
7081        #[automatically_derived]
7082        #[doc(hidden)]
7083        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7084        for UnderlyingRustTuple<'_> {
7085            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7086                (value.slot,)
7087            }
7088        }
7089        #[automatically_derived]
7090        #[doc(hidden)]
7091        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7092        for UUPSUnsupportedProxiableUUID {
7093            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7094                Self { slot: tuple.0 }
7095            }
7096        }
7097        #[automatically_derived]
7098        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7099            type Parameters<'a> = UnderlyingSolTuple<'a>;
7100            type Token<'a> = <Self::Parameters<
7101                'a,
7102            > as alloy_sol_types::SolType>::Token<'a>;
7103            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7104            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7105            #[inline]
7106            fn new<'a>(
7107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7108            ) -> Self {
7109                tuple.into()
7110            }
7111            #[inline]
7112            fn tokenize(&self) -> Self::Token<'_> {
7113                (
7114                    <alloy::sol_types::sol_data::FixedBytes<
7115                        32,
7116                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7117                )
7118            }
7119        }
7120    };
7121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7122    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7123```solidity
7124error WrongStakeTableUsed();
7125```*/
7126    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7127    #[derive(Clone)]
7128    pub struct WrongStakeTableUsed {}
7129    #[allow(
7130        non_camel_case_types,
7131        non_snake_case,
7132        clippy::pub_underscore_fields,
7133        clippy::style
7134    )]
7135    const _: () = {
7136        use alloy::sol_types as alloy_sol_types;
7137        #[doc(hidden)]
7138        type UnderlyingSolTuple<'a> = ();
7139        #[doc(hidden)]
7140        type UnderlyingRustTuple<'a> = ();
7141        #[cfg(test)]
7142        #[allow(dead_code, unreachable_patterns)]
7143        fn _type_assertion(
7144            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7145        ) {
7146            match _t {
7147                alloy_sol_types::private::AssertTypeEq::<
7148                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7149                >(_) => {}
7150            }
7151        }
7152        #[automatically_derived]
7153        #[doc(hidden)]
7154        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7155            fn from(value: WrongStakeTableUsed) -> Self {
7156                ()
7157            }
7158        }
7159        #[automatically_derived]
7160        #[doc(hidden)]
7161        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7162            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7163                Self {}
7164            }
7165        }
7166        #[automatically_derived]
7167        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7168            type Parameters<'a> = UnderlyingSolTuple<'a>;
7169            type Token<'a> = <Self::Parameters<
7170                'a,
7171            > as alloy_sol_types::SolType>::Token<'a>;
7172            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7173            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7174            #[inline]
7175            fn new<'a>(
7176                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7177            ) -> Self {
7178                tuple.into()
7179            }
7180            #[inline]
7181            fn tokenize(&self) -> Self::Token<'_> {
7182                ()
7183            }
7184        }
7185    };
7186    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7187    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7188```solidity
7189event Initialized(uint64 version);
7190```*/
7191    #[allow(
7192        non_camel_case_types,
7193        non_snake_case,
7194        clippy::pub_underscore_fields,
7195        clippy::style
7196    )]
7197    #[derive(Clone)]
7198    pub struct Initialized {
7199        #[allow(missing_docs)]
7200        pub version: u64,
7201    }
7202    #[allow(
7203        non_camel_case_types,
7204        non_snake_case,
7205        clippy::pub_underscore_fields,
7206        clippy::style
7207    )]
7208    const _: () = {
7209        use alloy::sol_types as alloy_sol_types;
7210        #[automatically_derived]
7211        impl alloy_sol_types::SolEvent for Initialized {
7212            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7213            type DataToken<'a> = <Self::DataTuple<
7214                'a,
7215            > as alloy_sol_types::SolType>::Token<'a>;
7216            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7217            const SIGNATURE: &'static str = "Initialized(uint64)";
7218            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7219                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7220                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7221                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7222            ]);
7223            const ANONYMOUS: bool = false;
7224            #[allow(unused_variables)]
7225            #[inline]
7226            fn new(
7227                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7228                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7229            ) -> Self {
7230                Self { version: data.0 }
7231            }
7232            #[inline]
7233            fn check_signature(
7234                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7235            ) -> alloy_sol_types::Result<()> {
7236                if topics.0 != Self::SIGNATURE_HASH {
7237                    return Err(
7238                        alloy_sol_types::Error::invalid_event_signature_hash(
7239                            Self::SIGNATURE,
7240                            topics.0,
7241                            Self::SIGNATURE_HASH,
7242                        ),
7243                    );
7244                }
7245                Ok(())
7246            }
7247            #[inline]
7248            fn tokenize_body(&self) -> Self::DataToken<'_> {
7249                (
7250                    <alloy::sol_types::sol_data::Uint<
7251                        64,
7252                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7253                )
7254            }
7255            #[inline]
7256            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7257                (Self::SIGNATURE_HASH.into(),)
7258            }
7259            #[inline]
7260            fn encode_topics_raw(
7261                &self,
7262                out: &mut [alloy_sol_types::abi::token::WordToken],
7263            ) -> alloy_sol_types::Result<()> {
7264                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7265                    return Err(alloy_sol_types::Error::Overrun);
7266                }
7267                out[0usize] = alloy_sol_types::abi::token::WordToken(
7268                    Self::SIGNATURE_HASH,
7269                );
7270                Ok(())
7271            }
7272        }
7273        #[automatically_derived]
7274        impl alloy_sol_types::private::IntoLogData for Initialized {
7275            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7276                From::from(self)
7277            }
7278            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7279                From::from(&self)
7280            }
7281        }
7282        #[automatically_derived]
7283        impl From<&Initialized> for alloy_sol_types::private::LogData {
7284            #[inline]
7285            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7286                alloy_sol_types::SolEvent::encode_log_data(this)
7287            }
7288        }
7289    };
7290    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7291    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7292```solidity
7293event NewEpoch(uint64 epoch);
7294```*/
7295    #[allow(
7296        non_camel_case_types,
7297        non_snake_case,
7298        clippy::pub_underscore_fields,
7299        clippy::style
7300    )]
7301    #[derive(Clone)]
7302    pub struct NewEpoch {
7303        #[allow(missing_docs)]
7304        pub epoch: u64,
7305    }
7306    #[allow(
7307        non_camel_case_types,
7308        non_snake_case,
7309        clippy::pub_underscore_fields,
7310        clippy::style
7311    )]
7312    const _: () = {
7313        use alloy::sol_types as alloy_sol_types;
7314        #[automatically_derived]
7315        impl alloy_sol_types::SolEvent for NewEpoch {
7316            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7317            type DataToken<'a> = <Self::DataTuple<
7318                'a,
7319            > as alloy_sol_types::SolType>::Token<'a>;
7320            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7321            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7322            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7323                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7324                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7325                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7326            ]);
7327            const ANONYMOUS: bool = false;
7328            #[allow(unused_variables)]
7329            #[inline]
7330            fn new(
7331                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7332                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7333            ) -> Self {
7334                Self { epoch: data.0 }
7335            }
7336            #[inline]
7337            fn check_signature(
7338                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7339            ) -> alloy_sol_types::Result<()> {
7340                if topics.0 != Self::SIGNATURE_HASH {
7341                    return Err(
7342                        alloy_sol_types::Error::invalid_event_signature_hash(
7343                            Self::SIGNATURE,
7344                            topics.0,
7345                            Self::SIGNATURE_HASH,
7346                        ),
7347                    );
7348                }
7349                Ok(())
7350            }
7351            #[inline]
7352            fn tokenize_body(&self) -> Self::DataToken<'_> {
7353                (
7354                    <alloy::sol_types::sol_data::Uint<
7355                        64,
7356                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7357                )
7358            }
7359            #[inline]
7360            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7361                (Self::SIGNATURE_HASH.into(),)
7362            }
7363            #[inline]
7364            fn encode_topics_raw(
7365                &self,
7366                out: &mut [alloy_sol_types::abi::token::WordToken],
7367            ) -> alloy_sol_types::Result<()> {
7368                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7369                    return Err(alloy_sol_types::Error::Overrun);
7370                }
7371                out[0usize] = alloy_sol_types::abi::token::WordToken(
7372                    Self::SIGNATURE_HASH,
7373                );
7374                Ok(())
7375            }
7376        }
7377        #[automatically_derived]
7378        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7379            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7380                From::from(self)
7381            }
7382            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7383                From::from(&self)
7384            }
7385        }
7386        #[automatically_derived]
7387        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7388            #[inline]
7389            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7390                alloy_sol_types::SolEvent::encode_log_data(this)
7391            }
7392        }
7393    };
7394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7395    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7396```solidity
7397event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7398```*/
7399    #[allow(
7400        non_camel_case_types,
7401        non_snake_case,
7402        clippy::pub_underscore_fields,
7403        clippy::style
7404    )]
7405    #[derive(Clone)]
7406    pub struct NewState {
7407        #[allow(missing_docs)]
7408        pub viewNum: u64,
7409        #[allow(missing_docs)]
7410        pub blockHeight: u64,
7411        #[allow(missing_docs)]
7412        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7413    }
7414    #[allow(
7415        non_camel_case_types,
7416        non_snake_case,
7417        clippy::pub_underscore_fields,
7418        clippy::style
7419    )]
7420    const _: () = {
7421        use alloy::sol_types as alloy_sol_types;
7422        #[automatically_derived]
7423        impl alloy_sol_types::SolEvent for NewState {
7424            type DataTuple<'a> = (BN254::ScalarField,);
7425            type DataToken<'a> = <Self::DataTuple<
7426                'a,
7427            > as alloy_sol_types::SolType>::Token<'a>;
7428            type TopicList = (
7429                alloy_sol_types::sol_data::FixedBytes<32>,
7430                alloy::sol_types::sol_data::Uint<64>,
7431                alloy::sol_types::sol_data::Uint<64>,
7432            );
7433            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7434            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7435                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7436                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7437                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7438            ]);
7439            const ANONYMOUS: bool = false;
7440            #[allow(unused_variables)]
7441            #[inline]
7442            fn new(
7443                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7444                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7445            ) -> Self {
7446                Self {
7447                    viewNum: topics.1,
7448                    blockHeight: topics.2,
7449                    blockCommRoot: data.0,
7450                }
7451            }
7452            #[inline]
7453            fn check_signature(
7454                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7455            ) -> alloy_sol_types::Result<()> {
7456                if topics.0 != Self::SIGNATURE_HASH {
7457                    return Err(
7458                        alloy_sol_types::Error::invalid_event_signature_hash(
7459                            Self::SIGNATURE,
7460                            topics.0,
7461                            Self::SIGNATURE_HASH,
7462                        ),
7463                    );
7464                }
7465                Ok(())
7466            }
7467            #[inline]
7468            fn tokenize_body(&self) -> Self::DataToken<'_> {
7469                (
7470                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7471                        &self.blockCommRoot,
7472                    ),
7473                )
7474            }
7475            #[inline]
7476            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7477                (
7478                    Self::SIGNATURE_HASH.into(),
7479                    self.viewNum.clone(),
7480                    self.blockHeight.clone(),
7481                )
7482            }
7483            #[inline]
7484            fn encode_topics_raw(
7485                &self,
7486                out: &mut [alloy_sol_types::abi::token::WordToken],
7487            ) -> alloy_sol_types::Result<()> {
7488                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7489                    return Err(alloy_sol_types::Error::Overrun);
7490                }
7491                out[0usize] = alloy_sol_types::abi::token::WordToken(
7492                    Self::SIGNATURE_HASH,
7493                );
7494                out[1usize] = <alloy::sol_types::sol_data::Uint<
7495                    64,
7496                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7497                out[2usize] = <alloy::sol_types::sol_data::Uint<
7498                    64,
7499                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7500                Ok(())
7501            }
7502        }
7503        #[automatically_derived]
7504        impl alloy_sol_types::private::IntoLogData for NewState {
7505            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7506                From::from(self)
7507            }
7508            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7509                From::from(&self)
7510            }
7511        }
7512        #[automatically_derived]
7513        impl From<&NewState> for alloy_sol_types::private::LogData {
7514            #[inline]
7515            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7516                alloy_sol_types::SolEvent::encode_log_data(this)
7517            }
7518        }
7519    };
7520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7521    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7522```solidity
7523event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7524```*/
7525    #[allow(
7526        non_camel_case_types,
7527        non_snake_case,
7528        clippy::pub_underscore_fields,
7529        clippy::style
7530    )]
7531    #[derive(Clone)]
7532    pub struct OwnershipTransferred {
7533        #[allow(missing_docs)]
7534        pub previousOwner: alloy::sol_types::private::Address,
7535        #[allow(missing_docs)]
7536        pub newOwner: alloy::sol_types::private::Address,
7537    }
7538    #[allow(
7539        non_camel_case_types,
7540        non_snake_case,
7541        clippy::pub_underscore_fields,
7542        clippy::style
7543    )]
7544    const _: () = {
7545        use alloy::sol_types as alloy_sol_types;
7546        #[automatically_derived]
7547        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7548            type DataTuple<'a> = ();
7549            type DataToken<'a> = <Self::DataTuple<
7550                'a,
7551            > as alloy_sol_types::SolType>::Token<'a>;
7552            type TopicList = (
7553                alloy_sol_types::sol_data::FixedBytes<32>,
7554                alloy::sol_types::sol_data::Address,
7555                alloy::sol_types::sol_data::Address,
7556            );
7557            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7558            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7559                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7560                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7561                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7562            ]);
7563            const ANONYMOUS: bool = false;
7564            #[allow(unused_variables)]
7565            #[inline]
7566            fn new(
7567                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7568                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7569            ) -> Self {
7570                Self {
7571                    previousOwner: topics.1,
7572                    newOwner: topics.2,
7573                }
7574            }
7575            #[inline]
7576            fn check_signature(
7577                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7578            ) -> alloy_sol_types::Result<()> {
7579                if topics.0 != Self::SIGNATURE_HASH {
7580                    return Err(
7581                        alloy_sol_types::Error::invalid_event_signature_hash(
7582                            Self::SIGNATURE,
7583                            topics.0,
7584                            Self::SIGNATURE_HASH,
7585                        ),
7586                    );
7587                }
7588                Ok(())
7589            }
7590            #[inline]
7591            fn tokenize_body(&self) -> Self::DataToken<'_> {
7592                ()
7593            }
7594            #[inline]
7595            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7596                (
7597                    Self::SIGNATURE_HASH.into(),
7598                    self.previousOwner.clone(),
7599                    self.newOwner.clone(),
7600                )
7601            }
7602            #[inline]
7603            fn encode_topics_raw(
7604                &self,
7605                out: &mut [alloy_sol_types::abi::token::WordToken],
7606            ) -> alloy_sol_types::Result<()> {
7607                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7608                    return Err(alloy_sol_types::Error::Overrun);
7609                }
7610                out[0usize] = alloy_sol_types::abi::token::WordToken(
7611                    Self::SIGNATURE_HASH,
7612                );
7613                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7614                    &self.previousOwner,
7615                );
7616                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7617                    &self.newOwner,
7618                );
7619                Ok(())
7620            }
7621        }
7622        #[automatically_derived]
7623        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7624            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7625                From::from(self)
7626            }
7627            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7628                From::from(&self)
7629            }
7630        }
7631        #[automatically_derived]
7632        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7633            #[inline]
7634            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7635                alloy_sol_types::SolEvent::encode_log_data(this)
7636            }
7637        }
7638    };
7639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7640    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7641```solidity
7642event PermissionedProverNotRequired();
7643```*/
7644    #[allow(
7645        non_camel_case_types,
7646        non_snake_case,
7647        clippy::pub_underscore_fields,
7648        clippy::style
7649    )]
7650    #[derive(Clone)]
7651    pub struct PermissionedProverNotRequired {}
7652    #[allow(
7653        non_camel_case_types,
7654        non_snake_case,
7655        clippy::pub_underscore_fields,
7656        clippy::style
7657    )]
7658    const _: () = {
7659        use alloy::sol_types as alloy_sol_types;
7660        #[automatically_derived]
7661        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7662            type DataTuple<'a> = ();
7663            type DataToken<'a> = <Self::DataTuple<
7664                'a,
7665            > as alloy_sol_types::SolType>::Token<'a>;
7666            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7667            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7668            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7669                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7670                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7671                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7672            ]);
7673            const ANONYMOUS: bool = false;
7674            #[allow(unused_variables)]
7675            #[inline]
7676            fn new(
7677                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7678                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7679            ) -> Self {
7680                Self {}
7681            }
7682            #[inline]
7683            fn check_signature(
7684                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7685            ) -> alloy_sol_types::Result<()> {
7686                if topics.0 != Self::SIGNATURE_HASH {
7687                    return Err(
7688                        alloy_sol_types::Error::invalid_event_signature_hash(
7689                            Self::SIGNATURE,
7690                            topics.0,
7691                            Self::SIGNATURE_HASH,
7692                        ),
7693                    );
7694                }
7695                Ok(())
7696            }
7697            #[inline]
7698            fn tokenize_body(&self) -> Self::DataToken<'_> {
7699                ()
7700            }
7701            #[inline]
7702            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7703                (Self::SIGNATURE_HASH.into(),)
7704            }
7705            #[inline]
7706            fn encode_topics_raw(
7707                &self,
7708                out: &mut [alloy_sol_types::abi::token::WordToken],
7709            ) -> alloy_sol_types::Result<()> {
7710                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7711                    return Err(alloy_sol_types::Error::Overrun);
7712                }
7713                out[0usize] = alloy_sol_types::abi::token::WordToken(
7714                    Self::SIGNATURE_HASH,
7715                );
7716                Ok(())
7717            }
7718        }
7719        #[automatically_derived]
7720        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7721            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7722                From::from(self)
7723            }
7724            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7725                From::from(&self)
7726            }
7727        }
7728        #[automatically_derived]
7729        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7730            #[inline]
7731            fn from(
7732                this: &PermissionedProverNotRequired,
7733            ) -> alloy_sol_types::private::LogData {
7734                alloy_sol_types::SolEvent::encode_log_data(this)
7735            }
7736        }
7737    };
7738    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7739    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7740```solidity
7741event PermissionedProverRequired(address permissionedProver);
7742```*/
7743    #[allow(
7744        non_camel_case_types,
7745        non_snake_case,
7746        clippy::pub_underscore_fields,
7747        clippy::style
7748    )]
7749    #[derive(Clone)]
7750    pub struct PermissionedProverRequired {
7751        #[allow(missing_docs)]
7752        pub permissionedProver: alloy::sol_types::private::Address,
7753    }
7754    #[allow(
7755        non_camel_case_types,
7756        non_snake_case,
7757        clippy::pub_underscore_fields,
7758        clippy::style
7759    )]
7760    const _: () = {
7761        use alloy::sol_types as alloy_sol_types;
7762        #[automatically_derived]
7763        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7764            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7765            type DataToken<'a> = <Self::DataTuple<
7766                'a,
7767            > as alloy_sol_types::SolType>::Token<'a>;
7768            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7769            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7770            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7771                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7772                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7773                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7774            ]);
7775            const ANONYMOUS: bool = false;
7776            #[allow(unused_variables)]
7777            #[inline]
7778            fn new(
7779                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7780                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7781            ) -> Self {
7782                Self { permissionedProver: data.0 }
7783            }
7784            #[inline]
7785            fn check_signature(
7786                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7787            ) -> alloy_sol_types::Result<()> {
7788                if topics.0 != Self::SIGNATURE_HASH {
7789                    return Err(
7790                        alloy_sol_types::Error::invalid_event_signature_hash(
7791                            Self::SIGNATURE,
7792                            topics.0,
7793                            Self::SIGNATURE_HASH,
7794                        ),
7795                    );
7796                }
7797                Ok(())
7798            }
7799            #[inline]
7800            fn tokenize_body(&self) -> Self::DataToken<'_> {
7801                (
7802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7803                        &self.permissionedProver,
7804                    ),
7805                )
7806            }
7807            #[inline]
7808            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7809                (Self::SIGNATURE_HASH.into(),)
7810            }
7811            #[inline]
7812            fn encode_topics_raw(
7813                &self,
7814                out: &mut [alloy_sol_types::abi::token::WordToken],
7815            ) -> alloy_sol_types::Result<()> {
7816                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7817                    return Err(alloy_sol_types::Error::Overrun);
7818                }
7819                out[0usize] = alloy_sol_types::abi::token::WordToken(
7820                    Self::SIGNATURE_HASH,
7821                );
7822                Ok(())
7823            }
7824        }
7825        #[automatically_derived]
7826        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7827            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7828                From::from(self)
7829            }
7830            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7831                From::from(&self)
7832            }
7833        }
7834        #[automatically_derived]
7835        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7836            #[inline]
7837            fn from(
7838                this: &PermissionedProverRequired,
7839            ) -> alloy_sol_types::private::LogData {
7840                alloy_sol_types::SolEvent::encode_log_data(this)
7841            }
7842        }
7843    };
7844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7845    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7846```solidity
7847event Upgrade(address implementation);
7848```*/
7849    #[allow(
7850        non_camel_case_types,
7851        non_snake_case,
7852        clippy::pub_underscore_fields,
7853        clippy::style
7854    )]
7855    #[derive(Clone)]
7856    pub struct Upgrade {
7857        #[allow(missing_docs)]
7858        pub implementation: alloy::sol_types::private::Address,
7859    }
7860    #[allow(
7861        non_camel_case_types,
7862        non_snake_case,
7863        clippy::pub_underscore_fields,
7864        clippy::style
7865    )]
7866    const _: () = {
7867        use alloy::sol_types as alloy_sol_types;
7868        #[automatically_derived]
7869        impl alloy_sol_types::SolEvent for Upgrade {
7870            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7871            type DataToken<'a> = <Self::DataTuple<
7872                'a,
7873            > as alloy_sol_types::SolType>::Token<'a>;
7874            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7875            const SIGNATURE: &'static str = "Upgrade(address)";
7876            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7877                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7878                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7879                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7880            ]);
7881            const ANONYMOUS: bool = false;
7882            #[allow(unused_variables)]
7883            #[inline]
7884            fn new(
7885                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7886                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7887            ) -> Self {
7888                Self { implementation: data.0 }
7889            }
7890            #[inline]
7891            fn check_signature(
7892                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7893            ) -> alloy_sol_types::Result<()> {
7894                if topics.0 != Self::SIGNATURE_HASH {
7895                    return Err(
7896                        alloy_sol_types::Error::invalid_event_signature_hash(
7897                            Self::SIGNATURE,
7898                            topics.0,
7899                            Self::SIGNATURE_HASH,
7900                        ),
7901                    );
7902                }
7903                Ok(())
7904            }
7905            #[inline]
7906            fn tokenize_body(&self) -> Self::DataToken<'_> {
7907                (
7908                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7909                        &self.implementation,
7910                    ),
7911                )
7912            }
7913            #[inline]
7914            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7915                (Self::SIGNATURE_HASH.into(),)
7916            }
7917            #[inline]
7918            fn encode_topics_raw(
7919                &self,
7920                out: &mut [alloy_sol_types::abi::token::WordToken],
7921            ) -> alloy_sol_types::Result<()> {
7922                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7923                    return Err(alloy_sol_types::Error::Overrun);
7924                }
7925                out[0usize] = alloy_sol_types::abi::token::WordToken(
7926                    Self::SIGNATURE_HASH,
7927                );
7928                Ok(())
7929            }
7930        }
7931        #[automatically_derived]
7932        impl alloy_sol_types::private::IntoLogData for Upgrade {
7933            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7934                From::from(self)
7935            }
7936            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7937                From::from(&self)
7938            }
7939        }
7940        #[automatically_derived]
7941        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7942            #[inline]
7943            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7944                alloy_sol_types::SolEvent::encode_log_data(this)
7945            }
7946        }
7947    };
7948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7949    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7950```solidity
7951event Upgraded(address indexed implementation);
7952```*/
7953    #[allow(
7954        non_camel_case_types,
7955        non_snake_case,
7956        clippy::pub_underscore_fields,
7957        clippy::style
7958    )]
7959    #[derive(Clone)]
7960    pub struct Upgraded {
7961        #[allow(missing_docs)]
7962        pub implementation: alloy::sol_types::private::Address,
7963    }
7964    #[allow(
7965        non_camel_case_types,
7966        non_snake_case,
7967        clippy::pub_underscore_fields,
7968        clippy::style
7969    )]
7970    const _: () = {
7971        use alloy::sol_types as alloy_sol_types;
7972        #[automatically_derived]
7973        impl alloy_sol_types::SolEvent for Upgraded {
7974            type DataTuple<'a> = ();
7975            type DataToken<'a> = <Self::DataTuple<
7976                'a,
7977            > as alloy_sol_types::SolType>::Token<'a>;
7978            type TopicList = (
7979                alloy_sol_types::sol_data::FixedBytes<32>,
7980                alloy::sol_types::sol_data::Address,
7981            );
7982            const SIGNATURE: &'static str = "Upgraded(address)";
7983            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7984                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7985                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7986                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7987            ]);
7988            const ANONYMOUS: bool = false;
7989            #[allow(unused_variables)]
7990            #[inline]
7991            fn new(
7992                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7993                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7994            ) -> Self {
7995                Self { implementation: topics.1 }
7996            }
7997            #[inline]
7998            fn check_signature(
7999                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8000            ) -> alloy_sol_types::Result<()> {
8001                if topics.0 != Self::SIGNATURE_HASH {
8002                    return Err(
8003                        alloy_sol_types::Error::invalid_event_signature_hash(
8004                            Self::SIGNATURE,
8005                            topics.0,
8006                            Self::SIGNATURE_HASH,
8007                        ),
8008                    );
8009                }
8010                Ok(())
8011            }
8012            #[inline]
8013            fn tokenize_body(&self) -> Self::DataToken<'_> {
8014                ()
8015            }
8016            #[inline]
8017            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8018                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8019            }
8020            #[inline]
8021            fn encode_topics_raw(
8022                &self,
8023                out: &mut [alloy_sol_types::abi::token::WordToken],
8024            ) -> alloy_sol_types::Result<()> {
8025                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8026                    return Err(alloy_sol_types::Error::Overrun);
8027                }
8028                out[0usize] = alloy_sol_types::abi::token::WordToken(
8029                    Self::SIGNATURE_HASH,
8030                );
8031                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8032                    &self.implementation,
8033                );
8034                Ok(())
8035            }
8036        }
8037        #[automatically_derived]
8038        impl alloy_sol_types::private::IntoLogData for Upgraded {
8039            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8040                From::from(self)
8041            }
8042            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8043                From::from(&self)
8044            }
8045        }
8046        #[automatically_derived]
8047        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8048            #[inline]
8049            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8050                alloy_sol_types::SolEvent::encode_log_data(this)
8051            }
8052        }
8053    };
8054    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8055    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8056```solidity
8057function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8058```*/
8059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8060    #[derive(Clone)]
8061    pub struct UPGRADE_INTERFACE_VERSIONCall {}
8062    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8063    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8064    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8065    #[derive(Clone)]
8066    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8067        #[allow(missing_docs)]
8068        pub _0: alloy::sol_types::private::String,
8069    }
8070    #[allow(
8071        non_camel_case_types,
8072        non_snake_case,
8073        clippy::pub_underscore_fields,
8074        clippy::style
8075    )]
8076    const _: () = {
8077        use alloy::sol_types as alloy_sol_types;
8078        {
8079            #[doc(hidden)]
8080            type UnderlyingSolTuple<'a> = ();
8081            #[doc(hidden)]
8082            type UnderlyingRustTuple<'a> = ();
8083            #[cfg(test)]
8084            #[allow(dead_code, unreachable_patterns)]
8085            fn _type_assertion(
8086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8087            ) {
8088                match _t {
8089                    alloy_sol_types::private::AssertTypeEq::<
8090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8091                    >(_) => {}
8092                }
8093            }
8094            #[automatically_derived]
8095            #[doc(hidden)]
8096            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8097            for UnderlyingRustTuple<'_> {
8098                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8099                    ()
8100                }
8101            }
8102            #[automatically_derived]
8103            #[doc(hidden)]
8104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8105            for UPGRADE_INTERFACE_VERSIONCall {
8106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8107                    Self {}
8108                }
8109            }
8110        }
8111        {
8112            #[doc(hidden)]
8113            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8114            #[doc(hidden)]
8115            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8116            #[cfg(test)]
8117            #[allow(dead_code, unreachable_patterns)]
8118            fn _type_assertion(
8119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8120            ) {
8121                match _t {
8122                    alloy_sol_types::private::AssertTypeEq::<
8123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8124                    >(_) => {}
8125                }
8126            }
8127            #[automatically_derived]
8128            #[doc(hidden)]
8129            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8130            for UnderlyingRustTuple<'_> {
8131                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8132                    (value._0,)
8133                }
8134            }
8135            #[automatically_derived]
8136            #[doc(hidden)]
8137            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8138            for UPGRADE_INTERFACE_VERSIONReturn {
8139                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8140                    Self { _0: tuple.0 }
8141                }
8142            }
8143        }
8144        #[automatically_derived]
8145        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8146            type Parameters<'a> = ();
8147            type Token<'a> = <Self::Parameters<
8148                'a,
8149            > as alloy_sol_types::SolType>::Token<'a>;
8150            type Return = UPGRADE_INTERFACE_VERSIONReturn;
8151            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8152            type ReturnToken<'a> = <Self::ReturnTuple<
8153                'a,
8154            > as alloy_sol_types::SolType>::Token<'a>;
8155            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8156            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8157            #[inline]
8158            fn new<'a>(
8159                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8160            ) -> Self {
8161                tuple.into()
8162            }
8163            #[inline]
8164            fn tokenize(&self) -> Self::Token<'_> {
8165                ()
8166            }
8167            #[inline]
8168            fn abi_decode_returns(
8169                data: &[u8],
8170                validate: bool,
8171            ) -> alloy_sol_types::Result<Self::Return> {
8172                <Self::ReturnTuple<
8173                    '_,
8174                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8175                    .map(Into::into)
8176            }
8177        }
8178    };
8179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8180    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8181```solidity
8182function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8183```*/
8184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8185    #[derive(Clone)]
8186    pub struct _getVkCall {}
8187    #[derive()]
8188    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8190    #[derive(Clone)]
8191    pub struct _getVkReturn {
8192        #[allow(missing_docs)]
8193        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8194    }
8195    #[allow(
8196        non_camel_case_types,
8197        non_snake_case,
8198        clippy::pub_underscore_fields,
8199        clippy::style
8200    )]
8201    const _: () = {
8202        use alloy::sol_types as alloy_sol_types;
8203        {
8204            #[doc(hidden)]
8205            type UnderlyingSolTuple<'a> = ();
8206            #[doc(hidden)]
8207            type UnderlyingRustTuple<'a> = ();
8208            #[cfg(test)]
8209            #[allow(dead_code, unreachable_patterns)]
8210            fn _type_assertion(
8211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8212            ) {
8213                match _t {
8214                    alloy_sol_types::private::AssertTypeEq::<
8215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8216                    >(_) => {}
8217                }
8218            }
8219            #[automatically_derived]
8220            #[doc(hidden)]
8221            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8222                fn from(value: _getVkCall) -> Self {
8223                    ()
8224                }
8225            }
8226            #[automatically_derived]
8227            #[doc(hidden)]
8228            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8230                    Self {}
8231                }
8232            }
8233        }
8234        {
8235            #[doc(hidden)]
8236            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8237            #[doc(hidden)]
8238            type UnderlyingRustTuple<'a> = (
8239                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8240            );
8241            #[cfg(test)]
8242            #[allow(dead_code, unreachable_patterns)]
8243            fn _type_assertion(
8244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8245            ) {
8246                match _t {
8247                    alloy_sol_types::private::AssertTypeEq::<
8248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8249                    >(_) => {}
8250                }
8251            }
8252            #[automatically_derived]
8253            #[doc(hidden)]
8254            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8255                fn from(value: _getVkReturn) -> Self {
8256                    (value.vk,)
8257                }
8258            }
8259            #[automatically_derived]
8260            #[doc(hidden)]
8261            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8262                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8263                    Self { vk: tuple.0 }
8264                }
8265            }
8266        }
8267        #[automatically_derived]
8268        impl alloy_sol_types::SolCall for _getVkCall {
8269            type Parameters<'a> = ();
8270            type Token<'a> = <Self::Parameters<
8271                'a,
8272            > as alloy_sol_types::SolType>::Token<'a>;
8273            type Return = _getVkReturn;
8274            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8275            type ReturnToken<'a> = <Self::ReturnTuple<
8276                'a,
8277            > as alloy_sol_types::SolType>::Token<'a>;
8278            const SIGNATURE: &'static str = "_getVk()";
8279            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8280            #[inline]
8281            fn new<'a>(
8282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8283            ) -> Self {
8284                tuple.into()
8285            }
8286            #[inline]
8287            fn tokenize(&self) -> Self::Token<'_> {
8288                ()
8289            }
8290            #[inline]
8291            fn abi_decode_returns(
8292                data: &[u8],
8293                validate: bool,
8294            ) -> alloy_sol_types::Result<Self::Return> {
8295                <Self::ReturnTuple<
8296                    '_,
8297                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8298                    .map(Into::into)
8299            }
8300        }
8301    };
8302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8303    /**Function with signature `authRoot()` and selector `0x998328e8`.
8304```solidity
8305function authRoot() external view returns (uint256);
8306```*/
8307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8308    #[derive(Clone)]
8309    pub struct authRootCall {}
8310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8311    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8313    #[derive(Clone)]
8314    pub struct authRootReturn {
8315        #[allow(missing_docs)]
8316        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8317    }
8318    #[allow(
8319        non_camel_case_types,
8320        non_snake_case,
8321        clippy::pub_underscore_fields,
8322        clippy::style
8323    )]
8324    const _: () = {
8325        use alloy::sol_types as alloy_sol_types;
8326        {
8327            #[doc(hidden)]
8328            type UnderlyingSolTuple<'a> = ();
8329            #[doc(hidden)]
8330            type UnderlyingRustTuple<'a> = ();
8331            #[cfg(test)]
8332            #[allow(dead_code, unreachable_patterns)]
8333            fn _type_assertion(
8334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8335            ) {
8336                match _t {
8337                    alloy_sol_types::private::AssertTypeEq::<
8338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8339                    >(_) => {}
8340                }
8341            }
8342            #[automatically_derived]
8343            #[doc(hidden)]
8344            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8345                fn from(value: authRootCall) -> Self {
8346                    ()
8347                }
8348            }
8349            #[automatically_derived]
8350            #[doc(hidden)]
8351            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8353                    Self {}
8354                }
8355            }
8356        }
8357        {
8358            #[doc(hidden)]
8359            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8360            #[doc(hidden)]
8361            type UnderlyingRustTuple<'a> = (
8362                alloy::sol_types::private::primitives::aliases::U256,
8363            );
8364            #[cfg(test)]
8365            #[allow(dead_code, unreachable_patterns)]
8366            fn _type_assertion(
8367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8368            ) {
8369                match _t {
8370                    alloy_sol_types::private::AssertTypeEq::<
8371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8372                    >(_) => {}
8373                }
8374            }
8375            #[automatically_derived]
8376            #[doc(hidden)]
8377            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8378                fn from(value: authRootReturn) -> Self {
8379                    (value._0,)
8380                }
8381            }
8382            #[automatically_derived]
8383            #[doc(hidden)]
8384            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8385                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8386                    Self { _0: tuple.0 }
8387                }
8388            }
8389        }
8390        #[automatically_derived]
8391        impl alloy_sol_types::SolCall for authRootCall {
8392            type Parameters<'a> = ();
8393            type Token<'a> = <Self::Parameters<
8394                'a,
8395            > as alloy_sol_types::SolType>::Token<'a>;
8396            type Return = authRootReturn;
8397            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8398            type ReturnToken<'a> = <Self::ReturnTuple<
8399                'a,
8400            > as alloy_sol_types::SolType>::Token<'a>;
8401            const SIGNATURE: &'static str = "authRoot()";
8402            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8403            #[inline]
8404            fn new<'a>(
8405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8406            ) -> Self {
8407                tuple.into()
8408            }
8409            #[inline]
8410            fn tokenize(&self) -> Self::Token<'_> {
8411                ()
8412            }
8413            #[inline]
8414            fn abi_decode_returns(
8415                data: &[u8],
8416                validate: bool,
8417            ) -> alloy_sol_types::Result<Self::Return> {
8418                <Self::ReturnTuple<
8419                    '_,
8420                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8421                    .map(Into::into)
8422            }
8423        }
8424    };
8425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8426    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8427```solidity
8428function blocksPerEpoch() external view returns (uint64);
8429```*/
8430    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8431    #[derive(Clone)]
8432    pub struct blocksPerEpochCall {}
8433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8434    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8435    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8436    #[derive(Clone)]
8437    pub struct blocksPerEpochReturn {
8438        #[allow(missing_docs)]
8439        pub _0: u64,
8440    }
8441    #[allow(
8442        non_camel_case_types,
8443        non_snake_case,
8444        clippy::pub_underscore_fields,
8445        clippy::style
8446    )]
8447    const _: () = {
8448        use alloy::sol_types as alloy_sol_types;
8449        {
8450            #[doc(hidden)]
8451            type UnderlyingSolTuple<'a> = ();
8452            #[doc(hidden)]
8453            type UnderlyingRustTuple<'a> = ();
8454            #[cfg(test)]
8455            #[allow(dead_code, unreachable_patterns)]
8456            fn _type_assertion(
8457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8458            ) {
8459                match _t {
8460                    alloy_sol_types::private::AssertTypeEq::<
8461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8462                    >(_) => {}
8463                }
8464            }
8465            #[automatically_derived]
8466            #[doc(hidden)]
8467            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8468                fn from(value: blocksPerEpochCall) -> Self {
8469                    ()
8470                }
8471            }
8472            #[automatically_derived]
8473            #[doc(hidden)]
8474            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8476                    Self {}
8477                }
8478            }
8479        }
8480        {
8481            #[doc(hidden)]
8482            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8483            #[doc(hidden)]
8484            type UnderlyingRustTuple<'a> = (u64,);
8485            #[cfg(test)]
8486            #[allow(dead_code, unreachable_patterns)]
8487            fn _type_assertion(
8488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8489            ) {
8490                match _t {
8491                    alloy_sol_types::private::AssertTypeEq::<
8492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8493                    >(_) => {}
8494                }
8495            }
8496            #[automatically_derived]
8497            #[doc(hidden)]
8498            impl ::core::convert::From<blocksPerEpochReturn>
8499            for UnderlyingRustTuple<'_> {
8500                fn from(value: blocksPerEpochReturn) -> Self {
8501                    (value._0,)
8502                }
8503            }
8504            #[automatically_derived]
8505            #[doc(hidden)]
8506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8507            for blocksPerEpochReturn {
8508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8509                    Self { _0: tuple.0 }
8510                }
8511            }
8512        }
8513        #[automatically_derived]
8514        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8515            type Parameters<'a> = ();
8516            type Token<'a> = <Self::Parameters<
8517                'a,
8518            > as alloy_sol_types::SolType>::Token<'a>;
8519            type Return = blocksPerEpochReturn;
8520            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8521            type ReturnToken<'a> = <Self::ReturnTuple<
8522                'a,
8523            > as alloy_sol_types::SolType>::Token<'a>;
8524            const SIGNATURE: &'static str = "blocksPerEpoch()";
8525            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8526            #[inline]
8527            fn new<'a>(
8528                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8529            ) -> Self {
8530                tuple.into()
8531            }
8532            #[inline]
8533            fn tokenize(&self) -> Self::Token<'_> {
8534                ()
8535            }
8536            #[inline]
8537            fn abi_decode_returns(
8538                data: &[u8],
8539                validate: bool,
8540            ) -> alloy_sol_types::Result<Self::Return> {
8541                <Self::ReturnTuple<
8542                    '_,
8543                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8544                    .map(Into::into)
8545            }
8546        }
8547    };
8548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8549    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8550```solidity
8551function currentBlockNumber() external view returns (uint256);
8552```*/
8553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8554    #[derive(Clone)]
8555    pub struct currentBlockNumberCall {}
8556    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8557    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8559    #[derive(Clone)]
8560    pub struct currentBlockNumberReturn {
8561        #[allow(missing_docs)]
8562        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8563    }
8564    #[allow(
8565        non_camel_case_types,
8566        non_snake_case,
8567        clippy::pub_underscore_fields,
8568        clippy::style
8569    )]
8570    const _: () = {
8571        use alloy::sol_types as alloy_sol_types;
8572        {
8573            #[doc(hidden)]
8574            type UnderlyingSolTuple<'a> = ();
8575            #[doc(hidden)]
8576            type UnderlyingRustTuple<'a> = ();
8577            #[cfg(test)]
8578            #[allow(dead_code, unreachable_patterns)]
8579            fn _type_assertion(
8580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8581            ) {
8582                match _t {
8583                    alloy_sol_types::private::AssertTypeEq::<
8584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8585                    >(_) => {}
8586                }
8587            }
8588            #[automatically_derived]
8589            #[doc(hidden)]
8590            impl ::core::convert::From<currentBlockNumberCall>
8591            for UnderlyingRustTuple<'_> {
8592                fn from(value: currentBlockNumberCall) -> Self {
8593                    ()
8594                }
8595            }
8596            #[automatically_derived]
8597            #[doc(hidden)]
8598            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8599            for currentBlockNumberCall {
8600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8601                    Self {}
8602                }
8603            }
8604        }
8605        {
8606            #[doc(hidden)]
8607            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8608            #[doc(hidden)]
8609            type UnderlyingRustTuple<'a> = (
8610                alloy::sol_types::private::primitives::aliases::U256,
8611            );
8612            #[cfg(test)]
8613            #[allow(dead_code, unreachable_patterns)]
8614            fn _type_assertion(
8615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8616            ) {
8617                match _t {
8618                    alloy_sol_types::private::AssertTypeEq::<
8619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8620                    >(_) => {}
8621                }
8622            }
8623            #[automatically_derived]
8624            #[doc(hidden)]
8625            impl ::core::convert::From<currentBlockNumberReturn>
8626            for UnderlyingRustTuple<'_> {
8627                fn from(value: currentBlockNumberReturn) -> Self {
8628                    (value._0,)
8629                }
8630            }
8631            #[automatically_derived]
8632            #[doc(hidden)]
8633            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8634            for currentBlockNumberReturn {
8635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8636                    Self { _0: tuple.0 }
8637                }
8638            }
8639        }
8640        #[automatically_derived]
8641        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8642            type Parameters<'a> = ();
8643            type Token<'a> = <Self::Parameters<
8644                'a,
8645            > as alloy_sol_types::SolType>::Token<'a>;
8646            type Return = currentBlockNumberReturn;
8647            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8648            type ReturnToken<'a> = <Self::ReturnTuple<
8649                'a,
8650            > as alloy_sol_types::SolType>::Token<'a>;
8651            const SIGNATURE: &'static str = "currentBlockNumber()";
8652            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8653            #[inline]
8654            fn new<'a>(
8655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8656            ) -> Self {
8657                tuple.into()
8658            }
8659            #[inline]
8660            fn tokenize(&self) -> Self::Token<'_> {
8661                ()
8662            }
8663            #[inline]
8664            fn abi_decode_returns(
8665                data: &[u8],
8666                validate: bool,
8667            ) -> alloy_sol_types::Result<Self::Return> {
8668                <Self::ReturnTuple<
8669                    '_,
8670                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8671                    .map(Into::into)
8672            }
8673        }
8674    };
8675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8676    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8677```solidity
8678function currentEpoch() external view returns (uint64);
8679```*/
8680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8681    #[derive(Clone)]
8682    pub struct currentEpochCall {}
8683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8684    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8686    #[derive(Clone)]
8687    pub struct currentEpochReturn {
8688        #[allow(missing_docs)]
8689        pub _0: u64,
8690    }
8691    #[allow(
8692        non_camel_case_types,
8693        non_snake_case,
8694        clippy::pub_underscore_fields,
8695        clippy::style
8696    )]
8697    const _: () = {
8698        use alloy::sol_types as alloy_sol_types;
8699        {
8700            #[doc(hidden)]
8701            type UnderlyingSolTuple<'a> = ();
8702            #[doc(hidden)]
8703            type UnderlyingRustTuple<'a> = ();
8704            #[cfg(test)]
8705            #[allow(dead_code, unreachable_patterns)]
8706            fn _type_assertion(
8707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8708            ) {
8709                match _t {
8710                    alloy_sol_types::private::AssertTypeEq::<
8711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8712                    >(_) => {}
8713                }
8714            }
8715            #[automatically_derived]
8716            #[doc(hidden)]
8717            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8718                fn from(value: currentEpochCall) -> Self {
8719                    ()
8720                }
8721            }
8722            #[automatically_derived]
8723            #[doc(hidden)]
8724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8726                    Self {}
8727                }
8728            }
8729        }
8730        {
8731            #[doc(hidden)]
8732            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8733            #[doc(hidden)]
8734            type UnderlyingRustTuple<'a> = (u64,);
8735            #[cfg(test)]
8736            #[allow(dead_code, unreachable_patterns)]
8737            fn _type_assertion(
8738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8739            ) {
8740                match _t {
8741                    alloy_sol_types::private::AssertTypeEq::<
8742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8743                    >(_) => {}
8744                }
8745            }
8746            #[automatically_derived]
8747            #[doc(hidden)]
8748            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8749                fn from(value: currentEpochReturn) -> Self {
8750                    (value._0,)
8751                }
8752            }
8753            #[automatically_derived]
8754            #[doc(hidden)]
8755            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8756                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8757                    Self { _0: tuple.0 }
8758                }
8759            }
8760        }
8761        #[automatically_derived]
8762        impl alloy_sol_types::SolCall for currentEpochCall {
8763            type Parameters<'a> = ();
8764            type Token<'a> = <Self::Parameters<
8765                'a,
8766            > as alloy_sol_types::SolType>::Token<'a>;
8767            type Return = currentEpochReturn;
8768            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8769            type ReturnToken<'a> = <Self::ReturnTuple<
8770                'a,
8771            > as alloy_sol_types::SolType>::Token<'a>;
8772            const SIGNATURE: &'static str = "currentEpoch()";
8773            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8774            #[inline]
8775            fn new<'a>(
8776                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8777            ) -> Self {
8778                tuple.into()
8779            }
8780            #[inline]
8781            fn tokenize(&self) -> Self::Token<'_> {
8782                ()
8783            }
8784            #[inline]
8785            fn abi_decode_returns(
8786                data: &[u8],
8787                validate: bool,
8788            ) -> alloy_sol_types::Result<Self::Return> {
8789                <Self::ReturnTuple<
8790                    '_,
8791                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8792                    .map(Into::into)
8793            }
8794        }
8795    };
8796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8797    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8798```solidity
8799function disablePermissionedProverMode() external;
8800```*/
8801    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8802    #[derive(Clone)]
8803    pub struct disablePermissionedProverModeCall {}
8804    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8806    #[derive(Clone)]
8807    pub struct disablePermissionedProverModeReturn {}
8808    #[allow(
8809        non_camel_case_types,
8810        non_snake_case,
8811        clippy::pub_underscore_fields,
8812        clippy::style
8813    )]
8814    const _: () = {
8815        use alloy::sol_types as alloy_sol_types;
8816        {
8817            #[doc(hidden)]
8818            type UnderlyingSolTuple<'a> = ();
8819            #[doc(hidden)]
8820            type UnderlyingRustTuple<'a> = ();
8821            #[cfg(test)]
8822            #[allow(dead_code, unreachable_patterns)]
8823            fn _type_assertion(
8824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8825            ) {
8826                match _t {
8827                    alloy_sol_types::private::AssertTypeEq::<
8828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8829                    >(_) => {}
8830                }
8831            }
8832            #[automatically_derived]
8833            #[doc(hidden)]
8834            impl ::core::convert::From<disablePermissionedProverModeCall>
8835            for UnderlyingRustTuple<'_> {
8836                fn from(value: disablePermissionedProverModeCall) -> Self {
8837                    ()
8838                }
8839            }
8840            #[automatically_derived]
8841            #[doc(hidden)]
8842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8843            for disablePermissionedProverModeCall {
8844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8845                    Self {}
8846                }
8847            }
8848        }
8849        {
8850            #[doc(hidden)]
8851            type UnderlyingSolTuple<'a> = ();
8852            #[doc(hidden)]
8853            type UnderlyingRustTuple<'a> = ();
8854            #[cfg(test)]
8855            #[allow(dead_code, unreachable_patterns)]
8856            fn _type_assertion(
8857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8858            ) {
8859                match _t {
8860                    alloy_sol_types::private::AssertTypeEq::<
8861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8862                    >(_) => {}
8863                }
8864            }
8865            #[automatically_derived]
8866            #[doc(hidden)]
8867            impl ::core::convert::From<disablePermissionedProverModeReturn>
8868            for UnderlyingRustTuple<'_> {
8869                fn from(value: disablePermissionedProverModeReturn) -> Self {
8870                    ()
8871                }
8872            }
8873            #[automatically_derived]
8874            #[doc(hidden)]
8875            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8876            for disablePermissionedProverModeReturn {
8877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8878                    Self {}
8879                }
8880            }
8881        }
8882        #[automatically_derived]
8883        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8884            type Parameters<'a> = ();
8885            type Token<'a> = <Self::Parameters<
8886                'a,
8887            > as alloy_sol_types::SolType>::Token<'a>;
8888            type Return = disablePermissionedProverModeReturn;
8889            type ReturnTuple<'a> = ();
8890            type ReturnToken<'a> = <Self::ReturnTuple<
8891                'a,
8892            > as alloy_sol_types::SolType>::Token<'a>;
8893            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8894            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8895            #[inline]
8896            fn new<'a>(
8897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8898            ) -> Self {
8899                tuple.into()
8900            }
8901            #[inline]
8902            fn tokenize(&self) -> Self::Token<'_> {
8903                ()
8904            }
8905            #[inline]
8906            fn abi_decode_returns(
8907                data: &[u8],
8908                validate: bool,
8909            ) -> alloy_sol_types::Result<Self::Return> {
8910                <Self::ReturnTuple<
8911                    '_,
8912                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8913                    .map(Into::into)
8914            }
8915        }
8916    };
8917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8918    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8919```solidity
8920function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8921```*/
8922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8923    #[derive(Clone)]
8924    pub struct epochFromBlockNumberCall {
8925        #[allow(missing_docs)]
8926        pub _blockNum: u64,
8927        #[allow(missing_docs)]
8928        pub _blocksPerEpoch: u64,
8929    }
8930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8931    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8932    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8933    #[derive(Clone)]
8934    pub struct epochFromBlockNumberReturn {
8935        #[allow(missing_docs)]
8936        pub _0: u64,
8937    }
8938    #[allow(
8939        non_camel_case_types,
8940        non_snake_case,
8941        clippy::pub_underscore_fields,
8942        clippy::style
8943    )]
8944    const _: () = {
8945        use alloy::sol_types as alloy_sol_types;
8946        {
8947            #[doc(hidden)]
8948            type UnderlyingSolTuple<'a> = (
8949                alloy::sol_types::sol_data::Uint<64>,
8950                alloy::sol_types::sol_data::Uint<64>,
8951            );
8952            #[doc(hidden)]
8953            type UnderlyingRustTuple<'a> = (u64, u64);
8954            #[cfg(test)]
8955            #[allow(dead_code, unreachable_patterns)]
8956            fn _type_assertion(
8957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8958            ) {
8959                match _t {
8960                    alloy_sol_types::private::AssertTypeEq::<
8961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8962                    >(_) => {}
8963                }
8964            }
8965            #[automatically_derived]
8966            #[doc(hidden)]
8967            impl ::core::convert::From<epochFromBlockNumberCall>
8968            for UnderlyingRustTuple<'_> {
8969                fn from(value: epochFromBlockNumberCall) -> Self {
8970                    (value._blockNum, value._blocksPerEpoch)
8971                }
8972            }
8973            #[automatically_derived]
8974            #[doc(hidden)]
8975            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8976            for epochFromBlockNumberCall {
8977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8978                    Self {
8979                        _blockNum: tuple.0,
8980                        _blocksPerEpoch: tuple.1,
8981                    }
8982                }
8983            }
8984        }
8985        {
8986            #[doc(hidden)]
8987            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8988            #[doc(hidden)]
8989            type UnderlyingRustTuple<'a> = (u64,);
8990            #[cfg(test)]
8991            #[allow(dead_code, unreachable_patterns)]
8992            fn _type_assertion(
8993                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8994            ) {
8995                match _t {
8996                    alloy_sol_types::private::AssertTypeEq::<
8997                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8998                    >(_) => {}
8999                }
9000            }
9001            #[automatically_derived]
9002            #[doc(hidden)]
9003            impl ::core::convert::From<epochFromBlockNumberReturn>
9004            for UnderlyingRustTuple<'_> {
9005                fn from(value: epochFromBlockNumberReturn) -> Self {
9006                    (value._0,)
9007                }
9008            }
9009            #[automatically_derived]
9010            #[doc(hidden)]
9011            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9012            for epochFromBlockNumberReturn {
9013                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9014                    Self { _0: tuple.0 }
9015                }
9016            }
9017        }
9018        #[automatically_derived]
9019        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9020            type Parameters<'a> = (
9021                alloy::sol_types::sol_data::Uint<64>,
9022                alloy::sol_types::sol_data::Uint<64>,
9023            );
9024            type Token<'a> = <Self::Parameters<
9025                'a,
9026            > as alloy_sol_types::SolType>::Token<'a>;
9027            type Return = epochFromBlockNumberReturn;
9028            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9029            type ReturnToken<'a> = <Self::ReturnTuple<
9030                'a,
9031            > as alloy_sol_types::SolType>::Token<'a>;
9032            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9033            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9034            #[inline]
9035            fn new<'a>(
9036                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9037            ) -> Self {
9038                tuple.into()
9039            }
9040            #[inline]
9041            fn tokenize(&self) -> Self::Token<'_> {
9042                (
9043                    <alloy::sol_types::sol_data::Uint<
9044                        64,
9045                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9046                    <alloy::sol_types::sol_data::Uint<
9047                        64,
9048                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9049                )
9050            }
9051            #[inline]
9052            fn abi_decode_returns(
9053                data: &[u8],
9054                validate: bool,
9055            ) -> alloy_sol_types::Result<Self::Return> {
9056                <Self::ReturnTuple<
9057                    '_,
9058                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9059                    .map(Into::into)
9060            }
9061        }
9062    };
9063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9064    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9065```solidity
9066function epochStartBlock() external view returns (uint64);
9067```*/
9068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9069    #[derive(Clone)]
9070    pub struct epochStartBlockCall {}
9071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9072    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9074    #[derive(Clone)]
9075    pub struct epochStartBlockReturn {
9076        #[allow(missing_docs)]
9077        pub _0: u64,
9078    }
9079    #[allow(
9080        non_camel_case_types,
9081        non_snake_case,
9082        clippy::pub_underscore_fields,
9083        clippy::style
9084    )]
9085    const _: () = {
9086        use alloy::sol_types as alloy_sol_types;
9087        {
9088            #[doc(hidden)]
9089            type UnderlyingSolTuple<'a> = ();
9090            #[doc(hidden)]
9091            type UnderlyingRustTuple<'a> = ();
9092            #[cfg(test)]
9093            #[allow(dead_code, unreachable_patterns)]
9094            fn _type_assertion(
9095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9096            ) {
9097                match _t {
9098                    alloy_sol_types::private::AssertTypeEq::<
9099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9100                    >(_) => {}
9101                }
9102            }
9103            #[automatically_derived]
9104            #[doc(hidden)]
9105            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9106                fn from(value: epochStartBlockCall) -> Self {
9107                    ()
9108                }
9109            }
9110            #[automatically_derived]
9111            #[doc(hidden)]
9112            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9114                    Self {}
9115                }
9116            }
9117        }
9118        {
9119            #[doc(hidden)]
9120            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9121            #[doc(hidden)]
9122            type UnderlyingRustTuple<'a> = (u64,);
9123            #[cfg(test)]
9124            #[allow(dead_code, unreachable_patterns)]
9125            fn _type_assertion(
9126                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9127            ) {
9128                match _t {
9129                    alloy_sol_types::private::AssertTypeEq::<
9130                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9131                    >(_) => {}
9132                }
9133            }
9134            #[automatically_derived]
9135            #[doc(hidden)]
9136            impl ::core::convert::From<epochStartBlockReturn>
9137            for UnderlyingRustTuple<'_> {
9138                fn from(value: epochStartBlockReturn) -> Self {
9139                    (value._0,)
9140                }
9141            }
9142            #[automatically_derived]
9143            #[doc(hidden)]
9144            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9145            for epochStartBlockReturn {
9146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9147                    Self { _0: tuple.0 }
9148                }
9149            }
9150        }
9151        #[automatically_derived]
9152        impl alloy_sol_types::SolCall for epochStartBlockCall {
9153            type Parameters<'a> = ();
9154            type Token<'a> = <Self::Parameters<
9155                'a,
9156            > as alloy_sol_types::SolType>::Token<'a>;
9157            type Return = epochStartBlockReturn;
9158            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9159            type ReturnToken<'a> = <Self::ReturnTuple<
9160                'a,
9161            > as alloy_sol_types::SolType>::Token<'a>;
9162            const SIGNATURE: &'static str = "epochStartBlock()";
9163            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9164            #[inline]
9165            fn new<'a>(
9166                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9167            ) -> Self {
9168                tuple.into()
9169            }
9170            #[inline]
9171            fn tokenize(&self) -> Self::Token<'_> {
9172                ()
9173            }
9174            #[inline]
9175            fn abi_decode_returns(
9176                data: &[u8],
9177                validate: bool,
9178            ) -> alloy_sol_types::Result<Self::Return> {
9179                <Self::ReturnTuple<
9180                    '_,
9181                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9182                    .map(Into::into)
9183            }
9184        }
9185    };
9186    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9187    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9188```solidity
9189function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9190```*/
9191    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9192    #[derive(Clone)]
9193    pub struct finalizedStateCall {}
9194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9195    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9196    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9197    #[derive(Clone)]
9198    pub struct finalizedStateReturn {
9199        #[allow(missing_docs)]
9200        pub viewNum: u64,
9201        #[allow(missing_docs)]
9202        pub blockHeight: u64,
9203        #[allow(missing_docs)]
9204        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9205    }
9206    #[allow(
9207        non_camel_case_types,
9208        non_snake_case,
9209        clippy::pub_underscore_fields,
9210        clippy::style
9211    )]
9212    const _: () = {
9213        use alloy::sol_types as alloy_sol_types;
9214        {
9215            #[doc(hidden)]
9216            type UnderlyingSolTuple<'a> = ();
9217            #[doc(hidden)]
9218            type UnderlyingRustTuple<'a> = ();
9219            #[cfg(test)]
9220            #[allow(dead_code, unreachable_patterns)]
9221            fn _type_assertion(
9222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9223            ) {
9224                match _t {
9225                    alloy_sol_types::private::AssertTypeEq::<
9226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9227                    >(_) => {}
9228                }
9229            }
9230            #[automatically_derived]
9231            #[doc(hidden)]
9232            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9233                fn from(value: finalizedStateCall) -> Self {
9234                    ()
9235                }
9236            }
9237            #[automatically_derived]
9238            #[doc(hidden)]
9239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9241                    Self {}
9242                }
9243            }
9244        }
9245        {
9246            #[doc(hidden)]
9247            type UnderlyingSolTuple<'a> = (
9248                alloy::sol_types::sol_data::Uint<64>,
9249                alloy::sol_types::sol_data::Uint<64>,
9250                BN254::ScalarField,
9251            );
9252            #[doc(hidden)]
9253            type UnderlyingRustTuple<'a> = (
9254                u64,
9255                u64,
9256                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9257            );
9258            #[cfg(test)]
9259            #[allow(dead_code, unreachable_patterns)]
9260            fn _type_assertion(
9261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9262            ) {
9263                match _t {
9264                    alloy_sol_types::private::AssertTypeEq::<
9265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9266                    >(_) => {}
9267                }
9268            }
9269            #[automatically_derived]
9270            #[doc(hidden)]
9271            impl ::core::convert::From<finalizedStateReturn>
9272            for UnderlyingRustTuple<'_> {
9273                fn from(value: finalizedStateReturn) -> Self {
9274                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9275                }
9276            }
9277            #[automatically_derived]
9278            #[doc(hidden)]
9279            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9280            for finalizedStateReturn {
9281                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9282                    Self {
9283                        viewNum: tuple.0,
9284                        blockHeight: tuple.1,
9285                        blockCommRoot: tuple.2,
9286                    }
9287                }
9288            }
9289        }
9290        #[automatically_derived]
9291        impl alloy_sol_types::SolCall for finalizedStateCall {
9292            type Parameters<'a> = ();
9293            type Token<'a> = <Self::Parameters<
9294                'a,
9295            > as alloy_sol_types::SolType>::Token<'a>;
9296            type Return = finalizedStateReturn;
9297            type ReturnTuple<'a> = (
9298                alloy::sol_types::sol_data::Uint<64>,
9299                alloy::sol_types::sol_data::Uint<64>,
9300                BN254::ScalarField,
9301            );
9302            type ReturnToken<'a> = <Self::ReturnTuple<
9303                'a,
9304            > as alloy_sol_types::SolType>::Token<'a>;
9305            const SIGNATURE: &'static str = "finalizedState()";
9306            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9307            #[inline]
9308            fn new<'a>(
9309                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9310            ) -> Self {
9311                tuple.into()
9312            }
9313            #[inline]
9314            fn tokenize(&self) -> Self::Token<'_> {
9315                ()
9316            }
9317            #[inline]
9318            fn abi_decode_returns(
9319                data: &[u8],
9320                validate: bool,
9321            ) -> alloy_sol_types::Result<Self::Return> {
9322                <Self::ReturnTuple<
9323                    '_,
9324                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9325                    .map(Into::into)
9326            }
9327        }
9328    };
9329    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9330    /**Function with signature `firstEpoch()` and selector `0x41682744`.
9331```solidity
9332function firstEpoch() external view returns (uint64);
9333```*/
9334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9335    #[derive(Clone)]
9336    pub struct firstEpochCall {}
9337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9338    ///Container type for the return parameters of the [`firstEpoch()`](firstEpochCall) function.
9339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9340    #[derive(Clone)]
9341    pub struct firstEpochReturn {
9342        #[allow(missing_docs)]
9343        pub _0: u64,
9344    }
9345    #[allow(
9346        non_camel_case_types,
9347        non_snake_case,
9348        clippy::pub_underscore_fields,
9349        clippy::style
9350    )]
9351    const _: () = {
9352        use alloy::sol_types as alloy_sol_types;
9353        {
9354            #[doc(hidden)]
9355            type UnderlyingSolTuple<'a> = ();
9356            #[doc(hidden)]
9357            type UnderlyingRustTuple<'a> = ();
9358            #[cfg(test)]
9359            #[allow(dead_code, unreachable_patterns)]
9360            fn _type_assertion(
9361                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9362            ) {
9363                match _t {
9364                    alloy_sol_types::private::AssertTypeEq::<
9365                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9366                    >(_) => {}
9367                }
9368            }
9369            #[automatically_derived]
9370            #[doc(hidden)]
9371            impl ::core::convert::From<firstEpochCall> for UnderlyingRustTuple<'_> {
9372                fn from(value: firstEpochCall) -> Self {
9373                    ()
9374                }
9375            }
9376            #[automatically_derived]
9377            #[doc(hidden)]
9378            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochCall {
9379                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9380                    Self {}
9381                }
9382            }
9383        }
9384        {
9385            #[doc(hidden)]
9386            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9387            #[doc(hidden)]
9388            type UnderlyingRustTuple<'a> = (u64,);
9389            #[cfg(test)]
9390            #[allow(dead_code, unreachable_patterns)]
9391            fn _type_assertion(
9392                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9393            ) {
9394                match _t {
9395                    alloy_sol_types::private::AssertTypeEq::<
9396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9397                    >(_) => {}
9398                }
9399            }
9400            #[automatically_derived]
9401            #[doc(hidden)]
9402            impl ::core::convert::From<firstEpochReturn> for UnderlyingRustTuple<'_> {
9403                fn from(value: firstEpochReturn) -> Self {
9404                    (value._0,)
9405                }
9406            }
9407            #[automatically_derived]
9408            #[doc(hidden)]
9409            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochReturn {
9410                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9411                    Self { _0: tuple.0 }
9412                }
9413            }
9414        }
9415        #[automatically_derived]
9416        impl alloy_sol_types::SolCall for firstEpochCall {
9417            type Parameters<'a> = ();
9418            type Token<'a> = <Self::Parameters<
9419                'a,
9420            > as alloy_sol_types::SolType>::Token<'a>;
9421            type Return = firstEpochReturn;
9422            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9423            type ReturnToken<'a> = <Self::ReturnTuple<
9424                'a,
9425            > as alloy_sol_types::SolType>::Token<'a>;
9426            const SIGNATURE: &'static str = "firstEpoch()";
9427            const SELECTOR: [u8; 4] = [65u8, 104u8, 39u8, 68u8];
9428            #[inline]
9429            fn new<'a>(
9430                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9431            ) -> Self {
9432                tuple.into()
9433            }
9434            #[inline]
9435            fn tokenize(&self) -> Self::Token<'_> {
9436                ()
9437            }
9438            #[inline]
9439            fn abi_decode_returns(
9440                data: &[u8],
9441                validate: bool,
9442            ) -> alloy_sol_types::Result<Self::Return> {
9443                <Self::ReturnTuple<
9444                    '_,
9445                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9446                    .map(Into::into)
9447            }
9448        }
9449    };
9450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9451    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9452```solidity
9453function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9454```*/
9455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9456    #[derive(Clone)]
9457    pub struct genesisStakeTableStateCall {}
9458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9459    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9461    #[derive(Clone)]
9462    pub struct genesisStakeTableStateReturn {
9463        #[allow(missing_docs)]
9464        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9465        #[allow(missing_docs)]
9466        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9467        #[allow(missing_docs)]
9468        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9469        #[allow(missing_docs)]
9470        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9471    }
9472    #[allow(
9473        non_camel_case_types,
9474        non_snake_case,
9475        clippy::pub_underscore_fields,
9476        clippy::style
9477    )]
9478    const _: () = {
9479        use alloy::sol_types as alloy_sol_types;
9480        {
9481            #[doc(hidden)]
9482            type UnderlyingSolTuple<'a> = ();
9483            #[doc(hidden)]
9484            type UnderlyingRustTuple<'a> = ();
9485            #[cfg(test)]
9486            #[allow(dead_code, unreachable_patterns)]
9487            fn _type_assertion(
9488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9489            ) {
9490                match _t {
9491                    alloy_sol_types::private::AssertTypeEq::<
9492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9493                    >(_) => {}
9494                }
9495            }
9496            #[automatically_derived]
9497            #[doc(hidden)]
9498            impl ::core::convert::From<genesisStakeTableStateCall>
9499            for UnderlyingRustTuple<'_> {
9500                fn from(value: genesisStakeTableStateCall) -> Self {
9501                    ()
9502                }
9503            }
9504            #[automatically_derived]
9505            #[doc(hidden)]
9506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9507            for genesisStakeTableStateCall {
9508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9509                    Self {}
9510                }
9511            }
9512        }
9513        {
9514            #[doc(hidden)]
9515            type UnderlyingSolTuple<'a> = (
9516                alloy::sol_types::sol_data::Uint<256>,
9517                BN254::ScalarField,
9518                BN254::ScalarField,
9519                BN254::ScalarField,
9520            );
9521            #[doc(hidden)]
9522            type UnderlyingRustTuple<'a> = (
9523                alloy::sol_types::private::primitives::aliases::U256,
9524                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9525                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9526                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9527            );
9528            #[cfg(test)]
9529            #[allow(dead_code, unreachable_patterns)]
9530            fn _type_assertion(
9531                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9532            ) {
9533                match _t {
9534                    alloy_sol_types::private::AssertTypeEq::<
9535                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9536                    >(_) => {}
9537                }
9538            }
9539            #[automatically_derived]
9540            #[doc(hidden)]
9541            impl ::core::convert::From<genesisStakeTableStateReturn>
9542            for UnderlyingRustTuple<'_> {
9543                fn from(value: genesisStakeTableStateReturn) -> Self {
9544                    (
9545                        value.threshold,
9546                        value.blsKeyComm,
9547                        value.schnorrKeyComm,
9548                        value.amountComm,
9549                    )
9550                }
9551            }
9552            #[automatically_derived]
9553            #[doc(hidden)]
9554            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9555            for genesisStakeTableStateReturn {
9556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9557                    Self {
9558                        threshold: tuple.0,
9559                        blsKeyComm: tuple.1,
9560                        schnorrKeyComm: tuple.2,
9561                        amountComm: tuple.3,
9562                    }
9563                }
9564            }
9565        }
9566        #[automatically_derived]
9567        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9568            type Parameters<'a> = ();
9569            type Token<'a> = <Self::Parameters<
9570                'a,
9571            > as alloy_sol_types::SolType>::Token<'a>;
9572            type Return = genesisStakeTableStateReturn;
9573            type ReturnTuple<'a> = (
9574                alloy::sol_types::sol_data::Uint<256>,
9575                BN254::ScalarField,
9576                BN254::ScalarField,
9577                BN254::ScalarField,
9578            );
9579            type ReturnToken<'a> = <Self::ReturnTuple<
9580                'a,
9581            > as alloy_sol_types::SolType>::Token<'a>;
9582            const SIGNATURE: &'static str = "genesisStakeTableState()";
9583            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9584            #[inline]
9585            fn new<'a>(
9586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9587            ) -> Self {
9588                tuple.into()
9589            }
9590            #[inline]
9591            fn tokenize(&self) -> Self::Token<'_> {
9592                ()
9593            }
9594            #[inline]
9595            fn abi_decode_returns(
9596                data: &[u8],
9597                validate: bool,
9598            ) -> alloy_sol_types::Result<Self::Return> {
9599                <Self::ReturnTuple<
9600                    '_,
9601                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9602                    .map(Into::into)
9603            }
9604        }
9605    };
9606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9607    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9608```solidity
9609function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9610```*/
9611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9612    #[derive(Clone)]
9613    pub struct genesisStateCall {}
9614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9615    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9617    #[derive(Clone)]
9618    pub struct genesisStateReturn {
9619        #[allow(missing_docs)]
9620        pub viewNum: u64,
9621        #[allow(missing_docs)]
9622        pub blockHeight: u64,
9623        #[allow(missing_docs)]
9624        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9625    }
9626    #[allow(
9627        non_camel_case_types,
9628        non_snake_case,
9629        clippy::pub_underscore_fields,
9630        clippy::style
9631    )]
9632    const _: () = {
9633        use alloy::sol_types as alloy_sol_types;
9634        {
9635            #[doc(hidden)]
9636            type UnderlyingSolTuple<'a> = ();
9637            #[doc(hidden)]
9638            type UnderlyingRustTuple<'a> = ();
9639            #[cfg(test)]
9640            #[allow(dead_code, unreachable_patterns)]
9641            fn _type_assertion(
9642                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9643            ) {
9644                match _t {
9645                    alloy_sol_types::private::AssertTypeEq::<
9646                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9647                    >(_) => {}
9648                }
9649            }
9650            #[automatically_derived]
9651            #[doc(hidden)]
9652            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9653                fn from(value: genesisStateCall) -> Self {
9654                    ()
9655                }
9656            }
9657            #[automatically_derived]
9658            #[doc(hidden)]
9659            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9661                    Self {}
9662                }
9663            }
9664        }
9665        {
9666            #[doc(hidden)]
9667            type UnderlyingSolTuple<'a> = (
9668                alloy::sol_types::sol_data::Uint<64>,
9669                alloy::sol_types::sol_data::Uint<64>,
9670                BN254::ScalarField,
9671            );
9672            #[doc(hidden)]
9673            type UnderlyingRustTuple<'a> = (
9674                u64,
9675                u64,
9676                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9677            );
9678            #[cfg(test)]
9679            #[allow(dead_code, unreachable_patterns)]
9680            fn _type_assertion(
9681                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9682            ) {
9683                match _t {
9684                    alloy_sol_types::private::AssertTypeEq::<
9685                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9686                    >(_) => {}
9687                }
9688            }
9689            #[automatically_derived]
9690            #[doc(hidden)]
9691            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9692                fn from(value: genesisStateReturn) -> Self {
9693                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9694                }
9695            }
9696            #[automatically_derived]
9697            #[doc(hidden)]
9698            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9700                    Self {
9701                        viewNum: tuple.0,
9702                        blockHeight: tuple.1,
9703                        blockCommRoot: tuple.2,
9704                    }
9705                }
9706            }
9707        }
9708        #[automatically_derived]
9709        impl alloy_sol_types::SolCall for genesisStateCall {
9710            type Parameters<'a> = ();
9711            type Token<'a> = <Self::Parameters<
9712                'a,
9713            > as alloy_sol_types::SolType>::Token<'a>;
9714            type Return = genesisStateReturn;
9715            type ReturnTuple<'a> = (
9716                alloy::sol_types::sol_data::Uint<64>,
9717                alloy::sol_types::sol_data::Uint<64>,
9718                BN254::ScalarField,
9719            );
9720            type ReturnToken<'a> = <Self::ReturnTuple<
9721                'a,
9722            > as alloy_sol_types::SolType>::Token<'a>;
9723            const SIGNATURE: &'static str = "genesisState()";
9724            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9725            #[inline]
9726            fn new<'a>(
9727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9728            ) -> Self {
9729                tuple.into()
9730            }
9731            #[inline]
9732            fn tokenize(&self) -> Self::Token<'_> {
9733                ()
9734            }
9735            #[inline]
9736            fn abi_decode_returns(
9737                data: &[u8],
9738                validate: bool,
9739            ) -> alloy_sol_types::Result<Self::Return> {
9740                <Self::ReturnTuple<
9741                    '_,
9742                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9743                    .map(Into::into)
9744            }
9745        }
9746    };
9747    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9748    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9749```solidity
9750function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9751```*/
9752    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9753    #[derive(Clone)]
9754    pub struct getHotShotCommitmentCall {
9755        #[allow(missing_docs)]
9756        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9757    }
9758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9759    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9760    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9761    #[derive(Clone)]
9762    pub struct getHotShotCommitmentReturn {
9763        #[allow(missing_docs)]
9764        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9765        #[allow(missing_docs)]
9766        pub hotshotBlockHeight: u64,
9767    }
9768    #[allow(
9769        non_camel_case_types,
9770        non_snake_case,
9771        clippy::pub_underscore_fields,
9772        clippy::style
9773    )]
9774    const _: () = {
9775        use alloy::sol_types as alloy_sol_types;
9776        {
9777            #[doc(hidden)]
9778            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9779            #[doc(hidden)]
9780            type UnderlyingRustTuple<'a> = (
9781                alloy::sol_types::private::primitives::aliases::U256,
9782            );
9783            #[cfg(test)]
9784            #[allow(dead_code, unreachable_patterns)]
9785            fn _type_assertion(
9786                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9787            ) {
9788                match _t {
9789                    alloy_sol_types::private::AssertTypeEq::<
9790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9791                    >(_) => {}
9792                }
9793            }
9794            #[automatically_derived]
9795            #[doc(hidden)]
9796            impl ::core::convert::From<getHotShotCommitmentCall>
9797            for UnderlyingRustTuple<'_> {
9798                fn from(value: getHotShotCommitmentCall) -> Self {
9799                    (value.hotShotBlockHeight,)
9800                }
9801            }
9802            #[automatically_derived]
9803            #[doc(hidden)]
9804            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9805            for getHotShotCommitmentCall {
9806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9807                    Self {
9808                        hotShotBlockHeight: tuple.0,
9809                    }
9810                }
9811            }
9812        }
9813        {
9814            #[doc(hidden)]
9815            type UnderlyingSolTuple<'a> = (
9816                BN254::ScalarField,
9817                alloy::sol_types::sol_data::Uint<64>,
9818            );
9819            #[doc(hidden)]
9820            type UnderlyingRustTuple<'a> = (
9821                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9822                u64,
9823            );
9824            #[cfg(test)]
9825            #[allow(dead_code, unreachable_patterns)]
9826            fn _type_assertion(
9827                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9828            ) {
9829                match _t {
9830                    alloy_sol_types::private::AssertTypeEq::<
9831                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9832                    >(_) => {}
9833                }
9834            }
9835            #[automatically_derived]
9836            #[doc(hidden)]
9837            impl ::core::convert::From<getHotShotCommitmentReturn>
9838            for UnderlyingRustTuple<'_> {
9839                fn from(value: getHotShotCommitmentReturn) -> Self {
9840                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9841                }
9842            }
9843            #[automatically_derived]
9844            #[doc(hidden)]
9845            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9846            for getHotShotCommitmentReturn {
9847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9848                    Self {
9849                        hotShotBlockCommRoot: tuple.0,
9850                        hotshotBlockHeight: tuple.1,
9851                    }
9852                }
9853            }
9854        }
9855        #[automatically_derived]
9856        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9857            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9858            type Token<'a> = <Self::Parameters<
9859                'a,
9860            > as alloy_sol_types::SolType>::Token<'a>;
9861            type Return = getHotShotCommitmentReturn;
9862            type ReturnTuple<'a> = (
9863                BN254::ScalarField,
9864                alloy::sol_types::sol_data::Uint<64>,
9865            );
9866            type ReturnToken<'a> = <Self::ReturnTuple<
9867                'a,
9868            > as alloy_sol_types::SolType>::Token<'a>;
9869            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9870            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9871            #[inline]
9872            fn new<'a>(
9873                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9874            ) -> Self {
9875                tuple.into()
9876            }
9877            #[inline]
9878            fn tokenize(&self) -> Self::Token<'_> {
9879                (
9880                    <alloy::sol_types::sol_data::Uint<
9881                        256,
9882                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9883                )
9884            }
9885            #[inline]
9886            fn abi_decode_returns(
9887                data: &[u8],
9888                validate: bool,
9889            ) -> alloy_sol_types::Result<Self::Return> {
9890                <Self::ReturnTuple<
9891                    '_,
9892                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9893                    .map(Into::into)
9894            }
9895        }
9896    };
9897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9898    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9899```solidity
9900function getStateHistoryCount() external view returns (uint256);
9901```*/
9902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9903    #[derive(Clone)]
9904    pub struct getStateHistoryCountCall {}
9905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9906    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9908    #[derive(Clone)]
9909    pub struct getStateHistoryCountReturn {
9910        #[allow(missing_docs)]
9911        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9912    }
9913    #[allow(
9914        non_camel_case_types,
9915        non_snake_case,
9916        clippy::pub_underscore_fields,
9917        clippy::style
9918    )]
9919    const _: () = {
9920        use alloy::sol_types as alloy_sol_types;
9921        {
9922            #[doc(hidden)]
9923            type UnderlyingSolTuple<'a> = ();
9924            #[doc(hidden)]
9925            type UnderlyingRustTuple<'a> = ();
9926            #[cfg(test)]
9927            #[allow(dead_code, unreachable_patterns)]
9928            fn _type_assertion(
9929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9930            ) {
9931                match _t {
9932                    alloy_sol_types::private::AssertTypeEq::<
9933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9934                    >(_) => {}
9935                }
9936            }
9937            #[automatically_derived]
9938            #[doc(hidden)]
9939            impl ::core::convert::From<getStateHistoryCountCall>
9940            for UnderlyingRustTuple<'_> {
9941                fn from(value: getStateHistoryCountCall) -> Self {
9942                    ()
9943                }
9944            }
9945            #[automatically_derived]
9946            #[doc(hidden)]
9947            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9948            for getStateHistoryCountCall {
9949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9950                    Self {}
9951                }
9952            }
9953        }
9954        {
9955            #[doc(hidden)]
9956            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9957            #[doc(hidden)]
9958            type UnderlyingRustTuple<'a> = (
9959                alloy::sol_types::private::primitives::aliases::U256,
9960            );
9961            #[cfg(test)]
9962            #[allow(dead_code, unreachable_patterns)]
9963            fn _type_assertion(
9964                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9965            ) {
9966                match _t {
9967                    alloy_sol_types::private::AssertTypeEq::<
9968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9969                    >(_) => {}
9970                }
9971            }
9972            #[automatically_derived]
9973            #[doc(hidden)]
9974            impl ::core::convert::From<getStateHistoryCountReturn>
9975            for UnderlyingRustTuple<'_> {
9976                fn from(value: getStateHistoryCountReturn) -> Self {
9977                    (value._0,)
9978                }
9979            }
9980            #[automatically_derived]
9981            #[doc(hidden)]
9982            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9983            for getStateHistoryCountReturn {
9984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9985                    Self { _0: tuple.0 }
9986                }
9987            }
9988        }
9989        #[automatically_derived]
9990        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9991            type Parameters<'a> = ();
9992            type Token<'a> = <Self::Parameters<
9993                'a,
9994            > as alloy_sol_types::SolType>::Token<'a>;
9995            type Return = getStateHistoryCountReturn;
9996            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9997            type ReturnToken<'a> = <Self::ReturnTuple<
9998                'a,
9999            > as alloy_sol_types::SolType>::Token<'a>;
10000            const SIGNATURE: &'static str = "getStateHistoryCount()";
10001            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10002            #[inline]
10003            fn new<'a>(
10004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10005            ) -> Self {
10006                tuple.into()
10007            }
10008            #[inline]
10009            fn tokenize(&self) -> Self::Token<'_> {
10010                ()
10011            }
10012            #[inline]
10013            fn abi_decode_returns(
10014                data: &[u8],
10015                validate: bool,
10016            ) -> alloy_sol_types::Result<Self::Return> {
10017                <Self::ReturnTuple<
10018                    '_,
10019                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10020                    .map(Into::into)
10021            }
10022        }
10023    };
10024    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10025    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10026```solidity
10027function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10028```*/
10029    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10030    #[derive(Clone)]
10031    pub struct getVersionCall {}
10032    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10033    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10035    #[derive(Clone)]
10036    pub struct getVersionReturn {
10037        #[allow(missing_docs)]
10038        pub majorVersion: u8,
10039        #[allow(missing_docs)]
10040        pub minorVersion: u8,
10041        #[allow(missing_docs)]
10042        pub patchVersion: u8,
10043    }
10044    #[allow(
10045        non_camel_case_types,
10046        non_snake_case,
10047        clippy::pub_underscore_fields,
10048        clippy::style
10049    )]
10050    const _: () = {
10051        use alloy::sol_types as alloy_sol_types;
10052        {
10053            #[doc(hidden)]
10054            type UnderlyingSolTuple<'a> = ();
10055            #[doc(hidden)]
10056            type UnderlyingRustTuple<'a> = ();
10057            #[cfg(test)]
10058            #[allow(dead_code, unreachable_patterns)]
10059            fn _type_assertion(
10060                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10061            ) {
10062                match _t {
10063                    alloy_sol_types::private::AssertTypeEq::<
10064                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10065                    >(_) => {}
10066                }
10067            }
10068            #[automatically_derived]
10069            #[doc(hidden)]
10070            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10071                fn from(value: getVersionCall) -> Self {
10072                    ()
10073                }
10074            }
10075            #[automatically_derived]
10076            #[doc(hidden)]
10077            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10078                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10079                    Self {}
10080                }
10081            }
10082        }
10083        {
10084            #[doc(hidden)]
10085            type UnderlyingSolTuple<'a> = (
10086                alloy::sol_types::sol_data::Uint<8>,
10087                alloy::sol_types::sol_data::Uint<8>,
10088                alloy::sol_types::sol_data::Uint<8>,
10089            );
10090            #[doc(hidden)]
10091            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10092            #[cfg(test)]
10093            #[allow(dead_code, unreachable_patterns)]
10094            fn _type_assertion(
10095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10096            ) {
10097                match _t {
10098                    alloy_sol_types::private::AssertTypeEq::<
10099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10100                    >(_) => {}
10101                }
10102            }
10103            #[automatically_derived]
10104            #[doc(hidden)]
10105            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10106                fn from(value: getVersionReturn) -> Self {
10107                    (value.majorVersion, value.minorVersion, value.patchVersion)
10108                }
10109            }
10110            #[automatically_derived]
10111            #[doc(hidden)]
10112            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10114                    Self {
10115                        majorVersion: tuple.0,
10116                        minorVersion: tuple.1,
10117                        patchVersion: tuple.2,
10118                    }
10119                }
10120            }
10121        }
10122        #[automatically_derived]
10123        impl alloy_sol_types::SolCall for getVersionCall {
10124            type Parameters<'a> = ();
10125            type Token<'a> = <Self::Parameters<
10126                'a,
10127            > as alloy_sol_types::SolType>::Token<'a>;
10128            type Return = getVersionReturn;
10129            type ReturnTuple<'a> = (
10130                alloy::sol_types::sol_data::Uint<8>,
10131                alloy::sol_types::sol_data::Uint<8>,
10132                alloy::sol_types::sol_data::Uint<8>,
10133            );
10134            type ReturnToken<'a> = <Self::ReturnTuple<
10135                'a,
10136            > as alloy_sol_types::SolType>::Token<'a>;
10137            const SIGNATURE: &'static str = "getVersion()";
10138            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10139            #[inline]
10140            fn new<'a>(
10141                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10142            ) -> Self {
10143                tuple.into()
10144            }
10145            #[inline]
10146            fn tokenize(&self) -> Self::Token<'_> {
10147                ()
10148            }
10149            #[inline]
10150            fn abi_decode_returns(
10151                data: &[u8],
10152                validate: bool,
10153            ) -> alloy_sol_types::Result<Self::Return> {
10154                <Self::ReturnTuple<
10155                    '_,
10156                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10157                    .map(Into::into)
10158            }
10159        }
10160    };
10161    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10162    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10163```solidity
10164function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10165```*/
10166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10167    #[derive(Clone)]
10168    pub struct initializeCall {
10169        #[allow(missing_docs)]
10170        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10171        #[allow(missing_docs)]
10172        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10173        #[allow(missing_docs)]
10174        pub _stateHistoryRetentionPeriod: u32,
10175        #[allow(missing_docs)]
10176        pub owner: alloy::sol_types::private::Address,
10177    }
10178    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10180    #[derive(Clone)]
10181    pub struct initializeReturn {}
10182    #[allow(
10183        non_camel_case_types,
10184        non_snake_case,
10185        clippy::pub_underscore_fields,
10186        clippy::style
10187    )]
10188    const _: () = {
10189        use alloy::sol_types as alloy_sol_types;
10190        {
10191            #[doc(hidden)]
10192            type UnderlyingSolTuple<'a> = (
10193                LightClient::LightClientState,
10194                LightClient::StakeTableState,
10195                alloy::sol_types::sol_data::Uint<32>,
10196                alloy::sol_types::sol_data::Address,
10197            );
10198            #[doc(hidden)]
10199            type UnderlyingRustTuple<'a> = (
10200                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10201                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10202                u32,
10203                alloy::sol_types::private::Address,
10204            );
10205            #[cfg(test)]
10206            #[allow(dead_code, unreachable_patterns)]
10207            fn _type_assertion(
10208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10209            ) {
10210                match _t {
10211                    alloy_sol_types::private::AssertTypeEq::<
10212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10213                    >(_) => {}
10214                }
10215            }
10216            #[automatically_derived]
10217            #[doc(hidden)]
10218            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10219                fn from(value: initializeCall) -> Self {
10220                    (
10221                        value._genesis,
10222                        value._genesisStakeTableState,
10223                        value._stateHistoryRetentionPeriod,
10224                        value.owner,
10225                    )
10226                }
10227            }
10228            #[automatically_derived]
10229            #[doc(hidden)]
10230            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10232                    Self {
10233                        _genesis: tuple.0,
10234                        _genesisStakeTableState: tuple.1,
10235                        _stateHistoryRetentionPeriod: tuple.2,
10236                        owner: tuple.3,
10237                    }
10238                }
10239            }
10240        }
10241        {
10242            #[doc(hidden)]
10243            type UnderlyingSolTuple<'a> = ();
10244            #[doc(hidden)]
10245            type UnderlyingRustTuple<'a> = ();
10246            #[cfg(test)]
10247            #[allow(dead_code, unreachable_patterns)]
10248            fn _type_assertion(
10249                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10250            ) {
10251                match _t {
10252                    alloy_sol_types::private::AssertTypeEq::<
10253                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10254                    >(_) => {}
10255                }
10256            }
10257            #[automatically_derived]
10258            #[doc(hidden)]
10259            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10260                fn from(value: initializeReturn) -> Self {
10261                    ()
10262                }
10263            }
10264            #[automatically_derived]
10265            #[doc(hidden)]
10266            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10267                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10268                    Self {}
10269                }
10270            }
10271        }
10272        #[automatically_derived]
10273        impl alloy_sol_types::SolCall for initializeCall {
10274            type Parameters<'a> = (
10275                LightClient::LightClientState,
10276                LightClient::StakeTableState,
10277                alloy::sol_types::sol_data::Uint<32>,
10278                alloy::sol_types::sol_data::Address,
10279            );
10280            type Token<'a> = <Self::Parameters<
10281                'a,
10282            > as alloy_sol_types::SolType>::Token<'a>;
10283            type Return = initializeReturn;
10284            type ReturnTuple<'a> = ();
10285            type ReturnToken<'a> = <Self::ReturnTuple<
10286                'a,
10287            > as alloy_sol_types::SolType>::Token<'a>;
10288            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10289            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10290            #[inline]
10291            fn new<'a>(
10292                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10293            ) -> Self {
10294                tuple.into()
10295            }
10296            #[inline]
10297            fn tokenize(&self) -> Self::Token<'_> {
10298                (
10299                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10300                        &self._genesis,
10301                    ),
10302                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10303                        &self._genesisStakeTableState,
10304                    ),
10305                    <alloy::sol_types::sol_data::Uint<
10306                        32,
10307                    > as alloy_sol_types::SolType>::tokenize(
10308                        &self._stateHistoryRetentionPeriod,
10309                    ),
10310                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10311                        &self.owner,
10312                    ),
10313                )
10314            }
10315            #[inline]
10316            fn abi_decode_returns(
10317                data: &[u8],
10318                validate: bool,
10319            ) -> alloy_sol_types::Result<Self::Return> {
10320                <Self::ReturnTuple<
10321                    '_,
10322                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10323                    .map(Into::into)
10324            }
10325        }
10326    };
10327    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10328    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10329```solidity
10330function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10331```*/
10332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10333    #[derive(Clone)]
10334    pub struct initializeV2Call {
10335        #[allow(missing_docs)]
10336        pub _blocksPerEpoch: u64,
10337        #[allow(missing_docs)]
10338        pub _epochStartBlock: u64,
10339    }
10340    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10342    #[derive(Clone)]
10343    pub struct initializeV2Return {}
10344    #[allow(
10345        non_camel_case_types,
10346        non_snake_case,
10347        clippy::pub_underscore_fields,
10348        clippy::style
10349    )]
10350    const _: () = {
10351        use alloy::sol_types as alloy_sol_types;
10352        {
10353            #[doc(hidden)]
10354            type UnderlyingSolTuple<'a> = (
10355                alloy::sol_types::sol_data::Uint<64>,
10356                alloy::sol_types::sol_data::Uint<64>,
10357            );
10358            #[doc(hidden)]
10359            type UnderlyingRustTuple<'a> = (u64, u64);
10360            #[cfg(test)]
10361            #[allow(dead_code, unreachable_patterns)]
10362            fn _type_assertion(
10363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10364            ) {
10365                match _t {
10366                    alloy_sol_types::private::AssertTypeEq::<
10367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10368                    >(_) => {}
10369                }
10370            }
10371            #[automatically_derived]
10372            #[doc(hidden)]
10373            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10374                fn from(value: initializeV2Call) -> Self {
10375                    (value._blocksPerEpoch, value._epochStartBlock)
10376                }
10377            }
10378            #[automatically_derived]
10379            #[doc(hidden)]
10380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10382                    Self {
10383                        _blocksPerEpoch: tuple.0,
10384                        _epochStartBlock: tuple.1,
10385                    }
10386                }
10387            }
10388        }
10389        {
10390            #[doc(hidden)]
10391            type UnderlyingSolTuple<'a> = ();
10392            #[doc(hidden)]
10393            type UnderlyingRustTuple<'a> = ();
10394            #[cfg(test)]
10395            #[allow(dead_code, unreachable_patterns)]
10396            fn _type_assertion(
10397                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10398            ) {
10399                match _t {
10400                    alloy_sol_types::private::AssertTypeEq::<
10401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10402                    >(_) => {}
10403                }
10404            }
10405            #[automatically_derived]
10406            #[doc(hidden)]
10407            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10408                fn from(value: initializeV2Return) -> Self {
10409                    ()
10410                }
10411            }
10412            #[automatically_derived]
10413            #[doc(hidden)]
10414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10416                    Self {}
10417                }
10418            }
10419        }
10420        #[automatically_derived]
10421        impl alloy_sol_types::SolCall for initializeV2Call {
10422            type Parameters<'a> = (
10423                alloy::sol_types::sol_data::Uint<64>,
10424                alloy::sol_types::sol_data::Uint<64>,
10425            );
10426            type Token<'a> = <Self::Parameters<
10427                'a,
10428            > as alloy_sol_types::SolType>::Token<'a>;
10429            type Return = initializeV2Return;
10430            type ReturnTuple<'a> = ();
10431            type ReturnToken<'a> = <Self::ReturnTuple<
10432                'a,
10433            > as alloy_sol_types::SolType>::Token<'a>;
10434            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10435            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10436            #[inline]
10437            fn new<'a>(
10438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10439            ) -> Self {
10440                tuple.into()
10441            }
10442            #[inline]
10443            fn tokenize(&self) -> Self::Token<'_> {
10444                (
10445                    <alloy::sol_types::sol_data::Uint<
10446                        64,
10447                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10448                    <alloy::sol_types::sol_data::Uint<
10449                        64,
10450                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10451                )
10452            }
10453            #[inline]
10454            fn abi_decode_returns(
10455                data: &[u8],
10456                validate: bool,
10457            ) -> alloy_sol_types::Result<Self::Return> {
10458                <Self::ReturnTuple<
10459                    '_,
10460                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10461                    .map(Into::into)
10462            }
10463        }
10464    };
10465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10466    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
10467```solidity
10468function initializeV3() external;
10469```*/
10470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10471    #[derive(Clone)]
10472    pub struct initializeV3Call {}
10473    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
10474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10475    #[derive(Clone)]
10476    pub struct initializeV3Return {}
10477    #[allow(
10478        non_camel_case_types,
10479        non_snake_case,
10480        clippy::pub_underscore_fields,
10481        clippy::style
10482    )]
10483    const _: () = {
10484        use alloy::sol_types as alloy_sol_types;
10485        {
10486            #[doc(hidden)]
10487            type UnderlyingSolTuple<'a> = ();
10488            #[doc(hidden)]
10489            type UnderlyingRustTuple<'a> = ();
10490            #[cfg(test)]
10491            #[allow(dead_code, unreachable_patterns)]
10492            fn _type_assertion(
10493                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10494            ) {
10495                match _t {
10496                    alloy_sol_types::private::AssertTypeEq::<
10497                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10498                    >(_) => {}
10499                }
10500            }
10501            #[automatically_derived]
10502            #[doc(hidden)]
10503            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
10504                fn from(value: initializeV3Call) -> Self {
10505                    ()
10506                }
10507            }
10508            #[automatically_derived]
10509            #[doc(hidden)]
10510            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
10511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10512                    Self {}
10513                }
10514            }
10515        }
10516        {
10517            #[doc(hidden)]
10518            type UnderlyingSolTuple<'a> = ();
10519            #[doc(hidden)]
10520            type UnderlyingRustTuple<'a> = ();
10521            #[cfg(test)]
10522            #[allow(dead_code, unreachable_patterns)]
10523            fn _type_assertion(
10524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10525            ) {
10526                match _t {
10527                    alloy_sol_types::private::AssertTypeEq::<
10528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10529                    >(_) => {}
10530                }
10531            }
10532            #[automatically_derived]
10533            #[doc(hidden)]
10534            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
10535                fn from(value: initializeV3Return) -> Self {
10536                    ()
10537                }
10538            }
10539            #[automatically_derived]
10540            #[doc(hidden)]
10541            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
10542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10543                    Self {}
10544                }
10545            }
10546        }
10547        #[automatically_derived]
10548        impl alloy_sol_types::SolCall for initializeV3Call {
10549            type Parameters<'a> = ();
10550            type Token<'a> = <Self::Parameters<
10551                'a,
10552            > as alloy_sol_types::SolType>::Token<'a>;
10553            type Return = initializeV3Return;
10554            type ReturnTuple<'a> = ();
10555            type ReturnToken<'a> = <Self::ReturnTuple<
10556                'a,
10557            > as alloy_sol_types::SolType>::Token<'a>;
10558            const SIGNATURE: &'static str = "initializeV3()";
10559            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
10560            #[inline]
10561            fn new<'a>(
10562                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10563            ) -> Self {
10564                tuple.into()
10565            }
10566            #[inline]
10567            fn tokenize(&self) -> Self::Token<'_> {
10568                ()
10569            }
10570            #[inline]
10571            fn abi_decode_returns(
10572                data: &[u8],
10573                validate: bool,
10574            ) -> alloy_sol_types::Result<Self::Return> {
10575                <Self::ReturnTuple<
10576                    '_,
10577                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10578                    .map(Into::into)
10579            }
10580        }
10581    };
10582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10583    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10584```solidity
10585function isEpochRoot(uint64 blockHeight) external view returns (bool);
10586```*/
10587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10588    #[derive(Clone)]
10589    pub struct isEpochRootCall {
10590        #[allow(missing_docs)]
10591        pub blockHeight: u64,
10592    }
10593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10594    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10596    #[derive(Clone)]
10597    pub struct isEpochRootReturn {
10598        #[allow(missing_docs)]
10599        pub _0: bool,
10600    }
10601    #[allow(
10602        non_camel_case_types,
10603        non_snake_case,
10604        clippy::pub_underscore_fields,
10605        clippy::style
10606    )]
10607    const _: () = {
10608        use alloy::sol_types as alloy_sol_types;
10609        {
10610            #[doc(hidden)]
10611            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10612            #[doc(hidden)]
10613            type UnderlyingRustTuple<'a> = (u64,);
10614            #[cfg(test)]
10615            #[allow(dead_code, unreachable_patterns)]
10616            fn _type_assertion(
10617                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10618            ) {
10619                match _t {
10620                    alloy_sol_types::private::AssertTypeEq::<
10621                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10622                    >(_) => {}
10623                }
10624            }
10625            #[automatically_derived]
10626            #[doc(hidden)]
10627            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10628                fn from(value: isEpochRootCall) -> Self {
10629                    (value.blockHeight,)
10630                }
10631            }
10632            #[automatically_derived]
10633            #[doc(hidden)]
10634            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10636                    Self { blockHeight: tuple.0 }
10637                }
10638            }
10639        }
10640        {
10641            #[doc(hidden)]
10642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10643            #[doc(hidden)]
10644            type UnderlyingRustTuple<'a> = (bool,);
10645            #[cfg(test)]
10646            #[allow(dead_code, unreachable_patterns)]
10647            fn _type_assertion(
10648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10649            ) {
10650                match _t {
10651                    alloy_sol_types::private::AssertTypeEq::<
10652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10653                    >(_) => {}
10654                }
10655            }
10656            #[automatically_derived]
10657            #[doc(hidden)]
10658            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10659                fn from(value: isEpochRootReturn) -> Self {
10660                    (value._0,)
10661                }
10662            }
10663            #[automatically_derived]
10664            #[doc(hidden)]
10665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10667                    Self { _0: tuple.0 }
10668                }
10669            }
10670        }
10671        #[automatically_derived]
10672        impl alloy_sol_types::SolCall for isEpochRootCall {
10673            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10674            type Token<'a> = <Self::Parameters<
10675                'a,
10676            > as alloy_sol_types::SolType>::Token<'a>;
10677            type Return = isEpochRootReturn;
10678            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10679            type ReturnToken<'a> = <Self::ReturnTuple<
10680                'a,
10681            > as alloy_sol_types::SolType>::Token<'a>;
10682            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10683            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10684            #[inline]
10685            fn new<'a>(
10686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10687            ) -> Self {
10688                tuple.into()
10689            }
10690            #[inline]
10691            fn tokenize(&self) -> Self::Token<'_> {
10692                (
10693                    <alloy::sol_types::sol_data::Uint<
10694                        64,
10695                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10696                )
10697            }
10698            #[inline]
10699            fn abi_decode_returns(
10700                data: &[u8],
10701                validate: bool,
10702            ) -> alloy_sol_types::Result<Self::Return> {
10703                <Self::ReturnTuple<
10704                    '_,
10705                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10706                    .map(Into::into)
10707            }
10708        }
10709    };
10710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10711    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10712```solidity
10713function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10714```*/
10715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10716    #[derive(Clone)]
10717    pub struct isGtEpochRootCall {
10718        #[allow(missing_docs)]
10719        pub blockHeight: u64,
10720    }
10721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10722    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10724    #[derive(Clone)]
10725    pub struct isGtEpochRootReturn {
10726        #[allow(missing_docs)]
10727        pub _0: bool,
10728    }
10729    #[allow(
10730        non_camel_case_types,
10731        non_snake_case,
10732        clippy::pub_underscore_fields,
10733        clippy::style
10734    )]
10735    const _: () = {
10736        use alloy::sol_types as alloy_sol_types;
10737        {
10738            #[doc(hidden)]
10739            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10740            #[doc(hidden)]
10741            type UnderlyingRustTuple<'a> = (u64,);
10742            #[cfg(test)]
10743            #[allow(dead_code, unreachable_patterns)]
10744            fn _type_assertion(
10745                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10746            ) {
10747                match _t {
10748                    alloy_sol_types::private::AssertTypeEq::<
10749                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10750                    >(_) => {}
10751                }
10752            }
10753            #[automatically_derived]
10754            #[doc(hidden)]
10755            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10756                fn from(value: isGtEpochRootCall) -> Self {
10757                    (value.blockHeight,)
10758                }
10759            }
10760            #[automatically_derived]
10761            #[doc(hidden)]
10762            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10763                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10764                    Self { blockHeight: tuple.0 }
10765                }
10766            }
10767        }
10768        {
10769            #[doc(hidden)]
10770            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10771            #[doc(hidden)]
10772            type UnderlyingRustTuple<'a> = (bool,);
10773            #[cfg(test)]
10774            #[allow(dead_code, unreachable_patterns)]
10775            fn _type_assertion(
10776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10777            ) {
10778                match _t {
10779                    alloy_sol_types::private::AssertTypeEq::<
10780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10781                    >(_) => {}
10782                }
10783            }
10784            #[automatically_derived]
10785            #[doc(hidden)]
10786            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10787                fn from(value: isGtEpochRootReturn) -> Self {
10788                    (value._0,)
10789                }
10790            }
10791            #[automatically_derived]
10792            #[doc(hidden)]
10793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10795                    Self { _0: tuple.0 }
10796                }
10797            }
10798        }
10799        #[automatically_derived]
10800        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10801            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10802            type Token<'a> = <Self::Parameters<
10803                'a,
10804            > as alloy_sol_types::SolType>::Token<'a>;
10805            type Return = isGtEpochRootReturn;
10806            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10807            type ReturnToken<'a> = <Self::ReturnTuple<
10808                'a,
10809            > as alloy_sol_types::SolType>::Token<'a>;
10810            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10811            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10812            #[inline]
10813            fn new<'a>(
10814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10815            ) -> Self {
10816                tuple.into()
10817            }
10818            #[inline]
10819            fn tokenize(&self) -> Self::Token<'_> {
10820                (
10821                    <alloy::sol_types::sol_data::Uint<
10822                        64,
10823                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10824                )
10825            }
10826            #[inline]
10827            fn abi_decode_returns(
10828                data: &[u8],
10829                validate: bool,
10830            ) -> alloy_sol_types::Result<Self::Return> {
10831                <Self::ReturnTuple<
10832                    '_,
10833                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10834                    .map(Into::into)
10835            }
10836        }
10837    };
10838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10839    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10840```solidity
10841function isPermissionedProverEnabled() external view returns (bool);
10842```*/
10843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10844    #[derive(Clone)]
10845    pub struct isPermissionedProverEnabledCall {}
10846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10847    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10849    #[derive(Clone)]
10850    pub struct isPermissionedProverEnabledReturn {
10851        #[allow(missing_docs)]
10852        pub _0: bool,
10853    }
10854    #[allow(
10855        non_camel_case_types,
10856        non_snake_case,
10857        clippy::pub_underscore_fields,
10858        clippy::style
10859    )]
10860    const _: () = {
10861        use alloy::sol_types as alloy_sol_types;
10862        {
10863            #[doc(hidden)]
10864            type UnderlyingSolTuple<'a> = ();
10865            #[doc(hidden)]
10866            type UnderlyingRustTuple<'a> = ();
10867            #[cfg(test)]
10868            #[allow(dead_code, unreachable_patterns)]
10869            fn _type_assertion(
10870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10871            ) {
10872                match _t {
10873                    alloy_sol_types::private::AssertTypeEq::<
10874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10875                    >(_) => {}
10876                }
10877            }
10878            #[automatically_derived]
10879            #[doc(hidden)]
10880            impl ::core::convert::From<isPermissionedProverEnabledCall>
10881            for UnderlyingRustTuple<'_> {
10882                fn from(value: isPermissionedProverEnabledCall) -> Self {
10883                    ()
10884                }
10885            }
10886            #[automatically_derived]
10887            #[doc(hidden)]
10888            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10889            for isPermissionedProverEnabledCall {
10890                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10891                    Self {}
10892                }
10893            }
10894        }
10895        {
10896            #[doc(hidden)]
10897            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10898            #[doc(hidden)]
10899            type UnderlyingRustTuple<'a> = (bool,);
10900            #[cfg(test)]
10901            #[allow(dead_code, unreachable_patterns)]
10902            fn _type_assertion(
10903                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10904            ) {
10905                match _t {
10906                    alloy_sol_types::private::AssertTypeEq::<
10907                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10908                    >(_) => {}
10909                }
10910            }
10911            #[automatically_derived]
10912            #[doc(hidden)]
10913            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10914            for UnderlyingRustTuple<'_> {
10915                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10916                    (value._0,)
10917                }
10918            }
10919            #[automatically_derived]
10920            #[doc(hidden)]
10921            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10922            for isPermissionedProverEnabledReturn {
10923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10924                    Self { _0: tuple.0 }
10925                }
10926            }
10927        }
10928        #[automatically_derived]
10929        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10930            type Parameters<'a> = ();
10931            type Token<'a> = <Self::Parameters<
10932                'a,
10933            > as alloy_sol_types::SolType>::Token<'a>;
10934            type Return = isPermissionedProverEnabledReturn;
10935            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10936            type ReturnToken<'a> = <Self::ReturnTuple<
10937                'a,
10938            > as alloy_sol_types::SolType>::Token<'a>;
10939            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10940            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10941            #[inline]
10942            fn new<'a>(
10943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10944            ) -> Self {
10945                tuple.into()
10946            }
10947            #[inline]
10948            fn tokenize(&self) -> Self::Token<'_> {
10949                ()
10950            }
10951            #[inline]
10952            fn abi_decode_returns(
10953                data: &[u8],
10954                validate: bool,
10955            ) -> alloy_sol_types::Result<Self::Return> {
10956                <Self::ReturnTuple<
10957                    '_,
10958                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10959                    .map(Into::into)
10960            }
10961        }
10962    };
10963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10964    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10965```solidity
10966function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
10967```*/
10968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10969    #[derive(Clone)]
10970    pub struct lagOverEscapeHatchThresholdCall {
10971        #[allow(missing_docs)]
10972        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10973        #[allow(missing_docs)]
10974        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10975    }
10976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10977    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10979    #[derive(Clone)]
10980    pub struct lagOverEscapeHatchThresholdReturn {
10981        #[allow(missing_docs)]
10982        pub _0: bool,
10983    }
10984    #[allow(
10985        non_camel_case_types,
10986        non_snake_case,
10987        clippy::pub_underscore_fields,
10988        clippy::style
10989    )]
10990    const _: () = {
10991        use alloy::sol_types as alloy_sol_types;
10992        {
10993            #[doc(hidden)]
10994            type UnderlyingSolTuple<'a> = (
10995                alloy::sol_types::sol_data::Uint<256>,
10996                alloy::sol_types::sol_data::Uint<256>,
10997            );
10998            #[doc(hidden)]
10999            type UnderlyingRustTuple<'a> = (
11000                alloy::sol_types::private::primitives::aliases::U256,
11001                alloy::sol_types::private::primitives::aliases::U256,
11002            );
11003            #[cfg(test)]
11004            #[allow(dead_code, unreachable_patterns)]
11005            fn _type_assertion(
11006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11007            ) {
11008                match _t {
11009                    alloy_sol_types::private::AssertTypeEq::<
11010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11011                    >(_) => {}
11012                }
11013            }
11014            #[automatically_derived]
11015            #[doc(hidden)]
11016            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11017            for UnderlyingRustTuple<'_> {
11018                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11019                    (value.blockNumber, value.threshold)
11020                }
11021            }
11022            #[automatically_derived]
11023            #[doc(hidden)]
11024            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11025            for lagOverEscapeHatchThresholdCall {
11026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11027                    Self {
11028                        blockNumber: tuple.0,
11029                        threshold: tuple.1,
11030                    }
11031                }
11032            }
11033        }
11034        {
11035            #[doc(hidden)]
11036            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11037            #[doc(hidden)]
11038            type UnderlyingRustTuple<'a> = (bool,);
11039            #[cfg(test)]
11040            #[allow(dead_code, unreachable_patterns)]
11041            fn _type_assertion(
11042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11043            ) {
11044                match _t {
11045                    alloy_sol_types::private::AssertTypeEq::<
11046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11047                    >(_) => {}
11048                }
11049            }
11050            #[automatically_derived]
11051            #[doc(hidden)]
11052            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11053            for UnderlyingRustTuple<'_> {
11054                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11055                    (value._0,)
11056                }
11057            }
11058            #[automatically_derived]
11059            #[doc(hidden)]
11060            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11061            for lagOverEscapeHatchThresholdReturn {
11062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11063                    Self { _0: tuple.0 }
11064                }
11065            }
11066        }
11067        #[automatically_derived]
11068        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11069            type Parameters<'a> = (
11070                alloy::sol_types::sol_data::Uint<256>,
11071                alloy::sol_types::sol_data::Uint<256>,
11072            );
11073            type Token<'a> = <Self::Parameters<
11074                'a,
11075            > as alloy_sol_types::SolType>::Token<'a>;
11076            type Return = lagOverEscapeHatchThresholdReturn;
11077            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11078            type ReturnToken<'a> = <Self::ReturnTuple<
11079                'a,
11080            > as alloy_sol_types::SolType>::Token<'a>;
11081            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11082            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11083            #[inline]
11084            fn new<'a>(
11085                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11086            ) -> Self {
11087                tuple.into()
11088            }
11089            #[inline]
11090            fn tokenize(&self) -> Self::Token<'_> {
11091                (
11092                    <alloy::sol_types::sol_data::Uint<
11093                        256,
11094                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11095                    <alloy::sol_types::sol_data::Uint<
11096                        256,
11097                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11098                )
11099            }
11100            #[inline]
11101            fn abi_decode_returns(
11102                data: &[u8],
11103                validate: bool,
11104            ) -> alloy_sol_types::Result<Self::Return> {
11105                <Self::ReturnTuple<
11106                    '_,
11107                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11108                    .map(Into::into)
11109            }
11110        }
11111    };
11112    #[derive()]
11113    /**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`.
11114```solidity
11115function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11116```*/
11117    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11118    #[derive(Clone)]
11119    pub struct newFinalizedState_0Call {
11120        #[allow(missing_docs)]
11121        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11122        #[allow(missing_docs)]
11123        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11124    }
11125    ///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))`](newFinalizedState_0Call) function.
11126    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11127    #[derive(Clone)]
11128    pub struct newFinalizedState_0Return {}
11129    #[allow(
11130        non_camel_case_types,
11131        non_snake_case,
11132        clippy::pub_underscore_fields,
11133        clippy::style
11134    )]
11135    const _: () = {
11136        use alloy::sol_types as alloy_sol_types;
11137        {
11138            #[doc(hidden)]
11139            type UnderlyingSolTuple<'a> = (
11140                LightClient::LightClientState,
11141                IPlonkVerifier::PlonkProof,
11142            );
11143            #[doc(hidden)]
11144            type UnderlyingRustTuple<'a> = (
11145                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11146                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11147            );
11148            #[cfg(test)]
11149            #[allow(dead_code, unreachable_patterns)]
11150            fn _type_assertion(
11151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11152            ) {
11153                match _t {
11154                    alloy_sol_types::private::AssertTypeEq::<
11155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11156                    >(_) => {}
11157                }
11158            }
11159            #[automatically_derived]
11160            #[doc(hidden)]
11161            impl ::core::convert::From<newFinalizedState_0Call>
11162            for UnderlyingRustTuple<'_> {
11163                fn from(value: newFinalizedState_0Call) -> Self {
11164                    (value._0, value._1)
11165                }
11166            }
11167            #[automatically_derived]
11168            #[doc(hidden)]
11169            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11170            for newFinalizedState_0Call {
11171                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11172                    Self { _0: tuple.0, _1: tuple.1 }
11173                }
11174            }
11175        }
11176        {
11177            #[doc(hidden)]
11178            type UnderlyingSolTuple<'a> = ();
11179            #[doc(hidden)]
11180            type UnderlyingRustTuple<'a> = ();
11181            #[cfg(test)]
11182            #[allow(dead_code, unreachable_patterns)]
11183            fn _type_assertion(
11184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11185            ) {
11186                match _t {
11187                    alloy_sol_types::private::AssertTypeEq::<
11188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11189                    >(_) => {}
11190                }
11191            }
11192            #[automatically_derived]
11193            #[doc(hidden)]
11194            impl ::core::convert::From<newFinalizedState_0Return>
11195            for UnderlyingRustTuple<'_> {
11196                fn from(value: newFinalizedState_0Return) -> Self {
11197                    ()
11198                }
11199            }
11200            #[automatically_derived]
11201            #[doc(hidden)]
11202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11203            for newFinalizedState_0Return {
11204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11205                    Self {}
11206                }
11207            }
11208        }
11209        #[automatically_derived]
11210        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11211            type Parameters<'a> = (
11212                LightClient::LightClientState,
11213                IPlonkVerifier::PlonkProof,
11214            );
11215            type Token<'a> = <Self::Parameters<
11216                'a,
11217            > as alloy_sol_types::SolType>::Token<'a>;
11218            type Return = newFinalizedState_0Return;
11219            type ReturnTuple<'a> = ();
11220            type ReturnToken<'a> = <Self::ReturnTuple<
11221                'a,
11222            > as alloy_sol_types::SolType>::Token<'a>;
11223            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))";
11224            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11225            #[inline]
11226            fn new<'a>(
11227                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11228            ) -> Self {
11229                tuple.into()
11230            }
11231            #[inline]
11232            fn tokenize(&self) -> Self::Token<'_> {
11233                (
11234                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11235                        &self._0,
11236                    ),
11237                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11238                        &self._1,
11239                    ),
11240                )
11241            }
11242            #[inline]
11243            fn abi_decode_returns(
11244                data: &[u8],
11245                validate: bool,
11246            ) -> alloy_sol_types::Result<Self::Return> {
11247                <Self::ReturnTuple<
11248                    '_,
11249                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11250                    .map(Into::into)
11251            }
11252        }
11253    };
11254    #[derive()]
11255    /**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,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11256```solidity
11257function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
11258```*/
11259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11260    #[derive(Clone)]
11261    pub struct newFinalizedState_1Call {
11262        #[allow(missing_docs)]
11263        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11264        #[allow(missing_docs)]
11265        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11266        #[allow(missing_docs)]
11267        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11268    }
11269    ///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,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11271    #[derive(Clone)]
11272    pub struct newFinalizedState_1Return {}
11273    #[allow(
11274        non_camel_case_types,
11275        non_snake_case,
11276        clippy::pub_underscore_fields,
11277        clippy::style
11278    )]
11279    const _: () = {
11280        use alloy::sol_types as alloy_sol_types;
11281        {
11282            #[doc(hidden)]
11283            type UnderlyingSolTuple<'a> = (
11284                LightClient::LightClientState,
11285                LightClient::StakeTableState,
11286                IPlonkVerifier::PlonkProof,
11287            );
11288            #[doc(hidden)]
11289            type UnderlyingRustTuple<'a> = (
11290                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11291                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11292                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11293            );
11294            #[cfg(test)]
11295            #[allow(dead_code, unreachable_patterns)]
11296            fn _type_assertion(
11297                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11298            ) {
11299                match _t {
11300                    alloy_sol_types::private::AssertTypeEq::<
11301                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11302                    >(_) => {}
11303                }
11304            }
11305            #[automatically_derived]
11306            #[doc(hidden)]
11307            impl ::core::convert::From<newFinalizedState_1Call>
11308            for UnderlyingRustTuple<'_> {
11309                fn from(value: newFinalizedState_1Call) -> Self {
11310                    (value._0, value._1, value._2)
11311                }
11312            }
11313            #[automatically_derived]
11314            #[doc(hidden)]
11315            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11316            for newFinalizedState_1Call {
11317                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11318                    Self {
11319                        _0: tuple.0,
11320                        _1: tuple.1,
11321                        _2: tuple.2,
11322                    }
11323                }
11324            }
11325        }
11326        {
11327            #[doc(hidden)]
11328            type UnderlyingSolTuple<'a> = ();
11329            #[doc(hidden)]
11330            type UnderlyingRustTuple<'a> = ();
11331            #[cfg(test)]
11332            #[allow(dead_code, unreachable_patterns)]
11333            fn _type_assertion(
11334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11335            ) {
11336                match _t {
11337                    alloy_sol_types::private::AssertTypeEq::<
11338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11339                    >(_) => {}
11340                }
11341            }
11342            #[automatically_derived]
11343            #[doc(hidden)]
11344            impl ::core::convert::From<newFinalizedState_1Return>
11345            for UnderlyingRustTuple<'_> {
11346                fn from(value: newFinalizedState_1Return) -> Self {
11347                    ()
11348                }
11349            }
11350            #[automatically_derived]
11351            #[doc(hidden)]
11352            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11353            for newFinalizedState_1Return {
11354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11355                    Self {}
11356                }
11357            }
11358        }
11359        #[automatically_derived]
11360        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11361            type Parameters<'a> = (
11362                LightClient::LightClientState,
11363                LightClient::StakeTableState,
11364                IPlonkVerifier::PlonkProof,
11365            );
11366            type Token<'a> = <Self::Parameters<
11367                'a,
11368            > as alloy_sol_types::SolType>::Token<'a>;
11369            type Return = newFinalizedState_1Return;
11370            type ReturnTuple<'a> = ();
11371            type ReturnToken<'a> = <Self::ReturnTuple<
11372                'a,
11373            > as alloy_sol_types::SolType>::Token<'a>;
11374            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,uint256,uint256,uint256,uint256))";
11375            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11376            #[inline]
11377            fn new<'a>(
11378                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11379            ) -> Self {
11380                tuple.into()
11381            }
11382            #[inline]
11383            fn tokenize(&self) -> Self::Token<'_> {
11384                (
11385                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11386                        &self._0,
11387                    ),
11388                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11389                        &self._1,
11390                    ),
11391                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11392                        &self._2,
11393                    ),
11394                )
11395            }
11396            #[inline]
11397            fn abi_decode_returns(
11398                data: &[u8],
11399                validate: bool,
11400            ) -> alloy_sol_types::Result<Self::Return> {
11401                <Self::ReturnTuple<
11402                    '_,
11403                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11404                    .map(Into::into)
11405            }
11406        }
11407    };
11408    #[derive()]
11409    /**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,uint256,uint256,uint256,uint256,uint256))` and selector `0xaabd5db3`.
11410```solidity
11411function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
11412```*/
11413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11414    #[derive(Clone)]
11415    pub struct newFinalizedState_2Call {
11416        #[allow(missing_docs)]
11417        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11418        #[allow(missing_docs)]
11419        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11420        #[allow(missing_docs)]
11421        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
11422        #[allow(missing_docs)]
11423        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11424    }
11425    ///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,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_2Call) function.
11426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11427    #[derive(Clone)]
11428    pub struct newFinalizedState_2Return {}
11429    #[allow(
11430        non_camel_case_types,
11431        non_snake_case,
11432        clippy::pub_underscore_fields,
11433        clippy::style
11434    )]
11435    const _: () = {
11436        use alloy::sol_types as alloy_sol_types;
11437        {
11438            #[doc(hidden)]
11439            type UnderlyingSolTuple<'a> = (
11440                LightClient::LightClientState,
11441                LightClient::StakeTableState,
11442                alloy::sol_types::sol_data::Uint<256>,
11443                IPlonkVerifier::PlonkProof,
11444            );
11445            #[doc(hidden)]
11446            type UnderlyingRustTuple<'a> = (
11447                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11448                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11449                alloy::sol_types::private::primitives::aliases::U256,
11450                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11451            );
11452            #[cfg(test)]
11453            #[allow(dead_code, unreachable_patterns)]
11454            fn _type_assertion(
11455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11456            ) {
11457                match _t {
11458                    alloy_sol_types::private::AssertTypeEq::<
11459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11460                    >(_) => {}
11461                }
11462            }
11463            #[automatically_derived]
11464            #[doc(hidden)]
11465            impl ::core::convert::From<newFinalizedState_2Call>
11466            for UnderlyingRustTuple<'_> {
11467                fn from(value: newFinalizedState_2Call) -> Self {
11468                    (
11469                        value.newState,
11470                        value.nextStakeTable,
11471                        value.newAuthRoot,
11472                        value.proof,
11473                    )
11474                }
11475            }
11476            #[automatically_derived]
11477            #[doc(hidden)]
11478            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11479            for newFinalizedState_2Call {
11480                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11481                    Self {
11482                        newState: tuple.0,
11483                        nextStakeTable: tuple.1,
11484                        newAuthRoot: tuple.2,
11485                        proof: tuple.3,
11486                    }
11487                }
11488            }
11489        }
11490        {
11491            #[doc(hidden)]
11492            type UnderlyingSolTuple<'a> = ();
11493            #[doc(hidden)]
11494            type UnderlyingRustTuple<'a> = ();
11495            #[cfg(test)]
11496            #[allow(dead_code, unreachable_patterns)]
11497            fn _type_assertion(
11498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11499            ) {
11500                match _t {
11501                    alloy_sol_types::private::AssertTypeEq::<
11502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11503                    >(_) => {}
11504                }
11505            }
11506            #[automatically_derived]
11507            #[doc(hidden)]
11508            impl ::core::convert::From<newFinalizedState_2Return>
11509            for UnderlyingRustTuple<'_> {
11510                fn from(value: newFinalizedState_2Return) -> Self {
11511                    ()
11512                }
11513            }
11514            #[automatically_derived]
11515            #[doc(hidden)]
11516            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11517            for newFinalizedState_2Return {
11518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11519                    Self {}
11520                }
11521            }
11522        }
11523        #[automatically_derived]
11524        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
11525            type Parameters<'a> = (
11526                LightClient::LightClientState,
11527                LightClient::StakeTableState,
11528                alloy::sol_types::sol_data::Uint<256>,
11529                IPlonkVerifier::PlonkProof,
11530            );
11531            type Token<'a> = <Self::Parameters<
11532                'a,
11533            > as alloy_sol_types::SolType>::Token<'a>;
11534            type Return = newFinalizedState_2Return;
11535            type ReturnTuple<'a> = ();
11536            type ReturnToken<'a> = <Self::ReturnTuple<
11537                'a,
11538            > as alloy_sol_types::SolType>::Token<'a>;
11539            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,uint256,uint256,uint256,uint256,uint256))";
11540            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
11541            #[inline]
11542            fn new<'a>(
11543                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11544            ) -> Self {
11545                tuple.into()
11546            }
11547            #[inline]
11548            fn tokenize(&self) -> Self::Token<'_> {
11549                (
11550                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11551                        &self.newState,
11552                    ),
11553                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11554                        &self.nextStakeTable,
11555                    ),
11556                    <alloy::sol_types::sol_data::Uint<
11557                        256,
11558                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
11559                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11560                        &self.proof,
11561                    ),
11562                )
11563            }
11564            #[inline]
11565            fn abi_decode_returns(
11566                data: &[u8],
11567                validate: bool,
11568            ) -> alloy_sol_types::Result<Self::Return> {
11569                <Self::ReturnTuple<
11570                    '_,
11571                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11572                    .map(Into::into)
11573            }
11574        }
11575    };
11576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11577    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11578```solidity
11579function owner() external view returns (address);
11580```*/
11581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11582    #[derive(Clone)]
11583    pub struct ownerCall {}
11584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11585    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11587    #[derive(Clone)]
11588    pub struct ownerReturn {
11589        #[allow(missing_docs)]
11590        pub _0: alloy::sol_types::private::Address,
11591    }
11592    #[allow(
11593        non_camel_case_types,
11594        non_snake_case,
11595        clippy::pub_underscore_fields,
11596        clippy::style
11597    )]
11598    const _: () = {
11599        use alloy::sol_types as alloy_sol_types;
11600        {
11601            #[doc(hidden)]
11602            type UnderlyingSolTuple<'a> = ();
11603            #[doc(hidden)]
11604            type UnderlyingRustTuple<'a> = ();
11605            #[cfg(test)]
11606            #[allow(dead_code, unreachable_patterns)]
11607            fn _type_assertion(
11608                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11609            ) {
11610                match _t {
11611                    alloy_sol_types::private::AssertTypeEq::<
11612                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11613                    >(_) => {}
11614                }
11615            }
11616            #[automatically_derived]
11617            #[doc(hidden)]
11618            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11619                fn from(value: ownerCall) -> Self {
11620                    ()
11621                }
11622            }
11623            #[automatically_derived]
11624            #[doc(hidden)]
11625            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11627                    Self {}
11628                }
11629            }
11630        }
11631        {
11632            #[doc(hidden)]
11633            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11634            #[doc(hidden)]
11635            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
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<ownerReturn> for UnderlyingRustTuple<'_> {
11650                fn from(value: ownerReturn) -> Self {
11651                    (value._0,)
11652                }
11653            }
11654            #[automatically_derived]
11655            #[doc(hidden)]
11656            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11658                    Self { _0: tuple.0 }
11659                }
11660            }
11661        }
11662        #[automatically_derived]
11663        impl alloy_sol_types::SolCall for ownerCall {
11664            type Parameters<'a> = ();
11665            type Token<'a> = <Self::Parameters<
11666                'a,
11667            > as alloy_sol_types::SolType>::Token<'a>;
11668            type Return = ownerReturn;
11669            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11670            type ReturnToken<'a> = <Self::ReturnTuple<
11671                'a,
11672            > as alloy_sol_types::SolType>::Token<'a>;
11673            const SIGNATURE: &'static str = "owner()";
11674            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11675            #[inline]
11676            fn new<'a>(
11677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11678            ) -> Self {
11679                tuple.into()
11680            }
11681            #[inline]
11682            fn tokenize(&self) -> Self::Token<'_> {
11683                ()
11684            }
11685            #[inline]
11686            fn abi_decode_returns(
11687                data: &[u8],
11688                validate: bool,
11689            ) -> alloy_sol_types::Result<Self::Return> {
11690                <Self::ReturnTuple<
11691                    '_,
11692                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11693                    .map(Into::into)
11694            }
11695        }
11696    };
11697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11698    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11699```solidity
11700function permissionedProver() external view returns (address);
11701```*/
11702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11703    #[derive(Clone)]
11704    pub struct permissionedProverCall {}
11705    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11706    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11708    #[derive(Clone)]
11709    pub struct permissionedProverReturn {
11710        #[allow(missing_docs)]
11711        pub _0: alloy::sol_types::private::Address,
11712    }
11713    #[allow(
11714        non_camel_case_types,
11715        non_snake_case,
11716        clippy::pub_underscore_fields,
11717        clippy::style
11718    )]
11719    const _: () = {
11720        use alloy::sol_types as alloy_sol_types;
11721        {
11722            #[doc(hidden)]
11723            type UnderlyingSolTuple<'a> = ();
11724            #[doc(hidden)]
11725            type UnderlyingRustTuple<'a> = ();
11726            #[cfg(test)]
11727            #[allow(dead_code, unreachable_patterns)]
11728            fn _type_assertion(
11729                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11730            ) {
11731                match _t {
11732                    alloy_sol_types::private::AssertTypeEq::<
11733                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11734                    >(_) => {}
11735                }
11736            }
11737            #[automatically_derived]
11738            #[doc(hidden)]
11739            impl ::core::convert::From<permissionedProverCall>
11740            for UnderlyingRustTuple<'_> {
11741                fn from(value: permissionedProverCall) -> Self {
11742                    ()
11743                }
11744            }
11745            #[automatically_derived]
11746            #[doc(hidden)]
11747            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11748            for permissionedProverCall {
11749                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11750                    Self {}
11751                }
11752            }
11753        }
11754        {
11755            #[doc(hidden)]
11756            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11757            #[doc(hidden)]
11758            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11759            #[cfg(test)]
11760            #[allow(dead_code, unreachable_patterns)]
11761            fn _type_assertion(
11762                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11763            ) {
11764                match _t {
11765                    alloy_sol_types::private::AssertTypeEq::<
11766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11767                    >(_) => {}
11768                }
11769            }
11770            #[automatically_derived]
11771            #[doc(hidden)]
11772            impl ::core::convert::From<permissionedProverReturn>
11773            for UnderlyingRustTuple<'_> {
11774                fn from(value: permissionedProverReturn) -> Self {
11775                    (value._0,)
11776                }
11777            }
11778            #[automatically_derived]
11779            #[doc(hidden)]
11780            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11781            for permissionedProverReturn {
11782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11783                    Self { _0: tuple.0 }
11784                }
11785            }
11786        }
11787        #[automatically_derived]
11788        impl alloy_sol_types::SolCall for permissionedProverCall {
11789            type Parameters<'a> = ();
11790            type Token<'a> = <Self::Parameters<
11791                'a,
11792            > as alloy_sol_types::SolType>::Token<'a>;
11793            type Return = permissionedProverReturn;
11794            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11795            type ReturnToken<'a> = <Self::ReturnTuple<
11796                'a,
11797            > as alloy_sol_types::SolType>::Token<'a>;
11798            const SIGNATURE: &'static str = "permissionedProver()";
11799            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11800            #[inline]
11801            fn new<'a>(
11802                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11803            ) -> Self {
11804                tuple.into()
11805            }
11806            #[inline]
11807            fn tokenize(&self) -> Self::Token<'_> {
11808                ()
11809            }
11810            #[inline]
11811            fn abi_decode_returns(
11812                data: &[u8],
11813                validate: bool,
11814            ) -> alloy_sol_types::Result<Self::Return> {
11815                <Self::ReturnTuple<
11816                    '_,
11817                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11818                    .map(Into::into)
11819            }
11820        }
11821    };
11822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11823    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11824```solidity
11825function proxiableUUID() external view returns (bytes32);
11826```*/
11827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11828    #[derive(Clone)]
11829    pub struct proxiableUUIDCall {}
11830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11831    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11833    #[derive(Clone)]
11834    pub struct proxiableUUIDReturn {
11835        #[allow(missing_docs)]
11836        pub _0: alloy::sol_types::private::FixedBytes<32>,
11837    }
11838    #[allow(
11839        non_camel_case_types,
11840        non_snake_case,
11841        clippy::pub_underscore_fields,
11842        clippy::style
11843    )]
11844    const _: () = {
11845        use alloy::sol_types as alloy_sol_types;
11846        {
11847            #[doc(hidden)]
11848            type UnderlyingSolTuple<'a> = ();
11849            #[doc(hidden)]
11850            type UnderlyingRustTuple<'a> = ();
11851            #[cfg(test)]
11852            #[allow(dead_code, unreachable_patterns)]
11853            fn _type_assertion(
11854                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11855            ) {
11856                match _t {
11857                    alloy_sol_types::private::AssertTypeEq::<
11858                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11859                    >(_) => {}
11860                }
11861            }
11862            #[automatically_derived]
11863            #[doc(hidden)]
11864            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11865                fn from(value: proxiableUUIDCall) -> Self {
11866                    ()
11867                }
11868            }
11869            #[automatically_derived]
11870            #[doc(hidden)]
11871            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11872                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11873                    Self {}
11874                }
11875            }
11876        }
11877        {
11878            #[doc(hidden)]
11879            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11880            #[doc(hidden)]
11881            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11882            #[cfg(test)]
11883            #[allow(dead_code, unreachable_patterns)]
11884            fn _type_assertion(
11885                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11886            ) {
11887                match _t {
11888                    alloy_sol_types::private::AssertTypeEq::<
11889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11890                    >(_) => {}
11891                }
11892            }
11893            #[automatically_derived]
11894            #[doc(hidden)]
11895            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11896                fn from(value: proxiableUUIDReturn) -> Self {
11897                    (value._0,)
11898                }
11899            }
11900            #[automatically_derived]
11901            #[doc(hidden)]
11902            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11903                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11904                    Self { _0: tuple.0 }
11905                }
11906            }
11907        }
11908        #[automatically_derived]
11909        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11910            type Parameters<'a> = ();
11911            type Token<'a> = <Self::Parameters<
11912                'a,
11913            > as alloy_sol_types::SolType>::Token<'a>;
11914            type Return = proxiableUUIDReturn;
11915            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11916            type ReturnToken<'a> = <Self::ReturnTuple<
11917                'a,
11918            > as alloy_sol_types::SolType>::Token<'a>;
11919            const SIGNATURE: &'static str = "proxiableUUID()";
11920            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11921            #[inline]
11922            fn new<'a>(
11923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11924            ) -> Self {
11925                tuple.into()
11926            }
11927            #[inline]
11928            fn tokenize(&self) -> Self::Token<'_> {
11929                ()
11930            }
11931            #[inline]
11932            fn abi_decode_returns(
11933                data: &[u8],
11934                validate: bool,
11935            ) -> alloy_sol_types::Result<Self::Return> {
11936                <Self::ReturnTuple<
11937                    '_,
11938                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11939                    .map(Into::into)
11940            }
11941        }
11942    };
11943    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11944    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11945```solidity
11946function renounceOwnership() external;
11947```*/
11948    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11949    #[derive(Clone)]
11950    pub struct renounceOwnershipCall {}
11951    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11953    #[derive(Clone)]
11954    pub struct renounceOwnershipReturn {}
11955    #[allow(
11956        non_camel_case_types,
11957        non_snake_case,
11958        clippy::pub_underscore_fields,
11959        clippy::style
11960    )]
11961    const _: () = {
11962        use alloy::sol_types as alloy_sol_types;
11963        {
11964            #[doc(hidden)]
11965            type UnderlyingSolTuple<'a> = ();
11966            #[doc(hidden)]
11967            type UnderlyingRustTuple<'a> = ();
11968            #[cfg(test)]
11969            #[allow(dead_code, unreachable_patterns)]
11970            fn _type_assertion(
11971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11972            ) {
11973                match _t {
11974                    alloy_sol_types::private::AssertTypeEq::<
11975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11976                    >(_) => {}
11977                }
11978            }
11979            #[automatically_derived]
11980            #[doc(hidden)]
11981            impl ::core::convert::From<renounceOwnershipCall>
11982            for UnderlyingRustTuple<'_> {
11983                fn from(value: renounceOwnershipCall) -> Self {
11984                    ()
11985                }
11986            }
11987            #[automatically_derived]
11988            #[doc(hidden)]
11989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11990            for renounceOwnershipCall {
11991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11992                    Self {}
11993                }
11994            }
11995        }
11996        {
11997            #[doc(hidden)]
11998            type UnderlyingSolTuple<'a> = ();
11999            #[doc(hidden)]
12000            type UnderlyingRustTuple<'a> = ();
12001            #[cfg(test)]
12002            #[allow(dead_code, unreachable_patterns)]
12003            fn _type_assertion(
12004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12005            ) {
12006                match _t {
12007                    alloy_sol_types::private::AssertTypeEq::<
12008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12009                    >(_) => {}
12010                }
12011            }
12012            #[automatically_derived]
12013            #[doc(hidden)]
12014            impl ::core::convert::From<renounceOwnershipReturn>
12015            for UnderlyingRustTuple<'_> {
12016                fn from(value: renounceOwnershipReturn) -> Self {
12017                    ()
12018                }
12019            }
12020            #[automatically_derived]
12021            #[doc(hidden)]
12022            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12023            for renounceOwnershipReturn {
12024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12025                    Self {}
12026                }
12027            }
12028        }
12029        #[automatically_derived]
12030        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12031            type Parameters<'a> = ();
12032            type Token<'a> = <Self::Parameters<
12033                'a,
12034            > as alloy_sol_types::SolType>::Token<'a>;
12035            type Return = renounceOwnershipReturn;
12036            type ReturnTuple<'a> = ();
12037            type ReturnToken<'a> = <Self::ReturnTuple<
12038                'a,
12039            > as alloy_sol_types::SolType>::Token<'a>;
12040            const SIGNATURE: &'static str = "renounceOwnership()";
12041            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12042            #[inline]
12043            fn new<'a>(
12044                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12045            ) -> Self {
12046                tuple.into()
12047            }
12048            #[inline]
12049            fn tokenize(&self) -> Self::Token<'_> {
12050                ()
12051            }
12052            #[inline]
12053            fn abi_decode_returns(
12054                data: &[u8],
12055                validate: bool,
12056            ) -> alloy_sol_types::Result<Self::Return> {
12057                <Self::ReturnTuple<
12058                    '_,
12059                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12060                    .map(Into::into)
12061            }
12062        }
12063    };
12064    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12065    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
12066```solidity
12067function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
12068```*/
12069    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12070    #[derive(Clone)]
12071    pub struct setBlocksPerEpochCall {
12072        #[allow(missing_docs)]
12073        pub newBlocksPerEpoch: u64,
12074    }
12075    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
12076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12077    #[derive(Clone)]
12078    pub struct setBlocksPerEpochReturn {}
12079    #[allow(
12080        non_camel_case_types,
12081        non_snake_case,
12082        clippy::pub_underscore_fields,
12083        clippy::style
12084    )]
12085    const _: () = {
12086        use alloy::sol_types as alloy_sol_types;
12087        {
12088            #[doc(hidden)]
12089            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12090            #[doc(hidden)]
12091            type UnderlyingRustTuple<'a> = (u64,);
12092            #[cfg(test)]
12093            #[allow(dead_code, unreachable_patterns)]
12094            fn _type_assertion(
12095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12096            ) {
12097                match _t {
12098                    alloy_sol_types::private::AssertTypeEq::<
12099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12100                    >(_) => {}
12101                }
12102            }
12103            #[automatically_derived]
12104            #[doc(hidden)]
12105            impl ::core::convert::From<setBlocksPerEpochCall>
12106            for UnderlyingRustTuple<'_> {
12107                fn from(value: setBlocksPerEpochCall) -> Self {
12108                    (value.newBlocksPerEpoch,)
12109                }
12110            }
12111            #[automatically_derived]
12112            #[doc(hidden)]
12113            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12114            for setBlocksPerEpochCall {
12115                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12116                    Self { newBlocksPerEpoch: tuple.0 }
12117                }
12118            }
12119        }
12120        {
12121            #[doc(hidden)]
12122            type UnderlyingSolTuple<'a> = ();
12123            #[doc(hidden)]
12124            type UnderlyingRustTuple<'a> = ();
12125            #[cfg(test)]
12126            #[allow(dead_code, unreachable_patterns)]
12127            fn _type_assertion(
12128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12129            ) {
12130                match _t {
12131                    alloy_sol_types::private::AssertTypeEq::<
12132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12133                    >(_) => {}
12134                }
12135            }
12136            #[automatically_derived]
12137            #[doc(hidden)]
12138            impl ::core::convert::From<setBlocksPerEpochReturn>
12139            for UnderlyingRustTuple<'_> {
12140                fn from(value: setBlocksPerEpochReturn) -> Self {
12141                    ()
12142                }
12143            }
12144            #[automatically_derived]
12145            #[doc(hidden)]
12146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12147            for setBlocksPerEpochReturn {
12148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12149                    Self {}
12150                }
12151            }
12152        }
12153        #[automatically_derived]
12154        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
12155            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12156            type Token<'a> = <Self::Parameters<
12157                'a,
12158            > as alloy_sol_types::SolType>::Token<'a>;
12159            type Return = setBlocksPerEpochReturn;
12160            type ReturnTuple<'a> = ();
12161            type ReturnToken<'a> = <Self::ReturnTuple<
12162                'a,
12163            > as alloy_sol_types::SolType>::Token<'a>;
12164            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
12165            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
12166            #[inline]
12167            fn new<'a>(
12168                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12169            ) -> Self {
12170                tuple.into()
12171            }
12172            #[inline]
12173            fn tokenize(&self) -> Self::Token<'_> {
12174                (
12175                    <alloy::sol_types::sol_data::Uint<
12176                        64,
12177                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
12178                )
12179            }
12180            #[inline]
12181            fn abi_decode_returns(
12182                data: &[u8],
12183                validate: bool,
12184            ) -> alloy_sol_types::Result<Self::Return> {
12185                <Self::ReturnTuple<
12186                    '_,
12187                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12188                    .map(Into::into)
12189            }
12190        }
12191    };
12192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12193    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
12194```solidity
12195function setFinalizedState(LightClient.LightClientState memory state) external;
12196```*/
12197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12198    #[derive(Clone)]
12199    pub struct setFinalizedStateCall {
12200        #[allow(missing_docs)]
12201        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12202    }
12203    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
12204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12205    #[derive(Clone)]
12206    pub struct setFinalizedStateReturn {}
12207    #[allow(
12208        non_camel_case_types,
12209        non_snake_case,
12210        clippy::pub_underscore_fields,
12211        clippy::style
12212    )]
12213    const _: () = {
12214        use alloy::sol_types as alloy_sol_types;
12215        {
12216            #[doc(hidden)]
12217            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
12218            #[doc(hidden)]
12219            type UnderlyingRustTuple<'a> = (
12220                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12221            );
12222            #[cfg(test)]
12223            #[allow(dead_code, unreachable_patterns)]
12224            fn _type_assertion(
12225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12226            ) {
12227                match _t {
12228                    alloy_sol_types::private::AssertTypeEq::<
12229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12230                    >(_) => {}
12231                }
12232            }
12233            #[automatically_derived]
12234            #[doc(hidden)]
12235            impl ::core::convert::From<setFinalizedStateCall>
12236            for UnderlyingRustTuple<'_> {
12237                fn from(value: setFinalizedStateCall) -> Self {
12238                    (value.state,)
12239                }
12240            }
12241            #[automatically_derived]
12242            #[doc(hidden)]
12243            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12244            for setFinalizedStateCall {
12245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12246                    Self { state: tuple.0 }
12247                }
12248            }
12249        }
12250        {
12251            #[doc(hidden)]
12252            type UnderlyingSolTuple<'a> = ();
12253            #[doc(hidden)]
12254            type UnderlyingRustTuple<'a> = ();
12255            #[cfg(test)]
12256            #[allow(dead_code, unreachable_patterns)]
12257            fn _type_assertion(
12258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12259            ) {
12260                match _t {
12261                    alloy_sol_types::private::AssertTypeEq::<
12262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12263                    >(_) => {}
12264                }
12265            }
12266            #[automatically_derived]
12267            #[doc(hidden)]
12268            impl ::core::convert::From<setFinalizedStateReturn>
12269            for UnderlyingRustTuple<'_> {
12270                fn from(value: setFinalizedStateReturn) -> Self {
12271                    ()
12272                }
12273            }
12274            #[automatically_derived]
12275            #[doc(hidden)]
12276            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12277            for setFinalizedStateReturn {
12278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12279                    Self {}
12280                }
12281            }
12282        }
12283        #[automatically_derived]
12284        impl alloy_sol_types::SolCall for setFinalizedStateCall {
12285            type Parameters<'a> = (LightClient::LightClientState,);
12286            type Token<'a> = <Self::Parameters<
12287                'a,
12288            > as alloy_sol_types::SolType>::Token<'a>;
12289            type Return = setFinalizedStateReturn;
12290            type ReturnTuple<'a> = ();
12291            type ReturnToken<'a> = <Self::ReturnTuple<
12292                'a,
12293            > as alloy_sol_types::SolType>::Token<'a>;
12294            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
12295            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
12296            #[inline]
12297            fn new<'a>(
12298                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12299            ) -> Self {
12300                tuple.into()
12301            }
12302            #[inline]
12303            fn tokenize(&self) -> Self::Token<'_> {
12304                (
12305                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12306                        &self.state,
12307                    ),
12308                )
12309            }
12310            #[inline]
12311            fn abi_decode_returns(
12312                data: &[u8],
12313                validate: bool,
12314            ) -> alloy_sol_types::Result<Self::Return> {
12315                <Self::ReturnTuple<
12316                    '_,
12317                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12318                    .map(Into::into)
12319            }
12320        }
12321    };
12322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12323    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
12324```solidity
12325function setHotShotDownSince(uint256 l1Height) external;
12326```*/
12327    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12328    #[derive(Clone)]
12329    pub struct setHotShotDownSinceCall {
12330        #[allow(missing_docs)]
12331        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
12332    }
12333    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
12334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12335    #[derive(Clone)]
12336    pub struct setHotShotDownSinceReturn {}
12337    #[allow(
12338        non_camel_case_types,
12339        non_snake_case,
12340        clippy::pub_underscore_fields,
12341        clippy::style
12342    )]
12343    const _: () = {
12344        use alloy::sol_types as alloy_sol_types;
12345        {
12346            #[doc(hidden)]
12347            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12348            #[doc(hidden)]
12349            type UnderlyingRustTuple<'a> = (
12350                alloy::sol_types::private::primitives::aliases::U256,
12351            );
12352            #[cfg(test)]
12353            #[allow(dead_code, unreachable_patterns)]
12354            fn _type_assertion(
12355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12356            ) {
12357                match _t {
12358                    alloy_sol_types::private::AssertTypeEq::<
12359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12360                    >(_) => {}
12361                }
12362            }
12363            #[automatically_derived]
12364            #[doc(hidden)]
12365            impl ::core::convert::From<setHotShotDownSinceCall>
12366            for UnderlyingRustTuple<'_> {
12367                fn from(value: setHotShotDownSinceCall) -> Self {
12368                    (value.l1Height,)
12369                }
12370            }
12371            #[automatically_derived]
12372            #[doc(hidden)]
12373            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12374            for setHotShotDownSinceCall {
12375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12376                    Self { l1Height: tuple.0 }
12377                }
12378            }
12379        }
12380        {
12381            #[doc(hidden)]
12382            type UnderlyingSolTuple<'a> = ();
12383            #[doc(hidden)]
12384            type UnderlyingRustTuple<'a> = ();
12385            #[cfg(test)]
12386            #[allow(dead_code, unreachable_patterns)]
12387            fn _type_assertion(
12388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12389            ) {
12390                match _t {
12391                    alloy_sol_types::private::AssertTypeEq::<
12392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12393                    >(_) => {}
12394                }
12395            }
12396            #[automatically_derived]
12397            #[doc(hidden)]
12398            impl ::core::convert::From<setHotShotDownSinceReturn>
12399            for UnderlyingRustTuple<'_> {
12400                fn from(value: setHotShotDownSinceReturn) -> Self {
12401                    ()
12402                }
12403            }
12404            #[automatically_derived]
12405            #[doc(hidden)]
12406            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12407            for setHotShotDownSinceReturn {
12408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12409                    Self {}
12410                }
12411            }
12412        }
12413        #[automatically_derived]
12414        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
12415            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12416            type Token<'a> = <Self::Parameters<
12417                'a,
12418            > as alloy_sol_types::SolType>::Token<'a>;
12419            type Return = setHotShotDownSinceReturn;
12420            type ReturnTuple<'a> = ();
12421            type ReturnToken<'a> = <Self::ReturnTuple<
12422                'a,
12423            > as alloy_sol_types::SolType>::Token<'a>;
12424            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
12425            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
12426            #[inline]
12427            fn new<'a>(
12428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12429            ) -> Self {
12430                tuple.into()
12431            }
12432            #[inline]
12433            fn tokenize(&self) -> Self::Token<'_> {
12434                (
12435                    <alloy::sol_types::sol_data::Uint<
12436                        256,
12437                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
12438                )
12439            }
12440            #[inline]
12441            fn abi_decode_returns(
12442                data: &[u8],
12443                validate: bool,
12444            ) -> alloy_sol_types::Result<Self::Return> {
12445                <Self::ReturnTuple<
12446                    '_,
12447                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12448                    .map(Into::into)
12449            }
12450        }
12451    };
12452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12453    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
12454```solidity
12455function setHotShotUp() external;
12456```*/
12457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12458    #[derive(Clone)]
12459    pub struct setHotShotUpCall {}
12460    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
12461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12462    #[derive(Clone)]
12463    pub struct setHotShotUpReturn {}
12464    #[allow(
12465        non_camel_case_types,
12466        non_snake_case,
12467        clippy::pub_underscore_fields,
12468        clippy::style
12469    )]
12470    const _: () = {
12471        use alloy::sol_types as alloy_sol_types;
12472        {
12473            #[doc(hidden)]
12474            type UnderlyingSolTuple<'a> = ();
12475            #[doc(hidden)]
12476            type UnderlyingRustTuple<'a> = ();
12477            #[cfg(test)]
12478            #[allow(dead_code, unreachable_patterns)]
12479            fn _type_assertion(
12480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12481            ) {
12482                match _t {
12483                    alloy_sol_types::private::AssertTypeEq::<
12484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12485                    >(_) => {}
12486                }
12487            }
12488            #[automatically_derived]
12489            #[doc(hidden)]
12490            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
12491                fn from(value: setHotShotUpCall) -> Self {
12492                    ()
12493                }
12494            }
12495            #[automatically_derived]
12496            #[doc(hidden)]
12497            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
12498                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12499                    Self {}
12500                }
12501            }
12502        }
12503        {
12504            #[doc(hidden)]
12505            type UnderlyingSolTuple<'a> = ();
12506            #[doc(hidden)]
12507            type UnderlyingRustTuple<'a> = ();
12508            #[cfg(test)]
12509            #[allow(dead_code, unreachable_patterns)]
12510            fn _type_assertion(
12511                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12512            ) {
12513                match _t {
12514                    alloy_sol_types::private::AssertTypeEq::<
12515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12516                    >(_) => {}
12517                }
12518            }
12519            #[automatically_derived]
12520            #[doc(hidden)]
12521            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
12522                fn from(value: setHotShotUpReturn) -> Self {
12523                    ()
12524                }
12525            }
12526            #[automatically_derived]
12527            #[doc(hidden)]
12528            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
12529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12530                    Self {}
12531                }
12532            }
12533        }
12534        #[automatically_derived]
12535        impl alloy_sol_types::SolCall for setHotShotUpCall {
12536            type Parameters<'a> = ();
12537            type Token<'a> = <Self::Parameters<
12538                'a,
12539            > as alloy_sol_types::SolType>::Token<'a>;
12540            type Return = setHotShotUpReturn;
12541            type ReturnTuple<'a> = ();
12542            type ReturnToken<'a> = <Self::ReturnTuple<
12543                'a,
12544            > as alloy_sol_types::SolType>::Token<'a>;
12545            const SIGNATURE: &'static str = "setHotShotUp()";
12546            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
12547            #[inline]
12548            fn new<'a>(
12549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12550            ) -> Self {
12551                tuple.into()
12552            }
12553            #[inline]
12554            fn tokenize(&self) -> Self::Token<'_> {
12555                ()
12556            }
12557            #[inline]
12558            fn abi_decode_returns(
12559                data: &[u8],
12560                validate: bool,
12561            ) -> alloy_sol_types::Result<Self::Return> {
12562                <Self::ReturnTuple<
12563                    '_,
12564                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12565                    .map(Into::into)
12566            }
12567        }
12568    };
12569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12570    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12571```solidity
12572function setPermissionedProver(address prover) external;
12573```*/
12574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12575    #[derive(Clone)]
12576    pub struct setPermissionedProverCall {
12577        #[allow(missing_docs)]
12578        pub prover: alloy::sol_types::private::Address,
12579    }
12580    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12582    #[derive(Clone)]
12583    pub struct setPermissionedProverReturn {}
12584    #[allow(
12585        non_camel_case_types,
12586        non_snake_case,
12587        clippy::pub_underscore_fields,
12588        clippy::style
12589    )]
12590    const _: () = {
12591        use alloy::sol_types as alloy_sol_types;
12592        {
12593            #[doc(hidden)]
12594            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12595            #[doc(hidden)]
12596            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12597            #[cfg(test)]
12598            #[allow(dead_code, unreachable_patterns)]
12599            fn _type_assertion(
12600                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12601            ) {
12602                match _t {
12603                    alloy_sol_types::private::AssertTypeEq::<
12604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12605                    >(_) => {}
12606                }
12607            }
12608            #[automatically_derived]
12609            #[doc(hidden)]
12610            impl ::core::convert::From<setPermissionedProverCall>
12611            for UnderlyingRustTuple<'_> {
12612                fn from(value: setPermissionedProverCall) -> Self {
12613                    (value.prover,)
12614                }
12615            }
12616            #[automatically_derived]
12617            #[doc(hidden)]
12618            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12619            for setPermissionedProverCall {
12620                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12621                    Self { prover: tuple.0 }
12622                }
12623            }
12624        }
12625        {
12626            #[doc(hidden)]
12627            type UnderlyingSolTuple<'a> = ();
12628            #[doc(hidden)]
12629            type UnderlyingRustTuple<'a> = ();
12630            #[cfg(test)]
12631            #[allow(dead_code, unreachable_patterns)]
12632            fn _type_assertion(
12633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12634            ) {
12635                match _t {
12636                    alloy_sol_types::private::AssertTypeEq::<
12637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12638                    >(_) => {}
12639                }
12640            }
12641            #[automatically_derived]
12642            #[doc(hidden)]
12643            impl ::core::convert::From<setPermissionedProverReturn>
12644            for UnderlyingRustTuple<'_> {
12645                fn from(value: setPermissionedProverReturn) -> Self {
12646                    ()
12647                }
12648            }
12649            #[automatically_derived]
12650            #[doc(hidden)]
12651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12652            for setPermissionedProverReturn {
12653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12654                    Self {}
12655                }
12656            }
12657        }
12658        #[automatically_derived]
12659        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12660            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12661            type Token<'a> = <Self::Parameters<
12662                'a,
12663            > as alloy_sol_types::SolType>::Token<'a>;
12664            type Return = setPermissionedProverReturn;
12665            type ReturnTuple<'a> = ();
12666            type ReturnToken<'a> = <Self::ReturnTuple<
12667                'a,
12668            > as alloy_sol_types::SolType>::Token<'a>;
12669            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12670            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12671            #[inline]
12672            fn new<'a>(
12673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12674            ) -> Self {
12675                tuple.into()
12676            }
12677            #[inline]
12678            fn tokenize(&self) -> Self::Token<'_> {
12679                (
12680                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12681                        &self.prover,
12682                    ),
12683                )
12684            }
12685            #[inline]
12686            fn abi_decode_returns(
12687                data: &[u8],
12688                validate: bool,
12689            ) -> alloy_sol_types::Result<Self::Return> {
12690                <Self::ReturnTuple<
12691                    '_,
12692                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12693                    .map(Into::into)
12694            }
12695        }
12696    };
12697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12698    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
12699```solidity
12700function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
12701```*/
12702    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12703    #[derive(Clone)]
12704    pub struct setStateHistoryCall {
12705        #[allow(missing_docs)]
12706        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
12707            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
12708        >,
12709    }
12710    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
12711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12712    #[derive(Clone)]
12713    pub struct setStateHistoryReturn {}
12714    #[allow(
12715        non_camel_case_types,
12716        non_snake_case,
12717        clippy::pub_underscore_fields,
12718        clippy::style
12719    )]
12720    const _: () = {
12721        use alloy::sol_types as alloy_sol_types;
12722        {
12723            #[doc(hidden)]
12724            type UnderlyingSolTuple<'a> = (
12725                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
12726            );
12727            #[doc(hidden)]
12728            type UnderlyingRustTuple<'a> = (
12729                alloy::sol_types::private::Vec<
12730                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
12731                >,
12732            );
12733            #[cfg(test)]
12734            #[allow(dead_code, unreachable_patterns)]
12735            fn _type_assertion(
12736                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12737            ) {
12738                match _t {
12739                    alloy_sol_types::private::AssertTypeEq::<
12740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12741                    >(_) => {}
12742                }
12743            }
12744            #[automatically_derived]
12745            #[doc(hidden)]
12746            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
12747                fn from(value: setStateHistoryCall) -> Self {
12748                    (value._stateHistoryCommitments,)
12749                }
12750            }
12751            #[automatically_derived]
12752            #[doc(hidden)]
12753            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
12754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12755                    Self {
12756                        _stateHistoryCommitments: tuple.0,
12757                    }
12758                }
12759            }
12760        }
12761        {
12762            #[doc(hidden)]
12763            type UnderlyingSolTuple<'a> = ();
12764            #[doc(hidden)]
12765            type UnderlyingRustTuple<'a> = ();
12766            #[cfg(test)]
12767            #[allow(dead_code, unreachable_patterns)]
12768            fn _type_assertion(
12769                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12770            ) {
12771                match _t {
12772                    alloy_sol_types::private::AssertTypeEq::<
12773                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12774                    >(_) => {}
12775                }
12776            }
12777            #[automatically_derived]
12778            #[doc(hidden)]
12779            impl ::core::convert::From<setStateHistoryReturn>
12780            for UnderlyingRustTuple<'_> {
12781                fn from(value: setStateHistoryReturn) -> Self {
12782                    ()
12783                }
12784            }
12785            #[automatically_derived]
12786            #[doc(hidden)]
12787            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12788            for setStateHistoryReturn {
12789                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12790                    Self {}
12791                }
12792            }
12793        }
12794        #[automatically_derived]
12795        impl alloy_sol_types::SolCall for setStateHistoryCall {
12796            type Parameters<'a> = (
12797                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
12798            );
12799            type Token<'a> = <Self::Parameters<
12800                'a,
12801            > as alloy_sol_types::SolType>::Token<'a>;
12802            type Return = setStateHistoryReturn;
12803            type ReturnTuple<'a> = ();
12804            type ReturnToken<'a> = <Self::ReturnTuple<
12805                'a,
12806            > as alloy_sol_types::SolType>::Token<'a>;
12807            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
12808            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
12809            #[inline]
12810            fn new<'a>(
12811                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12812            ) -> Self {
12813                tuple.into()
12814            }
12815            #[inline]
12816            fn tokenize(&self) -> Self::Token<'_> {
12817                (
12818                    <alloy::sol_types::sol_data::Array<
12819                        LightClient::StateHistoryCommitment,
12820                    > as alloy_sol_types::SolType>::tokenize(
12821                        &self._stateHistoryCommitments,
12822                    ),
12823                )
12824            }
12825            #[inline]
12826            fn abi_decode_returns(
12827                data: &[u8],
12828                validate: bool,
12829            ) -> alloy_sol_types::Result<Self::Return> {
12830                <Self::ReturnTuple<
12831                    '_,
12832                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12833                    .map(Into::into)
12834            }
12835        }
12836    };
12837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12838    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
12839```solidity
12840function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
12841```*/
12842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12843    #[derive(Clone)]
12844    pub struct setStateHistoryRetentionPeriodCall {
12845        #[allow(missing_docs)]
12846        pub historySeconds: u32,
12847    }
12848    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
12849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12850    #[derive(Clone)]
12851    pub struct setStateHistoryRetentionPeriodReturn {}
12852    #[allow(
12853        non_camel_case_types,
12854        non_snake_case,
12855        clippy::pub_underscore_fields,
12856        clippy::style
12857    )]
12858    const _: () = {
12859        use alloy::sol_types as alloy_sol_types;
12860        {
12861            #[doc(hidden)]
12862            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12863            #[doc(hidden)]
12864            type UnderlyingRustTuple<'a> = (u32,);
12865            #[cfg(test)]
12866            #[allow(dead_code, unreachable_patterns)]
12867            fn _type_assertion(
12868                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12869            ) {
12870                match _t {
12871                    alloy_sol_types::private::AssertTypeEq::<
12872                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12873                    >(_) => {}
12874                }
12875            }
12876            #[automatically_derived]
12877            #[doc(hidden)]
12878            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
12879            for UnderlyingRustTuple<'_> {
12880                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
12881                    (value.historySeconds,)
12882                }
12883            }
12884            #[automatically_derived]
12885            #[doc(hidden)]
12886            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12887            for setStateHistoryRetentionPeriodCall {
12888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12889                    Self { historySeconds: tuple.0 }
12890                }
12891            }
12892        }
12893        {
12894            #[doc(hidden)]
12895            type UnderlyingSolTuple<'a> = ();
12896            #[doc(hidden)]
12897            type UnderlyingRustTuple<'a> = ();
12898            #[cfg(test)]
12899            #[allow(dead_code, unreachable_patterns)]
12900            fn _type_assertion(
12901                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12902            ) {
12903                match _t {
12904                    alloy_sol_types::private::AssertTypeEq::<
12905                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12906                    >(_) => {}
12907                }
12908            }
12909            #[automatically_derived]
12910            #[doc(hidden)]
12911            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
12912            for UnderlyingRustTuple<'_> {
12913                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
12914                    ()
12915                }
12916            }
12917            #[automatically_derived]
12918            #[doc(hidden)]
12919            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12920            for setStateHistoryRetentionPeriodReturn {
12921                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12922                    Self {}
12923                }
12924            }
12925        }
12926        #[automatically_derived]
12927        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12928            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12929            type Token<'a> = <Self::Parameters<
12930                'a,
12931            > as alloy_sol_types::SolType>::Token<'a>;
12932            type Return = setStateHistoryRetentionPeriodReturn;
12933            type ReturnTuple<'a> = ();
12934            type ReturnToken<'a> = <Self::ReturnTuple<
12935                'a,
12936            > as alloy_sol_types::SolType>::Token<'a>;
12937            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12938            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12939            #[inline]
12940            fn new<'a>(
12941                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12942            ) -> Self {
12943                tuple.into()
12944            }
12945            #[inline]
12946            fn tokenize(&self) -> Self::Token<'_> {
12947                (
12948                    <alloy::sol_types::sol_data::Uint<
12949                        32,
12950                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12951                )
12952            }
12953            #[inline]
12954            fn abi_decode_returns(
12955                data: &[u8],
12956                validate: bool,
12957            ) -> alloy_sol_types::Result<Self::Return> {
12958                <Self::ReturnTuple<
12959                    '_,
12960                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12961                    .map(Into::into)
12962            }
12963        }
12964    };
12965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12966    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
12967```solidity
12968function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
12969```*/
12970    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12971    #[derive(Clone)]
12972    pub struct setVotingStakeTableStateCall {
12973        #[allow(missing_docs)]
12974        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12975    }
12976    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
12977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12978    #[derive(Clone)]
12979    pub struct setVotingStakeTableStateReturn {}
12980    #[allow(
12981        non_camel_case_types,
12982        non_snake_case,
12983        clippy::pub_underscore_fields,
12984        clippy::style
12985    )]
12986    const _: () = {
12987        use alloy::sol_types as alloy_sol_types;
12988        {
12989            #[doc(hidden)]
12990            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
12991            #[doc(hidden)]
12992            type UnderlyingRustTuple<'a> = (
12993                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12994            );
12995            #[cfg(test)]
12996            #[allow(dead_code, unreachable_patterns)]
12997            fn _type_assertion(
12998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12999            ) {
13000                match _t {
13001                    alloy_sol_types::private::AssertTypeEq::<
13002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13003                    >(_) => {}
13004                }
13005            }
13006            #[automatically_derived]
13007            #[doc(hidden)]
13008            impl ::core::convert::From<setVotingStakeTableStateCall>
13009            for UnderlyingRustTuple<'_> {
13010                fn from(value: setVotingStakeTableStateCall) -> Self {
13011                    (value.stake,)
13012                }
13013            }
13014            #[automatically_derived]
13015            #[doc(hidden)]
13016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13017            for setVotingStakeTableStateCall {
13018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13019                    Self { stake: tuple.0 }
13020                }
13021            }
13022        }
13023        {
13024            #[doc(hidden)]
13025            type UnderlyingSolTuple<'a> = ();
13026            #[doc(hidden)]
13027            type UnderlyingRustTuple<'a> = ();
13028            #[cfg(test)]
13029            #[allow(dead_code, unreachable_patterns)]
13030            fn _type_assertion(
13031                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13032            ) {
13033                match _t {
13034                    alloy_sol_types::private::AssertTypeEq::<
13035                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13036                    >(_) => {}
13037                }
13038            }
13039            #[automatically_derived]
13040            #[doc(hidden)]
13041            impl ::core::convert::From<setVotingStakeTableStateReturn>
13042            for UnderlyingRustTuple<'_> {
13043                fn from(value: setVotingStakeTableStateReturn) -> Self {
13044                    ()
13045                }
13046            }
13047            #[automatically_derived]
13048            #[doc(hidden)]
13049            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13050            for setVotingStakeTableStateReturn {
13051                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13052                    Self {}
13053                }
13054            }
13055        }
13056        #[automatically_derived]
13057        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
13058            type Parameters<'a> = (LightClient::StakeTableState,);
13059            type Token<'a> = <Self::Parameters<
13060                'a,
13061            > as alloy_sol_types::SolType>::Token<'a>;
13062            type Return = setVotingStakeTableStateReturn;
13063            type ReturnTuple<'a> = ();
13064            type ReturnToken<'a> = <Self::ReturnTuple<
13065                'a,
13066            > as alloy_sol_types::SolType>::Token<'a>;
13067            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
13068            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
13069            #[inline]
13070            fn new<'a>(
13071                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13072            ) -> Self {
13073                tuple.into()
13074            }
13075            #[inline]
13076            fn tokenize(&self) -> Self::Token<'_> {
13077                (
13078                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
13079                        &self.stake,
13080                    ),
13081                )
13082            }
13083            #[inline]
13084            fn abi_decode_returns(
13085                data: &[u8],
13086                validate: bool,
13087            ) -> alloy_sol_types::Result<Self::Return> {
13088                <Self::ReturnTuple<
13089                    '_,
13090                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13091                    .map(Into::into)
13092            }
13093        }
13094    };
13095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13096    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13097```solidity
13098function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13099```*/
13100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13101    #[derive(Clone)]
13102    pub struct setstateHistoryRetentionPeriodCall {
13103        #[allow(missing_docs)]
13104        pub historySeconds: u32,
13105    }
13106    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
13107    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13108    #[derive(Clone)]
13109    pub struct setstateHistoryRetentionPeriodReturn {}
13110    #[allow(
13111        non_camel_case_types,
13112        non_snake_case,
13113        clippy::pub_underscore_fields,
13114        clippy::style
13115    )]
13116    const _: () = {
13117        use alloy::sol_types as alloy_sol_types;
13118        {
13119            #[doc(hidden)]
13120            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13121            #[doc(hidden)]
13122            type UnderlyingRustTuple<'a> = (u32,);
13123            #[cfg(test)]
13124            #[allow(dead_code, unreachable_patterns)]
13125            fn _type_assertion(
13126                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13127            ) {
13128                match _t {
13129                    alloy_sol_types::private::AssertTypeEq::<
13130                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13131                    >(_) => {}
13132                }
13133            }
13134            #[automatically_derived]
13135            #[doc(hidden)]
13136            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
13137            for UnderlyingRustTuple<'_> {
13138                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
13139                    (value.historySeconds,)
13140                }
13141            }
13142            #[automatically_derived]
13143            #[doc(hidden)]
13144            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13145            for setstateHistoryRetentionPeriodCall {
13146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13147                    Self { historySeconds: tuple.0 }
13148                }
13149            }
13150        }
13151        {
13152            #[doc(hidden)]
13153            type UnderlyingSolTuple<'a> = ();
13154            #[doc(hidden)]
13155            type UnderlyingRustTuple<'a> = ();
13156            #[cfg(test)]
13157            #[allow(dead_code, unreachable_patterns)]
13158            fn _type_assertion(
13159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13160            ) {
13161                match _t {
13162                    alloy_sol_types::private::AssertTypeEq::<
13163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13164                    >(_) => {}
13165                }
13166            }
13167            #[automatically_derived]
13168            #[doc(hidden)]
13169            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
13170            for UnderlyingRustTuple<'_> {
13171                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
13172                    ()
13173                }
13174            }
13175            #[automatically_derived]
13176            #[doc(hidden)]
13177            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13178            for setstateHistoryRetentionPeriodReturn {
13179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13180                    Self {}
13181                }
13182            }
13183        }
13184        #[automatically_derived]
13185        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
13186            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13187            type Token<'a> = <Self::Parameters<
13188                'a,
13189            > as alloy_sol_types::SolType>::Token<'a>;
13190            type Return = setstateHistoryRetentionPeriodReturn;
13191            type ReturnTuple<'a> = ();
13192            type ReturnToken<'a> = <Self::ReturnTuple<
13193                'a,
13194            > as alloy_sol_types::SolType>::Token<'a>;
13195            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13196            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13197            #[inline]
13198            fn new<'a>(
13199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13200            ) -> Self {
13201                tuple.into()
13202            }
13203            #[inline]
13204            fn tokenize(&self) -> Self::Token<'_> {
13205                (
13206                    <alloy::sol_types::sol_data::Uint<
13207                        32,
13208                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13209                )
13210            }
13211            #[inline]
13212            fn abi_decode_returns(
13213                data: &[u8],
13214                validate: bool,
13215            ) -> alloy_sol_types::Result<Self::Return> {
13216                <Self::ReturnTuple<
13217                    '_,
13218                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13219                    .map(Into::into)
13220            }
13221        }
13222    };
13223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13224    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13225```solidity
13226function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13227```*/
13228    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13229    #[derive(Clone)]
13230    pub struct stateHistoryCommitmentsCall {
13231        #[allow(missing_docs)]
13232        pub _0: alloy::sol_types::private::primitives::aliases::U256,
13233    }
13234    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13235    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13237    #[derive(Clone)]
13238    pub struct stateHistoryCommitmentsReturn {
13239        #[allow(missing_docs)]
13240        pub l1BlockHeight: u64,
13241        #[allow(missing_docs)]
13242        pub l1BlockTimestamp: u64,
13243        #[allow(missing_docs)]
13244        pub hotShotBlockHeight: u64,
13245        #[allow(missing_docs)]
13246        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13247    }
13248    #[allow(
13249        non_camel_case_types,
13250        non_snake_case,
13251        clippy::pub_underscore_fields,
13252        clippy::style
13253    )]
13254    const _: () = {
13255        use alloy::sol_types as alloy_sol_types;
13256        {
13257            #[doc(hidden)]
13258            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13259            #[doc(hidden)]
13260            type UnderlyingRustTuple<'a> = (
13261                alloy::sol_types::private::primitives::aliases::U256,
13262            );
13263            #[cfg(test)]
13264            #[allow(dead_code, unreachable_patterns)]
13265            fn _type_assertion(
13266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13267            ) {
13268                match _t {
13269                    alloy_sol_types::private::AssertTypeEq::<
13270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13271                    >(_) => {}
13272                }
13273            }
13274            #[automatically_derived]
13275            #[doc(hidden)]
13276            impl ::core::convert::From<stateHistoryCommitmentsCall>
13277            for UnderlyingRustTuple<'_> {
13278                fn from(value: stateHistoryCommitmentsCall) -> Self {
13279                    (value._0,)
13280                }
13281            }
13282            #[automatically_derived]
13283            #[doc(hidden)]
13284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13285            for stateHistoryCommitmentsCall {
13286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13287                    Self { _0: tuple.0 }
13288                }
13289            }
13290        }
13291        {
13292            #[doc(hidden)]
13293            type UnderlyingSolTuple<'a> = (
13294                alloy::sol_types::sol_data::Uint<64>,
13295                alloy::sol_types::sol_data::Uint<64>,
13296                alloy::sol_types::sol_data::Uint<64>,
13297                BN254::ScalarField,
13298            );
13299            #[doc(hidden)]
13300            type UnderlyingRustTuple<'a> = (
13301                u64,
13302                u64,
13303                u64,
13304                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13305            );
13306            #[cfg(test)]
13307            #[allow(dead_code, unreachable_patterns)]
13308            fn _type_assertion(
13309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13310            ) {
13311                match _t {
13312                    alloy_sol_types::private::AssertTypeEq::<
13313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13314                    >(_) => {}
13315                }
13316            }
13317            #[automatically_derived]
13318            #[doc(hidden)]
13319            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13320            for UnderlyingRustTuple<'_> {
13321                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13322                    (
13323                        value.l1BlockHeight,
13324                        value.l1BlockTimestamp,
13325                        value.hotShotBlockHeight,
13326                        value.hotShotBlockCommRoot,
13327                    )
13328                }
13329            }
13330            #[automatically_derived]
13331            #[doc(hidden)]
13332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13333            for stateHistoryCommitmentsReturn {
13334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13335                    Self {
13336                        l1BlockHeight: tuple.0,
13337                        l1BlockTimestamp: tuple.1,
13338                        hotShotBlockHeight: tuple.2,
13339                        hotShotBlockCommRoot: tuple.3,
13340                    }
13341                }
13342            }
13343        }
13344        #[automatically_derived]
13345        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13346            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13347            type Token<'a> = <Self::Parameters<
13348                'a,
13349            > as alloy_sol_types::SolType>::Token<'a>;
13350            type Return = stateHistoryCommitmentsReturn;
13351            type ReturnTuple<'a> = (
13352                alloy::sol_types::sol_data::Uint<64>,
13353                alloy::sol_types::sol_data::Uint<64>,
13354                alloy::sol_types::sol_data::Uint<64>,
13355                BN254::ScalarField,
13356            );
13357            type ReturnToken<'a> = <Self::ReturnTuple<
13358                'a,
13359            > as alloy_sol_types::SolType>::Token<'a>;
13360            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13361            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13362            #[inline]
13363            fn new<'a>(
13364                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13365            ) -> Self {
13366                tuple.into()
13367            }
13368            #[inline]
13369            fn tokenize(&self) -> Self::Token<'_> {
13370                (
13371                    <alloy::sol_types::sol_data::Uint<
13372                        256,
13373                    > as alloy_sol_types::SolType>::tokenize(&self._0),
13374                )
13375            }
13376            #[inline]
13377            fn abi_decode_returns(
13378                data: &[u8],
13379                validate: bool,
13380            ) -> alloy_sol_types::Result<Self::Return> {
13381                <Self::ReturnTuple<
13382                    '_,
13383                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13384                    .map(Into::into)
13385            }
13386        }
13387    };
13388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13389    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13390```solidity
13391function stateHistoryFirstIndex() external view returns (uint64);
13392```*/
13393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13394    #[derive(Clone)]
13395    pub struct stateHistoryFirstIndexCall {}
13396    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13397    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13398    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13399    #[derive(Clone)]
13400    pub struct stateHistoryFirstIndexReturn {
13401        #[allow(missing_docs)]
13402        pub _0: u64,
13403    }
13404    #[allow(
13405        non_camel_case_types,
13406        non_snake_case,
13407        clippy::pub_underscore_fields,
13408        clippy::style
13409    )]
13410    const _: () = {
13411        use alloy::sol_types as alloy_sol_types;
13412        {
13413            #[doc(hidden)]
13414            type UnderlyingSolTuple<'a> = ();
13415            #[doc(hidden)]
13416            type UnderlyingRustTuple<'a> = ();
13417            #[cfg(test)]
13418            #[allow(dead_code, unreachable_patterns)]
13419            fn _type_assertion(
13420                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13421            ) {
13422                match _t {
13423                    alloy_sol_types::private::AssertTypeEq::<
13424                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13425                    >(_) => {}
13426                }
13427            }
13428            #[automatically_derived]
13429            #[doc(hidden)]
13430            impl ::core::convert::From<stateHistoryFirstIndexCall>
13431            for UnderlyingRustTuple<'_> {
13432                fn from(value: stateHistoryFirstIndexCall) -> Self {
13433                    ()
13434                }
13435            }
13436            #[automatically_derived]
13437            #[doc(hidden)]
13438            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13439            for stateHistoryFirstIndexCall {
13440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13441                    Self {}
13442                }
13443            }
13444        }
13445        {
13446            #[doc(hidden)]
13447            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13448            #[doc(hidden)]
13449            type UnderlyingRustTuple<'a> = (u64,);
13450            #[cfg(test)]
13451            #[allow(dead_code, unreachable_patterns)]
13452            fn _type_assertion(
13453                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13454            ) {
13455                match _t {
13456                    alloy_sol_types::private::AssertTypeEq::<
13457                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13458                    >(_) => {}
13459                }
13460            }
13461            #[automatically_derived]
13462            #[doc(hidden)]
13463            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13464            for UnderlyingRustTuple<'_> {
13465                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13466                    (value._0,)
13467                }
13468            }
13469            #[automatically_derived]
13470            #[doc(hidden)]
13471            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13472            for stateHistoryFirstIndexReturn {
13473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13474                    Self { _0: tuple.0 }
13475                }
13476            }
13477        }
13478        #[automatically_derived]
13479        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13480            type Parameters<'a> = ();
13481            type Token<'a> = <Self::Parameters<
13482                'a,
13483            > as alloy_sol_types::SolType>::Token<'a>;
13484            type Return = stateHistoryFirstIndexReturn;
13485            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13486            type ReturnToken<'a> = <Self::ReturnTuple<
13487                'a,
13488            > as alloy_sol_types::SolType>::Token<'a>;
13489            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13490            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13491            #[inline]
13492            fn new<'a>(
13493                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13494            ) -> Self {
13495                tuple.into()
13496            }
13497            #[inline]
13498            fn tokenize(&self) -> Self::Token<'_> {
13499                ()
13500            }
13501            #[inline]
13502            fn abi_decode_returns(
13503                data: &[u8],
13504                validate: bool,
13505            ) -> alloy_sol_types::Result<Self::Return> {
13506                <Self::ReturnTuple<
13507                    '_,
13508                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13509                    .map(Into::into)
13510            }
13511        }
13512    };
13513    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13514    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13515```solidity
13516function stateHistoryRetentionPeriod() external view returns (uint32);
13517```*/
13518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13519    #[derive(Clone)]
13520    pub struct stateHistoryRetentionPeriodCall {}
13521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13522    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13524    #[derive(Clone)]
13525    pub struct stateHistoryRetentionPeriodReturn {
13526        #[allow(missing_docs)]
13527        pub _0: u32,
13528    }
13529    #[allow(
13530        non_camel_case_types,
13531        non_snake_case,
13532        clippy::pub_underscore_fields,
13533        clippy::style
13534    )]
13535    const _: () = {
13536        use alloy::sol_types as alloy_sol_types;
13537        {
13538            #[doc(hidden)]
13539            type UnderlyingSolTuple<'a> = ();
13540            #[doc(hidden)]
13541            type UnderlyingRustTuple<'a> = ();
13542            #[cfg(test)]
13543            #[allow(dead_code, unreachable_patterns)]
13544            fn _type_assertion(
13545                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13546            ) {
13547                match _t {
13548                    alloy_sol_types::private::AssertTypeEq::<
13549                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13550                    >(_) => {}
13551                }
13552            }
13553            #[automatically_derived]
13554            #[doc(hidden)]
13555            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13556            for UnderlyingRustTuple<'_> {
13557                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13558                    ()
13559                }
13560            }
13561            #[automatically_derived]
13562            #[doc(hidden)]
13563            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13564            for stateHistoryRetentionPeriodCall {
13565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13566                    Self {}
13567                }
13568            }
13569        }
13570        {
13571            #[doc(hidden)]
13572            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13573            #[doc(hidden)]
13574            type UnderlyingRustTuple<'a> = (u32,);
13575            #[cfg(test)]
13576            #[allow(dead_code, unreachable_patterns)]
13577            fn _type_assertion(
13578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13579            ) {
13580                match _t {
13581                    alloy_sol_types::private::AssertTypeEq::<
13582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13583                    >(_) => {}
13584                }
13585            }
13586            #[automatically_derived]
13587            #[doc(hidden)]
13588            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13589            for UnderlyingRustTuple<'_> {
13590                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13591                    (value._0,)
13592                }
13593            }
13594            #[automatically_derived]
13595            #[doc(hidden)]
13596            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13597            for stateHistoryRetentionPeriodReturn {
13598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13599                    Self { _0: tuple.0 }
13600                }
13601            }
13602        }
13603        #[automatically_derived]
13604        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13605            type Parameters<'a> = ();
13606            type Token<'a> = <Self::Parameters<
13607                'a,
13608            > as alloy_sol_types::SolType>::Token<'a>;
13609            type Return = stateHistoryRetentionPeriodReturn;
13610            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13611            type ReturnToken<'a> = <Self::ReturnTuple<
13612                'a,
13613            > as alloy_sol_types::SolType>::Token<'a>;
13614            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13615            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13616            #[inline]
13617            fn new<'a>(
13618                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13619            ) -> Self {
13620                tuple.into()
13621            }
13622            #[inline]
13623            fn tokenize(&self) -> Self::Token<'_> {
13624                ()
13625            }
13626            #[inline]
13627            fn abi_decode_returns(
13628                data: &[u8],
13629                validate: bool,
13630            ) -> alloy_sol_types::Result<Self::Return> {
13631                <Self::ReturnTuple<
13632                    '_,
13633                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13634                    .map(Into::into)
13635            }
13636        }
13637    };
13638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13639    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13640```solidity
13641function transferOwnership(address newOwner) external;
13642```*/
13643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13644    #[derive(Clone)]
13645    pub struct transferOwnershipCall {
13646        #[allow(missing_docs)]
13647        pub newOwner: alloy::sol_types::private::Address,
13648    }
13649    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
13650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13651    #[derive(Clone)]
13652    pub struct transferOwnershipReturn {}
13653    #[allow(
13654        non_camel_case_types,
13655        non_snake_case,
13656        clippy::pub_underscore_fields,
13657        clippy::style
13658    )]
13659    const _: () = {
13660        use alloy::sol_types as alloy_sol_types;
13661        {
13662            #[doc(hidden)]
13663            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13664            #[doc(hidden)]
13665            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13666            #[cfg(test)]
13667            #[allow(dead_code, unreachable_patterns)]
13668            fn _type_assertion(
13669                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13670            ) {
13671                match _t {
13672                    alloy_sol_types::private::AssertTypeEq::<
13673                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13674                    >(_) => {}
13675                }
13676            }
13677            #[automatically_derived]
13678            #[doc(hidden)]
13679            impl ::core::convert::From<transferOwnershipCall>
13680            for UnderlyingRustTuple<'_> {
13681                fn from(value: transferOwnershipCall) -> Self {
13682                    (value.newOwner,)
13683                }
13684            }
13685            #[automatically_derived]
13686            #[doc(hidden)]
13687            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13688            for transferOwnershipCall {
13689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13690                    Self { newOwner: tuple.0 }
13691                }
13692            }
13693        }
13694        {
13695            #[doc(hidden)]
13696            type UnderlyingSolTuple<'a> = ();
13697            #[doc(hidden)]
13698            type UnderlyingRustTuple<'a> = ();
13699            #[cfg(test)]
13700            #[allow(dead_code, unreachable_patterns)]
13701            fn _type_assertion(
13702                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13703            ) {
13704                match _t {
13705                    alloy_sol_types::private::AssertTypeEq::<
13706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13707                    >(_) => {}
13708                }
13709            }
13710            #[automatically_derived]
13711            #[doc(hidden)]
13712            impl ::core::convert::From<transferOwnershipReturn>
13713            for UnderlyingRustTuple<'_> {
13714                fn from(value: transferOwnershipReturn) -> Self {
13715                    ()
13716                }
13717            }
13718            #[automatically_derived]
13719            #[doc(hidden)]
13720            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13721            for transferOwnershipReturn {
13722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13723                    Self {}
13724                }
13725            }
13726        }
13727        #[automatically_derived]
13728        impl alloy_sol_types::SolCall for transferOwnershipCall {
13729            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13730            type Token<'a> = <Self::Parameters<
13731                'a,
13732            > as alloy_sol_types::SolType>::Token<'a>;
13733            type Return = transferOwnershipReturn;
13734            type ReturnTuple<'a> = ();
13735            type ReturnToken<'a> = <Self::ReturnTuple<
13736                'a,
13737            > as alloy_sol_types::SolType>::Token<'a>;
13738            const SIGNATURE: &'static str = "transferOwnership(address)";
13739            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
13740            #[inline]
13741            fn new<'a>(
13742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13743            ) -> Self {
13744                tuple.into()
13745            }
13746            #[inline]
13747            fn tokenize(&self) -> Self::Token<'_> {
13748                (
13749                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13750                        &self.newOwner,
13751                    ),
13752                )
13753            }
13754            #[inline]
13755            fn abi_decode_returns(
13756                data: &[u8],
13757                validate: bool,
13758            ) -> alloy_sol_types::Result<Self::Return> {
13759                <Self::ReturnTuple<
13760                    '_,
13761                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13762                    .map(Into::into)
13763            }
13764        }
13765    };
13766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13767    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
13768```solidity
13769function updateEpochStartBlock(uint64 newEpochStartBlock) external;
13770```*/
13771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13772    #[derive(Clone)]
13773    pub struct updateEpochStartBlockCall {
13774        #[allow(missing_docs)]
13775        pub newEpochStartBlock: u64,
13776    }
13777    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
13778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13779    #[derive(Clone)]
13780    pub struct updateEpochStartBlockReturn {}
13781    #[allow(
13782        non_camel_case_types,
13783        non_snake_case,
13784        clippy::pub_underscore_fields,
13785        clippy::style
13786    )]
13787    const _: () = {
13788        use alloy::sol_types as alloy_sol_types;
13789        {
13790            #[doc(hidden)]
13791            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13792            #[doc(hidden)]
13793            type UnderlyingRustTuple<'a> = (u64,);
13794            #[cfg(test)]
13795            #[allow(dead_code, unreachable_patterns)]
13796            fn _type_assertion(
13797                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13798            ) {
13799                match _t {
13800                    alloy_sol_types::private::AssertTypeEq::<
13801                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13802                    >(_) => {}
13803                }
13804            }
13805            #[automatically_derived]
13806            #[doc(hidden)]
13807            impl ::core::convert::From<updateEpochStartBlockCall>
13808            for UnderlyingRustTuple<'_> {
13809                fn from(value: updateEpochStartBlockCall) -> Self {
13810                    (value.newEpochStartBlock,)
13811                }
13812            }
13813            #[automatically_derived]
13814            #[doc(hidden)]
13815            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13816            for updateEpochStartBlockCall {
13817                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13818                    Self {
13819                        newEpochStartBlock: tuple.0,
13820                    }
13821                }
13822            }
13823        }
13824        {
13825            #[doc(hidden)]
13826            type UnderlyingSolTuple<'a> = ();
13827            #[doc(hidden)]
13828            type UnderlyingRustTuple<'a> = ();
13829            #[cfg(test)]
13830            #[allow(dead_code, unreachable_patterns)]
13831            fn _type_assertion(
13832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13833            ) {
13834                match _t {
13835                    alloy_sol_types::private::AssertTypeEq::<
13836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13837                    >(_) => {}
13838                }
13839            }
13840            #[automatically_derived]
13841            #[doc(hidden)]
13842            impl ::core::convert::From<updateEpochStartBlockReturn>
13843            for UnderlyingRustTuple<'_> {
13844                fn from(value: updateEpochStartBlockReturn) -> Self {
13845                    ()
13846                }
13847            }
13848            #[automatically_derived]
13849            #[doc(hidden)]
13850            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13851            for updateEpochStartBlockReturn {
13852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13853                    Self {}
13854                }
13855            }
13856        }
13857        #[automatically_derived]
13858        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
13859            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13860            type Token<'a> = <Self::Parameters<
13861                'a,
13862            > as alloy_sol_types::SolType>::Token<'a>;
13863            type Return = updateEpochStartBlockReturn;
13864            type ReturnTuple<'a> = ();
13865            type ReturnToken<'a> = <Self::ReturnTuple<
13866                'a,
13867            > as alloy_sol_types::SolType>::Token<'a>;
13868            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
13869            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
13870            #[inline]
13871            fn new<'a>(
13872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13873            ) -> Self {
13874                tuple.into()
13875            }
13876            #[inline]
13877            fn tokenize(&self) -> Self::Token<'_> {
13878                (
13879                    <alloy::sol_types::sol_data::Uint<
13880                        64,
13881                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
13882                )
13883            }
13884            #[inline]
13885            fn abi_decode_returns(
13886                data: &[u8],
13887                validate: bool,
13888            ) -> alloy_sol_types::Result<Self::Return> {
13889                <Self::ReturnTuple<
13890                    '_,
13891                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
13892                    .map(Into::into)
13893            }
13894        }
13895    };
13896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13897    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13898```solidity
13899function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13900```*/
13901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13902    #[derive(Clone)]
13903    pub struct upgradeToAndCallCall {
13904        #[allow(missing_docs)]
13905        pub newImplementation: alloy::sol_types::private::Address,
13906        #[allow(missing_docs)]
13907        pub data: alloy::sol_types::private::Bytes,
13908    }
13909    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13911    #[derive(Clone)]
13912    pub struct upgradeToAndCallReturn {}
13913    #[allow(
13914        non_camel_case_types,
13915        non_snake_case,
13916        clippy::pub_underscore_fields,
13917        clippy::style
13918    )]
13919    const _: () = {
13920        use alloy::sol_types as alloy_sol_types;
13921        {
13922            #[doc(hidden)]
13923            type UnderlyingSolTuple<'a> = (
13924                alloy::sol_types::sol_data::Address,
13925                alloy::sol_types::sol_data::Bytes,
13926            );
13927            #[doc(hidden)]
13928            type UnderlyingRustTuple<'a> = (
13929                alloy::sol_types::private::Address,
13930                alloy::sol_types::private::Bytes,
13931            );
13932            #[cfg(test)]
13933            #[allow(dead_code, unreachable_patterns)]
13934            fn _type_assertion(
13935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13936            ) {
13937                match _t {
13938                    alloy_sol_types::private::AssertTypeEq::<
13939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13940                    >(_) => {}
13941                }
13942            }
13943            #[automatically_derived]
13944            #[doc(hidden)]
13945            impl ::core::convert::From<upgradeToAndCallCall>
13946            for UnderlyingRustTuple<'_> {
13947                fn from(value: upgradeToAndCallCall) -> Self {
13948                    (value.newImplementation, value.data)
13949                }
13950            }
13951            #[automatically_derived]
13952            #[doc(hidden)]
13953            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13954            for upgradeToAndCallCall {
13955                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13956                    Self {
13957                        newImplementation: tuple.0,
13958                        data: tuple.1,
13959                    }
13960                }
13961            }
13962        }
13963        {
13964            #[doc(hidden)]
13965            type UnderlyingSolTuple<'a> = ();
13966            #[doc(hidden)]
13967            type UnderlyingRustTuple<'a> = ();
13968            #[cfg(test)]
13969            #[allow(dead_code, unreachable_patterns)]
13970            fn _type_assertion(
13971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13972            ) {
13973                match _t {
13974                    alloy_sol_types::private::AssertTypeEq::<
13975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13976                    >(_) => {}
13977                }
13978            }
13979            #[automatically_derived]
13980            #[doc(hidden)]
13981            impl ::core::convert::From<upgradeToAndCallReturn>
13982            for UnderlyingRustTuple<'_> {
13983                fn from(value: upgradeToAndCallReturn) -> Self {
13984                    ()
13985                }
13986            }
13987            #[automatically_derived]
13988            #[doc(hidden)]
13989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13990            for upgradeToAndCallReturn {
13991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13992                    Self {}
13993                }
13994            }
13995        }
13996        #[automatically_derived]
13997        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13998            type Parameters<'a> = (
13999                alloy::sol_types::sol_data::Address,
14000                alloy::sol_types::sol_data::Bytes,
14001            );
14002            type Token<'a> = <Self::Parameters<
14003                'a,
14004            > as alloy_sol_types::SolType>::Token<'a>;
14005            type Return = upgradeToAndCallReturn;
14006            type ReturnTuple<'a> = ();
14007            type ReturnToken<'a> = <Self::ReturnTuple<
14008                'a,
14009            > as alloy_sol_types::SolType>::Token<'a>;
14010            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
14011            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
14012            #[inline]
14013            fn new<'a>(
14014                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14015            ) -> Self {
14016                tuple.into()
14017            }
14018            #[inline]
14019            fn tokenize(&self) -> Self::Token<'_> {
14020                (
14021                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14022                        &self.newImplementation,
14023                    ),
14024                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
14025                        &self.data,
14026                    ),
14027                )
14028            }
14029            #[inline]
14030            fn abi_decode_returns(
14031                data: &[u8],
14032                validate: bool,
14033            ) -> alloy_sol_types::Result<Self::Return> {
14034                <Self::ReturnTuple<
14035                    '_,
14036                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
14037                    .map(Into::into)
14038            }
14039        }
14040    };
14041    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14042    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14043```solidity
14044function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14045```*/
14046    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14047    #[derive(Clone)]
14048    pub struct votingStakeTableStateCall {}
14049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14050    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14051    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14052    #[derive(Clone)]
14053    pub struct votingStakeTableStateReturn {
14054        #[allow(missing_docs)]
14055        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14056        #[allow(missing_docs)]
14057        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14058        #[allow(missing_docs)]
14059        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14060        #[allow(missing_docs)]
14061        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14062    }
14063    #[allow(
14064        non_camel_case_types,
14065        non_snake_case,
14066        clippy::pub_underscore_fields,
14067        clippy::style
14068    )]
14069    const _: () = {
14070        use alloy::sol_types as alloy_sol_types;
14071        {
14072            #[doc(hidden)]
14073            type UnderlyingSolTuple<'a> = ();
14074            #[doc(hidden)]
14075            type UnderlyingRustTuple<'a> = ();
14076            #[cfg(test)]
14077            #[allow(dead_code, unreachable_patterns)]
14078            fn _type_assertion(
14079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14080            ) {
14081                match _t {
14082                    alloy_sol_types::private::AssertTypeEq::<
14083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14084                    >(_) => {}
14085                }
14086            }
14087            #[automatically_derived]
14088            #[doc(hidden)]
14089            impl ::core::convert::From<votingStakeTableStateCall>
14090            for UnderlyingRustTuple<'_> {
14091                fn from(value: votingStakeTableStateCall) -> Self {
14092                    ()
14093                }
14094            }
14095            #[automatically_derived]
14096            #[doc(hidden)]
14097            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14098            for votingStakeTableStateCall {
14099                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14100                    Self {}
14101                }
14102            }
14103        }
14104        {
14105            #[doc(hidden)]
14106            type UnderlyingSolTuple<'a> = (
14107                alloy::sol_types::sol_data::Uint<256>,
14108                BN254::ScalarField,
14109                BN254::ScalarField,
14110                BN254::ScalarField,
14111            );
14112            #[doc(hidden)]
14113            type UnderlyingRustTuple<'a> = (
14114                alloy::sol_types::private::primitives::aliases::U256,
14115                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14116                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14117                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14118            );
14119            #[cfg(test)]
14120            #[allow(dead_code, unreachable_patterns)]
14121            fn _type_assertion(
14122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14123            ) {
14124                match _t {
14125                    alloy_sol_types::private::AssertTypeEq::<
14126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14127                    >(_) => {}
14128                }
14129            }
14130            #[automatically_derived]
14131            #[doc(hidden)]
14132            impl ::core::convert::From<votingStakeTableStateReturn>
14133            for UnderlyingRustTuple<'_> {
14134                fn from(value: votingStakeTableStateReturn) -> Self {
14135                    (
14136                        value.threshold,
14137                        value.blsKeyComm,
14138                        value.schnorrKeyComm,
14139                        value.amountComm,
14140                    )
14141                }
14142            }
14143            #[automatically_derived]
14144            #[doc(hidden)]
14145            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14146            for votingStakeTableStateReturn {
14147                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14148                    Self {
14149                        threshold: tuple.0,
14150                        blsKeyComm: tuple.1,
14151                        schnorrKeyComm: tuple.2,
14152                        amountComm: tuple.3,
14153                    }
14154                }
14155            }
14156        }
14157        #[automatically_derived]
14158        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14159            type Parameters<'a> = ();
14160            type Token<'a> = <Self::Parameters<
14161                'a,
14162            > as alloy_sol_types::SolType>::Token<'a>;
14163            type Return = votingStakeTableStateReturn;
14164            type ReturnTuple<'a> = (
14165                alloy::sol_types::sol_data::Uint<256>,
14166                BN254::ScalarField,
14167                BN254::ScalarField,
14168                BN254::ScalarField,
14169            );
14170            type ReturnToken<'a> = <Self::ReturnTuple<
14171                'a,
14172            > as alloy_sol_types::SolType>::Token<'a>;
14173            const SIGNATURE: &'static str = "votingStakeTableState()";
14174            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14175            #[inline]
14176            fn new<'a>(
14177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14178            ) -> Self {
14179                tuple.into()
14180            }
14181            #[inline]
14182            fn tokenize(&self) -> Self::Token<'_> {
14183                ()
14184            }
14185            #[inline]
14186            fn abi_decode_returns(
14187                data: &[u8],
14188                validate: bool,
14189            ) -> alloy_sol_types::Result<Self::Return> {
14190                <Self::ReturnTuple<
14191                    '_,
14192                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
14193                    .map(Into::into)
14194            }
14195        }
14196    };
14197    ///Container for all the [`LightClientV3Mock`](self) function calls.
14198    #[derive()]
14199    pub enum LightClientV3MockCalls {
14200        #[allow(missing_docs)]
14201        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14202        #[allow(missing_docs)]
14203        _getVk(_getVkCall),
14204        #[allow(missing_docs)]
14205        authRoot(authRootCall),
14206        #[allow(missing_docs)]
14207        blocksPerEpoch(blocksPerEpochCall),
14208        #[allow(missing_docs)]
14209        currentBlockNumber(currentBlockNumberCall),
14210        #[allow(missing_docs)]
14211        currentEpoch(currentEpochCall),
14212        #[allow(missing_docs)]
14213        disablePermissionedProverMode(disablePermissionedProverModeCall),
14214        #[allow(missing_docs)]
14215        epochFromBlockNumber(epochFromBlockNumberCall),
14216        #[allow(missing_docs)]
14217        epochStartBlock(epochStartBlockCall),
14218        #[allow(missing_docs)]
14219        finalizedState(finalizedStateCall),
14220        #[allow(missing_docs)]
14221        firstEpoch(firstEpochCall),
14222        #[allow(missing_docs)]
14223        genesisStakeTableState(genesisStakeTableStateCall),
14224        #[allow(missing_docs)]
14225        genesisState(genesisStateCall),
14226        #[allow(missing_docs)]
14227        getHotShotCommitment(getHotShotCommitmentCall),
14228        #[allow(missing_docs)]
14229        getStateHistoryCount(getStateHistoryCountCall),
14230        #[allow(missing_docs)]
14231        getVersion(getVersionCall),
14232        #[allow(missing_docs)]
14233        initialize(initializeCall),
14234        #[allow(missing_docs)]
14235        initializeV2(initializeV2Call),
14236        #[allow(missing_docs)]
14237        initializeV3(initializeV3Call),
14238        #[allow(missing_docs)]
14239        isEpochRoot(isEpochRootCall),
14240        #[allow(missing_docs)]
14241        isGtEpochRoot(isGtEpochRootCall),
14242        #[allow(missing_docs)]
14243        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14244        #[allow(missing_docs)]
14245        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14246        #[allow(missing_docs)]
14247        newFinalizedState_0(newFinalizedState_0Call),
14248        #[allow(missing_docs)]
14249        newFinalizedState_1(newFinalizedState_1Call),
14250        #[allow(missing_docs)]
14251        newFinalizedState_2(newFinalizedState_2Call),
14252        #[allow(missing_docs)]
14253        owner(ownerCall),
14254        #[allow(missing_docs)]
14255        permissionedProver(permissionedProverCall),
14256        #[allow(missing_docs)]
14257        proxiableUUID(proxiableUUIDCall),
14258        #[allow(missing_docs)]
14259        renounceOwnership(renounceOwnershipCall),
14260        #[allow(missing_docs)]
14261        setBlocksPerEpoch(setBlocksPerEpochCall),
14262        #[allow(missing_docs)]
14263        setFinalizedState(setFinalizedStateCall),
14264        #[allow(missing_docs)]
14265        setHotShotDownSince(setHotShotDownSinceCall),
14266        #[allow(missing_docs)]
14267        setHotShotUp(setHotShotUpCall),
14268        #[allow(missing_docs)]
14269        setPermissionedProver(setPermissionedProverCall),
14270        #[allow(missing_docs)]
14271        setStateHistory(setStateHistoryCall),
14272        #[allow(missing_docs)]
14273        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14274        #[allow(missing_docs)]
14275        setVotingStakeTableState(setVotingStakeTableStateCall),
14276        #[allow(missing_docs)]
14277        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14278        #[allow(missing_docs)]
14279        stateHistoryCommitments(stateHistoryCommitmentsCall),
14280        #[allow(missing_docs)]
14281        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14282        #[allow(missing_docs)]
14283        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14284        #[allow(missing_docs)]
14285        transferOwnership(transferOwnershipCall),
14286        #[allow(missing_docs)]
14287        updateEpochStartBlock(updateEpochStartBlockCall),
14288        #[allow(missing_docs)]
14289        upgradeToAndCall(upgradeToAndCallCall),
14290        #[allow(missing_docs)]
14291        votingStakeTableState(votingStakeTableStateCall),
14292    }
14293    #[automatically_derived]
14294    impl LightClientV3MockCalls {
14295        /// All the selectors of this enum.
14296        ///
14297        /// Note that the selectors might not be in the same order as the variants.
14298        /// No guarantees are made about the order of the selectors.
14299        ///
14300        /// Prefer using `SolInterface` methods instead.
14301        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14302            [1u8, 63u8, 165u8, 252u8],
14303            [2u8, 181u8, 146u8, 243u8],
14304            [6u8, 37u8, 225u8, 155u8],
14305            [13u8, 142u8, 110u8, 44u8],
14306            [18u8, 23u8, 60u8, 44u8],
14307            [22u8, 122u8, 198u8, 24u8],
14308            [32u8, 99u8, 212u8, 247u8],
14309            [37u8, 41u8, 116u8, 39u8],
14310            [45u8, 82u8, 170u8, 214u8],
14311            [47u8, 121u8, 136u8, 157u8],
14312            [48u8, 12u8, 137u8, 221u8],
14313            [49u8, 61u8, 247u8, 177u8],
14314            [55u8, 142u8, 194u8, 59u8],
14315            [56u8, 228u8, 84u8, 177u8],
14316            [60u8, 35u8, 182u8, 219u8],
14317            [62u8, 213u8, 91u8, 123u8],
14318            [65u8, 104u8, 39u8, 68u8],
14319            [66u8, 109u8, 49u8, 148u8],
14320            [67u8, 61u8, 186u8, 159u8],
14321            [79u8, 30u8, 242u8, 134u8],
14322            [82u8, 209u8, 144u8, 45u8],
14323            [98u8, 58u8, 19u8, 56u8],
14324            [105u8, 204u8, 106u8, 4u8],
14325            [113u8, 80u8, 24u8, 166u8],
14326            [117u8, 124u8, 55u8, 173u8],
14327            [118u8, 103u8, 24u8, 8u8],
14328            [130u8, 110u8, 65u8, 252u8],
14329            [133u8, 132u8, 210u8, 63u8],
14330            [141u8, 165u8, 203u8, 91u8],
14331            [144u8, 193u8, 67u8, 144u8],
14332            [150u8, 193u8, 202u8, 97u8],
14333            [153u8, 131u8, 40u8, 232u8],
14334            [155u8, 170u8, 60u8, 201u8],
14335            [159u8, 219u8, 84u8, 167u8],
14336            [170u8, 189u8, 93u8, 179u8],
14337            [173u8, 60u8, 177u8, 204u8],
14338            [179u8, 59u8, 196u8, 145u8],
14339            [181u8, 173u8, 234u8, 60u8],
14340            [194u8, 59u8, 158u8, 158u8],
14341            [200u8, 229u8, 228u8, 152u8],
14342            [210u8, 77u8, 147u8, 61u8],
14343            [224u8, 48u8, 51u8, 1u8],
14344            [240u8, 104u8, 32u8, 84u8],
14345            [242u8, 253u8, 227u8, 139u8],
14346            [245u8, 103u8, 97u8, 96u8],
14347            [249u8, 229u8, 13u8, 25u8],
14348        ];
14349    }
14350    #[automatically_derived]
14351    impl alloy_sol_types::SolInterface for LightClientV3MockCalls {
14352        const NAME: &'static str = "LightClientV3MockCalls";
14353        const MIN_DATA_LENGTH: usize = 0usize;
14354        const COUNT: usize = 46usize;
14355        #[inline]
14356        fn selector(&self) -> [u8; 4] {
14357            match self {
14358                Self::UPGRADE_INTERFACE_VERSION(_) => {
14359                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14360                }
14361                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14362                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
14363                Self::blocksPerEpoch(_) => {
14364                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14365                }
14366                Self::currentBlockNumber(_) => {
14367                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14368                }
14369                Self::currentEpoch(_) => {
14370                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14371                }
14372                Self::disablePermissionedProverMode(_) => {
14373                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14374                }
14375                Self::epochFromBlockNumber(_) => {
14376                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14377                }
14378                Self::epochStartBlock(_) => {
14379                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14380                }
14381                Self::finalizedState(_) => {
14382                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14383                }
14384                Self::firstEpoch(_) => {
14385                    <firstEpochCall as alloy_sol_types::SolCall>::SELECTOR
14386                }
14387                Self::genesisStakeTableState(_) => {
14388                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14389                }
14390                Self::genesisState(_) => {
14391                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14392                }
14393                Self::getHotShotCommitment(_) => {
14394                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14395                }
14396                Self::getStateHistoryCount(_) => {
14397                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14398                }
14399                Self::getVersion(_) => {
14400                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14401                }
14402                Self::initialize(_) => {
14403                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14404                }
14405                Self::initializeV2(_) => {
14406                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14407                }
14408                Self::initializeV3(_) => {
14409                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
14410                }
14411                Self::isEpochRoot(_) => {
14412                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14413                }
14414                Self::isGtEpochRoot(_) => {
14415                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14416                }
14417                Self::isPermissionedProverEnabled(_) => {
14418                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14419                }
14420                Self::lagOverEscapeHatchThreshold(_) => {
14421                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14422                }
14423                Self::newFinalizedState_0(_) => {
14424                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14425                }
14426                Self::newFinalizedState_1(_) => {
14427                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14428                }
14429                Self::newFinalizedState_2(_) => {
14430                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
14431                }
14432                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14433                Self::permissionedProver(_) => {
14434                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14435                }
14436                Self::proxiableUUID(_) => {
14437                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14438                }
14439                Self::renounceOwnership(_) => {
14440                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14441                }
14442                Self::setBlocksPerEpoch(_) => {
14443                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14444                }
14445                Self::setFinalizedState(_) => {
14446                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14447                }
14448                Self::setHotShotDownSince(_) => {
14449                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
14450                }
14451                Self::setHotShotUp(_) => {
14452                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
14453                }
14454                Self::setPermissionedProver(_) => {
14455                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14456                }
14457                Self::setStateHistory(_) => {
14458                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
14459                }
14460                Self::setStateHistoryRetentionPeriod(_) => {
14461                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14462                }
14463                Self::setVotingStakeTableState(_) => {
14464                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14465                }
14466                Self::setstateHistoryRetentionPeriod(_) => {
14467                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14468                }
14469                Self::stateHistoryCommitments(_) => {
14470                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14471                }
14472                Self::stateHistoryFirstIndex(_) => {
14473                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
14474                }
14475                Self::stateHistoryRetentionPeriod(_) => {
14476                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14477                }
14478                Self::transferOwnership(_) => {
14479                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14480                }
14481                Self::updateEpochStartBlock(_) => {
14482                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14483                }
14484                Self::upgradeToAndCall(_) => {
14485                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
14486                }
14487                Self::votingStakeTableState(_) => {
14488                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14489                }
14490            }
14491        }
14492        #[inline]
14493        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14494            Self::SELECTORS.get(i).copied()
14495        }
14496        #[inline]
14497        fn valid_selector(selector: [u8; 4]) -> bool {
14498            Self::SELECTORS.binary_search(&selector).is_ok()
14499        }
14500        #[inline]
14501        #[allow(non_snake_case)]
14502        fn abi_decode_raw(
14503            selector: [u8; 4],
14504            data: &[u8],
14505            validate: bool,
14506        ) -> alloy_sol_types::Result<Self> {
14507            static DECODE_SHIMS: &[fn(
14508                &[u8],
14509                bool,
14510            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
14511                {
14512                    fn setPermissionedProver(
14513                        data: &[u8],
14514                        validate: bool,
14515                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14516                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14517                                data,
14518                                validate,
14519                            )
14520                            .map(LightClientV3MockCalls::setPermissionedProver)
14521                    }
14522                    setPermissionedProver
14523                },
14524                {
14525                    fn stateHistoryCommitments(
14526                        data: &[u8],
14527                        validate: bool,
14528                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14529                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
14530                                data,
14531                                validate,
14532                            )
14533                            .map(LightClientV3MockCalls::stateHistoryCommitments)
14534                    }
14535                    stateHistoryCommitments
14536                },
14537                {
14538                    fn votingStakeTableState(
14539                        data: &[u8],
14540                        validate: bool,
14541                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14542                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14543                                data,
14544                                validate,
14545                            )
14546                            .map(LightClientV3MockCalls::votingStakeTableState)
14547                    }
14548                    votingStakeTableState
14549                },
14550                {
14551                    fn getVersion(
14552                        data: &[u8],
14553                        validate: bool,
14554                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14555                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
14556                                data,
14557                                validate,
14558                            )
14559                            .map(LightClientV3MockCalls::getVersion)
14560                    }
14561                    getVersion
14562                },
14563                {
14564                    fn _getVk(
14565                        data: &[u8],
14566                        validate: bool,
14567                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14568                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
14569                                data,
14570                                validate,
14571                            )
14572                            .map(LightClientV3MockCalls::_getVk)
14573                    }
14574                    _getVk
14575                },
14576                {
14577                    fn updateEpochStartBlock(
14578                        data: &[u8],
14579                        validate: bool,
14580                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14581                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14582                                data,
14583                                validate,
14584                            )
14585                            .map(LightClientV3MockCalls::updateEpochStartBlock)
14586                    }
14587                    updateEpochStartBlock
14588                },
14589                {
14590                    fn newFinalizedState_0(
14591                        data: &[u8],
14592                        validate: bool,
14593                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14594                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
14595                                data,
14596                                validate,
14597                            )
14598                            .map(LightClientV3MockCalls::newFinalizedState_0)
14599                    }
14600                    newFinalizedState_0
14601                },
14602                {
14603                    fn isEpochRoot(
14604                        data: &[u8],
14605                        validate: bool,
14606                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14607                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14608                                data,
14609                                validate,
14610                            )
14611                            .map(LightClientV3MockCalls::isEpochRoot)
14612                    }
14613                    isEpochRoot
14614                },
14615                {
14616                    fn setHotShotDownSince(
14617                        data: &[u8],
14618                        validate: bool,
14619                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14620                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
14621                                data,
14622                                validate,
14623                            )
14624                            .map(LightClientV3MockCalls::setHotShotDownSince)
14625                    }
14626                    setHotShotDownSince
14627                },
14628                {
14629                    fn stateHistoryFirstIndex(
14630                        data: &[u8],
14631                        validate: bool,
14632                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14633                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
14634                                data,
14635                                validate,
14636                            )
14637                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
14638                    }
14639                    stateHistoryFirstIndex
14640                },
14641                {
14642                    fn isGtEpochRoot(
14643                        data: &[u8],
14644                        validate: bool,
14645                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14646                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14647                                data,
14648                                validate,
14649                            )
14650                            .map(LightClientV3MockCalls::isGtEpochRoot)
14651                    }
14652                    isGtEpochRoot
14653                },
14654                {
14655                    fn permissionedProver(
14656                        data: &[u8],
14657                        validate: bool,
14658                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14659                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
14660                                data,
14661                                validate,
14662                            )
14663                            .map(LightClientV3MockCalls::permissionedProver)
14664                    }
14665                    permissionedProver
14666                },
14667                {
14668                    fn currentBlockNumber(
14669                        data: &[u8],
14670                        validate: bool,
14671                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14672                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14673                                data,
14674                                validate,
14675                            )
14676                            .map(LightClientV3MockCalls::currentBlockNumber)
14677                    }
14678                    currentBlockNumber
14679                },
14680                {
14681                    fn initializeV3(
14682                        data: &[u8],
14683                        validate: bool,
14684                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14685                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
14686                                data,
14687                                validate,
14688                            )
14689                            .map(LightClientV3MockCalls::initializeV3)
14690                    }
14691                    initializeV3
14692                },
14693                {
14694                    fn setBlocksPerEpoch(
14695                        data: &[u8],
14696                        validate: bool,
14697                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14698                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14699                                data,
14700                                validate,
14701                            )
14702                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
14703                    }
14704                    setBlocksPerEpoch
14705                },
14706                {
14707                    fn epochStartBlock(
14708                        data: &[u8],
14709                        validate: bool,
14710                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14711                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
14712                                data,
14713                                validate,
14714                            )
14715                            .map(LightClientV3MockCalls::epochStartBlock)
14716                    }
14717                    epochStartBlock
14718                },
14719                {
14720                    fn firstEpoch(
14721                        data: &[u8],
14722                        validate: bool,
14723                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14724                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14725                                data,
14726                                validate,
14727                            )
14728                            .map(LightClientV3MockCalls::firstEpoch)
14729                    }
14730                    firstEpoch
14731                },
14732                {
14733                    fn genesisStakeTableState(
14734                        data: &[u8],
14735                        validate: bool,
14736                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14737                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14738                                data,
14739                                validate,
14740                            )
14741                            .map(LightClientV3MockCalls::genesisStakeTableState)
14742                    }
14743                    genesisStakeTableState
14744                },
14745                {
14746                    fn setStateHistoryRetentionPeriod(
14747                        data: &[u8],
14748                        validate: bool,
14749                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14750                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14751                                data,
14752                                validate,
14753                            )
14754                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
14755                    }
14756                    setStateHistoryRetentionPeriod
14757                },
14758                {
14759                    fn upgradeToAndCall(
14760                        data: &[u8],
14761                        validate: bool,
14762                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14763                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
14764                                data,
14765                                validate,
14766                            )
14767                            .map(LightClientV3MockCalls::upgradeToAndCall)
14768                    }
14769                    upgradeToAndCall
14770                },
14771                {
14772                    fn proxiableUUID(
14773                        data: &[u8],
14774                        validate: bool,
14775                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14776                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
14777                                data,
14778                                validate,
14779                            )
14780                            .map(LightClientV3MockCalls::proxiableUUID)
14781                    }
14782                    proxiableUUID
14783                },
14784                {
14785                    fn setVotingStakeTableState(
14786                        data: &[u8],
14787                        validate: bool,
14788                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14789                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14790                                data,
14791                                validate,
14792                            )
14793                            .map(LightClientV3MockCalls::setVotingStakeTableState)
14794                    }
14795                    setVotingStakeTableState
14796                },
14797                {
14798                    fn disablePermissionedProverMode(
14799                        data: &[u8],
14800                        validate: bool,
14801                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14802                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14803                                data,
14804                                validate,
14805                            )
14806                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
14807                    }
14808                    disablePermissionedProverMode
14809                },
14810                {
14811                    fn renounceOwnership(
14812                        data: &[u8],
14813                        validate: bool,
14814                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14815                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14816                                data,
14817                                validate,
14818                            )
14819                            .map(LightClientV3MockCalls::renounceOwnership)
14820                    }
14821                    renounceOwnership
14822                },
14823                {
14824                    fn newFinalizedState_1(
14825                        data: &[u8],
14826                        validate: bool,
14827                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14828                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
14829                                data,
14830                                validate,
14831                            )
14832                            .map(LightClientV3MockCalls::newFinalizedState_1)
14833                    }
14834                    newFinalizedState_1
14835                },
14836                {
14837                    fn currentEpoch(
14838                        data: &[u8],
14839                        validate: bool,
14840                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14841                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14842                                data,
14843                                validate,
14844                            )
14845                            .map(LightClientV3MockCalls::currentEpoch)
14846                    }
14847                    currentEpoch
14848                },
14849                {
14850                    fn isPermissionedProverEnabled(
14851                        data: &[u8],
14852                        validate: bool,
14853                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14854                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
14855                                data,
14856                                validate,
14857                            )
14858                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
14859                    }
14860                    isPermissionedProverEnabled
14861                },
14862                {
14863                    fn getHotShotCommitment(
14864                        data: &[u8],
14865                        validate: bool,
14866                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14867                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
14868                                data,
14869                                validate,
14870                            )
14871                            .map(LightClientV3MockCalls::getHotShotCommitment)
14872                    }
14873                    getHotShotCommitment
14874                },
14875                {
14876                    fn owner(
14877                        data: &[u8],
14878                        validate: bool,
14879                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14880                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
14881                                data,
14882                                validate,
14883                            )
14884                            .map(LightClientV3MockCalls::owner)
14885                    }
14886                    owner
14887                },
14888                {
14889                    fn epochFromBlockNumber(
14890                        data: &[u8],
14891                        validate: bool,
14892                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14893                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
14894                                data,
14895                                validate,
14896                            )
14897                            .map(LightClientV3MockCalls::epochFromBlockNumber)
14898                    }
14899                    epochFromBlockNumber
14900                },
14901                {
14902                    fn setstateHistoryRetentionPeriod(
14903                        data: &[u8],
14904                        validate: bool,
14905                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14906                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14907                                data,
14908                                validate,
14909                            )
14910                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
14911                    }
14912                    setstateHistoryRetentionPeriod
14913                },
14914                {
14915                    fn authRoot(
14916                        data: &[u8],
14917                        validate: bool,
14918                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14919                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
14920                                data,
14921                                validate,
14922                            )
14923                            .map(LightClientV3MockCalls::authRoot)
14924                    }
14925                    authRoot
14926                },
14927                {
14928                    fn initialize(
14929                        data: &[u8],
14930                        validate: bool,
14931                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14932                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14933                                data,
14934                                validate,
14935                            )
14936                            .map(LightClientV3MockCalls::initialize)
14937                    }
14938                    initialize
14939                },
14940                {
14941                    fn finalizedState(
14942                        data: &[u8],
14943                        validate: bool,
14944                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14945                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14946                                data,
14947                                validate,
14948                            )
14949                            .map(LightClientV3MockCalls::finalizedState)
14950                    }
14951                    finalizedState
14952                },
14953                {
14954                    fn newFinalizedState_2(
14955                        data: &[u8],
14956                        validate: bool,
14957                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14958                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14959                                data,
14960                                validate,
14961                            )
14962                            .map(LightClientV3MockCalls::newFinalizedState_2)
14963                    }
14964                    newFinalizedState_2
14965                },
14966                {
14967                    fn UPGRADE_INTERFACE_VERSION(
14968                        data: &[u8],
14969                        validate: bool,
14970                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14971                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14972                                data,
14973                                validate,
14974                            )
14975                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
14976                    }
14977                    UPGRADE_INTERFACE_VERSION
14978                },
14979                {
14980                    fn initializeV2(
14981                        data: &[u8],
14982                        validate: bool,
14983                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14984                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14985                                data,
14986                                validate,
14987                            )
14988                            .map(LightClientV3MockCalls::initializeV2)
14989                    }
14990                    initializeV2
14991                },
14992                {
14993                    fn setFinalizedState(
14994                        data: &[u8],
14995                        validate: bool,
14996                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
14997                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14998                                data,
14999                                validate,
15000                            )
15001                            .map(LightClientV3MockCalls::setFinalizedState)
15002                    }
15003                    setFinalizedState
15004                },
15005                {
15006                    fn stateHistoryRetentionPeriod(
15007                        data: &[u8],
15008                        validate: bool,
15009                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15010                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15011                                data,
15012                                validate,
15013                            )
15014                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
15015                    }
15016                    stateHistoryRetentionPeriod
15017                },
15018                {
15019                    fn setHotShotUp(
15020                        data: &[u8],
15021                        validate: bool,
15022                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15023                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
15024                                data,
15025                                validate,
15026                            )
15027                            .map(LightClientV3MockCalls::setHotShotUp)
15028                    }
15029                    setHotShotUp
15030                },
15031                {
15032                    fn genesisState(
15033                        data: &[u8],
15034                        validate: bool,
15035                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15036                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15037                                data,
15038                                validate,
15039                            )
15040                            .map(LightClientV3MockCalls::genesisState)
15041                    }
15042                    genesisState
15043                },
15044                {
15045                    fn lagOverEscapeHatchThreshold(
15046                        data: &[u8],
15047                        validate: bool,
15048                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15049                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
15050                                data,
15051                                validate,
15052                            )
15053                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
15054                    }
15055                    lagOverEscapeHatchThreshold
15056                },
15057                {
15058                    fn blocksPerEpoch(
15059                        data: &[u8],
15060                        validate: bool,
15061                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15062                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15063                                data,
15064                                validate,
15065                            )
15066                            .map(LightClientV3MockCalls::blocksPerEpoch)
15067                    }
15068                    blocksPerEpoch
15069                },
15070                {
15071                    fn transferOwnership(
15072                        data: &[u8],
15073                        validate: bool,
15074                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15075                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15076                                data,
15077                                validate,
15078                            )
15079                            .map(LightClientV3MockCalls::transferOwnership)
15080                    }
15081                    transferOwnership
15082                },
15083                {
15084                    fn setStateHistory(
15085                        data: &[u8],
15086                        validate: bool,
15087                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15088                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
15089                                data,
15090                                validate,
15091                            )
15092                            .map(LightClientV3MockCalls::setStateHistory)
15093                    }
15094                    setStateHistory
15095                },
15096                {
15097                    fn getStateHistoryCount(
15098                        data: &[u8],
15099                        validate: bool,
15100                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
15101                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
15102                                data,
15103                                validate,
15104                            )
15105                            .map(LightClientV3MockCalls::getStateHistoryCount)
15106                    }
15107                    getStateHistoryCount
15108                },
15109            ];
15110            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15111                return Err(
15112                    alloy_sol_types::Error::unknown_selector(
15113                        <Self as alloy_sol_types::SolInterface>::NAME,
15114                        selector,
15115                    ),
15116                );
15117            };
15118            DECODE_SHIMS[idx](data, validate)
15119        }
15120        #[inline]
15121        fn abi_encoded_size(&self) -> usize {
15122            match self {
15123                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15124                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15125                        inner,
15126                    )
15127                }
15128                Self::_getVk(inner) => {
15129                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15130                }
15131                Self::authRoot(inner) => {
15132                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15133                }
15134                Self::blocksPerEpoch(inner) => {
15135                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15136                        inner,
15137                    )
15138                }
15139                Self::currentBlockNumber(inner) => {
15140                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15141                        inner,
15142                    )
15143                }
15144                Self::currentEpoch(inner) => {
15145                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15146                        inner,
15147                    )
15148                }
15149                Self::disablePermissionedProverMode(inner) => {
15150                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15151                        inner,
15152                    )
15153                }
15154                Self::epochFromBlockNumber(inner) => {
15155                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15156                        inner,
15157                    )
15158                }
15159                Self::epochStartBlock(inner) => {
15160                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15161                        inner,
15162                    )
15163                }
15164                Self::finalizedState(inner) => {
15165                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15166                        inner,
15167                    )
15168                }
15169                Self::firstEpoch(inner) => {
15170                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15171                }
15172                Self::genesisStakeTableState(inner) => {
15173                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15174                        inner,
15175                    )
15176                }
15177                Self::genesisState(inner) => {
15178                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15179                        inner,
15180                    )
15181                }
15182                Self::getHotShotCommitment(inner) => {
15183                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15184                        inner,
15185                    )
15186                }
15187                Self::getStateHistoryCount(inner) => {
15188                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15189                        inner,
15190                    )
15191                }
15192                Self::getVersion(inner) => {
15193                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15194                }
15195                Self::initialize(inner) => {
15196                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15197                }
15198                Self::initializeV2(inner) => {
15199                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15200                        inner,
15201                    )
15202                }
15203                Self::initializeV3(inner) => {
15204                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15205                        inner,
15206                    )
15207                }
15208                Self::isEpochRoot(inner) => {
15209                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15210                        inner,
15211                    )
15212                }
15213                Self::isGtEpochRoot(inner) => {
15214                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15215                        inner,
15216                    )
15217                }
15218                Self::isPermissionedProverEnabled(inner) => {
15219                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15220                        inner,
15221                    )
15222                }
15223                Self::lagOverEscapeHatchThreshold(inner) => {
15224                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15225                        inner,
15226                    )
15227                }
15228                Self::newFinalizedState_0(inner) => {
15229                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15230                        inner,
15231                    )
15232                }
15233                Self::newFinalizedState_1(inner) => {
15234                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15235                        inner,
15236                    )
15237                }
15238                Self::newFinalizedState_2(inner) => {
15239                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15240                        inner,
15241                    )
15242                }
15243                Self::owner(inner) => {
15244                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15245                }
15246                Self::permissionedProver(inner) => {
15247                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15248                        inner,
15249                    )
15250                }
15251                Self::proxiableUUID(inner) => {
15252                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15253                        inner,
15254                    )
15255                }
15256                Self::renounceOwnership(inner) => {
15257                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15258                        inner,
15259                    )
15260                }
15261                Self::setBlocksPerEpoch(inner) => {
15262                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15263                        inner,
15264                    )
15265                }
15266                Self::setFinalizedState(inner) => {
15267                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15268                        inner,
15269                    )
15270                }
15271                Self::setHotShotDownSince(inner) => {
15272                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
15273                        inner,
15274                    )
15275                }
15276                Self::setHotShotUp(inner) => {
15277                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
15278                        inner,
15279                    )
15280                }
15281                Self::setPermissionedProver(inner) => {
15282                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15283                        inner,
15284                    )
15285                }
15286                Self::setStateHistory(inner) => {
15287                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
15288                        inner,
15289                    )
15290                }
15291                Self::setStateHistoryRetentionPeriod(inner) => {
15292                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15293                        inner,
15294                    )
15295                }
15296                Self::setVotingStakeTableState(inner) => {
15297                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15298                        inner,
15299                    )
15300                }
15301                Self::setstateHistoryRetentionPeriod(inner) => {
15302                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15303                        inner,
15304                    )
15305                }
15306                Self::stateHistoryCommitments(inner) => {
15307                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15308                        inner,
15309                    )
15310                }
15311                Self::stateHistoryFirstIndex(inner) => {
15312                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15313                        inner,
15314                    )
15315                }
15316                Self::stateHistoryRetentionPeriod(inner) => {
15317                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15318                        inner,
15319                    )
15320                }
15321                Self::transferOwnership(inner) => {
15322                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15323                        inner,
15324                    )
15325                }
15326                Self::updateEpochStartBlock(inner) => {
15327                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15328                        inner,
15329                    )
15330                }
15331                Self::upgradeToAndCall(inner) => {
15332                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15333                        inner,
15334                    )
15335                }
15336                Self::votingStakeTableState(inner) => {
15337                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15338                        inner,
15339                    )
15340                }
15341            }
15342        }
15343        #[inline]
15344        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15345            match self {
15346                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15347                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15348                        inner,
15349                        out,
15350                    )
15351                }
15352                Self::_getVk(inner) => {
15353                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15354                }
15355                Self::authRoot(inner) => {
15356                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15357                        inner,
15358                        out,
15359                    )
15360                }
15361                Self::blocksPerEpoch(inner) => {
15362                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15363                        inner,
15364                        out,
15365                    )
15366                }
15367                Self::currentBlockNumber(inner) => {
15368                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15369                        inner,
15370                        out,
15371                    )
15372                }
15373                Self::currentEpoch(inner) => {
15374                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15375                        inner,
15376                        out,
15377                    )
15378                }
15379                Self::disablePermissionedProverMode(inner) => {
15380                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15381                        inner,
15382                        out,
15383                    )
15384                }
15385                Self::epochFromBlockNumber(inner) => {
15386                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15387                        inner,
15388                        out,
15389                    )
15390                }
15391                Self::epochStartBlock(inner) => {
15392                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15393                        inner,
15394                        out,
15395                    )
15396                }
15397                Self::finalizedState(inner) => {
15398                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15399                        inner,
15400                        out,
15401                    )
15402                }
15403                Self::firstEpoch(inner) => {
15404                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15405                        inner,
15406                        out,
15407                    )
15408                }
15409                Self::genesisStakeTableState(inner) => {
15410                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15411                        inner,
15412                        out,
15413                    )
15414                }
15415                Self::genesisState(inner) => {
15416                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15417                        inner,
15418                        out,
15419                    )
15420                }
15421                Self::getHotShotCommitment(inner) => {
15422                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15423                        inner,
15424                        out,
15425                    )
15426                }
15427                Self::getStateHistoryCount(inner) => {
15428                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15429                        inner,
15430                        out,
15431                    )
15432                }
15433                Self::getVersion(inner) => {
15434                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15435                        inner,
15436                        out,
15437                    )
15438                }
15439                Self::initialize(inner) => {
15440                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15441                        inner,
15442                        out,
15443                    )
15444                }
15445                Self::initializeV2(inner) => {
15446                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15447                        inner,
15448                        out,
15449                    )
15450                }
15451                Self::initializeV3(inner) => {
15452                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15453                        inner,
15454                        out,
15455                    )
15456                }
15457                Self::isEpochRoot(inner) => {
15458                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15459                        inner,
15460                        out,
15461                    )
15462                }
15463                Self::isGtEpochRoot(inner) => {
15464                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15465                        inner,
15466                        out,
15467                    )
15468                }
15469                Self::isPermissionedProverEnabled(inner) => {
15470                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15471                        inner,
15472                        out,
15473                    )
15474                }
15475                Self::lagOverEscapeHatchThreshold(inner) => {
15476                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15477                        inner,
15478                        out,
15479                    )
15480                }
15481                Self::newFinalizedState_0(inner) => {
15482                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15483                        inner,
15484                        out,
15485                    )
15486                }
15487                Self::newFinalizedState_1(inner) => {
15488                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15489                        inner,
15490                        out,
15491                    )
15492                }
15493                Self::newFinalizedState_2(inner) => {
15494                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15495                        inner,
15496                        out,
15497                    )
15498                }
15499                Self::owner(inner) => {
15500                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15501                }
15502                Self::permissionedProver(inner) => {
15503                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15504                        inner,
15505                        out,
15506                    )
15507                }
15508                Self::proxiableUUID(inner) => {
15509                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15510                        inner,
15511                        out,
15512                    )
15513                }
15514                Self::renounceOwnership(inner) => {
15515                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15516                        inner,
15517                        out,
15518                    )
15519                }
15520                Self::setBlocksPerEpoch(inner) => {
15521                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15522                        inner,
15523                        out,
15524                    )
15525                }
15526                Self::setFinalizedState(inner) => {
15527                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15528                        inner,
15529                        out,
15530                    )
15531                }
15532                Self::setHotShotDownSince(inner) => {
15533                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
15534                        inner,
15535                        out,
15536                    )
15537                }
15538                Self::setHotShotUp(inner) => {
15539                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
15540                        inner,
15541                        out,
15542                    )
15543                }
15544                Self::setPermissionedProver(inner) => {
15545                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15546                        inner,
15547                        out,
15548                    )
15549                }
15550                Self::setStateHistory(inner) => {
15551                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
15552                        inner,
15553                        out,
15554                    )
15555                }
15556                Self::setStateHistoryRetentionPeriod(inner) => {
15557                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15558                        inner,
15559                        out,
15560                    )
15561                }
15562                Self::setVotingStakeTableState(inner) => {
15563                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15564                        inner,
15565                        out,
15566                    )
15567                }
15568                Self::setstateHistoryRetentionPeriod(inner) => {
15569                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15570                        inner,
15571                        out,
15572                    )
15573                }
15574                Self::stateHistoryCommitments(inner) => {
15575                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
15576                        inner,
15577                        out,
15578                    )
15579                }
15580                Self::stateHistoryFirstIndex(inner) => {
15581                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
15582                        inner,
15583                        out,
15584                    )
15585                }
15586                Self::stateHistoryRetentionPeriod(inner) => {
15587                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15588                        inner,
15589                        out,
15590                    )
15591                }
15592                Self::transferOwnership(inner) => {
15593                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15594                        inner,
15595                        out,
15596                    )
15597                }
15598                Self::updateEpochStartBlock(inner) => {
15599                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15600                        inner,
15601                        out,
15602                    )
15603                }
15604                Self::upgradeToAndCall(inner) => {
15605                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
15606                        inner,
15607                        out,
15608                    )
15609                }
15610                Self::votingStakeTableState(inner) => {
15611                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15612                        inner,
15613                        out,
15614                    )
15615                }
15616            }
15617        }
15618    }
15619    ///Container for all the [`LightClientV3Mock`](self) custom errors.
15620    #[derive(Debug, PartialEq, Eq, Hash)]
15621    pub enum LightClientV3MockErrors {
15622        #[allow(missing_docs)]
15623        AddressEmptyCode(AddressEmptyCode),
15624        #[allow(missing_docs)]
15625        DeprecatedApi(DeprecatedApi),
15626        #[allow(missing_docs)]
15627        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
15628        #[allow(missing_docs)]
15629        ERC1967NonPayable(ERC1967NonPayable),
15630        #[allow(missing_docs)]
15631        FailedInnerCall(FailedInnerCall),
15632        #[allow(missing_docs)]
15633        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
15634        #[allow(missing_docs)]
15635        InvalidAddress(InvalidAddress),
15636        #[allow(missing_docs)]
15637        InvalidArgs(InvalidArgs),
15638        #[allow(missing_docs)]
15639        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
15640        #[allow(missing_docs)]
15641        InvalidInitialization(InvalidInitialization),
15642        #[allow(missing_docs)]
15643        InvalidMaxStateHistory(InvalidMaxStateHistory),
15644        #[allow(missing_docs)]
15645        InvalidProof(InvalidProof),
15646        #[allow(missing_docs)]
15647        MissingEpochRootUpdate(MissingEpochRootUpdate),
15648        #[allow(missing_docs)]
15649        NoChangeRequired(NoChangeRequired),
15650        #[allow(missing_docs)]
15651        NotInitializing(NotInitializing),
15652        #[allow(missing_docs)]
15653        OutdatedState(OutdatedState),
15654        #[allow(missing_docs)]
15655        OwnableInvalidOwner(OwnableInvalidOwner),
15656        #[allow(missing_docs)]
15657        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
15658        #[allow(missing_docs)]
15659        ProverNotPermissioned(ProverNotPermissioned),
15660        #[allow(missing_docs)]
15661        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
15662        #[allow(missing_docs)]
15663        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
15664        #[allow(missing_docs)]
15665        WrongStakeTableUsed(WrongStakeTableUsed),
15666    }
15667    #[automatically_derived]
15668    impl LightClientV3MockErrors {
15669        /// All the selectors of this enum.
15670        ///
15671        /// Note that the selectors might not be in the same order as the variants.
15672        /// No guarantees are made about the order of the selectors.
15673        ///
15674        /// Prefer using `SolInterface` methods instead.
15675        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15676            [5u8, 28u8, 70u8, 239u8],
15677            [8u8, 10u8, 232u8, 217u8],
15678            [9u8, 189u8, 227u8, 57u8],
15679            [17u8, 140u8, 218u8, 167u8],
15680            [20u8, 37u8, 234u8, 66u8],
15681            [30u8, 79u8, 189u8, 247u8],
15682            [76u8, 156u8, 140u8, 227u8],
15683            [78u8, 64u8, 92u8, 141u8],
15684            [81u8, 97u8, 128u8, 137u8],
15685            [97u8, 90u8, 146u8, 100u8],
15686            [153u8, 150u8, 179u8, 21u8],
15687            [161u8, 186u8, 7u8, 238u8],
15688            [163u8, 166u8, 71u8, 128u8],
15689            [168u8, 99u8, 174u8, 201u8],
15690            [170u8, 29u8, 73u8, 164u8],
15691            [176u8, 180u8, 56u8, 119u8],
15692            [179u8, 152u8, 151u8, 159u8],
15693            [215u8, 230u8, 188u8, 248u8],
15694            [224u8, 124u8, 141u8, 186u8],
15695            [230u8, 196u8, 36u8, 123u8],
15696            [244u8, 160u8, 238u8, 224u8],
15697            [249u8, 46u8, 232u8, 169u8],
15698        ];
15699    }
15700    #[automatically_derived]
15701    impl alloy_sol_types::SolInterface for LightClientV3MockErrors {
15702        const NAME: &'static str = "LightClientV3MockErrors";
15703        const MIN_DATA_LENGTH: usize = 0usize;
15704        const COUNT: usize = 22usize;
15705        #[inline]
15706        fn selector(&self) -> [u8; 4] {
15707            match self {
15708                Self::AddressEmptyCode(_) => {
15709                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15710                }
15711                Self::DeprecatedApi(_) => {
15712                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15713                }
15714                Self::ERC1967InvalidImplementation(_) => {
15715                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15716                }
15717                Self::ERC1967NonPayable(_) => {
15718                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15719                }
15720                Self::FailedInnerCall(_) => {
15721                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15722                }
15723                Self::InsufficientSnapshotHistory(_) => {
15724                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15725                }
15726                Self::InvalidAddress(_) => {
15727                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15728                }
15729                Self::InvalidArgs(_) => {
15730                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15731                }
15732                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15733                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15734                }
15735                Self::InvalidInitialization(_) => {
15736                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15737                }
15738                Self::InvalidMaxStateHistory(_) => {
15739                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15740                }
15741                Self::InvalidProof(_) => {
15742                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15743                }
15744                Self::MissingEpochRootUpdate(_) => {
15745                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15746                }
15747                Self::NoChangeRequired(_) => {
15748                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15749                }
15750                Self::NotInitializing(_) => {
15751                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15752                }
15753                Self::OutdatedState(_) => {
15754                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15755                }
15756                Self::OwnableInvalidOwner(_) => {
15757                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15758                }
15759                Self::OwnableUnauthorizedAccount(_) => {
15760                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15761                }
15762                Self::ProverNotPermissioned(_) => {
15763                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15764                }
15765                Self::UUPSUnauthorizedCallContext(_) => {
15766                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15767                }
15768                Self::UUPSUnsupportedProxiableUUID(_) => {
15769                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15770                }
15771                Self::WrongStakeTableUsed(_) => {
15772                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15773                }
15774            }
15775        }
15776        #[inline]
15777        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15778            Self::SELECTORS.get(i).copied()
15779        }
15780        #[inline]
15781        fn valid_selector(selector: [u8; 4]) -> bool {
15782            Self::SELECTORS.binary_search(&selector).is_ok()
15783        }
15784        #[inline]
15785        #[allow(non_snake_case)]
15786        fn abi_decode_raw(
15787            selector: [u8; 4],
15788            data: &[u8],
15789            validate: bool,
15790        ) -> alloy_sol_types::Result<Self> {
15791            static DECODE_SHIMS: &[fn(
15792                &[u8],
15793                bool,
15794            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
15795                {
15796                    fn OutdatedState(
15797                        data: &[u8],
15798                        validate: bool,
15799                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15800                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
15801                                data,
15802                                validate,
15803                            )
15804                            .map(LightClientV3MockErrors::OutdatedState)
15805                    }
15806                    OutdatedState
15807                },
15808                {
15809                    fn MissingEpochRootUpdate(
15810                        data: &[u8],
15811                        validate: bool,
15812                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15813                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
15814                                data,
15815                                validate,
15816                            )
15817                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
15818                    }
15819                    MissingEpochRootUpdate
15820                },
15821                {
15822                    fn InvalidProof(
15823                        data: &[u8],
15824                        validate: bool,
15825                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15826                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
15827                                data,
15828                                validate,
15829                            )
15830                            .map(LightClientV3MockErrors::InvalidProof)
15831                    }
15832                    InvalidProof
15833                },
15834                {
15835                    fn OwnableUnauthorizedAccount(
15836                        data: &[u8],
15837                        validate: bool,
15838                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15839                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
15840                                data,
15841                                validate,
15842                            )
15843                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
15844                    }
15845                    OwnableUnauthorizedAccount
15846                },
15847                {
15848                    fn FailedInnerCall(
15849                        data: &[u8],
15850                        validate: bool,
15851                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15852                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
15853                                data,
15854                                validate,
15855                            )
15856                            .map(LightClientV3MockErrors::FailedInnerCall)
15857                    }
15858                    FailedInnerCall
15859                },
15860                {
15861                    fn OwnableInvalidOwner(
15862                        data: &[u8],
15863                        validate: bool,
15864                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15865                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15866                                data,
15867                                validate,
15868                            )
15869                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
15870                    }
15871                    OwnableInvalidOwner
15872                },
15873                {
15874                    fn ERC1967InvalidImplementation(
15875                        data: &[u8],
15876                        validate: bool,
15877                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15878                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15879                                data,
15880                                validate,
15881                            )
15882                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
15883                    }
15884                    ERC1967InvalidImplementation
15885                },
15886                {
15887                    fn DeprecatedApi(
15888                        data: &[u8],
15889                        validate: bool,
15890                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15891                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15892                                data,
15893                                validate,
15894                            )
15895                            .map(LightClientV3MockErrors::DeprecatedApi)
15896                    }
15897                    DeprecatedApi
15898                },
15899                {
15900                    fn WrongStakeTableUsed(
15901                        data: &[u8],
15902                        validate: bool,
15903                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15904                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15905                                data,
15906                                validate,
15907                            )
15908                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
15909                    }
15910                    WrongStakeTableUsed
15911                },
15912                {
15913                    fn InvalidHotShotBlockForCommitmentCheck(
15914                        data: &[u8],
15915                        validate: bool,
15916                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15917                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15918                                data,
15919                                validate,
15920                            )
15921                            .map(
15922                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
15923                            )
15924                    }
15925                    InvalidHotShotBlockForCommitmentCheck
15926                },
15927                {
15928                    fn AddressEmptyCode(
15929                        data: &[u8],
15930                        validate: bool,
15931                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15932                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15933                                data,
15934                                validate,
15935                            )
15936                            .map(LightClientV3MockErrors::AddressEmptyCode)
15937                    }
15938                    AddressEmptyCode
15939                },
15940                {
15941                    fn InvalidArgs(
15942                        data: &[u8],
15943                        validate: bool,
15944                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15945                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
15946                                data,
15947                                validate,
15948                            )
15949                            .map(LightClientV3MockErrors::InvalidArgs)
15950                    }
15951                    InvalidArgs
15952                },
15953                {
15954                    fn ProverNotPermissioned(
15955                        data: &[u8],
15956                        validate: bool,
15957                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15958                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15959                                data,
15960                                validate,
15961                            )
15962                            .map(LightClientV3MockErrors::ProverNotPermissioned)
15963                    }
15964                    ProverNotPermissioned
15965                },
15966                {
15967                    fn NoChangeRequired(
15968                        data: &[u8],
15969                        validate: bool,
15970                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15971                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15972                                data,
15973                                validate,
15974                            )
15975                            .map(LightClientV3MockErrors::NoChangeRequired)
15976                    }
15977                    NoChangeRequired
15978                },
15979                {
15980                    fn UUPSUnsupportedProxiableUUID(
15981                        data: &[u8],
15982                        validate: bool,
15983                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15984                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15985                                data,
15986                                validate,
15987                            )
15988                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
15989                    }
15990                    UUPSUnsupportedProxiableUUID
15991                },
15992                {
15993                    fn InsufficientSnapshotHistory(
15994                        data: &[u8],
15995                        validate: bool,
15996                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
15997                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15998                                data,
15999                                validate,
16000                            )
16001                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
16002                    }
16003                    InsufficientSnapshotHistory
16004                },
16005                {
16006                    fn ERC1967NonPayable(
16007                        data: &[u8],
16008                        validate: bool,
16009                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16010                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16011                                data,
16012                                validate,
16013                            )
16014                            .map(LightClientV3MockErrors::ERC1967NonPayable)
16015                    }
16016                    ERC1967NonPayable
16017                },
16018                {
16019                    fn NotInitializing(
16020                        data: &[u8],
16021                        validate: bool,
16022                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16023                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16024                                data,
16025                                validate,
16026                            )
16027                            .map(LightClientV3MockErrors::NotInitializing)
16028                    }
16029                    NotInitializing
16030                },
16031                {
16032                    fn UUPSUnauthorizedCallContext(
16033                        data: &[u8],
16034                        validate: bool,
16035                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16036                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16037                                data,
16038                                validate,
16039                            )
16040                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
16041                    }
16042                    UUPSUnauthorizedCallContext
16043                },
16044                {
16045                    fn InvalidAddress(
16046                        data: &[u8],
16047                        validate: bool,
16048                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16049                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16050                                data,
16051                                validate,
16052                            )
16053                            .map(LightClientV3MockErrors::InvalidAddress)
16054                    }
16055                    InvalidAddress
16056                },
16057                {
16058                    fn InvalidMaxStateHistory(
16059                        data: &[u8],
16060                        validate: bool,
16061                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16062                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16063                                data,
16064                                validate,
16065                            )
16066                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
16067                    }
16068                    InvalidMaxStateHistory
16069                },
16070                {
16071                    fn InvalidInitialization(
16072                        data: &[u8],
16073                        validate: bool,
16074                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
16075                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16076                                data,
16077                                validate,
16078                            )
16079                            .map(LightClientV3MockErrors::InvalidInitialization)
16080                    }
16081                    InvalidInitialization
16082                },
16083            ];
16084            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16085                return Err(
16086                    alloy_sol_types::Error::unknown_selector(
16087                        <Self as alloy_sol_types::SolInterface>::NAME,
16088                        selector,
16089                    ),
16090                );
16091            };
16092            DECODE_SHIMS[idx](data, validate)
16093        }
16094        #[inline]
16095        fn abi_encoded_size(&self) -> usize {
16096            match self {
16097                Self::AddressEmptyCode(inner) => {
16098                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16099                        inner,
16100                    )
16101                }
16102                Self::DeprecatedApi(inner) => {
16103                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16104                }
16105                Self::ERC1967InvalidImplementation(inner) => {
16106                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16107                        inner,
16108                    )
16109                }
16110                Self::ERC1967NonPayable(inner) => {
16111                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16112                        inner,
16113                    )
16114                }
16115                Self::FailedInnerCall(inner) => {
16116                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16117                        inner,
16118                    )
16119                }
16120                Self::InsufficientSnapshotHistory(inner) => {
16121                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16122                        inner,
16123                    )
16124                }
16125                Self::InvalidAddress(inner) => {
16126                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16127                        inner,
16128                    )
16129                }
16130                Self::InvalidArgs(inner) => {
16131                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16132                }
16133                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16134                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16135                        inner,
16136                    )
16137                }
16138                Self::InvalidInitialization(inner) => {
16139                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16140                        inner,
16141                    )
16142                }
16143                Self::InvalidMaxStateHistory(inner) => {
16144                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16145                        inner,
16146                    )
16147                }
16148                Self::InvalidProof(inner) => {
16149                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16150                }
16151                Self::MissingEpochRootUpdate(inner) => {
16152                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16153                        inner,
16154                    )
16155                }
16156                Self::NoChangeRequired(inner) => {
16157                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16158                        inner,
16159                    )
16160                }
16161                Self::NotInitializing(inner) => {
16162                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16163                        inner,
16164                    )
16165                }
16166                Self::OutdatedState(inner) => {
16167                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16168                }
16169                Self::OwnableInvalidOwner(inner) => {
16170                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16171                        inner,
16172                    )
16173                }
16174                Self::OwnableUnauthorizedAccount(inner) => {
16175                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16176                        inner,
16177                    )
16178                }
16179                Self::ProverNotPermissioned(inner) => {
16180                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16181                        inner,
16182                    )
16183                }
16184                Self::UUPSUnauthorizedCallContext(inner) => {
16185                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16186                        inner,
16187                    )
16188                }
16189                Self::UUPSUnsupportedProxiableUUID(inner) => {
16190                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16191                        inner,
16192                    )
16193                }
16194                Self::WrongStakeTableUsed(inner) => {
16195                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16196                        inner,
16197                    )
16198                }
16199            }
16200        }
16201        #[inline]
16202        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16203            match self {
16204                Self::AddressEmptyCode(inner) => {
16205                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16206                        inner,
16207                        out,
16208                    )
16209                }
16210                Self::DeprecatedApi(inner) => {
16211                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16212                        inner,
16213                        out,
16214                    )
16215                }
16216                Self::ERC1967InvalidImplementation(inner) => {
16217                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16218                        inner,
16219                        out,
16220                    )
16221                }
16222                Self::ERC1967NonPayable(inner) => {
16223                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16224                        inner,
16225                        out,
16226                    )
16227                }
16228                Self::FailedInnerCall(inner) => {
16229                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16230                        inner,
16231                        out,
16232                    )
16233                }
16234                Self::InsufficientSnapshotHistory(inner) => {
16235                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16236                        inner,
16237                        out,
16238                    )
16239                }
16240                Self::InvalidAddress(inner) => {
16241                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16242                        inner,
16243                        out,
16244                    )
16245                }
16246                Self::InvalidArgs(inner) => {
16247                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16248                        inner,
16249                        out,
16250                    )
16251                }
16252                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16253                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16254                        inner,
16255                        out,
16256                    )
16257                }
16258                Self::InvalidInitialization(inner) => {
16259                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16260                        inner,
16261                        out,
16262                    )
16263                }
16264                Self::InvalidMaxStateHistory(inner) => {
16265                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16266                        inner,
16267                        out,
16268                    )
16269                }
16270                Self::InvalidProof(inner) => {
16271                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16272                        inner,
16273                        out,
16274                    )
16275                }
16276                Self::MissingEpochRootUpdate(inner) => {
16277                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16278                        inner,
16279                        out,
16280                    )
16281                }
16282                Self::NoChangeRequired(inner) => {
16283                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16284                        inner,
16285                        out,
16286                    )
16287                }
16288                Self::NotInitializing(inner) => {
16289                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16290                        inner,
16291                        out,
16292                    )
16293                }
16294                Self::OutdatedState(inner) => {
16295                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16296                        inner,
16297                        out,
16298                    )
16299                }
16300                Self::OwnableInvalidOwner(inner) => {
16301                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16302                        inner,
16303                        out,
16304                    )
16305                }
16306                Self::OwnableUnauthorizedAccount(inner) => {
16307                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16308                        inner,
16309                        out,
16310                    )
16311                }
16312                Self::ProverNotPermissioned(inner) => {
16313                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16314                        inner,
16315                        out,
16316                    )
16317                }
16318                Self::UUPSUnauthorizedCallContext(inner) => {
16319                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16320                        inner,
16321                        out,
16322                    )
16323                }
16324                Self::UUPSUnsupportedProxiableUUID(inner) => {
16325                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16326                        inner,
16327                        out,
16328                    )
16329                }
16330                Self::WrongStakeTableUsed(inner) => {
16331                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16332                        inner,
16333                        out,
16334                    )
16335                }
16336            }
16337        }
16338    }
16339    ///Container for all the [`LightClientV3Mock`](self) events.
16340    #[derive(Debug, PartialEq, Eq, Hash)]
16341    pub enum LightClientV3MockEvents {
16342        #[allow(missing_docs)]
16343        Initialized(Initialized),
16344        #[allow(missing_docs)]
16345        NewEpoch(NewEpoch),
16346        #[allow(missing_docs)]
16347        NewState(NewState),
16348        #[allow(missing_docs)]
16349        OwnershipTransferred(OwnershipTransferred),
16350        #[allow(missing_docs)]
16351        PermissionedProverNotRequired(PermissionedProverNotRequired),
16352        #[allow(missing_docs)]
16353        PermissionedProverRequired(PermissionedProverRequired),
16354        #[allow(missing_docs)]
16355        Upgrade(Upgrade),
16356        #[allow(missing_docs)]
16357        Upgraded(Upgraded),
16358    }
16359    #[automatically_derived]
16360    impl LightClientV3MockEvents {
16361        /// All the selectors of this enum.
16362        ///
16363        /// Note that the selectors might not be in the same order as the variants.
16364        /// No guarantees are made about the order of the selectors.
16365        ///
16366        /// Prefer using `SolInterface` methods instead.
16367        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16368            [
16369                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16370                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16371                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16372            ],
16373            [
16374                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16375                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16376                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16377            ],
16378            [
16379                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16380                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16381                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16382            ],
16383            [
16384                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16385                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16386                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16387            ],
16388            [
16389                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16390                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16391                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16392            ],
16393            [
16394                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16395                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16396                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16397            ],
16398            [
16399                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16400                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16401                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16402            ],
16403            [
16404                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16405                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16406                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16407            ],
16408        ];
16409    }
16410    #[automatically_derived]
16411    impl alloy_sol_types::SolEventInterface for LightClientV3MockEvents {
16412        const NAME: &'static str = "LightClientV3MockEvents";
16413        const COUNT: usize = 8usize;
16414        fn decode_raw_log(
16415            topics: &[alloy_sol_types::Word],
16416            data: &[u8],
16417            validate: bool,
16418        ) -> alloy_sol_types::Result<Self> {
16419            match topics.first().copied() {
16420                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16421                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16422                            topics,
16423                            data,
16424                            validate,
16425                        )
16426                        .map(Self::Initialized)
16427                }
16428                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16429                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(
16430                            topics,
16431                            data,
16432                            validate,
16433                        )
16434                        .map(Self::NewEpoch)
16435                }
16436                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16437                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
16438                            topics,
16439                            data,
16440                            validate,
16441                        )
16442                        .map(Self::NewState)
16443                }
16444                Some(
16445                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16446                ) => {
16447                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16448                            topics,
16449                            data,
16450                            validate,
16451                        )
16452                        .map(Self::OwnershipTransferred)
16453                }
16454                Some(
16455                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16456                ) => {
16457                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16458                            topics,
16459                            data,
16460                            validate,
16461                        )
16462                        .map(Self::PermissionedProverNotRequired)
16463                }
16464                Some(
16465                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16466                ) => {
16467                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16468                            topics,
16469                            data,
16470                            validate,
16471                        )
16472                        .map(Self::PermissionedProverRequired)
16473                }
16474                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16475                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
16476                            topics,
16477                            data,
16478                            validate,
16479                        )
16480                        .map(Self::Upgrade)
16481                }
16482                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16483                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
16484                            topics,
16485                            data,
16486                            validate,
16487                        )
16488                        .map(Self::Upgraded)
16489                }
16490                _ => {
16491                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16492                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16493                        log: alloy_sol_types::private::Box::new(
16494                            alloy_sol_types::private::LogData::new_unchecked(
16495                                topics.to_vec(),
16496                                data.to_vec().into(),
16497                            ),
16498                        ),
16499                    })
16500                }
16501            }
16502        }
16503    }
16504    #[automatically_derived]
16505    impl alloy_sol_types::private::IntoLogData for LightClientV3MockEvents {
16506        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16507            match self {
16508                Self::Initialized(inner) => {
16509                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16510                }
16511                Self::NewEpoch(inner) => {
16512                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16513                }
16514                Self::NewState(inner) => {
16515                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16516                }
16517                Self::OwnershipTransferred(inner) => {
16518                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16519                }
16520                Self::PermissionedProverNotRequired(inner) => {
16521                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16522                }
16523                Self::PermissionedProverRequired(inner) => {
16524                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16525                }
16526                Self::Upgrade(inner) => {
16527                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16528                }
16529                Self::Upgraded(inner) => {
16530                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16531                }
16532            }
16533        }
16534        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16535            match self {
16536                Self::Initialized(inner) => {
16537                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16538                }
16539                Self::NewEpoch(inner) => {
16540                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16541                }
16542                Self::NewState(inner) => {
16543                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16544                }
16545                Self::OwnershipTransferred(inner) => {
16546                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16547                }
16548                Self::PermissionedProverNotRequired(inner) => {
16549                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16550                }
16551                Self::PermissionedProverRequired(inner) => {
16552                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16553                }
16554                Self::Upgrade(inner) => {
16555                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16556                }
16557                Self::Upgraded(inner) => {
16558                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16559                }
16560            }
16561        }
16562    }
16563    use alloy::contract as alloy_contract;
16564    /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
16565
16566See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
16567    #[inline]
16568    pub const fn new<
16569        T: alloy_contract::private::Transport + ::core::clone::Clone,
16570        P: alloy_contract::private::Provider<T, N>,
16571        N: alloy_contract::private::Network,
16572    >(
16573        address: alloy_sol_types::private::Address,
16574        provider: P,
16575    ) -> LightClientV3MockInstance<T, P, N> {
16576        LightClientV3MockInstance::<T, P, N>::new(address, provider)
16577    }
16578    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16579
16580Returns a new instance of the contract, if the deployment was successful.
16581
16582For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16583    #[inline]
16584    pub fn deploy<
16585        T: alloy_contract::private::Transport + ::core::clone::Clone,
16586        P: alloy_contract::private::Provider<T, N>,
16587        N: alloy_contract::private::Network,
16588    >(
16589        provider: P,
16590    ) -> impl ::core::future::Future<
16591        Output = alloy_contract::Result<LightClientV3MockInstance<T, P, N>>,
16592    > {
16593        LightClientV3MockInstance::<T, P, N>::deploy(provider)
16594    }
16595    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16596and constructor arguments, if any.
16597
16598This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16599the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16600    #[inline]
16601    pub fn deploy_builder<
16602        T: alloy_contract::private::Transport + ::core::clone::Clone,
16603        P: alloy_contract::private::Provider<T, N>,
16604        N: alloy_contract::private::Network,
16605    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
16606        LightClientV3MockInstance::<T, P, N>::deploy_builder(provider)
16607    }
16608    /**A [`LightClientV3Mock`](self) instance.
16609
16610Contains type-safe methods for interacting with an on-chain instance of the
16611[`LightClientV3Mock`](self) contract located at a given `address`, using a given
16612provider `P`.
16613
16614If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16615documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16616be used to deploy a new instance of the contract.
16617
16618See the [module-level documentation](self) for all the available methods.*/
16619    #[derive(Clone)]
16620    pub struct LightClientV3MockInstance<T, P, N = alloy_contract::private::Ethereum> {
16621        address: alloy_sol_types::private::Address,
16622        provider: P,
16623        _network_transport: ::core::marker::PhantomData<(N, T)>,
16624    }
16625    #[automatically_derived]
16626    impl<T, P, N> ::core::fmt::Debug for LightClientV3MockInstance<T, P, N> {
16627        #[inline]
16628        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16629            f.debug_tuple("LightClientV3MockInstance").field(&self.address).finish()
16630        }
16631    }
16632    /// Instantiation and getters/setters.
16633    #[automatically_derived]
16634    impl<
16635        T: alloy_contract::private::Transport + ::core::clone::Clone,
16636        P: alloy_contract::private::Provider<T, N>,
16637        N: alloy_contract::private::Network,
16638    > LightClientV3MockInstance<T, P, N> {
16639        /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
16640
16641See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
16642        #[inline]
16643        pub const fn new(
16644            address: alloy_sol_types::private::Address,
16645            provider: P,
16646        ) -> Self {
16647            Self {
16648                address,
16649                provider,
16650                _network_transport: ::core::marker::PhantomData,
16651            }
16652        }
16653        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16654
16655Returns a new instance of the contract, if the deployment was successful.
16656
16657For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16658        #[inline]
16659        pub async fn deploy(
16660            provider: P,
16661        ) -> alloy_contract::Result<LightClientV3MockInstance<T, P, N>> {
16662            let call_builder = Self::deploy_builder(provider);
16663            let contract_address = call_builder.deploy().await?;
16664            Ok(Self::new(contract_address, call_builder.provider))
16665        }
16666        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16667and constructor arguments, if any.
16668
16669This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16670the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16671        #[inline]
16672        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
16673            alloy_contract::RawCallBuilder::new_raw_deploy(
16674                provider,
16675                ::core::clone::Clone::clone(&BYTECODE),
16676            )
16677        }
16678        /// Returns a reference to the address.
16679        #[inline]
16680        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16681            &self.address
16682        }
16683        /// Sets the address.
16684        #[inline]
16685        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16686            self.address = address;
16687        }
16688        /// Sets the address and returns `self`.
16689        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16690            self.set_address(address);
16691            self
16692        }
16693        /// Returns a reference to the provider.
16694        #[inline]
16695        pub const fn provider(&self) -> &P {
16696            &self.provider
16697        }
16698    }
16699    impl<T, P: ::core::clone::Clone, N> LightClientV3MockInstance<T, &P, N> {
16700        /// Clones the provider and returns a new instance with the cloned provider.
16701        #[inline]
16702        pub fn with_cloned_provider(self) -> LightClientV3MockInstance<T, P, N> {
16703            LightClientV3MockInstance {
16704                address: self.address,
16705                provider: ::core::clone::Clone::clone(&self.provider),
16706                _network_transport: ::core::marker::PhantomData,
16707            }
16708        }
16709    }
16710    /// Function calls.
16711    #[automatically_derived]
16712    impl<
16713        T: alloy_contract::private::Transport + ::core::clone::Clone,
16714        P: alloy_contract::private::Provider<T, N>,
16715        N: alloy_contract::private::Network,
16716    > LightClientV3MockInstance<T, P, N> {
16717        /// Creates a new call builder using this contract instance's provider and address.
16718        ///
16719        /// Note that the call can be any function call, not just those defined in this
16720        /// contract. Prefer using the other methods for building type-safe contract calls.
16721        pub fn call_builder<C: alloy_sol_types::SolCall>(
16722            &self,
16723            call: &C,
16724        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
16725            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16726        }
16727        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16728        pub fn UPGRADE_INTERFACE_VERSION(
16729            &self,
16730        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
16731            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
16732        }
16733        ///Creates a new call builder for the [`_getVk`] function.
16734        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
16735            self.call_builder(&_getVkCall {})
16736        }
16737        ///Creates a new call builder for the [`authRoot`] function.
16738        pub fn authRoot(
16739            &self,
16740        ) -> alloy_contract::SolCallBuilder<T, &P, authRootCall, N> {
16741            self.call_builder(&authRootCall {})
16742        }
16743        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16744        pub fn blocksPerEpoch(
16745            &self,
16746        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
16747            self.call_builder(&blocksPerEpochCall {})
16748        }
16749        ///Creates a new call builder for the [`currentBlockNumber`] function.
16750        pub fn currentBlockNumber(
16751            &self,
16752        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
16753            self.call_builder(&currentBlockNumberCall {})
16754        }
16755        ///Creates a new call builder for the [`currentEpoch`] function.
16756        pub fn currentEpoch(
16757            &self,
16758        ) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
16759            self.call_builder(&currentEpochCall {})
16760        }
16761        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16762        pub fn disablePermissionedProverMode(
16763            &self,
16764        ) -> alloy_contract::SolCallBuilder<
16765            T,
16766            &P,
16767            disablePermissionedProverModeCall,
16768            N,
16769        > {
16770            self.call_builder(
16771                &disablePermissionedProverModeCall {
16772                },
16773            )
16774        }
16775        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16776        pub fn epochFromBlockNumber(
16777            &self,
16778            _blockNum: u64,
16779            _blocksPerEpoch: u64,
16780        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
16781            self.call_builder(
16782                &epochFromBlockNumberCall {
16783                    _blockNum,
16784                    _blocksPerEpoch,
16785                },
16786            )
16787        }
16788        ///Creates a new call builder for the [`epochStartBlock`] function.
16789        pub fn epochStartBlock(
16790            &self,
16791        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
16792            self.call_builder(&epochStartBlockCall {})
16793        }
16794        ///Creates a new call builder for the [`finalizedState`] function.
16795        pub fn finalizedState(
16796            &self,
16797        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
16798            self.call_builder(&finalizedStateCall {})
16799        }
16800        ///Creates a new call builder for the [`firstEpoch`] function.
16801        pub fn firstEpoch(
16802            &self,
16803        ) -> alloy_contract::SolCallBuilder<T, &P, firstEpochCall, N> {
16804            self.call_builder(&firstEpochCall {})
16805        }
16806        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16807        pub fn genesisStakeTableState(
16808            &self,
16809        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
16810            self.call_builder(&genesisStakeTableStateCall {})
16811        }
16812        ///Creates a new call builder for the [`genesisState`] function.
16813        pub fn genesisState(
16814            &self,
16815        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
16816            self.call_builder(&genesisStateCall {})
16817        }
16818        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16819        pub fn getHotShotCommitment(
16820            &self,
16821            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16822        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
16823            self.call_builder(
16824                &getHotShotCommitmentCall {
16825                    hotShotBlockHeight,
16826                },
16827            )
16828        }
16829        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16830        pub fn getStateHistoryCount(
16831            &self,
16832        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
16833            self.call_builder(&getStateHistoryCountCall {})
16834        }
16835        ///Creates a new call builder for the [`getVersion`] function.
16836        pub fn getVersion(
16837            &self,
16838        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
16839            self.call_builder(&getVersionCall {})
16840        }
16841        ///Creates a new call builder for the [`initialize`] function.
16842        pub fn initialize(
16843            &self,
16844            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16845            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16846            _stateHistoryRetentionPeriod: u32,
16847            owner: alloy::sol_types::private::Address,
16848        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
16849            self.call_builder(
16850                &initializeCall {
16851                    _genesis,
16852                    _genesisStakeTableState,
16853                    _stateHistoryRetentionPeriod,
16854                    owner,
16855                },
16856            )
16857        }
16858        ///Creates a new call builder for the [`initializeV2`] function.
16859        pub fn initializeV2(
16860            &self,
16861            _blocksPerEpoch: u64,
16862            _epochStartBlock: u64,
16863        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
16864            self.call_builder(
16865                &initializeV2Call {
16866                    _blocksPerEpoch,
16867                    _epochStartBlock,
16868                },
16869            )
16870        }
16871        ///Creates a new call builder for the [`initializeV3`] function.
16872        pub fn initializeV3(
16873            &self,
16874        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV3Call, N> {
16875            self.call_builder(&initializeV3Call {})
16876        }
16877        ///Creates a new call builder for the [`isEpochRoot`] function.
16878        pub fn isEpochRoot(
16879            &self,
16880            blockHeight: u64,
16881        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
16882            self.call_builder(&isEpochRootCall { blockHeight })
16883        }
16884        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16885        pub fn isGtEpochRoot(
16886            &self,
16887            blockHeight: u64,
16888        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
16889            self.call_builder(&isGtEpochRootCall { blockHeight })
16890        }
16891        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16892        pub fn isPermissionedProverEnabled(
16893            &self,
16894        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
16895            self.call_builder(&isPermissionedProverEnabledCall {})
16896        }
16897        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16898        pub fn lagOverEscapeHatchThreshold(
16899            &self,
16900            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16901            threshold: alloy::sol_types::private::primitives::aliases::U256,
16902        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
16903            self.call_builder(
16904                &lagOverEscapeHatchThresholdCall {
16905                    blockNumber,
16906                    threshold,
16907                },
16908            )
16909        }
16910        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16911        pub fn newFinalizedState_0(
16912            &self,
16913            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16914            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16915        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
16916            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16917        }
16918        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16919        pub fn newFinalizedState_1(
16920            &self,
16921            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16922            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16923            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16924        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
16925            self.call_builder(
16926                &newFinalizedState_1Call {
16927                    _0,
16928                    _1,
16929                    _2,
16930                },
16931            )
16932        }
16933        ///Creates a new call builder for the [`newFinalizedState_2`] function.
16934        pub fn newFinalizedState_2(
16935            &self,
16936            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16937            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16938            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
16939            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16940        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_2Call, N> {
16941            self.call_builder(
16942                &newFinalizedState_2Call {
16943                    newState,
16944                    nextStakeTable,
16945                    newAuthRoot,
16946                    proof,
16947                },
16948            )
16949        }
16950        ///Creates a new call builder for the [`owner`] function.
16951        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
16952            self.call_builder(&ownerCall {})
16953        }
16954        ///Creates a new call builder for the [`permissionedProver`] function.
16955        pub fn permissionedProver(
16956            &self,
16957        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
16958            self.call_builder(&permissionedProverCall {})
16959        }
16960        ///Creates a new call builder for the [`proxiableUUID`] function.
16961        pub fn proxiableUUID(
16962            &self,
16963        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
16964            self.call_builder(&proxiableUUIDCall {})
16965        }
16966        ///Creates a new call builder for the [`renounceOwnership`] function.
16967        pub fn renounceOwnership(
16968            &self,
16969        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
16970            self.call_builder(&renounceOwnershipCall {})
16971        }
16972        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
16973        pub fn setBlocksPerEpoch(
16974            &self,
16975            newBlocksPerEpoch: u64,
16976        ) -> alloy_contract::SolCallBuilder<T, &P, setBlocksPerEpochCall, N> {
16977            self.call_builder(
16978                &setBlocksPerEpochCall {
16979                    newBlocksPerEpoch,
16980                },
16981            )
16982        }
16983        ///Creates a new call builder for the [`setFinalizedState`] function.
16984        pub fn setFinalizedState(
16985            &self,
16986            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16987        ) -> alloy_contract::SolCallBuilder<T, &P, setFinalizedStateCall, N> {
16988            self.call_builder(&setFinalizedStateCall { state })
16989        }
16990        ///Creates a new call builder for the [`setHotShotDownSince`] function.
16991        pub fn setHotShotDownSince(
16992            &self,
16993            l1Height: alloy::sol_types::private::primitives::aliases::U256,
16994        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotDownSinceCall, N> {
16995            self.call_builder(
16996                &setHotShotDownSinceCall {
16997                    l1Height,
16998                },
16999            )
17000        }
17001        ///Creates a new call builder for the [`setHotShotUp`] function.
17002        pub fn setHotShotUp(
17003            &self,
17004        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotUpCall, N> {
17005            self.call_builder(&setHotShotUpCall {})
17006        }
17007        ///Creates a new call builder for the [`setPermissionedProver`] function.
17008        pub fn setPermissionedProver(
17009            &self,
17010            prover: alloy::sol_types::private::Address,
17011        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
17012            self.call_builder(
17013                &setPermissionedProverCall {
17014                    prover,
17015                },
17016            )
17017        }
17018        ///Creates a new call builder for the [`setStateHistory`] function.
17019        pub fn setStateHistory(
17020            &self,
17021            _stateHistoryCommitments: alloy::sol_types::private::Vec<
17022                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
17023            >,
17024        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryCall, N> {
17025            self.call_builder(
17026                &setStateHistoryCall {
17027                    _stateHistoryCommitments,
17028                },
17029            )
17030        }
17031        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17032        pub fn setStateHistoryRetentionPeriod(
17033            &self,
17034            historySeconds: u32,
17035        ) -> alloy_contract::SolCallBuilder<
17036            T,
17037            &P,
17038            setStateHistoryRetentionPeriodCall,
17039            N,
17040        > {
17041            self.call_builder(
17042                &setStateHistoryRetentionPeriodCall {
17043                    historySeconds,
17044                },
17045            )
17046        }
17047        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
17048        pub fn setVotingStakeTableState(
17049            &self,
17050            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17051        ) -> alloy_contract::SolCallBuilder<T, &P, setVotingStakeTableStateCall, N> {
17052            self.call_builder(
17053                &setVotingStakeTableStateCall {
17054                    stake,
17055                },
17056            )
17057        }
17058        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17059        pub fn setstateHistoryRetentionPeriod(
17060            &self,
17061            historySeconds: u32,
17062        ) -> alloy_contract::SolCallBuilder<
17063            T,
17064            &P,
17065            setstateHistoryRetentionPeriodCall,
17066            N,
17067        > {
17068            self.call_builder(
17069                &setstateHistoryRetentionPeriodCall {
17070                    historySeconds,
17071                },
17072            )
17073        }
17074        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17075        pub fn stateHistoryCommitments(
17076            &self,
17077            _0: alloy::sol_types::private::primitives::aliases::U256,
17078        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
17079            self.call_builder(&stateHistoryCommitmentsCall { _0 })
17080        }
17081        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17082        pub fn stateHistoryFirstIndex(
17083            &self,
17084        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
17085            self.call_builder(&stateHistoryFirstIndexCall {})
17086        }
17087        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17088        pub fn stateHistoryRetentionPeriod(
17089            &self,
17090        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
17091            self.call_builder(&stateHistoryRetentionPeriodCall {})
17092        }
17093        ///Creates a new call builder for the [`transferOwnership`] function.
17094        pub fn transferOwnership(
17095            &self,
17096            newOwner: alloy::sol_types::private::Address,
17097        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
17098            self.call_builder(&transferOwnershipCall { newOwner })
17099        }
17100        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17101        pub fn updateEpochStartBlock(
17102            &self,
17103            newEpochStartBlock: u64,
17104        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
17105            self.call_builder(
17106                &updateEpochStartBlockCall {
17107                    newEpochStartBlock,
17108                },
17109            )
17110        }
17111        ///Creates a new call builder for the [`upgradeToAndCall`] function.
17112        pub fn upgradeToAndCall(
17113            &self,
17114            newImplementation: alloy::sol_types::private::Address,
17115            data: alloy::sol_types::private::Bytes,
17116        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
17117            self.call_builder(
17118                &upgradeToAndCallCall {
17119                    newImplementation,
17120                    data,
17121                },
17122            )
17123        }
17124        ///Creates a new call builder for the [`votingStakeTableState`] function.
17125        pub fn votingStakeTableState(
17126            &self,
17127        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
17128            self.call_builder(&votingStakeTableStateCall {})
17129        }
17130    }
17131    /// Event filters.
17132    #[automatically_derived]
17133    impl<
17134        T: alloy_contract::private::Transport + ::core::clone::Clone,
17135        P: alloy_contract::private::Provider<T, N>,
17136        N: alloy_contract::private::Network,
17137    > LightClientV3MockInstance<T, P, N> {
17138        /// Creates a new event filter using this contract instance's provider and address.
17139        ///
17140        /// Note that the type can be any event, not just those defined in this contract.
17141        /// Prefer using the other methods for building type-safe event filters.
17142        pub fn event_filter<E: alloy_sol_types::SolEvent>(
17143            &self,
17144        ) -> alloy_contract::Event<T, &P, E, N> {
17145            alloy_contract::Event::new_sol(&self.provider, &self.address)
17146        }
17147        ///Creates a new event filter for the [`Initialized`] event.
17148        pub fn Initialized_filter(
17149            &self,
17150        ) -> alloy_contract::Event<T, &P, Initialized, N> {
17151            self.event_filter::<Initialized>()
17152        }
17153        ///Creates a new event filter for the [`NewEpoch`] event.
17154        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
17155            self.event_filter::<NewEpoch>()
17156        }
17157        ///Creates a new event filter for the [`NewState`] event.
17158        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
17159            self.event_filter::<NewState>()
17160        }
17161        ///Creates a new event filter for the [`OwnershipTransferred`] event.
17162        pub fn OwnershipTransferred_filter(
17163            &self,
17164        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
17165            self.event_filter::<OwnershipTransferred>()
17166        }
17167        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
17168        pub fn PermissionedProverNotRequired_filter(
17169            &self,
17170        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
17171            self.event_filter::<PermissionedProverNotRequired>()
17172        }
17173        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
17174        pub fn PermissionedProverRequired_filter(
17175            &self,
17176        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
17177            self.event_filter::<PermissionedProverRequired>()
17178        }
17179        ///Creates a new event filter for the [`Upgrade`] event.
17180        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
17181            self.event_filter::<Upgrade>()
17182        }
17183        ///Creates a new event filter for the [`Upgraded`] event.
17184        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
17185            self.event_filter::<Upgraded>()
17186        }
17187    }
17188}