hotshot_contract_adapter/bindings/
lightclientmock.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 LightClientMock {
3241    error AddressEmptyCode(address target);
3242    error ERC1967InvalidImplementation(address implementation);
3243    error ERC1967NonPayable();
3244    error FailedInnerCall();
3245    error InsufficientSnapshotHistory();
3246    error InvalidAddress();
3247    error InvalidArgs();
3248    error InvalidHotShotBlockForCommitmentCheck();
3249    error InvalidInitialization();
3250    error InvalidMaxStateHistory();
3251    error InvalidProof();
3252    error NoChangeRequired();
3253    error NotInitializing();
3254    error OutdatedState();
3255    error OwnableInvalidOwner(address owner);
3256    error OwnableUnauthorizedAccount(address account);
3257    error ProverNotPermissioned();
3258    error UUPSUnauthorizedCallContext();
3259    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3260    error WrongStakeTableUsed();
3261
3262    event Initialized(uint64 version);
3263    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3264    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3265    event PermissionedProverNotRequired();
3266    event PermissionedProverRequired(address permissionedProver);
3267    event Upgrade(address implementation);
3268    event Upgraded(address indexed implementation);
3269
3270    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3271    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3272    function currentBlockNumber() external view returns (uint256);
3273    function disablePermissionedProverMode() external;
3274    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3275    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3276    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3277    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3278    function getStateHistoryCount() external view returns (uint256);
3279    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3280    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3281    function isPermissionedProverEnabled() external view returns (bool);
3282    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3283    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3284    function owner() external view returns (address);
3285    function permissionedProver() external view returns (address);
3286    function proxiableUUID() external view returns (bytes32);
3287    function renounceOwnership() external;
3288    function setFinalizedState(LightClient.LightClientState memory state) external;
3289    function setHotShotDownSince(uint256 l1Height) external;
3290    function setHotShotUp() external;
3291    function setPermissionedProver(address prover) external;
3292    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3293    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3294    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3295    function stateHistoryFirstIndex() external view returns (uint64);
3296    function stateHistoryRetentionPeriod() external view returns (uint32);
3297    function transferOwnership(address newOwner) external;
3298    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3299}
3300```
3301
3302...which was generated by the following JSON ABI:
3303```json
3304[
3305  {
3306    "type": "function",
3307    "name": "UPGRADE_INTERFACE_VERSION",
3308    "inputs": [],
3309    "outputs": [
3310      {
3311        "name": "",
3312        "type": "string",
3313        "internalType": "string"
3314      }
3315    ],
3316    "stateMutability": "view"
3317  },
3318  {
3319    "type": "function",
3320    "name": "_getVk",
3321    "inputs": [],
3322    "outputs": [
3323      {
3324        "name": "vk",
3325        "type": "tuple",
3326        "internalType": "struct IPlonkVerifier.VerifyingKey",
3327        "components": [
3328          {
3329            "name": "domainSize",
3330            "type": "uint256",
3331            "internalType": "uint256"
3332          },
3333          {
3334            "name": "numInputs",
3335            "type": "uint256",
3336            "internalType": "uint256"
3337          },
3338          {
3339            "name": "sigma0",
3340            "type": "tuple",
3341            "internalType": "struct BN254.G1Point",
3342            "components": [
3343              {
3344                "name": "x",
3345                "type": "uint256",
3346                "internalType": "BN254.BaseField"
3347              },
3348              {
3349                "name": "y",
3350                "type": "uint256",
3351                "internalType": "BN254.BaseField"
3352              }
3353            ]
3354          },
3355          {
3356            "name": "sigma1",
3357            "type": "tuple",
3358            "internalType": "struct BN254.G1Point",
3359            "components": [
3360              {
3361                "name": "x",
3362                "type": "uint256",
3363                "internalType": "BN254.BaseField"
3364              },
3365              {
3366                "name": "y",
3367                "type": "uint256",
3368                "internalType": "BN254.BaseField"
3369              }
3370            ]
3371          },
3372          {
3373            "name": "sigma2",
3374            "type": "tuple",
3375            "internalType": "struct BN254.G1Point",
3376            "components": [
3377              {
3378                "name": "x",
3379                "type": "uint256",
3380                "internalType": "BN254.BaseField"
3381              },
3382              {
3383                "name": "y",
3384                "type": "uint256",
3385                "internalType": "BN254.BaseField"
3386              }
3387            ]
3388          },
3389          {
3390            "name": "sigma3",
3391            "type": "tuple",
3392            "internalType": "struct BN254.G1Point",
3393            "components": [
3394              {
3395                "name": "x",
3396                "type": "uint256",
3397                "internalType": "BN254.BaseField"
3398              },
3399              {
3400                "name": "y",
3401                "type": "uint256",
3402                "internalType": "BN254.BaseField"
3403              }
3404            ]
3405          },
3406          {
3407            "name": "sigma4",
3408            "type": "tuple",
3409            "internalType": "struct BN254.G1Point",
3410            "components": [
3411              {
3412                "name": "x",
3413                "type": "uint256",
3414                "internalType": "BN254.BaseField"
3415              },
3416              {
3417                "name": "y",
3418                "type": "uint256",
3419                "internalType": "BN254.BaseField"
3420              }
3421            ]
3422          },
3423          {
3424            "name": "q1",
3425            "type": "tuple",
3426            "internalType": "struct BN254.G1Point",
3427            "components": [
3428              {
3429                "name": "x",
3430                "type": "uint256",
3431                "internalType": "BN254.BaseField"
3432              },
3433              {
3434                "name": "y",
3435                "type": "uint256",
3436                "internalType": "BN254.BaseField"
3437              }
3438            ]
3439          },
3440          {
3441            "name": "q2",
3442            "type": "tuple",
3443            "internalType": "struct BN254.G1Point",
3444            "components": [
3445              {
3446                "name": "x",
3447                "type": "uint256",
3448                "internalType": "BN254.BaseField"
3449              },
3450              {
3451                "name": "y",
3452                "type": "uint256",
3453                "internalType": "BN254.BaseField"
3454              }
3455            ]
3456          },
3457          {
3458            "name": "q3",
3459            "type": "tuple",
3460            "internalType": "struct BN254.G1Point",
3461            "components": [
3462              {
3463                "name": "x",
3464                "type": "uint256",
3465                "internalType": "BN254.BaseField"
3466              },
3467              {
3468                "name": "y",
3469                "type": "uint256",
3470                "internalType": "BN254.BaseField"
3471              }
3472            ]
3473          },
3474          {
3475            "name": "q4",
3476            "type": "tuple",
3477            "internalType": "struct BN254.G1Point",
3478            "components": [
3479              {
3480                "name": "x",
3481                "type": "uint256",
3482                "internalType": "BN254.BaseField"
3483              },
3484              {
3485                "name": "y",
3486                "type": "uint256",
3487                "internalType": "BN254.BaseField"
3488              }
3489            ]
3490          },
3491          {
3492            "name": "qM12",
3493            "type": "tuple",
3494            "internalType": "struct BN254.G1Point",
3495            "components": [
3496              {
3497                "name": "x",
3498                "type": "uint256",
3499                "internalType": "BN254.BaseField"
3500              },
3501              {
3502                "name": "y",
3503                "type": "uint256",
3504                "internalType": "BN254.BaseField"
3505              }
3506            ]
3507          },
3508          {
3509            "name": "qM34",
3510            "type": "tuple",
3511            "internalType": "struct BN254.G1Point",
3512            "components": [
3513              {
3514                "name": "x",
3515                "type": "uint256",
3516                "internalType": "BN254.BaseField"
3517              },
3518              {
3519                "name": "y",
3520                "type": "uint256",
3521                "internalType": "BN254.BaseField"
3522              }
3523            ]
3524          },
3525          {
3526            "name": "qO",
3527            "type": "tuple",
3528            "internalType": "struct BN254.G1Point",
3529            "components": [
3530              {
3531                "name": "x",
3532                "type": "uint256",
3533                "internalType": "BN254.BaseField"
3534              },
3535              {
3536                "name": "y",
3537                "type": "uint256",
3538                "internalType": "BN254.BaseField"
3539              }
3540            ]
3541          },
3542          {
3543            "name": "qC",
3544            "type": "tuple",
3545            "internalType": "struct BN254.G1Point",
3546            "components": [
3547              {
3548                "name": "x",
3549                "type": "uint256",
3550                "internalType": "BN254.BaseField"
3551              },
3552              {
3553                "name": "y",
3554                "type": "uint256",
3555                "internalType": "BN254.BaseField"
3556              }
3557            ]
3558          },
3559          {
3560            "name": "qH1",
3561            "type": "tuple",
3562            "internalType": "struct BN254.G1Point",
3563            "components": [
3564              {
3565                "name": "x",
3566                "type": "uint256",
3567                "internalType": "BN254.BaseField"
3568              },
3569              {
3570                "name": "y",
3571                "type": "uint256",
3572                "internalType": "BN254.BaseField"
3573              }
3574            ]
3575          },
3576          {
3577            "name": "qH2",
3578            "type": "tuple",
3579            "internalType": "struct BN254.G1Point",
3580            "components": [
3581              {
3582                "name": "x",
3583                "type": "uint256",
3584                "internalType": "BN254.BaseField"
3585              },
3586              {
3587                "name": "y",
3588                "type": "uint256",
3589                "internalType": "BN254.BaseField"
3590              }
3591            ]
3592          },
3593          {
3594            "name": "qH3",
3595            "type": "tuple",
3596            "internalType": "struct BN254.G1Point",
3597            "components": [
3598              {
3599                "name": "x",
3600                "type": "uint256",
3601                "internalType": "BN254.BaseField"
3602              },
3603              {
3604                "name": "y",
3605                "type": "uint256",
3606                "internalType": "BN254.BaseField"
3607              }
3608            ]
3609          },
3610          {
3611            "name": "qH4",
3612            "type": "tuple",
3613            "internalType": "struct BN254.G1Point",
3614            "components": [
3615              {
3616                "name": "x",
3617                "type": "uint256",
3618                "internalType": "BN254.BaseField"
3619              },
3620              {
3621                "name": "y",
3622                "type": "uint256",
3623                "internalType": "BN254.BaseField"
3624              }
3625            ]
3626          },
3627          {
3628            "name": "qEcc",
3629            "type": "tuple",
3630            "internalType": "struct BN254.G1Point",
3631            "components": [
3632              {
3633                "name": "x",
3634                "type": "uint256",
3635                "internalType": "BN254.BaseField"
3636              },
3637              {
3638                "name": "y",
3639                "type": "uint256",
3640                "internalType": "BN254.BaseField"
3641              }
3642            ]
3643          },
3644          {
3645            "name": "g2LSB",
3646            "type": "bytes32",
3647            "internalType": "bytes32"
3648          },
3649          {
3650            "name": "g2MSB",
3651            "type": "bytes32",
3652            "internalType": "bytes32"
3653          }
3654        ]
3655      }
3656    ],
3657    "stateMutability": "pure"
3658  },
3659  {
3660    "type": "function",
3661    "name": "currentBlockNumber",
3662    "inputs": [],
3663    "outputs": [
3664      {
3665        "name": "",
3666        "type": "uint256",
3667        "internalType": "uint256"
3668      }
3669    ],
3670    "stateMutability": "view"
3671  },
3672  {
3673    "type": "function",
3674    "name": "disablePermissionedProverMode",
3675    "inputs": [],
3676    "outputs": [],
3677    "stateMutability": "nonpayable"
3678  },
3679  {
3680    "type": "function",
3681    "name": "finalizedState",
3682    "inputs": [],
3683    "outputs": [
3684      {
3685        "name": "viewNum",
3686        "type": "uint64",
3687        "internalType": "uint64"
3688      },
3689      {
3690        "name": "blockHeight",
3691        "type": "uint64",
3692        "internalType": "uint64"
3693      },
3694      {
3695        "name": "blockCommRoot",
3696        "type": "uint256",
3697        "internalType": "BN254.ScalarField"
3698      }
3699    ],
3700    "stateMutability": "view"
3701  },
3702  {
3703    "type": "function",
3704    "name": "genesisStakeTableState",
3705    "inputs": [],
3706    "outputs": [
3707      {
3708        "name": "threshold",
3709        "type": "uint256",
3710        "internalType": "uint256"
3711      },
3712      {
3713        "name": "blsKeyComm",
3714        "type": "uint256",
3715        "internalType": "BN254.ScalarField"
3716      },
3717      {
3718        "name": "schnorrKeyComm",
3719        "type": "uint256",
3720        "internalType": "BN254.ScalarField"
3721      },
3722      {
3723        "name": "amountComm",
3724        "type": "uint256",
3725        "internalType": "BN254.ScalarField"
3726      }
3727    ],
3728    "stateMutability": "view"
3729  },
3730  {
3731    "type": "function",
3732    "name": "genesisState",
3733    "inputs": [],
3734    "outputs": [
3735      {
3736        "name": "viewNum",
3737        "type": "uint64",
3738        "internalType": "uint64"
3739      },
3740      {
3741        "name": "blockHeight",
3742        "type": "uint64",
3743        "internalType": "uint64"
3744      },
3745      {
3746        "name": "blockCommRoot",
3747        "type": "uint256",
3748        "internalType": "BN254.ScalarField"
3749      }
3750    ],
3751    "stateMutability": "view"
3752  },
3753  {
3754    "type": "function",
3755    "name": "getHotShotCommitment",
3756    "inputs": [
3757      {
3758        "name": "hotShotBlockHeight",
3759        "type": "uint256",
3760        "internalType": "uint256"
3761      }
3762    ],
3763    "outputs": [
3764      {
3765        "name": "hotShotBlockCommRoot",
3766        "type": "uint256",
3767        "internalType": "BN254.ScalarField"
3768      },
3769      {
3770        "name": "hotshotBlockHeight",
3771        "type": "uint64",
3772        "internalType": "uint64"
3773      }
3774    ],
3775    "stateMutability": "view"
3776  },
3777  {
3778    "type": "function",
3779    "name": "getStateHistoryCount",
3780    "inputs": [],
3781    "outputs": [
3782      {
3783        "name": "",
3784        "type": "uint256",
3785        "internalType": "uint256"
3786      }
3787    ],
3788    "stateMutability": "view"
3789  },
3790  {
3791    "type": "function",
3792    "name": "getVersion",
3793    "inputs": [],
3794    "outputs": [
3795      {
3796        "name": "majorVersion",
3797        "type": "uint8",
3798        "internalType": "uint8"
3799      },
3800      {
3801        "name": "minorVersion",
3802        "type": "uint8",
3803        "internalType": "uint8"
3804      },
3805      {
3806        "name": "patchVersion",
3807        "type": "uint8",
3808        "internalType": "uint8"
3809      }
3810    ],
3811    "stateMutability": "pure"
3812  },
3813  {
3814    "type": "function",
3815    "name": "initialize",
3816    "inputs": [
3817      {
3818        "name": "_genesis",
3819        "type": "tuple",
3820        "internalType": "struct LightClient.LightClientState",
3821        "components": [
3822          {
3823            "name": "viewNum",
3824            "type": "uint64",
3825            "internalType": "uint64"
3826          },
3827          {
3828            "name": "blockHeight",
3829            "type": "uint64",
3830            "internalType": "uint64"
3831          },
3832          {
3833            "name": "blockCommRoot",
3834            "type": "uint256",
3835            "internalType": "BN254.ScalarField"
3836          }
3837        ]
3838      },
3839      {
3840        "name": "_genesisStakeTableState",
3841        "type": "tuple",
3842        "internalType": "struct LightClient.StakeTableState",
3843        "components": [
3844          {
3845            "name": "threshold",
3846            "type": "uint256",
3847            "internalType": "uint256"
3848          },
3849          {
3850            "name": "blsKeyComm",
3851            "type": "uint256",
3852            "internalType": "BN254.ScalarField"
3853          },
3854          {
3855            "name": "schnorrKeyComm",
3856            "type": "uint256",
3857            "internalType": "BN254.ScalarField"
3858          },
3859          {
3860            "name": "amountComm",
3861            "type": "uint256",
3862            "internalType": "BN254.ScalarField"
3863          }
3864        ]
3865      },
3866      {
3867        "name": "_stateHistoryRetentionPeriod",
3868        "type": "uint32",
3869        "internalType": "uint32"
3870      },
3871      {
3872        "name": "owner",
3873        "type": "address",
3874        "internalType": "address"
3875      }
3876    ],
3877    "outputs": [],
3878    "stateMutability": "nonpayable"
3879  },
3880  {
3881    "type": "function",
3882    "name": "isPermissionedProverEnabled",
3883    "inputs": [],
3884    "outputs": [
3885      {
3886        "name": "",
3887        "type": "bool",
3888        "internalType": "bool"
3889      }
3890    ],
3891    "stateMutability": "view"
3892  },
3893  {
3894    "type": "function",
3895    "name": "lagOverEscapeHatchThreshold",
3896    "inputs": [
3897      {
3898        "name": "blockNumber",
3899        "type": "uint256",
3900        "internalType": "uint256"
3901      },
3902      {
3903        "name": "threshold",
3904        "type": "uint256",
3905        "internalType": "uint256"
3906      }
3907    ],
3908    "outputs": [
3909      {
3910        "name": "",
3911        "type": "bool",
3912        "internalType": "bool"
3913      }
3914    ],
3915    "stateMutability": "view"
3916  },
3917  {
3918    "type": "function",
3919    "name": "newFinalizedState",
3920    "inputs": [
3921      {
3922        "name": "newState",
3923        "type": "tuple",
3924        "internalType": "struct LightClient.LightClientState",
3925        "components": [
3926          {
3927            "name": "viewNum",
3928            "type": "uint64",
3929            "internalType": "uint64"
3930          },
3931          {
3932            "name": "blockHeight",
3933            "type": "uint64",
3934            "internalType": "uint64"
3935          },
3936          {
3937            "name": "blockCommRoot",
3938            "type": "uint256",
3939            "internalType": "BN254.ScalarField"
3940          }
3941        ]
3942      },
3943      {
3944        "name": "proof",
3945        "type": "tuple",
3946        "internalType": "struct IPlonkVerifier.PlonkProof",
3947        "components": [
3948          {
3949            "name": "wire0",
3950            "type": "tuple",
3951            "internalType": "struct BN254.G1Point",
3952            "components": [
3953              {
3954                "name": "x",
3955                "type": "uint256",
3956                "internalType": "BN254.BaseField"
3957              },
3958              {
3959                "name": "y",
3960                "type": "uint256",
3961                "internalType": "BN254.BaseField"
3962              }
3963            ]
3964          },
3965          {
3966            "name": "wire1",
3967            "type": "tuple",
3968            "internalType": "struct BN254.G1Point",
3969            "components": [
3970              {
3971                "name": "x",
3972                "type": "uint256",
3973                "internalType": "BN254.BaseField"
3974              },
3975              {
3976                "name": "y",
3977                "type": "uint256",
3978                "internalType": "BN254.BaseField"
3979              }
3980            ]
3981          },
3982          {
3983            "name": "wire2",
3984            "type": "tuple",
3985            "internalType": "struct BN254.G1Point",
3986            "components": [
3987              {
3988                "name": "x",
3989                "type": "uint256",
3990                "internalType": "BN254.BaseField"
3991              },
3992              {
3993                "name": "y",
3994                "type": "uint256",
3995                "internalType": "BN254.BaseField"
3996              }
3997            ]
3998          },
3999          {
4000            "name": "wire3",
4001            "type": "tuple",
4002            "internalType": "struct BN254.G1Point",
4003            "components": [
4004              {
4005                "name": "x",
4006                "type": "uint256",
4007                "internalType": "BN254.BaseField"
4008              },
4009              {
4010                "name": "y",
4011                "type": "uint256",
4012                "internalType": "BN254.BaseField"
4013              }
4014            ]
4015          },
4016          {
4017            "name": "wire4",
4018            "type": "tuple",
4019            "internalType": "struct BN254.G1Point",
4020            "components": [
4021              {
4022                "name": "x",
4023                "type": "uint256",
4024                "internalType": "BN254.BaseField"
4025              },
4026              {
4027                "name": "y",
4028                "type": "uint256",
4029                "internalType": "BN254.BaseField"
4030              }
4031            ]
4032          },
4033          {
4034            "name": "prodPerm",
4035            "type": "tuple",
4036            "internalType": "struct BN254.G1Point",
4037            "components": [
4038              {
4039                "name": "x",
4040                "type": "uint256",
4041                "internalType": "BN254.BaseField"
4042              },
4043              {
4044                "name": "y",
4045                "type": "uint256",
4046                "internalType": "BN254.BaseField"
4047              }
4048            ]
4049          },
4050          {
4051            "name": "split0",
4052            "type": "tuple",
4053            "internalType": "struct BN254.G1Point",
4054            "components": [
4055              {
4056                "name": "x",
4057                "type": "uint256",
4058                "internalType": "BN254.BaseField"
4059              },
4060              {
4061                "name": "y",
4062                "type": "uint256",
4063                "internalType": "BN254.BaseField"
4064              }
4065            ]
4066          },
4067          {
4068            "name": "split1",
4069            "type": "tuple",
4070            "internalType": "struct BN254.G1Point",
4071            "components": [
4072              {
4073                "name": "x",
4074                "type": "uint256",
4075                "internalType": "BN254.BaseField"
4076              },
4077              {
4078                "name": "y",
4079                "type": "uint256",
4080                "internalType": "BN254.BaseField"
4081              }
4082            ]
4083          },
4084          {
4085            "name": "split2",
4086            "type": "tuple",
4087            "internalType": "struct BN254.G1Point",
4088            "components": [
4089              {
4090                "name": "x",
4091                "type": "uint256",
4092                "internalType": "BN254.BaseField"
4093              },
4094              {
4095                "name": "y",
4096                "type": "uint256",
4097                "internalType": "BN254.BaseField"
4098              }
4099            ]
4100          },
4101          {
4102            "name": "split3",
4103            "type": "tuple",
4104            "internalType": "struct BN254.G1Point",
4105            "components": [
4106              {
4107                "name": "x",
4108                "type": "uint256",
4109                "internalType": "BN254.BaseField"
4110              },
4111              {
4112                "name": "y",
4113                "type": "uint256",
4114                "internalType": "BN254.BaseField"
4115              }
4116            ]
4117          },
4118          {
4119            "name": "split4",
4120            "type": "tuple",
4121            "internalType": "struct BN254.G1Point",
4122            "components": [
4123              {
4124                "name": "x",
4125                "type": "uint256",
4126                "internalType": "BN254.BaseField"
4127              },
4128              {
4129                "name": "y",
4130                "type": "uint256",
4131                "internalType": "BN254.BaseField"
4132              }
4133            ]
4134          },
4135          {
4136            "name": "zeta",
4137            "type": "tuple",
4138            "internalType": "struct BN254.G1Point",
4139            "components": [
4140              {
4141                "name": "x",
4142                "type": "uint256",
4143                "internalType": "BN254.BaseField"
4144              },
4145              {
4146                "name": "y",
4147                "type": "uint256",
4148                "internalType": "BN254.BaseField"
4149              }
4150            ]
4151          },
4152          {
4153            "name": "zetaOmega",
4154            "type": "tuple",
4155            "internalType": "struct BN254.G1Point",
4156            "components": [
4157              {
4158                "name": "x",
4159                "type": "uint256",
4160                "internalType": "BN254.BaseField"
4161              },
4162              {
4163                "name": "y",
4164                "type": "uint256",
4165                "internalType": "BN254.BaseField"
4166              }
4167            ]
4168          },
4169          {
4170            "name": "wireEval0",
4171            "type": "uint256",
4172            "internalType": "BN254.ScalarField"
4173          },
4174          {
4175            "name": "wireEval1",
4176            "type": "uint256",
4177            "internalType": "BN254.ScalarField"
4178          },
4179          {
4180            "name": "wireEval2",
4181            "type": "uint256",
4182            "internalType": "BN254.ScalarField"
4183          },
4184          {
4185            "name": "wireEval3",
4186            "type": "uint256",
4187            "internalType": "BN254.ScalarField"
4188          },
4189          {
4190            "name": "wireEval4",
4191            "type": "uint256",
4192            "internalType": "BN254.ScalarField"
4193          },
4194          {
4195            "name": "sigmaEval0",
4196            "type": "uint256",
4197            "internalType": "BN254.ScalarField"
4198          },
4199          {
4200            "name": "sigmaEval1",
4201            "type": "uint256",
4202            "internalType": "BN254.ScalarField"
4203          },
4204          {
4205            "name": "sigmaEval2",
4206            "type": "uint256",
4207            "internalType": "BN254.ScalarField"
4208          },
4209          {
4210            "name": "sigmaEval3",
4211            "type": "uint256",
4212            "internalType": "BN254.ScalarField"
4213          },
4214          {
4215            "name": "prodPermZetaOmegaEval",
4216            "type": "uint256",
4217            "internalType": "BN254.ScalarField"
4218          }
4219        ]
4220      }
4221    ],
4222    "outputs": [],
4223    "stateMutability": "nonpayable"
4224  },
4225  {
4226    "type": "function",
4227    "name": "owner",
4228    "inputs": [],
4229    "outputs": [
4230      {
4231        "name": "",
4232        "type": "address",
4233        "internalType": "address"
4234      }
4235    ],
4236    "stateMutability": "view"
4237  },
4238  {
4239    "type": "function",
4240    "name": "permissionedProver",
4241    "inputs": [],
4242    "outputs": [
4243      {
4244        "name": "",
4245        "type": "address",
4246        "internalType": "address"
4247      }
4248    ],
4249    "stateMutability": "view"
4250  },
4251  {
4252    "type": "function",
4253    "name": "proxiableUUID",
4254    "inputs": [],
4255    "outputs": [
4256      {
4257        "name": "",
4258        "type": "bytes32",
4259        "internalType": "bytes32"
4260      }
4261    ],
4262    "stateMutability": "view"
4263  },
4264  {
4265    "type": "function",
4266    "name": "renounceOwnership",
4267    "inputs": [],
4268    "outputs": [],
4269    "stateMutability": "nonpayable"
4270  },
4271  {
4272    "type": "function",
4273    "name": "setFinalizedState",
4274    "inputs": [
4275      {
4276        "name": "state",
4277        "type": "tuple",
4278        "internalType": "struct LightClient.LightClientState",
4279        "components": [
4280          {
4281            "name": "viewNum",
4282            "type": "uint64",
4283            "internalType": "uint64"
4284          },
4285          {
4286            "name": "blockHeight",
4287            "type": "uint64",
4288            "internalType": "uint64"
4289          },
4290          {
4291            "name": "blockCommRoot",
4292            "type": "uint256",
4293            "internalType": "BN254.ScalarField"
4294          }
4295        ]
4296      }
4297    ],
4298    "outputs": [],
4299    "stateMutability": "nonpayable"
4300  },
4301  {
4302    "type": "function",
4303    "name": "setHotShotDownSince",
4304    "inputs": [
4305      {
4306        "name": "l1Height",
4307        "type": "uint256",
4308        "internalType": "uint256"
4309      }
4310    ],
4311    "outputs": [],
4312    "stateMutability": "nonpayable"
4313  },
4314  {
4315    "type": "function",
4316    "name": "setHotShotUp",
4317    "inputs": [],
4318    "outputs": [],
4319    "stateMutability": "nonpayable"
4320  },
4321  {
4322    "type": "function",
4323    "name": "setPermissionedProver",
4324    "inputs": [
4325      {
4326        "name": "prover",
4327        "type": "address",
4328        "internalType": "address"
4329      }
4330    ],
4331    "outputs": [],
4332    "stateMutability": "nonpayable"
4333  },
4334  {
4335    "type": "function",
4336    "name": "setStateHistory",
4337    "inputs": [
4338      {
4339        "name": "_stateHistoryCommitments",
4340        "type": "tuple[]",
4341        "internalType": "struct LightClient.StateHistoryCommitment[]",
4342        "components": [
4343          {
4344            "name": "l1BlockHeight",
4345            "type": "uint64",
4346            "internalType": "uint64"
4347          },
4348          {
4349            "name": "l1BlockTimestamp",
4350            "type": "uint64",
4351            "internalType": "uint64"
4352          },
4353          {
4354            "name": "hotShotBlockHeight",
4355            "type": "uint64",
4356            "internalType": "uint64"
4357          },
4358          {
4359            "name": "hotShotBlockCommRoot",
4360            "type": "uint256",
4361            "internalType": "BN254.ScalarField"
4362          }
4363        ]
4364      }
4365    ],
4366    "outputs": [],
4367    "stateMutability": "nonpayable"
4368  },
4369  {
4370    "type": "function",
4371    "name": "setstateHistoryRetentionPeriod",
4372    "inputs": [
4373      {
4374        "name": "historySeconds",
4375        "type": "uint32",
4376        "internalType": "uint32"
4377      }
4378    ],
4379    "outputs": [],
4380    "stateMutability": "nonpayable"
4381  },
4382  {
4383    "type": "function",
4384    "name": "stateHistoryCommitments",
4385    "inputs": [
4386      {
4387        "name": "",
4388        "type": "uint256",
4389        "internalType": "uint256"
4390      }
4391    ],
4392    "outputs": [
4393      {
4394        "name": "l1BlockHeight",
4395        "type": "uint64",
4396        "internalType": "uint64"
4397      },
4398      {
4399        "name": "l1BlockTimestamp",
4400        "type": "uint64",
4401        "internalType": "uint64"
4402      },
4403      {
4404        "name": "hotShotBlockHeight",
4405        "type": "uint64",
4406        "internalType": "uint64"
4407      },
4408      {
4409        "name": "hotShotBlockCommRoot",
4410        "type": "uint256",
4411        "internalType": "BN254.ScalarField"
4412      }
4413    ],
4414    "stateMutability": "view"
4415  },
4416  {
4417    "type": "function",
4418    "name": "stateHistoryFirstIndex",
4419    "inputs": [],
4420    "outputs": [
4421      {
4422        "name": "",
4423        "type": "uint64",
4424        "internalType": "uint64"
4425      }
4426    ],
4427    "stateMutability": "view"
4428  },
4429  {
4430    "type": "function",
4431    "name": "stateHistoryRetentionPeriod",
4432    "inputs": [],
4433    "outputs": [
4434      {
4435        "name": "",
4436        "type": "uint32",
4437        "internalType": "uint32"
4438      }
4439    ],
4440    "stateMutability": "view"
4441  },
4442  {
4443    "type": "function",
4444    "name": "transferOwnership",
4445    "inputs": [
4446      {
4447        "name": "newOwner",
4448        "type": "address",
4449        "internalType": "address"
4450      }
4451    ],
4452    "outputs": [],
4453    "stateMutability": "nonpayable"
4454  },
4455  {
4456    "type": "function",
4457    "name": "upgradeToAndCall",
4458    "inputs": [
4459      {
4460        "name": "newImplementation",
4461        "type": "address",
4462        "internalType": "address"
4463      },
4464      {
4465        "name": "data",
4466        "type": "bytes",
4467        "internalType": "bytes"
4468      }
4469    ],
4470    "outputs": [],
4471    "stateMutability": "payable"
4472  },
4473  {
4474    "type": "event",
4475    "name": "Initialized",
4476    "inputs": [
4477      {
4478        "name": "version",
4479        "type": "uint64",
4480        "indexed": false,
4481        "internalType": "uint64"
4482      }
4483    ],
4484    "anonymous": false
4485  },
4486  {
4487    "type": "event",
4488    "name": "NewState",
4489    "inputs": [
4490      {
4491        "name": "viewNum",
4492        "type": "uint64",
4493        "indexed": true,
4494        "internalType": "uint64"
4495      },
4496      {
4497        "name": "blockHeight",
4498        "type": "uint64",
4499        "indexed": true,
4500        "internalType": "uint64"
4501      },
4502      {
4503        "name": "blockCommRoot",
4504        "type": "uint256",
4505        "indexed": false,
4506        "internalType": "BN254.ScalarField"
4507      }
4508    ],
4509    "anonymous": false
4510  },
4511  {
4512    "type": "event",
4513    "name": "OwnershipTransferred",
4514    "inputs": [
4515      {
4516        "name": "previousOwner",
4517        "type": "address",
4518        "indexed": true,
4519        "internalType": "address"
4520      },
4521      {
4522        "name": "newOwner",
4523        "type": "address",
4524        "indexed": true,
4525        "internalType": "address"
4526      }
4527    ],
4528    "anonymous": false
4529  },
4530  {
4531    "type": "event",
4532    "name": "PermissionedProverNotRequired",
4533    "inputs": [],
4534    "anonymous": false
4535  },
4536  {
4537    "type": "event",
4538    "name": "PermissionedProverRequired",
4539    "inputs": [
4540      {
4541        "name": "permissionedProver",
4542        "type": "address",
4543        "indexed": false,
4544        "internalType": "address"
4545      }
4546    ],
4547    "anonymous": false
4548  },
4549  {
4550    "type": "event",
4551    "name": "Upgrade",
4552    "inputs": [
4553      {
4554        "name": "implementation",
4555        "type": "address",
4556        "indexed": false,
4557        "internalType": "address"
4558      }
4559    ],
4560    "anonymous": false
4561  },
4562  {
4563    "type": "event",
4564    "name": "Upgraded",
4565    "inputs": [
4566      {
4567        "name": "implementation",
4568        "type": "address",
4569        "indexed": true,
4570        "internalType": "address"
4571      }
4572    ],
4573    "anonymous": false
4574  },
4575  {
4576    "type": "error",
4577    "name": "AddressEmptyCode",
4578    "inputs": [
4579      {
4580        "name": "target",
4581        "type": "address",
4582        "internalType": "address"
4583      }
4584    ]
4585  },
4586  {
4587    "type": "error",
4588    "name": "ERC1967InvalidImplementation",
4589    "inputs": [
4590      {
4591        "name": "implementation",
4592        "type": "address",
4593        "internalType": "address"
4594      }
4595    ]
4596  },
4597  {
4598    "type": "error",
4599    "name": "ERC1967NonPayable",
4600    "inputs": []
4601  },
4602  {
4603    "type": "error",
4604    "name": "FailedInnerCall",
4605    "inputs": []
4606  },
4607  {
4608    "type": "error",
4609    "name": "InsufficientSnapshotHistory",
4610    "inputs": []
4611  },
4612  {
4613    "type": "error",
4614    "name": "InvalidAddress",
4615    "inputs": []
4616  },
4617  {
4618    "type": "error",
4619    "name": "InvalidArgs",
4620    "inputs": []
4621  },
4622  {
4623    "type": "error",
4624    "name": "InvalidHotShotBlockForCommitmentCheck",
4625    "inputs": []
4626  },
4627  {
4628    "type": "error",
4629    "name": "InvalidInitialization",
4630    "inputs": []
4631  },
4632  {
4633    "type": "error",
4634    "name": "InvalidMaxStateHistory",
4635    "inputs": []
4636  },
4637  {
4638    "type": "error",
4639    "name": "InvalidProof",
4640    "inputs": []
4641  },
4642  {
4643    "type": "error",
4644    "name": "NoChangeRequired",
4645    "inputs": []
4646  },
4647  {
4648    "type": "error",
4649    "name": "NotInitializing",
4650    "inputs": []
4651  },
4652  {
4653    "type": "error",
4654    "name": "OutdatedState",
4655    "inputs": []
4656  },
4657  {
4658    "type": "error",
4659    "name": "OwnableInvalidOwner",
4660    "inputs": [
4661      {
4662        "name": "owner",
4663        "type": "address",
4664        "internalType": "address"
4665      }
4666    ]
4667  },
4668  {
4669    "type": "error",
4670    "name": "OwnableUnauthorizedAccount",
4671    "inputs": [
4672      {
4673        "name": "account",
4674        "type": "address",
4675        "internalType": "address"
4676      }
4677    ]
4678  },
4679  {
4680    "type": "error",
4681    "name": "ProverNotPermissioned",
4682    "inputs": []
4683  },
4684  {
4685    "type": "error",
4686    "name": "UUPSUnauthorizedCallContext",
4687    "inputs": []
4688  },
4689  {
4690    "type": "error",
4691    "name": "UUPSUnsupportedProxiableUUID",
4692    "inputs": [
4693      {
4694        "name": "slot",
4695        "type": "bytes32",
4696        "internalType": "bytes32"
4697      }
4698    ]
4699  },
4700  {
4701    "type": "error",
4702    "name": "WrongStakeTableUsed",
4703    "inputs": []
4704  }
4705]
4706```*/
4707#[allow(
4708    non_camel_case_types,
4709    non_snake_case,
4710    clippy::pub_underscore_fields,
4711    clippy::style,
4712    clippy::empty_structs_with_brackets
4713)]
4714pub mod LightClientMock {
4715    use super::*;
4716    use alloy::sol_types as alloy_sol_types;
4717    /// The creation / init bytecode of the contract.
4718    ///
4719    /// ```text
4720    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612eab6100f95f395f81816117b0015281816117d901526119560152612eab5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d83660046121a8565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121c1565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121d8565b348015610293575f5ffd5b506101dd6102a236600461252f565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121c1565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126df565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121c1565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612795565b610b00565b3480156104c1575f5ffd5b506101dd6104d03660046127ae565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612836565b348015610572575f5ffd5b506101dd61058136600461286b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612885565b610cab565b34801561066a575f5ffd5b506101dd6106793660046121a8565b610ce0565b348015610689575f5ffd5b506101dd6106983660046128a5565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ec3565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b61087382826114c8565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b42846115bc565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b6109246117a5565b61092d82611849565b610937828261188a565b5050565b5f61094461194b565b505f516020612e7f5f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611994565b600980545f918291906109e96001836129b1565b815481106109f9576109f96129c4565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a686129c4565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa16129c4565b905f5260205f2090600202016001015460098281548110610ac457610ac46129c4565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c4786611a04565b610c4f611a15565b610c5a898989611a1d565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b49565b610cd7565b81600b5484610cd591906129b1565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611994565b50565b610d2d60095f612128565b5f5b8151811015610937576009828281518110610d4c57610d4c6129c4565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611ec3565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d0d565b5f6114d16107ad565b90506114db612146565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061155a90859085908890600401612bb4565b602060405180830381865af4158015611575573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612dd4565b6115b6576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611631575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115fc576115fc6129c4565b5f91825260209091206002909102015461162690600160401b90046001600160401b031684612df3565b6001600160401b0316115b156116c457600854600980549091600160c01b90046001600160401b031690811061165e5761165e6129c4565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861169e83612e12565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661181f5f516020612e7f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611851610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e4575060408051601f3d908101601f191682019092526118e191810190612e3c565b60015b61190c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e7f5f395f51905f52811461193c57604051632a87526960e21b815260048101829052602401610d0d565b6119468383611ca1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a0c611cf6565b610d1f81611d3f565b6109c2611cf6565b82516001600160401b0316151580611a41575060208301516001600160401b031615155b80611a4e57506020820151155b80611a5b57506040820151155b80611a6857506060820151155b80611a7257508151155b80611a845750610e108163ffffffff16105b80611a9857506301e133808163ffffffff16115b15611ab6576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b5a575080155b80611ba45750600854600980549091600160c01b90046001600160401b0316908110611b8857611b886129c4565b5f9182526020909120600290910201546001600160401b031684105b15611bc25760405163b0b4387760e01b815260040160405180910390fd5b5f8080611bd06001856129b1565b90505b81611c6c57600854600160c01b90046001600160401b03168110611c6c578660098281548110611c0557611c056129c4565b5f9182526020909120600290910201546001600160401b031611611c5a576001915060098181548110611c3a57611c3a6129c4565b5f9182526020909120600290910201546001600160401b03169250611c6c565b80611c6481612e53565b915050611bd3565b81611c8a5760405163b0b4387760e01b815260040160405180910390fd5b85611c9584896129b1565b11979650505050505050565b611caa82611d47565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cee576119468282611daa565b610937611e1c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cf6565b806001600160a01b03163b5f03611d7c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e7f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc69190612e68565b5f60405180830381855af49150503d805f8114611dfe576040519150601f19603f3d011682016040523d82523d5f602084013e611e03565b606091505b5091509150611e13858383611e3b565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e5057611e4b82611e9a565b611e93565b8151158015611e6757506001600160a01b0384163b155b15611e9057604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611eaa5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ef660405180604001604052805f81526020015f81525090565b8152602001611f1660405180604001604052805f81526020015f81525090565b8152602001611f3660405180604001604052805f81526020015f81525090565b8152602001611f5660405180604001604052805f81526020015f81525090565b8152602001611f7660405180604001604052805f81526020015f81525090565b8152602001611f9660405180604001604052805f81526020015f81525090565b8152602001611fb660405180604001604052805f81526020015f81525090565b8152602001611fd660405180604001604052805f81526020015f81525090565b8152602001611ff660405180604001604052805f81526020015f81525090565b815260200161201660405180604001604052805f81526020015f81525090565b815260200161203660405180604001604052805f81526020015f81525090565b815260200161205660405180604001604052805f81526020015f81525090565b815260200161207660405180604001604052805f81526020015f81525090565b815260200161209660405180604001604052805f81526020015f81525090565b81526020016120b660405180604001604052805f81526020015f81525090565b81526020016120d660405180604001604052805f81526020015f81525090565b81526020016120f660405180604001604052805f81526020015f81525090565b815260200161211660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612164565b6040518060e001604052806007906020820280368337509192915050565b5b808211156121895780546001600160c01b03191681555f6001820155600201612165565b5090565b80356001600160a01b03811681146121a3575f5ffd5b919050565b5f602082840312156121b8575f5ffd5b610cd78261218d565b5f602082840312156121d1575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161220a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612410576124106123d9565b60405290565b604051608081016001600160401b0381118282101715612410576124106123d9565b604051601f8201601f191681016001600160401b0381118282101715612460576124606123d9565b604052919050565b80356001600160401b03811681146121a3575f5ffd5b5f6060828403121561248e575f5ffd5b604051606081016001600160401b03811182821017156124b0576124b06123d9565b6040529050806124bf83612468565b81526124cd60208401612468565b6020820152604092830135920191909152919050565b5f604082840312156124f3575f5ffd5b604080519081016001600160401b0381118282101715612515576125156123d9565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612542575f5ffd5b61254c858561247e565b9250610480605f1982011215612560575f5ffd5b506125696123ed565b61257685606086016124e3565b81526125858560a086016124e3565b60208201526125978560e086016124e3565b60408201526125aa8561012086016124e3565b60608201526125bd8561016086016124e3565b60808201526125d0856101a086016124e3565b60a08201526125e3856101e086016124e3565b60c08201526125f68561022086016124e3565b60e08201526126098561026086016124e3565b61010082015261261d856102a086016124e3565b610120820152612631856102e086016124e3565b6101408201526126458561032086016124e3565b6101608201526126598561036086016124e3565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126f0575f5ffd5b6126f98361218d565b915060208301356001600160401b03811115612713575f5ffd5b8301601f81018513612723575f5ffd5b80356001600160401b0381111561273c5761273c6123d9565b61274f601f8201601f1916602001612438565b818152866020838501011115612763575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff811681146121a3575f5ffd5b5f602082840312156127a5575f5ffd5b610cd782612782565b5f5f5f5f8486036101208112156127c3575f5ffd5b6127cd878761247e565b94506080605f19820112156127e0575f5ffd5b506127e9612416565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061281c60e08601612782565b915061282b610100860161218d565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561287b575f5ffd5b610cd7838361247e565b5f5f60408385031215612896575f5ffd5b50508035926020909101359150565b5f602082840312156128b5575f5ffd5b81356001600160401b038111156128ca575f5ffd5b8201601f810184136128da575f5ffd5b80356001600160401b038111156128f3576128f36123d9565b61290260208260051b01612438565b8082825260208201915060208360071b850101925086831115612923575f5ffd5b6020840193505b828410156129935760808488031215612941575f5ffd5b612949612416565b61295285612468565b815261296060208601612468565b602082015261297160408601612468565b604082015260608581013590820152825260809093019260209091019061292a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61299d565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115b65781518452602093840193909101906001016129db565b612a0f82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612be6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612dbe6105008301856129d8565b612dcc6105e08301846129fa565b949350505050565b5f60208284031215612de4575f5ffd5b81518015158114611e93575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61299d565b5f6001600160401b0382166001600160401b038103612e3357612e3361299d565b60010192915050565b5f60208284031215612e4c575f5ffd5b5051919050565b5f81612e6157612e6161299d565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4721    /// ```
4722    #[rustfmt::skip]
4723    #[allow(clippy::all)]
4724    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4725        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.\xABa\0\xF9_9_\x81\x81a\x17\xB0\x01R\x81\x81a\x17\xD9\x01Ra\x19V\x01Ra.\xAB_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\xA8V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xC1V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xD8V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%/V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xC1V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xDFV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xC1V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'\x95V[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\xAEV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(6V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(kV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(\x85V[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\xA8V[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\xA5V[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xC3V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\xC8V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\xBCV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\xA5V[a\t-\x82a\x18IV[a\t7\x82\x82a\x18\x8AV[PPV[_a\tDa\x19KV[P_Q` a.\x7F_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xCDV[a\t\xC2_a\x19\x94V[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\xB1V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\xC4V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\xC4V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x1A\x04V[a\x0COa\x1A\x15V[a\x0CZ\x89\x89\x89a\x1A\x1DV[\x83\x15a\x0C\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1BIV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\xB1V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19\x94V[PV[a\r-`\t_a!(V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\xC4V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\xC3V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@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\r\rV[_a\x14\xD1a\x07\xADV[\x90Pa\x14\xDBa!FV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15Z\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\xB4V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15uW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x99\x91\x90a-\xD4V[a\x15\xB6W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x161WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xFCWa\x15\xFCa)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16&\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xF3V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xC4W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16^Wa\x16^a)\xC4V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x9E\x83a.\x12V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x18+WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x1F_Q` a.\x7F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18Qa\r\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xE4WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xE1\x91\x81\x01\x90a.<V[`\x01[a\x19\x0CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x81\x14a\x19<W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19F\x83\x83a\x1C\xA1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x1A\x0Ca\x1C\xF6V[a\r\x1F\x81a\x1D?V[a\t\xC2a\x1C\xF6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1AAWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1ANWP` \x82\x01Q\x15[\x80a\x1A[WP`@\x82\x01Q\x15[\x80a\x1AhWP``\x82\x01Q\x15[\x80a\x1ArWP\x81Q\x15[\x80a\x1A\x84WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\x98WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\xB6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1BZWP\x80\x15[\x80a\x1B\xA4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1B\x88Wa\x1B\x88a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\xC2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xD0`\x01\x85a)\xB1V[\x90P[\x81a\x1ClW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1ClW\x86`\t\x82\x81T\x81\x10a\x1C\x05Wa\x1C\x05a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1CZW`\x01\x91P`\t\x81\x81T\x81\x10a\x1C:Wa\x1C:a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1ClV[\x80a\x1Cd\x81a.SV[\x91PPa\x1B\xD3V[\x81a\x1C\x8AW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x95\x84\x89a)\xB1V[\x11\x97\x96PPPPPPPV[a\x1C\xAA\x82a\x1DGV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1C\xEEWa\x19F\x82\x82a\x1D\xAAV[a\t7a\x1E\x1CV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xF6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D|W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\xC6\x91\x90a.hV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\x03V[``\x91P[P\x91P\x91Pa\x1E\x13\x85\x83\x83a\x1E;V[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1EPWa\x1EK\x82a\x1E\x9AV[a\x1E\x93V[\x81Q\x15\x80\x15a\x1EgWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1E\x90W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\xAAW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FV`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fv`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a!\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!dV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!\x89W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!eV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\xB8W__\xFD[a\x0C\xD7\x82a!\x8DV[_` \x82\x84\x03\x12\x15a!\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\"\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$`Wa$`a#\xD9V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[_``\x82\x84\x03\x12\x15a$\x8EW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xB0Wa$\xB0a#\xD9V[`@R\x90P\x80a$\xBF\x83a$hV[\x81Ra$\xCD` \x84\x01a$hV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xF3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x15Wa%\x15a#\xD9V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%BW__\xFD[a%L\x85\x85a$~V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%`W__\xFD[Pa%ia#\xEDV[a%v\x85``\x86\x01a$\xE3V[\x81Ra%\x85\x85`\xA0\x86\x01a$\xE3V[` \x82\x01Ra%\x97\x85`\xE0\x86\x01a$\xE3V[`@\x82\x01Ra%\xAA\x85a\x01 \x86\x01a$\xE3V[``\x82\x01Ra%\xBD\x85a\x01`\x86\x01a$\xE3V[`\x80\x82\x01Ra%\xD0\x85a\x01\xA0\x86\x01a$\xE3V[`\xA0\x82\x01Ra%\xE3\x85a\x01\xE0\x86\x01a$\xE3V[`\xC0\x82\x01Ra%\xF6\x85a\x02 \x86\x01a$\xE3V[`\xE0\x82\x01Ra&\t\x85a\x02`\x86\x01a$\xE3V[a\x01\0\x82\x01Ra&\x1D\x85a\x02\xA0\x86\x01a$\xE3V[a\x01 \x82\x01Ra&1\x85a\x02\xE0\x86\x01a$\xE3V[a\x01@\x82\x01Ra&E\x85a\x03 \x86\x01a$\xE3V[a\x01`\x82\x01Ra&Y\x85a\x03`\x86\x01a$\xE3V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xF0W__\xFD[a&\xF9\x83a!\x8DV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'<Wa'<a#\xD9V[a'O`\x1F\x82\x01`\x1F\x19\x16` \x01a$8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\xA3W__\xFD[_` \x82\x84\x03\x12\x15a'\xA5W__\xFD[a\x0C\xD7\x82a'\x82V[____\x84\x86\x03a\x01 \x81\x12\x15a'\xC3W__\xFD[a'\xCD\x87\x87a$~V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xE0W__\xFD[Pa'\xE9a$\x16V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa(\x1C`\xE0\x86\x01a'\x82V[\x91Pa(+a\x01\0\x86\x01a!\x8DV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a({W__\xFD[a\x0C\xD7\x83\x83a$~V[__`@\x83\x85\x03\x12\x15a(\x96W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\xB5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xDAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF3Wa(\xF3a#\xD9V[a)\x02` \x82`\x05\x1B\x01a$8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)#W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)\x93W`\x80\x84\x88\x03\x12\x15a)AW__\xFD[a)Ia$\x16V[a)R\x85a$hV[\x81Ra)`` \x86\x01a$hV[` \x82\x01Ra)q`@\x86\x01a$hV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)*V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\xB6W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xDBV[a*\x0F\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xE6`@\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-\xBEa\x05\0\x83\x01\x85a)\xD8V[a-\xCCa\x05\xE0\x83\x01\x84a)\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xE4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1E\x93W__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.3Wa.3a)\x9DV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.LW__\xFD[PQ\x91\x90PV[_\x81a.aWa.aa)\x9DV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4726    );
4727    /// The runtime bytecode of the contract, as deployed on the network.
4728    ///
4729    /// ```text
4730    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d83660046121a8565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121c1565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121d8565b348015610293575f5ffd5b506101dd6102a236600461252f565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121c1565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126df565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121c1565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612795565b610b00565b3480156104c1575f5ffd5b506101dd6104d03660046127ae565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612836565b348015610572575f5ffd5b506101dd61058136600461286b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612885565b610cab565b34801561066a575f5ffd5b506101dd6106793660046121a8565b610ce0565b348015610689575f5ffd5b506101dd6106983660046128a5565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ec3565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b61087382826114c8565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b42846115bc565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b6109246117a5565b61092d82611849565b610937828261188a565b5050565b5f61094461194b565b505f516020612e7f5f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611994565b600980545f918291906109e96001836129b1565b815481106109f9576109f96129c4565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a686129c4565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa16129c4565b905f5260205f2090600202016001015460098281548110610ac457610ac46129c4565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c4786611a04565b610c4f611a15565b610c5a898989611a1d565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b49565b610cd7565b81600b5484610cd591906129b1565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611994565b50565b610d2d60095f612128565b5f5b8151811015610937576009828281518110610d4c57610d4c6129c4565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611ec3565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d0d565b5f6114d16107ad565b90506114db612146565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061155a90859085908890600401612bb4565b602060405180830381865af4158015611575573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612dd4565b6115b6576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611631575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115fc576115fc6129c4565b5f91825260209091206002909102015461162690600160401b90046001600160401b031684612df3565b6001600160401b0316115b156116c457600854600980549091600160c01b90046001600160401b031690811061165e5761165e6129c4565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861169e83612e12565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661181f5f516020612e7f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611851610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e4575060408051601f3d908101601f191682019092526118e191810190612e3c565b60015b61190c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e7f5f395f51905f52811461193c57604051632a87526960e21b815260048101829052602401610d0d565b6119468383611ca1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a0c611cf6565b610d1f81611d3f565b6109c2611cf6565b82516001600160401b0316151580611a41575060208301516001600160401b031615155b80611a4e57506020820151155b80611a5b57506040820151155b80611a6857506060820151155b80611a7257508151155b80611a845750610e108163ffffffff16105b80611a9857506301e133808163ffffffff16115b15611ab6576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b5a575080155b80611ba45750600854600980549091600160c01b90046001600160401b0316908110611b8857611b886129c4565b5f9182526020909120600290910201546001600160401b031684105b15611bc25760405163b0b4387760e01b815260040160405180910390fd5b5f8080611bd06001856129b1565b90505b81611c6c57600854600160c01b90046001600160401b03168110611c6c578660098281548110611c0557611c056129c4565b5f9182526020909120600290910201546001600160401b031611611c5a576001915060098181548110611c3a57611c3a6129c4565b5f9182526020909120600290910201546001600160401b03169250611c6c565b80611c6481612e53565b915050611bd3565b81611c8a5760405163b0b4387760e01b815260040160405180910390fd5b85611c9584896129b1565b11979650505050505050565b611caa82611d47565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cee576119468282611daa565b610937611e1c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cf6565b806001600160a01b03163b5f03611d7c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e7f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc69190612e68565b5f60405180830381855af49150503d805f8114611dfe576040519150601f19603f3d011682016040523d82523d5f602084013e611e03565b606091505b5091509150611e13858383611e3b565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e5057611e4b82611e9a565b611e93565b8151158015611e6757506001600160a01b0384163b155b15611e9057604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611eaa5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ef660405180604001604052805f81526020015f81525090565b8152602001611f1660405180604001604052805f81526020015f81525090565b8152602001611f3660405180604001604052805f81526020015f81525090565b8152602001611f5660405180604001604052805f81526020015f81525090565b8152602001611f7660405180604001604052805f81526020015f81525090565b8152602001611f9660405180604001604052805f81526020015f81525090565b8152602001611fb660405180604001604052805f81526020015f81525090565b8152602001611fd660405180604001604052805f81526020015f81525090565b8152602001611ff660405180604001604052805f81526020015f81525090565b815260200161201660405180604001604052805f81526020015f81525090565b815260200161203660405180604001604052805f81526020015f81525090565b815260200161205660405180604001604052805f81526020015f81525090565b815260200161207660405180604001604052805f81526020015f81525090565b815260200161209660405180604001604052805f81526020015f81525090565b81526020016120b660405180604001604052805f81526020015f81525090565b81526020016120d660405180604001604052805f81526020015f81525090565b81526020016120f660405180604001604052805f81526020015f81525090565b815260200161211660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612164565b6040518060e001604052806007906020820280368337509192915050565b5b808211156121895780546001600160c01b03191681555f6001820155600201612165565b5090565b80356001600160a01b03811681146121a3575f5ffd5b919050565b5f602082840312156121b8575f5ffd5b610cd78261218d565b5f602082840312156121d1575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161220a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612410576124106123d9565b60405290565b604051608081016001600160401b0381118282101715612410576124106123d9565b604051601f8201601f191681016001600160401b0381118282101715612460576124606123d9565b604052919050565b80356001600160401b03811681146121a3575f5ffd5b5f6060828403121561248e575f5ffd5b604051606081016001600160401b03811182821017156124b0576124b06123d9565b6040529050806124bf83612468565b81526124cd60208401612468565b6020820152604092830135920191909152919050565b5f604082840312156124f3575f5ffd5b604080519081016001600160401b0381118282101715612515576125156123d9565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612542575f5ffd5b61254c858561247e565b9250610480605f1982011215612560575f5ffd5b506125696123ed565b61257685606086016124e3565b81526125858560a086016124e3565b60208201526125978560e086016124e3565b60408201526125aa8561012086016124e3565b60608201526125bd8561016086016124e3565b60808201526125d0856101a086016124e3565b60a08201526125e3856101e086016124e3565b60c08201526125f68561022086016124e3565b60e08201526126098561026086016124e3565b61010082015261261d856102a086016124e3565b610120820152612631856102e086016124e3565b6101408201526126458561032086016124e3565b6101608201526126598561036086016124e3565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126f0575f5ffd5b6126f98361218d565b915060208301356001600160401b03811115612713575f5ffd5b8301601f81018513612723575f5ffd5b80356001600160401b0381111561273c5761273c6123d9565b61274f601f8201601f1916602001612438565b818152866020838501011115612763575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff811681146121a3575f5ffd5b5f602082840312156127a5575f5ffd5b610cd782612782565b5f5f5f5f8486036101208112156127c3575f5ffd5b6127cd878761247e565b94506080605f19820112156127e0575f5ffd5b506127e9612416565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061281c60e08601612782565b915061282b610100860161218d565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561287b575f5ffd5b610cd7838361247e565b5f5f60408385031215612896575f5ffd5b50508035926020909101359150565b5f602082840312156128b5575f5ffd5b81356001600160401b038111156128ca575f5ffd5b8201601f810184136128da575f5ffd5b80356001600160401b038111156128f3576128f36123d9565b61290260208260051b01612438565b8082825260208201915060208360071b850101925086831115612923575f5ffd5b6020840193505b828410156129935760808488031215612941575f5ffd5b612949612416565b61295285612468565b815261296060208601612468565b602082015261297160408601612468565b604082015260608581013590820152825260809093019260209091019061292a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61299d565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115b65781518452602093840193909101906001016129db565b612a0f82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612be6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612dbe6105008301856129d8565b612dcc6105e08301846129fa565b949350505050565b5f60208284031215612de4575f5ffd5b81518015158114611e93575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61299d565b5f6001600160401b0382166001600160401b038103612e3357612e3361299d565b60010192915050565b5f60208284031215612e4c575f5ffd5b5051919050565b5f81612e6157612e6161299d565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4731    /// ```
4732    #[rustfmt::skip]
4733    #[allow(clippy::all)]
4734    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4735        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\xA8V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xC1V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xD8V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%/V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xC1V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xDFV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xC1V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'\x95V[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\xAEV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(6V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(kV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(\x85V[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\xA8V[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\xA5V[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xC3V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\xC8V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\xBCV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\xA5V[a\t-\x82a\x18IV[a\t7\x82\x82a\x18\x8AV[PPV[_a\tDa\x19KV[P_Q` a.\x7F_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xCDV[a\t\xC2_a\x19\x94V[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\xB1V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\xC4V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\xC4V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x1A\x04V[a\x0COa\x1A\x15V[a\x0CZ\x89\x89\x89a\x1A\x1DV[\x83\x15a\x0C\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1BIV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\xB1V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19\x94V[PV[a\r-`\t_a!(V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\xC4V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\xC3V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@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\r\rV[_a\x14\xD1a\x07\xADV[\x90Pa\x14\xDBa!FV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15Z\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\xB4V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15uW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x99\x91\x90a-\xD4V[a\x15\xB6W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x161WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xFCWa\x15\xFCa)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16&\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xF3V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xC4W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16^Wa\x16^a)\xC4V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x9E\x83a.\x12V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x18+WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x1F_Q` a.\x7F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18Qa\r\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xE4WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xE1\x91\x81\x01\x90a.<V[`\x01[a\x19\x0CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x81\x14a\x19<W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19F\x83\x83a\x1C\xA1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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\x1A\x0Ca\x1C\xF6V[a\r\x1F\x81a\x1D?V[a\t\xC2a\x1C\xF6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1AAWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1ANWP` \x82\x01Q\x15[\x80a\x1A[WP`@\x82\x01Q\x15[\x80a\x1AhWP``\x82\x01Q\x15[\x80a\x1ArWP\x81Q\x15[\x80a\x1A\x84WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\x98WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\xB6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1BZWP\x80\x15[\x80a\x1B\xA4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1B\x88Wa\x1B\x88a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\xC2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xD0`\x01\x85a)\xB1V[\x90P[\x81a\x1ClW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1ClW\x86`\t\x82\x81T\x81\x10a\x1C\x05Wa\x1C\x05a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1CZW`\x01\x91P`\t\x81\x81T\x81\x10a\x1C:Wa\x1C:a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1ClV[\x80a\x1Cd\x81a.SV[\x91PPa\x1B\xD3V[\x81a\x1C\x8AW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x95\x84\x89a)\xB1V[\x11\x97\x96PPPPPPPV[a\x1C\xAA\x82a\x1DGV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1C\xEEWa\x19F\x82\x82a\x1D\xAAV[a\t7a\x1E\x1CV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xF6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D|W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\xC6\x91\x90a.hV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\x03V[``\x91P[P\x91P\x91Pa\x1E\x13\x85\x83\x83a\x1E;V[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1EPWa\x1EK\x82a\x1E\x9AV[a\x1E\x93V[\x81Q\x15\x80\x15a\x1EgWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1E\x90W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\xAAW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FV`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fv`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a!\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!dV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!\x89W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!eV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\xB8W__\xFD[a\x0C\xD7\x82a!\x8DV[_` \x82\x84\x03\x12\x15a!\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\"\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$`Wa$`a#\xD9V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[_``\x82\x84\x03\x12\x15a$\x8EW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xB0Wa$\xB0a#\xD9V[`@R\x90P\x80a$\xBF\x83a$hV[\x81Ra$\xCD` \x84\x01a$hV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xF3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x15Wa%\x15a#\xD9V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%BW__\xFD[a%L\x85\x85a$~V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%`W__\xFD[Pa%ia#\xEDV[a%v\x85``\x86\x01a$\xE3V[\x81Ra%\x85\x85`\xA0\x86\x01a$\xE3V[` \x82\x01Ra%\x97\x85`\xE0\x86\x01a$\xE3V[`@\x82\x01Ra%\xAA\x85a\x01 \x86\x01a$\xE3V[``\x82\x01Ra%\xBD\x85a\x01`\x86\x01a$\xE3V[`\x80\x82\x01Ra%\xD0\x85a\x01\xA0\x86\x01a$\xE3V[`\xA0\x82\x01Ra%\xE3\x85a\x01\xE0\x86\x01a$\xE3V[`\xC0\x82\x01Ra%\xF6\x85a\x02 \x86\x01a$\xE3V[`\xE0\x82\x01Ra&\t\x85a\x02`\x86\x01a$\xE3V[a\x01\0\x82\x01Ra&\x1D\x85a\x02\xA0\x86\x01a$\xE3V[a\x01 \x82\x01Ra&1\x85a\x02\xE0\x86\x01a$\xE3V[a\x01@\x82\x01Ra&E\x85a\x03 \x86\x01a$\xE3V[a\x01`\x82\x01Ra&Y\x85a\x03`\x86\x01a$\xE3V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xF0W__\xFD[a&\xF9\x83a!\x8DV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'<Wa'<a#\xD9V[a'O`\x1F\x82\x01`\x1F\x19\x16` \x01a$8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\xA3W__\xFD[_` \x82\x84\x03\x12\x15a'\xA5W__\xFD[a\x0C\xD7\x82a'\x82V[____\x84\x86\x03a\x01 \x81\x12\x15a'\xC3W__\xFD[a'\xCD\x87\x87a$~V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xE0W__\xFD[Pa'\xE9a$\x16V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa(\x1C`\xE0\x86\x01a'\x82V[\x91Pa(+a\x01\0\x86\x01a!\x8DV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a({W__\xFD[a\x0C\xD7\x83\x83a$~V[__`@\x83\x85\x03\x12\x15a(\x96W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\xB5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xDAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF3Wa(\xF3a#\xD9V[a)\x02` \x82`\x05\x1B\x01a$8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)#W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)\x93W`\x80\x84\x88\x03\x12\x15a)AW__\xFD[a)Ia$\x16V[a)R\x85a$hV[\x81Ra)`` \x86\x01a$hV[` \x82\x01Ra)q`@\x86\x01a$hV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)*V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\xB6W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xDBV[a*\x0F\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xE6`@\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-\xBEa\x05\0\x83\x01\x85a)\xD8V[a-\xCCa\x05\xE0\x83\x01\x84a)\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xE4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1E\x93W__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.3Wa.3a)\x9DV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.LW__\xFD[PQ\x91\x90PV[_\x81a.aWa.aa)\x9DV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4736    );
4737    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4738    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4739```solidity
4740error AddressEmptyCode(address target);
4741```*/
4742    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4743    #[derive(Clone)]
4744    pub struct AddressEmptyCode {
4745        #[allow(missing_docs)]
4746        pub target: alloy::sol_types::private::Address,
4747    }
4748    #[allow(
4749        non_camel_case_types,
4750        non_snake_case,
4751        clippy::pub_underscore_fields,
4752        clippy::style
4753    )]
4754    const _: () = {
4755        use alloy::sol_types as alloy_sol_types;
4756        #[doc(hidden)]
4757        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4758        #[doc(hidden)]
4759        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4760        #[cfg(test)]
4761        #[allow(dead_code, unreachable_patterns)]
4762        fn _type_assertion(
4763            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4764        ) {
4765            match _t {
4766                alloy_sol_types::private::AssertTypeEq::<
4767                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4768                >(_) => {}
4769            }
4770        }
4771        #[automatically_derived]
4772        #[doc(hidden)]
4773        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4774            fn from(value: AddressEmptyCode) -> Self {
4775                (value.target,)
4776            }
4777        }
4778        #[automatically_derived]
4779        #[doc(hidden)]
4780        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4782                Self { target: tuple.0 }
4783            }
4784        }
4785        #[automatically_derived]
4786        impl alloy_sol_types::SolError for AddressEmptyCode {
4787            type Parameters<'a> = UnderlyingSolTuple<'a>;
4788            type Token<'a> = <Self::Parameters<
4789                'a,
4790            > as alloy_sol_types::SolType>::Token<'a>;
4791            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4792            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4793            #[inline]
4794            fn new<'a>(
4795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4796            ) -> Self {
4797                tuple.into()
4798            }
4799            #[inline]
4800            fn tokenize(&self) -> Self::Token<'_> {
4801                (
4802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4803                        &self.target,
4804                    ),
4805                )
4806            }
4807        }
4808    };
4809    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4810    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4811```solidity
4812error ERC1967InvalidImplementation(address implementation);
4813```*/
4814    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4815    #[derive(Clone)]
4816    pub struct ERC1967InvalidImplementation {
4817        #[allow(missing_docs)]
4818        pub implementation: alloy::sol_types::private::Address,
4819    }
4820    #[allow(
4821        non_camel_case_types,
4822        non_snake_case,
4823        clippy::pub_underscore_fields,
4824        clippy::style
4825    )]
4826    const _: () = {
4827        use alloy::sol_types as alloy_sol_types;
4828        #[doc(hidden)]
4829        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4830        #[doc(hidden)]
4831        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4832        #[cfg(test)]
4833        #[allow(dead_code, unreachable_patterns)]
4834        fn _type_assertion(
4835            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4836        ) {
4837            match _t {
4838                alloy_sol_types::private::AssertTypeEq::<
4839                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4840                >(_) => {}
4841            }
4842        }
4843        #[automatically_derived]
4844        #[doc(hidden)]
4845        impl ::core::convert::From<ERC1967InvalidImplementation>
4846        for UnderlyingRustTuple<'_> {
4847            fn from(value: ERC1967InvalidImplementation) -> Self {
4848                (value.implementation,)
4849            }
4850        }
4851        #[automatically_derived]
4852        #[doc(hidden)]
4853        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4854        for ERC1967InvalidImplementation {
4855            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4856                Self { implementation: tuple.0 }
4857            }
4858        }
4859        #[automatically_derived]
4860        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4861            type Parameters<'a> = UnderlyingSolTuple<'a>;
4862            type Token<'a> = <Self::Parameters<
4863                'a,
4864            > as alloy_sol_types::SolType>::Token<'a>;
4865            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4866            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4867            #[inline]
4868            fn new<'a>(
4869                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4870            ) -> Self {
4871                tuple.into()
4872            }
4873            #[inline]
4874            fn tokenize(&self) -> Self::Token<'_> {
4875                (
4876                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4877                        &self.implementation,
4878                    ),
4879                )
4880            }
4881        }
4882    };
4883    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4884    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4885```solidity
4886error ERC1967NonPayable();
4887```*/
4888    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4889    #[derive(Clone)]
4890    pub struct ERC1967NonPayable {}
4891    #[allow(
4892        non_camel_case_types,
4893        non_snake_case,
4894        clippy::pub_underscore_fields,
4895        clippy::style
4896    )]
4897    const _: () = {
4898        use alloy::sol_types as alloy_sol_types;
4899        #[doc(hidden)]
4900        type UnderlyingSolTuple<'a> = ();
4901        #[doc(hidden)]
4902        type UnderlyingRustTuple<'a> = ();
4903        #[cfg(test)]
4904        #[allow(dead_code, unreachable_patterns)]
4905        fn _type_assertion(
4906            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4907        ) {
4908            match _t {
4909                alloy_sol_types::private::AssertTypeEq::<
4910                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4911                >(_) => {}
4912            }
4913        }
4914        #[automatically_derived]
4915        #[doc(hidden)]
4916        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4917            fn from(value: ERC1967NonPayable) -> Self {
4918                ()
4919            }
4920        }
4921        #[automatically_derived]
4922        #[doc(hidden)]
4923        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4924            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4925                Self {}
4926            }
4927        }
4928        #[automatically_derived]
4929        impl alloy_sol_types::SolError for ERC1967NonPayable {
4930            type Parameters<'a> = UnderlyingSolTuple<'a>;
4931            type Token<'a> = <Self::Parameters<
4932                'a,
4933            > as alloy_sol_types::SolType>::Token<'a>;
4934            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4935            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4936            #[inline]
4937            fn new<'a>(
4938                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4939            ) -> Self {
4940                tuple.into()
4941            }
4942            #[inline]
4943            fn tokenize(&self) -> Self::Token<'_> {
4944                ()
4945            }
4946        }
4947    };
4948    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4949    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4950```solidity
4951error FailedInnerCall();
4952```*/
4953    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4954    #[derive(Clone)]
4955    pub struct FailedInnerCall {}
4956    #[allow(
4957        non_camel_case_types,
4958        non_snake_case,
4959        clippy::pub_underscore_fields,
4960        clippy::style
4961    )]
4962    const _: () = {
4963        use alloy::sol_types as alloy_sol_types;
4964        #[doc(hidden)]
4965        type UnderlyingSolTuple<'a> = ();
4966        #[doc(hidden)]
4967        type UnderlyingRustTuple<'a> = ();
4968        #[cfg(test)]
4969        #[allow(dead_code, unreachable_patterns)]
4970        fn _type_assertion(
4971            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4972        ) {
4973            match _t {
4974                alloy_sol_types::private::AssertTypeEq::<
4975                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4976                >(_) => {}
4977            }
4978        }
4979        #[automatically_derived]
4980        #[doc(hidden)]
4981        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4982            fn from(value: FailedInnerCall) -> Self {
4983                ()
4984            }
4985        }
4986        #[automatically_derived]
4987        #[doc(hidden)]
4988        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4989            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4990                Self {}
4991            }
4992        }
4993        #[automatically_derived]
4994        impl alloy_sol_types::SolError for FailedInnerCall {
4995            type Parameters<'a> = UnderlyingSolTuple<'a>;
4996            type Token<'a> = <Self::Parameters<
4997                'a,
4998            > as alloy_sol_types::SolType>::Token<'a>;
4999            const SIGNATURE: &'static str = "FailedInnerCall()";
5000            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5001            #[inline]
5002            fn new<'a>(
5003                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5004            ) -> Self {
5005                tuple.into()
5006            }
5007            #[inline]
5008            fn tokenize(&self) -> Self::Token<'_> {
5009                ()
5010            }
5011        }
5012    };
5013    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5014    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5015```solidity
5016error InsufficientSnapshotHistory();
5017```*/
5018    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5019    #[derive(Clone)]
5020    pub struct InsufficientSnapshotHistory {}
5021    #[allow(
5022        non_camel_case_types,
5023        non_snake_case,
5024        clippy::pub_underscore_fields,
5025        clippy::style
5026    )]
5027    const _: () = {
5028        use alloy::sol_types as alloy_sol_types;
5029        #[doc(hidden)]
5030        type UnderlyingSolTuple<'a> = ();
5031        #[doc(hidden)]
5032        type UnderlyingRustTuple<'a> = ();
5033        #[cfg(test)]
5034        #[allow(dead_code, unreachable_patterns)]
5035        fn _type_assertion(
5036            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5037        ) {
5038            match _t {
5039                alloy_sol_types::private::AssertTypeEq::<
5040                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5041                >(_) => {}
5042            }
5043        }
5044        #[automatically_derived]
5045        #[doc(hidden)]
5046        impl ::core::convert::From<InsufficientSnapshotHistory>
5047        for UnderlyingRustTuple<'_> {
5048            fn from(value: InsufficientSnapshotHistory) -> Self {
5049                ()
5050            }
5051        }
5052        #[automatically_derived]
5053        #[doc(hidden)]
5054        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5055        for InsufficientSnapshotHistory {
5056            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5057                Self {}
5058            }
5059        }
5060        #[automatically_derived]
5061        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5062            type Parameters<'a> = UnderlyingSolTuple<'a>;
5063            type Token<'a> = <Self::Parameters<
5064                'a,
5065            > as alloy_sol_types::SolType>::Token<'a>;
5066            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5067            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5068            #[inline]
5069            fn new<'a>(
5070                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5071            ) -> Self {
5072                tuple.into()
5073            }
5074            #[inline]
5075            fn tokenize(&self) -> Self::Token<'_> {
5076                ()
5077            }
5078        }
5079    };
5080    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5081    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5082```solidity
5083error InvalidAddress();
5084```*/
5085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5086    #[derive(Clone)]
5087    pub struct InvalidAddress {}
5088    #[allow(
5089        non_camel_case_types,
5090        non_snake_case,
5091        clippy::pub_underscore_fields,
5092        clippy::style
5093    )]
5094    const _: () = {
5095        use alloy::sol_types as alloy_sol_types;
5096        #[doc(hidden)]
5097        type UnderlyingSolTuple<'a> = ();
5098        #[doc(hidden)]
5099        type UnderlyingRustTuple<'a> = ();
5100        #[cfg(test)]
5101        #[allow(dead_code, unreachable_patterns)]
5102        fn _type_assertion(
5103            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5104        ) {
5105            match _t {
5106                alloy_sol_types::private::AssertTypeEq::<
5107                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5108                >(_) => {}
5109            }
5110        }
5111        #[automatically_derived]
5112        #[doc(hidden)]
5113        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5114            fn from(value: InvalidAddress) -> Self {
5115                ()
5116            }
5117        }
5118        #[automatically_derived]
5119        #[doc(hidden)]
5120        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5121            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5122                Self {}
5123            }
5124        }
5125        #[automatically_derived]
5126        impl alloy_sol_types::SolError for InvalidAddress {
5127            type Parameters<'a> = UnderlyingSolTuple<'a>;
5128            type Token<'a> = <Self::Parameters<
5129                'a,
5130            > as alloy_sol_types::SolType>::Token<'a>;
5131            const SIGNATURE: &'static str = "InvalidAddress()";
5132            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5133            #[inline]
5134            fn new<'a>(
5135                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5136            ) -> Self {
5137                tuple.into()
5138            }
5139            #[inline]
5140            fn tokenize(&self) -> Self::Token<'_> {
5141                ()
5142            }
5143        }
5144    };
5145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5146    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5147```solidity
5148error InvalidArgs();
5149```*/
5150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5151    #[derive(Clone)]
5152    pub struct InvalidArgs {}
5153    #[allow(
5154        non_camel_case_types,
5155        non_snake_case,
5156        clippy::pub_underscore_fields,
5157        clippy::style
5158    )]
5159    const _: () = {
5160        use alloy::sol_types as alloy_sol_types;
5161        #[doc(hidden)]
5162        type UnderlyingSolTuple<'a> = ();
5163        #[doc(hidden)]
5164        type UnderlyingRustTuple<'a> = ();
5165        #[cfg(test)]
5166        #[allow(dead_code, unreachable_patterns)]
5167        fn _type_assertion(
5168            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5169        ) {
5170            match _t {
5171                alloy_sol_types::private::AssertTypeEq::<
5172                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5173                >(_) => {}
5174            }
5175        }
5176        #[automatically_derived]
5177        #[doc(hidden)]
5178        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5179            fn from(value: InvalidArgs) -> Self {
5180                ()
5181            }
5182        }
5183        #[automatically_derived]
5184        #[doc(hidden)]
5185        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5186            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5187                Self {}
5188            }
5189        }
5190        #[automatically_derived]
5191        impl alloy_sol_types::SolError for InvalidArgs {
5192            type Parameters<'a> = UnderlyingSolTuple<'a>;
5193            type Token<'a> = <Self::Parameters<
5194                'a,
5195            > as alloy_sol_types::SolType>::Token<'a>;
5196            const SIGNATURE: &'static str = "InvalidArgs()";
5197            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5198            #[inline]
5199            fn new<'a>(
5200                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5201            ) -> Self {
5202                tuple.into()
5203            }
5204            #[inline]
5205            fn tokenize(&self) -> Self::Token<'_> {
5206                ()
5207            }
5208        }
5209    };
5210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5211    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5212```solidity
5213error InvalidHotShotBlockForCommitmentCheck();
5214```*/
5215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5216    #[derive(Clone)]
5217    pub struct InvalidHotShotBlockForCommitmentCheck {}
5218    #[allow(
5219        non_camel_case_types,
5220        non_snake_case,
5221        clippy::pub_underscore_fields,
5222        clippy::style
5223    )]
5224    const _: () = {
5225        use alloy::sol_types as alloy_sol_types;
5226        #[doc(hidden)]
5227        type UnderlyingSolTuple<'a> = ();
5228        #[doc(hidden)]
5229        type UnderlyingRustTuple<'a> = ();
5230        #[cfg(test)]
5231        #[allow(dead_code, unreachable_patterns)]
5232        fn _type_assertion(
5233            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5234        ) {
5235            match _t {
5236                alloy_sol_types::private::AssertTypeEq::<
5237                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5238                >(_) => {}
5239            }
5240        }
5241        #[automatically_derived]
5242        #[doc(hidden)]
5243        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5244        for UnderlyingRustTuple<'_> {
5245            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5246                ()
5247            }
5248        }
5249        #[automatically_derived]
5250        #[doc(hidden)]
5251        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5252        for InvalidHotShotBlockForCommitmentCheck {
5253            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5254                Self {}
5255            }
5256        }
5257        #[automatically_derived]
5258        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5259            type Parameters<'a> = UnderlyingSolTuple<'a>;
5260            type Token<'a> = <Self::Parameters<
5261                'a,
5262            > as alloy_sol_types::SolType>::Token<'a>;
5263            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5264            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5265            #[inline]
5266            fn new<'a>(
5267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5268            ) -> Self {
5269                tuple.into()
5270            }
5271            #[inline]
5272            fn tokenize(&self) -> Self::Token<'_> {
5273                ()
5274            }
5275        }
5276    };
5277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5278    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5279```solidity
5280error InvalidInitialization();
5281```*/
5282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5283    #[derive(Clone)]
5284    pub struct InvalidInitialization {}
5285    #[allow(
5286        non_camel_case_types,
5287        non_snake_case,
5288        clippy::pub_underscore_fields,
5289        clippy::style
5290    )]
5291    const _: () = {
5292        use alloy::sol_types as alloy_sol_types;
5293        #[doc(hidden)]
5294        type UnderlyingSolTuple<'a> = ();
5295        #[doc(hidden)]
5296        type UnderlyingRustTuple<'a> = ();
5297        #[cfg(test)]
5298        #[allow(dead_code, unreachable_patterns)]
5299        fn _type_assertion(
5300            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5301        ) {
5302            match _t {
5303                alloy_sol_types::private::AssertTypeEq::<
5304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5305                >(_) => {}
5306            }
5307        }
5308        #[automatically_derived]
5309        #[doc(hidden)]
5310        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5311            fn from(value: InvalidInitialization) -> Self {
5312                ()
5313            }
5314        }
5315        #[automatically_derived]
5316        #[doc(hidden)]
5317        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5318            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5319                Self {}
5320            }
5321        }
5322        #[automatically_derived]
5323        impl alloy_sol_types::SolError for InvalidInitialization {
5324            type Parameters<'a> = UnderlyingSolTuple<'a>;
5325            type Token<'a> = <Self::Parameters<
5326                'a,
5327            > as alloy_sol_types::SolType>::Token<'a>;
5328            const SIGNATURE: &'static str = "InvalidInitialization()";
5329            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5330            #[inline]
5331            fn new<'a>(
5332                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5333            ) -> Self {
5334                tuple.into()
5335            }
5336            #[inline]
5337            fn tokenize(&self) -> Self::Token<'_> {
5338                ()
5339            }
5340        }
5341    };
5342    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5343    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5344```solidity
5345error InvalidMaxStateHistory();
5346```*/
5347    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5348    #[derive(Clone)]
5349    pub struct InvalidMaxStateHistory {}
5350    #[allow(
5351        non_camel_case_types,
5352        non_snake_case,
5353        clippy::pub_underscore_fields,
5354        clippy::style
5355    )]
5356    const _: () = {
5357        use alloy::sol_types as alloy_sol_types;
5358        #[doc(hidden)]
5359        type UnderlyingSolTuple<'a> = ();
5360        #[doc(hidden)]
5361        type UnderlyingRustTuple<'a> = ();
5362        #[cfg(test)]
5363        #[allow(dead_code, unreachable_patterns)]
5364        fn _type_assertion(
5365            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5366        ) {
5367            match _t {
5368                alloy_sol_types::private::AssertTypeEq::<
5369                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5370                >(_) => {}
5371            }
5372        }
5373        #[automatically_derived]
5374        #[doc(hidden)]
5375        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5376            fn from(value: InvalidMaxStateHistory) -> Self {
5377                ()
5378            }
5379        }
5380        #[automatically_derived]
5381        #[doc(hidden)]
5382        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5383            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5384                Self {}
5385            }
5386        }
5387        #[automatically_derived]
5388        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5389            type Parameters<'a> = UnderlyingSolTuple<'a>;
5390            type Token<'a> = <Self::Parameters<
5391                'a,
5392            > as alloy_sol_types::SolType>::Token<'a>;
5393            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5394            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5395            #[inline]
5396            fn new<'a>(
5397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5398            ) -> Self {
5399                tuple.into()
5400            }
5401            #[inline]
5402            fn tokenize(&self) -> Self::Token<'_> {
5403                ()
5404            }
5405        }
5406    };
5407    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5408    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5409```solidity
5410error InvalidProof();
5411```*/
5412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5413    #[derive(Clone)]
5414    pub struct InvalidProof {}
5415    #[allow(
5416        non_camel_case_types,
5417        non_snake_case,
5418        clippy::pub_underscore_fields,
5419        clippy::style
5420    )]
5421    const _: () = {
5422        use alloy::sol_types as alloy_sol_types;
5423        #[doc(hidden)]
5424        type UnderlyingSolTuple<'a> = ();
5425        #[doc(hidden)]
5426        type UnderlyingRustTuple<'a> = ();
5427        #[cfg(test)]
5428        #[allow(dead_code, unreachable_patterns)]
5429        fn _type_assertion(
5430            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5431        ) {
5432            match _t {
5433                alloy_sol_types::private::AssertTypeEq::<
5434                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5435                >(_) => {}
5436            }
5437        }
5438        #[automatically_derived]
5439        #[doc(hidden)]
5440        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5441            fn from(value: InvalidProof) -> Self {
5442                ()
5443            }
5444        }
5445        #[automatically_derived]
5446        #[doc(hidden)]
5447        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5448            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5449                Self {}
5450            }
5451        }
5452        #[automatically_derived]
5453        impl alloy_sol_types::SolError for InvalidProof {
5454            type Parameters<'a> = UnderlyingSolTuple<'a>;
5455            type Token<'a> = <Self::Parameters<
5456                'a,
5457            > as alloy_sol_types::SolType>::Token<'a>;
5458            const SIGNATURE: &'static str = "InvalidProof()";
5459            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5460            #[inline]
5461            fn new<'a>(
5462                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5463            ) -> Self {
5464                tuple.into()
5465            }
5466            #[inline]
5467            fn tokenize(&self) -> Self::Token<'_> {
5468                ()
5469            }
5470        }
5471    };
5472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5473    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5474```solidity
5475error NoChangeRequired();
5476```*/
5477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5478    #[derive(Clone)]
5479    pub struct NoChangeRequired {}
5480    #[allow(
5481        non_camel_case_types,
5482        non_snake_case,
5483        clippy::pub_underscore_fields,
5484        clippy::style
5485    )]
5486    const _: () = {
5487        use alloy::sol_types as alloy_sol_types;
5488        #[doc(hidden)]
5489        type UnderlyingSolTuple<'a> = ();
5490        #[doc(hidden)]
5491        type UnderlyingRustTuple<'a> = ();
5492        #[cfg(test)]
5493        #[allow(dead_code, unreachable_patterns)]
5494        fn _type_assertion(
5495            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5496        ) {
5497            match _t {
5498                alloy_sol_types::private::AssertTypeEq::<
5499                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5500                >(_) => {}
5501            }
5502        }
5503        #[automatically_derived]
5504        #[doc(hidden)]
5505        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5506            fn from(value: NoChangeRequired) -> Self {
5507                ()
5508            }
5509        }
5510        #[automatically_derived]
5511        #[doc(hidden)]
5512        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self {}
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for NoChangeRequired {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "NoChangeRequired()";
5524            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                ()
5534            }
5535        }
5536    };
5537    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5538    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5539```solidity
5540error NotInitializing();
5541```*/
5542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5543    #[derive(Clone)]
5544    pub struct NotInitializing {}
5545    #[allow(
5546        non_camel_case_types,
5547        non_snake_case,
5548        clippy::pub_underscore_fields,
5549        clippy::style
5550    )]
5551    const _: () = {
5552        use alloy::sol_types as alloy_sol_types;
5553        #[doc(hidden)]
5554        type UnderlyingSolTuple<'a> = ();
5555        #[doc(hidden)]
5556        type UnderlyingRustTuple<'a> = ();
5557        #[cfg(test)]
5558        #[allow(dead_code, unreachable_patterns)]
5559        fn _type_assertion(
5560            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5561        ) {
5562            match _t {
5563                alloy_sol_types::private::AssertTypeEq::<
5564                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5565                >(_) => {}
5566            }
5567        }
5568        #[automatically_derived]
5569        #[doc(hidden)]
5570        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5571            fn from(value: NotInitializing) -> Self {
5572                ()
5573            }
5574        }
5575        #[automatically_derived]
5576        #[doc(hidden)]
5577        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5578            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5579                Self {}
5580            }
5581        }
5582        #[automatically_derived]
5583        impl alloy_sol_types::SolError for NotInitializing {
5584            type Parameters<'a> = UnderlyingSolTuple<'a>;
5585            type Token<'a> = <Self::Parameters<
5586                'a,
5587            > as alloy_sol_types::SolType>::Token<'a>;
5588            const SIGNATURE: &'static str = "NotInitializing()";
5589            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5590            #[inline]
5591            fn new<'a>(
5592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5593            ) -> Self {
5594                tuple.into()
5595            }
5596            #[inline]
5597            fn tokenize(&self) -> Self::Token<'_> {
5598                ()
5599            }
5600        }
5601    };
5602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5603    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5604```solidity
5605error OutdatedState();
5606```*/
5607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5608    #[derive(Clone)]
5609    pub struct OutdatedState {}
5610    #[allow(
5611        non_camel_case_types,
5612        non_snake_case,
5613        clippy::pub_underscore_fields,
5614        clippy::style
5615    )]
5616    const _: () = {
5617        use alloy::sol_types as alloy_sol_types;
5618        #[doc(hidden)]
5619        type UnderlyingSolTuple<'a> = ();
5620        #[doc(hidden)]
5621        type UnderlyingRustTuple<'a> = ();
5622        #[cfg(test)]
5623        #[allow(dead_code, unreachable_patterns)]
5624        fn _type_assertion(
5625            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5626        ) {
5627            match _t {
5628                alloy_sol_types::private::AssertTypeEq::<
5629                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5630                >(_) => {}
5631            }
5632        }
5633        #[automatically_derived]
5634        #[doc(hidden)]
5635        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5636            fn from(value: OutdatedState) -> Self {
5637                ()
5638            }
5639        }
5640        #[automatically_derived]
5641        #[doc(hidden)]
5642        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5643            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5644                Self {}
5645            }
5646        }
5647        #[automatically_derived]
5648        impl alloy_sol_types::SolError for OutdatedState {
5649            type Parameters<'a> = UnderlyingSolTuple<'a>;
5650            type Token<'a> = <Self::Parameters<
5651                'a,
5652            > as alloy_sol_types::SolType>::Token<'a>;
5653            const SIGNATURE: &'static str = "OutdatedState()";
5654            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5655            #[inline]
5656            fn new<'a>(
5657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5658            ) -> Self {
5659                tuple.into()
5660            }
5661            #[inline]
5662            fn tokenize(&self) -> Self::Token<'_> {
5663                ()
5664            }
5665        }
5666    };
5667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5668    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5669```solidity
5670error OwnableInvalidOwner(address owner);
5671```*/
5672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5673    #[derive(Clone)]
5674    pub struct OwnableInvalidOwner {
5675        #[allow(missing_docs)]
5676        pub owner: alloy::sol_types::private::Address,
5677    }
5678    #[allow(
5679        non_camel_case_types,
5680        non_snake_case,
5681        clippy::pub_underscore_fields,
5682        clippy::style
5683    )]
5684    const _: () = {
5685        use alloy::sol_types as alloy_sol_types;
5686        #[doc(hidden)]
5687        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5688        #[doc(hidden)]
5689        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5690        #[cfg(test)]
5691        #[allow(dead_code, unreachable_patterns)]
5692        fn _type_assertion(
5693            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5694        ) {
5695            match _t {
5696                alloy_sol_types::private::AssertTypeEq::<
5697                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5698                >(_) => {}
5699            }
5700        }
5701        #[automatically_derived]
5702        #[doc(hidden)]
5703        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5704            fn from(value: OwnableInvalidOwner) -> Self {
5705                (value.owner,)
5706            }
5707        }
5708        #[automatically_derived]
5709        #[doc(hidden)]
5710        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5711            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5712                Self { owner: tuple.0 }
5713            }
5714        }
5715        #[automatically_derived]
5716        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5717            type Parameters<'a> = UnderlyingSolTuple<'a>;
5718            type Token<'a> = <Self::Parameters<
5719                'a,
5720            > as alloy_sol_types::SolType>::Token<'a>;
5721            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5722            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5723            #[inline]
5724            fn new<'a>(
5725                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5726            ) -> Self {
5727                tuple.into()
5728            }
5729            #[inline]
5730            fn tokenize(&self) -> Self::Token<'_> {
5731                (
5732                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5733                        &self.owner,
5734                    ),
5735                )
5736            }
5737        }
5738    };
5739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5740    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5741```solidity
5742error OwnableUnauthorizedAccount(address account);
5743```*/
5744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5745    #[derive(Clone)]
5746    pub struct OwnableUnauthorizedAccount {
5747        #[allow(missing_docs)]
5748        pub account: alloy::sol_types::private::Address,
5749    }
5750    #[allow(
5751        non_camel_case_types,
5752        non_snake_case,
5753        clippy::pub_underscore_fields,
5754        clippy::style
5755    )]
5756    const _: () = {
5757        use alloy::sol_types as alloy_sol_types;
5758        #[doc(hidden)]
5759        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5760        #[doc(hidden)]
5761        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5762        #[cfg(test)]
5763        #[allow(dead_code, unreachable_patterns)]
5764        fn _type_assertion(
5765            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5766        ) {
5767            match _t {
5768                alloy_sol_types::private::AssertTypeEq::<
5769                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5770                >(_) => {}
5771            }
5772        }
5773        #[automatically_derived]
5774        #[doc(hidden)]
5775        impl ::core::convert::From<OwnableUnauthorizedAccount>
5776        for UnderlyingRustTuple<'_> {
5777            fn from(value: OwnableUnauthorizedAccount) -> Self {
5778                (value.account,)
5779            }
5780        }
5781        #[automatically_derived]
5782        #[doc(hidden)]
5783        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5784        for OwnableUnauthorizedAccount {
5785            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5786                Self { account: tuple.0 }
5787            }
5788        }
5789        #[automatically_derived]
5790        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5791            type Parameters<'a> = UnderlyingSolTuple<'a>;
5792            type Token<'a> = <Self::Parameters<
5793                'a,
5794            > as alloy_sol_types::SolType>::Token<'a>;
5795            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5796            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5797            #[inline]
5798            fn new<'a>(
5799                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5800            ) -> Self {
5801                tuple.into()
5802            }
5803            #[inline]
5804            fn tokenize(&self) -> Self::Token<'_> {
5805                (
5806                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5807                        &self.account,
5808                    ),
5809                )
5810            }
5811        }
5812    };
5813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5814    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5815```solidity
5816error ProverNotPermissioned();
5817```*/
5818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5819    #[derive(Clone)]
5820    pub struct ProverNotPermissioned {}
5821    #[allow(
5822        non_camel_case_types,
5823        non_snake_case,
5824        clippy::pub_underscore_fields,
5825        clippy::style
5826    )]
5827    const _: () = {
5828        use alloy::sol_types as alloy_sol_types;
5829        #[doc(hidden)]
5830        type UnderlyingSolTuple<'a> = ();
5831        #[doc(hidden)]
5832        type UnderlyingRustTuple<'a> = ();
5833        #[cfg(test)]
5834        #[allow(dead_code, unreachable_patterns)]
5835        fn _type_assertion(
5836            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5837        ) {
5838            match _t {
5839                alloy_sol_types::private::AssertTypeEq::<
5840                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5841                >(_) => {}
5842            }
5843        }
5844        #[automatically_derived]
5845        #[doc(hidden)]
5846        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5847            fn from(value: ProverNotPermissioned) -> Self {
5848                ()
5849            }
5850        }
5851        #[automatically_derived]
5852        #[doc(hidden)]
5853        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5854            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5855                Self {}
5856            }
5857        }
5858        #[automatically_derived]
5859        impl alloy_sol_types::SolError for ProverNotPermissioned {
5860            type Parameters<'a> = UnderlyingSolTuple<'a>;
5861            type Token<'a> = <Self::Parameters<
5862                'a,
5863            > as alloy_sol_types::SolType>::Token<'a>;
5864            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5865            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5866            #[inline]
5867            fn new<'a>(
5868                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5869            ) -> Self {
5870                tuple.into()
5871            }
5872            #[inline]
5873            fn tokenize(&self) -> Self::Token<'_> {
5874                ()
5875            }
5876        }
5877    };
5878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5879    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5880```solidity
5881error UUPSUnauthorizedCallContext();
5882```*/
5883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5884    #[derive(Clone)]
5885    pub struct UUPSUnauthorizedCallContext {}
5886    #[allow(
5887        non_camel_case_types,
5888        non_snake_case,
5889        clippy::pub_underscore_fields,
5890        clippy::style
5891    )]
5892    const _: () = {
5893        use alloy::sol_types as alloy_sol_types;
5894        #[doc(hidden)]
5895        type UnderlyingSolTuple<'a> = ();
5896        #[doc(hidden)]
5897        type UnderlyingRustTuple<'a> = ();
5898        #[cfg(test)]
5899        #[allow(dead_code, unreachable_patterns)]
5900        fn _type_assertion(
5901            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5902        ) {
5903            match _t {
5904                alloy_sol_types::private::AssertTypeEq::<
5905                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5906                >(_) => {}
5907            }
5908        }
5909        #[automatically_derived]
5910        #[doc(hidden)]
5911        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5912        for UnderlyingRustTuple<'_> {
5913            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5914                ()
5915            }
5916        }
5917        #[automatically_derived]
5918        #[doc(hidden)]
5919        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5920        for UUPSUnauthorizedCallContext {
5921            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5922                Self {}
5923            }
5924        }
5925        #[automatically_derived]
5926        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5927            type Parameters<'a> = UnderlyingSolTuple<'a>;
5928            type Token<'a> = <Self::Parameters<
5929                'a,
5930            > as alloy_sol_types::SolType>::Token<'a>;
5931            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5932            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5933            #[inline]
5934            fn new<'a>(
5935                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5936            ) -> Self {
5937                tuple.into()
5938            }
5939            #[inline]
5940            fn tokenize(&self) -> Self::Token<'_> {
5941                ()
5942            }
5943        }
5944    };
5945    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5946    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5947```solidity
5948error UUPSUnsupportedProxiableUUID(bytes32 slot);
5949```*/
5950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5951    #[derive(Clone)]
5952    pub struct UUPSUnsupportedProxiableUUID {
5953        #[allow(missing_docs)]
5954        pub slot: alloy::sol_types::private::FixedBytes<32>,
5955    }
5956    #[allow(
5957        non_camel_case_types,
5958        non_snake_case,
5959        clippy::pub_underscore_fields,
5960        clippy::style
5961    )]
5962    const _: () = {
5963        use alloy::sol_types as alloy_sol_types;
5964        #[doc(hidden)]
5965        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5966        #[doc(hidden)]
5967        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5968        #[cfg(test)]
5969        #[allow(dead_code, unreachable_patterns)]
5970        fn _type_assertion(
5971            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5972        ) {
5973            match _t {
5974                alloy_sol_types::private::AssertTypeEq::<
5975                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5976                >(_) => {}
5977            }
5978        }
5979        #[automatically_derived]
5980        #[doc(hidden)]
5981        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5982        for UnderlyingRustTuple<'_> {
5983            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5984                (value.slot,)
5985            }
5986        }
5987        #[automatically_derived]
5988        #[doc(hidden)]
5989        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5990        for UUPSUnsupportedProxiableUUID {
5991            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5992                Self { slot: tuple.0 }
5993            }
5994        }
5995        #[automatically_derived]
5996        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5997            type Parameters<'a> = UnderlyingSolTuple<'a>;
5998            type Token<'a> = <Self::Parameters<
5999                'a,
6000            > as alloy_sol_types::SolType>::Token<'a>;
6001            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6002            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6003            #[inline]
6004            fn new<'a>(
6005                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6006            ) -> Self {
6007                tuple.into()
6008            }
6009            #[inline]
6010            fn tokenize(&self) -> Self::Token<'_> {
6011                (
6012                    <alloy::sol_types::sol_data::FixedBytes<
6013                        32,
6014                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6015                )
6016            }
6017        }
6018    };
6019    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6020    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6021```solidity
6022error WrongStakeTableUsed();
6023```*/
6024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6025    #[derive(Clone)]
6026    pub struct WrongStakeTableUsed {}
6027    #[allow(
6028        non_camel_case_types,
6029        non_snake_case,
6030        clippy::pub_underscore_fields,
6031        clippy::style
6032    )]
6033    const _: () = {
6034        use alloy::sol_types as alloy_sol_types;
6035        #[doc(hidden)]
6036        type UnderlyingSolTuple<'a> = ();
6037        #[doc(hidden)]
6038        type UnderlyingRustTuple<'a> = ();
6039        #[cfg(test)]
6040        #[allow(dead_code, unreachable_patterns)]
6041        fn _type_assertion(
6042            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6043        ) {
6044            match _t {
6045                alloy_sol_types::private::AssertTypeEq::<
6046                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6047                >(_) => {}
6048            }
6049        }
6050        #[automatically_derived]
6051        #[doc(hidden)]
6052        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6053            fn from(value: WrongStakeTableUsed) -> Self {
6054                ()
6055            }
6056        }
6057        #[automatically_derived]
6058        #[doc(hidden)]
6059        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6060            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6061                Self {}
6062            }
6063        }
6064        #[automatically_derived]
6065        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6066            type Parameters<'a> = UnderlyingSolTuple<'a>;
6067            type Token<'a> = <Self::Parameters<
6068                'a,
6069            > as alloy_sol_types::SolType>::Token<'a>;
6070            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6071            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6072            #[inline]
6073            fn new<'a>(
6074                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6075            ) -> Self {
6076                tuple.into()
6077            }
6078            #[inline]
6079            fn tokenize(&self) -> Self::Token<'_> {
6080                ()
6081            }
6082        }
6083    };
6084    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6085    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6086```solidity
6087event Initialized(uint64 version);
6088```*/
6089    #[allow(
6090        non_camel_case_types,
6091        non_snake_case,
6092        clippy::pub_underscore_fields,
6093        clippy::style
6094    )]
6095    #[derive(Clone)]
6096    pub struct Initialized {
6097        #[allow(missing_docs)]
6098        pub version: u64,
6099    }
6100    #[allow(
6101        non_camel_case_types,
6102        non_snake_case,
6103        clippy::pub_underscore_fields,
6104        clippy::style
6105    )]
6106    const _: () = {
6107        use alloy::sol_types as alloy_sol_types;
6108        #[automatically_derived]
6109        impl alloy_sol_types::SolEvent for Initialized {
6110            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6111            type DataToken<'a> = <Self::DataTuple<
6112                'a,
6113            > as alloy_sol_types::SolType>::Token<'a>;
6114            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6115            const SIGNATURE: &'static str = "Initialized(uint64)";
6116            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6117                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6118                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6119                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6120            ]);
6121            const ANONYMOUS: bool = false;
6122            #[allow(unused_variables)]
6123            #[inline]
6124            fn new(
6125                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6126                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6127            ) -> Self {
6128                Self { version: data.0 }
6129            }
6130            #[inline]
6131            fn check_signature(
6132                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6133            ) -> alloy_sol_types::Result<()> {
6134                if topics.0 != Self::SIGNATURE_HASH {
6135                    return Err(
6136                        alloy_sol_types::Error::invalid_event_signature_hash(
6137                            Self::SIGNATURE,
6138                            topics.0,
6139                            Self::SIGNATURE_HASH,
6140                        ),
6141                    );
6142                }
6143                Ok(())
6144            }
6145            #[inline]
6146            fn tokenize_body(&self) -> Self::DataToken<'_> {
6147                (
6148                    <alloy::sol_types::sol_data::Uint<
6149                        64,
6150                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6151                )
6152            }
6153            #[inline]
6154            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6155                (Self::SIGNATURE_HASH.into(),)
6156            }
6157            #[inline]
6158            fn encode_topics_raw(
6159                &self,
6160                out: &mut [alloy_sol_types::abi::token::WordToken],
6161            ) -> alloy_sol_types::Result<()> {
6162                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6163                    return Err(alloy_sol_types::Error::Overrun);
6164                }
6165                out[0usize] = alloy_sol_types::abi::token::WordToken(
6166                    Self::SIGNATURE_HASH,
6167                );
6168                Ok(())
6169            }
6170        }
6171        #[automatically_derived]
6172        impl alloy_sol_types::private::IntoLogData for Initialized {
6173            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6174                From::from(self)
6175            }
6176            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6177                From::from(&self)
6178            }
6179        }
6180        #[automatically_derived]
6181        impl From<&Initialized> for alloy_sol_types::private::LogData {
6182            #[inline]
6183            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6184                alloy_sol_types::SolEvent::encode_log_data(this)
6185            }
6186        }
6187    };
6188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6189    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6190```solidity
6191event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6192```*/
6193    #[allow(
6194        non_camel_case_types,
6195        non_snake_case,
6196        clippy::pub_underscore_fields,
6197        clippy::style
6198    )]
6199    #[derive(Clone)]
6200    pub struct NewState {
6201        #[allow(missing_docs)]
6202        pub viewNum: u64,
6203        #[allow(missing_docs)]
6204        pub blockHeight: u64,
6205        #[allow(missing_docs)]
6206        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6207    }
6208    #[allow(
6209        non_camel_case_types,
6210        non_snake_case,
6211        clippy::pub_underscore_fields,
6212        clippy::style
6213    )]
6214    const _: () = {
6215        use alloy::sol_types as alloy_sol_types;
6216        #[automatically_derived]
6217        impl alloy_sol_types::SolEvent for NewState {
6218            type DataTuple<'a> = (BN254::ScalarField,);
6219            type DataToken<'a> = <Self::DataTuple<
6220                'a,
6221            > as alloy_sol_types::SolType>::Token<'a>;
6222            type TopicList = (
6223                alloy_sol_types::sol_data::FixedBytes<32>,
6224                alloy::sol_types::sol_data::Uint<64>,
6225                alloy::sol_types::sol_data::Uint<64>,
6226            );
6227            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6228            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6229                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6230                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6231                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6232            ]);
6233            const ANONYMOUS: bool = false;
6234            #[allow(unused_variables)]
6235            #[inline]
6236            fn new(
6237                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6238                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6239            ) -> Self {
6240                Self {
6241                    viewNum: topics.1,
6242                    blockHeight: topics.2,
6243                    blockCommRoot: data.0,
6244                }
6245            }
6246            #[inline]
6247            fn check_signature(
6248                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6249            ) -> alloy_sol_types::Result<()> {
6250                if topics.0 != Self::SIGNATURE_HASH {
6251                    return Err(
6252                        alloy_sol_types::Error::invalid_event_signature_hash(
6253                            Self::SIGNATURE,
6254                            topics.0,
6255                            Self::SIGNATURE_HASH,
6256                        ),
6257                    );
6258                }
6259                Ok(())
6260            }
6261            #[inline]
6262            fn tokenize_body(&self) -> Self::DataToken<'_> {
6263                (
6264                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6265                        &self.blockCommRoot,
6266                    ),
6267                )
6268            }
6269            #[inline]
6270            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6271                (
6272                    Self::SIGNATURE_HASH.into(),
6273                    self.viewNum.clone(),
6274                    self.blockHeight.clone(),
6275                )
6276            }
6277            #[inline]
6278            fn encode_topics_raw(
6279                &self,
6280                out: &mut [alloy_sol_types::abi::token::WordToken],
6281            ) -> alloy_sol_types::Result<()> {
6282                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6283                    return Err(alloy_sol_types::Error::Overrun);
6284                }
6285                out[0usize] = alloy_sol_types::abi::token::WordToken(
6286                    Self::SIGNATURE_HASH,
6287                );
6288                out[1usize] = <alloy::sol_types::sol_data::Uint<
6289                    64,
6290                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6291                out[2usize] = <alloy::sol_types::sol_data::Uint<
6292                    64,
6293                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6294                Ok(())
6295            }
6296        }
6297        #[automatically_derived]
6298        impl alloy_sol_types::private::IntoLogData for NewState {
6299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6300                From::from(self)
6301            }
6302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6303                From::from(&self)
6304            }
6305        }
6306        #[automatically_derived]
6307        impl From<&NewState> for alloy_sol_types::private::LogData {
6308            #[inline]
6309            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6310                alloy_sol_types::SolEvent::encode_log_data(this)
6311            }
6312        }
6313    };
6314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6315    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6316```solidity
6317event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6318```*/
6319    #[allow(
6320        non_camel_case_types,
6321        non_snake_case,
6322        clippy::pub_underscore_fields,
6323        clippy::style
6324    )]
6325    #[derive(Clone)]
6326    pub struct OwnershipTransferred {
6327        #[allow(missing_docs)]
6328        pub previousOwner: alloy::sol_types::private::Address,
6329        #[allow(missing_docs)]
6330        pub newOwner: alloy::sol_types::private::Address,
6331    }
6332    #[allow(
6333        non_camel_case_types,
6334        non_snake_case,
6335        clippy::pub_underscore_fields,
6336        clippy::style
6337    )]
6338    const _: () = {
6339        use alloy::sol_types as alloy_sol_types;
6340        #[automatically_derived]
6341        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6342            type DataTuple<'a> = ();
6343            type DataToken<'a> = <Self::DataTuple<
6344                'a,
6345            > as alloy_sol_types::SolType>::Token<'a>;
6346            type TopicList = (
6347                alloy_sol_types::sol_data::FixedBytes<32>,
6348                alloy::sol_types::sol_data::Address,
6349                alloy::sol_types::sol_data::Address,
6350            );
6351            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6352            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6353                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6354                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6355                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6356            ]);
6357            const ANONYMOUS: bool = false;
6358            #[allow(unused_variables)]
6359            #[inline]
6360            fn new(
6361                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6362                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6363            ) -> Self {
6364                Self {
6365                    previousOwner: topics.1,
6366                    newOwner: topics.2,
6367                }
6368            }
6369            #[inline]
6370            fn check_signature(
6371                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6372            ) -> alloy_sol_types::Result<()> {
6373                if topics.0 != Self::SIGNATURE_HASH {
6374                    return Err(
6375                        alloy_sol_types::Error::invalid_event_signature_hash(
6376                            Self::SIGNATURE,
6377                            topics.0,
6378                            Self::SIGNATURE_HASH,
6379                        ),
6380                    );
6381                }
6382                Ok(())
6383            }
6384            #[inline]
6385            fn tokenize_body(&self) -> Self::DataToken<'_> {
6386                ()
6387            }
6388            #[inline]
6389            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6390                (
6391                    Self::SIGNATURE_HASH.into(),
6392                    self.previousOwner.clone(),
6393                    self.newOwner.clone(),
6394                )
6395            }
6396            #[inline]
6397            fn encode_topics_raw(
6398                &self,
6399                out: &mut [alloy_sol_types::abi::token::WordToken],
6400            ) -> alloy_sol_types::Result<()> {
6401                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6402                    return Err(alloy_sol_types::Error::Overrun);
6403                }
6404                out[0usize] = alloy_sol_types::abi::token::WordToken(
6405                    Self::SIGNATURE_HASH,
6406                );
6407                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6408                    &self.previousOwner,
6409                );
6410                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6411                    &self.newOwner,
6412                );
6413                Ok(())
6414            }
6415        }
6416        #[automatically_derived]
6417        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6418            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6419                From::from(self)
6420            }
6421            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6422                From::from(&self)
6423            }
6424        }
6425        #[automatically_derived]
6426        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6427            #[inline]
6428            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6429                alloy_sol_types::SolEvent::encode_log_data(this)
6430            }
6431        }
6432    };
6433    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6434    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6435```solidity
6436event PermissionedProverNotRequired();
6437```*/
6438    #[allow(
6439        non_camel_case_types,
6440        non_snake_case,
6441        clippy::pub_underscore_fields,
6442        clippy::style
6443    )]
6444    #[derive(Clone)]
6445    pub struct PermissionedProverNotRequired {}
6446    #[allow(
6447        non_camel_case_types,
6448        non_snake_case,
6449        clippy::pub_underscore_fields,
6450        clippy::style
6451    )]
6452    const _: () = {
6453        use alloy::sol_types as alloy_sol_types;
6454        #[automatically_derived]
6455        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6456            type DataTuple<'a> = ();
6457            type DataToken<'a> = <Self::DataTuple<
6458                'a,
6459            > as alloy_sol_types::SolType>::Token<'a>;
6460            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6461            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6462            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6463                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6464                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6465                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6466            ]);
6467            const ANONYMOUS: bool = false;
6468            #[allow(unused_variables)]
6469            #[inline]
6470            fn new(
6471                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6472                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6473            ) -> Self {
6474                Self {}
6475            }
6476            #[inline]
6477            fn check_signature(
6478                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6479            ) -> alloy_sol_types::Result<()> {
6480                if topics.0 != Self::SIGNATURE_HASH {
6481                    return Err(
6482                        alloy_sol_types::Error::invalid_event_signature_hash(
6483                            Self::SIGNATURE,
6484                            topics.0,
6485                            Self::SIGNATURE_HASH,
6486                        ),
6487                    );
6488                }
6489                Ok(())
6490            }
6491            #[inline]
6492            fn tokenize_body(&self) -> Self::DataToken<'_> {
6493                ()
6494            }
6495            #[inline]
6496            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6497                (Self::SIGNATURE_HASH.into(),)
6498            }
6499            #[inline]
6500            fn encode_topics_raw(
6501                &self,
6502                out: &mut [alloy_sol_types::abi::token::WordToken],
6503            ) -> alloy_sol_types::Result<()> {
6504                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6505                    return Err(alloy_sol_types::Error::Overrun);
6506                }
6507                out[0usize] = alloy_sol_types::abi::token::WordToken(
6508                    Self::SIGNATURE_HASH,
6509                );
6510                Ok(())
6511            }
6512        }
6513        #[automatically_derived]
6514        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6515            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6516                From::from(self)
6517            }
6518            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6519                From::from(&self)
6520            }
6521        }
6522        #[automatically_derived]
6523        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6524            #[inline]
6525            fn from(
6526                this: &PermissionedProverNotRequired,
6527            ) -> alloy_sol_types::private::LogData {
6528                alloy_sol_types::SolEvent::encode_log_data(this)
6529            }
6530        }
6531    };
6532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6533    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6534```solidity
6535event PermissionedProverRequired(address permissionedProver);
6536```*/
6537    #[allow(
6538        non_camel_case_types,
6539        non_snake_case,
6540        clippy::pub_underscore_fields,
6541        clippy::style
6542    )]
6543    #[derive(Clone)]
6544    pub struct PermissionedProverRequired {
6545        #[allow(missing_docs)]
6546        pub permissionedProver: alloy::sol_types::private::Address,
6547    }
6548    #[allow(
6549        non_camel_case_types,
6550        non_snake_case,
6551        clippy::pub_underscore_fields,
6552        clippy::style
6553    )]
6554    const _: () = {
6555        use alloy::sol_types as alloy_sol_types;
6556        #[automatically_derived]
6557        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6558            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6559            type DataToken<'a> = <Self::DataTuple<
6560                'a,
6561            > as alloy_sol_types::SolType>::Token<'a>;
6562            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6563            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6564            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6565                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6566                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6567                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6568            ]);
6569            const ANONYMOUS: bool = false;
6570            #[allow(unused_variables)]
6571            #[inline]
6572            fn new(
6573                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6574                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6575            ) -> Self {
6576                Self { permissionedProver: data.0 }
6577            }
6578            #[inline]
6579            fn check_signature(
6580                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6581            ) -> alloy_sol_types::Result<()> {
6582                if topics.0 != Self::SIGNATURE_HASH {
6583                    return Err(
6584                        alloy_sol_types::Error::invalid_event_signature_hash(
6585                            Self::SIGNATURE,
6586                            topics.0,
6587                            Self::SIGNATURE_HASH,
6588                        ),
6589                    );
6590                }
6591                Ok(())
6592            }
6593            #[inline]
6594            fn tokenize_body(&self) -> Self::DataToken<'_> {
6595                (
6596                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6597                        &self.permissionedProver,
6598                    ),
6599                )
6600            }
6601            #[inline]
6602            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6603                (Self::SIGNATURE_HASH.into(),)
6604            }
6605            #[inline]
6606            fn encode_topics_raw(
6607                &self,
6608                out: &mut [alloy_sol_types::abi::token::WordToken],
6609            ) -> alloy_sol_types::Result<()> {
6610                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6611                    return Err(alloy_sol_types::Error::Overrun);
6612                }
6613                out[0usize] = alloy_sol_types::abi::token::WordToken(
6614                    Self::SIGNATURE_HASH,
6615                );
6616                Ok(())
6617            }
6618        }
6619        #[automatically_derived]
6620        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6621            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6622                From::from(self)
6623            }
6624            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6625                From::from(&self)
6626            }
6627        }
6628        #[automatically_derived]
6629        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6630            #[inline]
6631            fn from(
6632                this: &PermissionedProverRequired,
6633            ) -> alloy_sol_types::private::LogData {
6634                alloy_sol_types::SolEvent::encode_log_data(this)
6635            }
6636        }
6637    };
6638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6639    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6640```solidity
6641event Upgrade(address implementation);
6642```*/
6643    #[allow(
6644        non_camel_case_types,
6645        non_snake_case,
6646        clippy::pub_underscore_fields,
6647        clippy::style
6648    )]
6649    #[derive(Clone)]
6650    pub struct Upgrade {
6651        #[allow(missing_docs)]
6652        pub implementation: alloy::sol_types::private::Address,
6653    }
6654    #[allow(
6655        non_camel_case_types,
6656        non_snake_case,
6657        clippy::pub_underscore_fields,
6658        clippy::style
6659    )]
6660    const _: () = {
6661        use alloy::sol_types as alloy_sol_types;
6662        #[automatically_derived]
6663        impl alloy_sol_types::SolEvent for Upgrade {
6664            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6665            type DataToken<'a> = <Self::DataTuple<
6666                'a,
6667            > as alloy_sol_types::SolType>::Token<'a>;
6668            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6669            const SIGNATURE: &'static str = "Upgrade(address)";
6670            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6671                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6672                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6673                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6674            ]);
6675            const ANONYMOUS: bool = false;
6676            #[allow(unused_variables)]
6677            #[inline]
6678            fn new(
6679                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6680                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6681            ) -> Self {
6682                Self { implementation: data.0 }
6683            }
6684            #[inline]
6685            fn check_signature(
6686                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6687            ) -> alloy_sol_types::Result<()> {
6688                if topics.0 != Self::SIGNATURE_HASH {
6689                    return Err(
6690                        alloy_sol_types::Error::invalid_event_signature_hash(
6691                            Self::SIGNATURE,
6692                            topics.0,
6693                            Self::SIGNATURE_HASH,
6694                        ),
6695                    );
6696                }
6697                Ok(())
6698            }
6699            #[inline]
6700            fn tokenize_body(&self) -> Self::DataToken<'_> {
6701                (
6702                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6703                        &self.implementation,
6704                    ),
6705                )
6706            }
6707            #[inline]
6708            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6709                (Self::SIGNATURE_HASH.into(),)
6710            }
6711            #[inline]
6712            fn encode_topics_raw(
6713                &self,
6714                out: &mut [alloy_sol_types::abi::token::WordToken],
6715            ) -> alloy_sol_types::Result<()> {
6716                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6717                    return Err(alloy_sol_types::Error::Overrun);
6718                }
6719                out[0usize] = alloy_sol_types::abi::token::WordToken(
6720                    Self::SIGNATURE_HASH,
6721                );
6722                Ok(())
6723            }
6724        }
6725        #[automatically_derived]
6726        impl alloy_sol_types::private::IntoLogData for Upgrade {
6727            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6728                From::from(self)
6729            }
6730            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6731                From::from(&self)
6732            }
6733        }
6734        #[automatically_derived]
6735        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6736            #[inline]
6737            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6738                alloy_sol_types::SolEvent::encode_log_data(this)
6739            }
6740        }
6741    };
6742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6743    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6744```solidity
6745event Upgraded(address indexed implementation);
6746```*/
6747    #[allow(
6748        non_camel_case_types,
6749        non_snake_case,
6750        clippy::pub_underscore_fields,
6751        clippy::style
6752    )]
6753    #[derive(Clone)]
6754    pub struct Upgraded {
6755        #[allow(missing_docs)]
6756        pub implementation: alloy::sol_types::private::Address,
6757    }
6758    #[allow(
6759        non_camel_case_types,
6760        non_snake_case,
6761        clippy::pub_underscore_fields,
6762        clippy::style
6763    )]
6764    const _: () = {
6765        use alloy::sol_types as alloy_sol_types;
6766        #[automatically_derived]
6767        impl alloy_sol_types::SolEvent for Upgraded {
6768            type DataTuple<'a> = ();
6769            type DataToken<'a> = <Self::DataTuple<
6770                'a,
6771            > as alloy_sol_types::SolType>::Token<'a>;
6772            type TopicList = (
6773                alloy_sol_types::sol_data::FixedBytes<32>,
6774                alloy::sol_types::sol_data::Address,
6775            );
6776            const SIGNATURE: &'static str = "Upgraded(address)";
6777            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6778                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6779                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6780                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6781            ]);
6782            const ANONYMOUS: bool = false;
6783            #[allow(unused_variables)]
6784            #[inline]
6785            fn new(
6786                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6787                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6788            ) -> Self {
6789                Self { implementation: topics.1 }
6790            }
6791            #[inline]
6792            fn check_signature(
6793                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6794            ) -> alloy_sol_types::Result<()> {
6795                if topics.0 != Self::SIGNATURE_HASH {
6796                    return Err(
6797                        alloy_sol_types::Error::invalid_event_signature_hash(
6798                            Self::SIGNATURE,
6799                            topics.0,
6800                            Self::SIGNATURE_HASH,
6801                        ),
6802                    );
6803                }
6804                Ok(())
6805            }
6806            #[inline]
6807            fn tokenize_body(&self) -> Self::DataToken<'_> {
6808                ()
6809            }
6810            #[inline]
6811            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6812                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6813            }
6814            #[inline]
6815            fn encode_topics_raw(
6816                &self,
6817                out: &mut [alloy_sol_types::abi::token::WordToken],
6818            ) -> alloy_sol_types::Result<()> {
6819                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6820                    return Err(alloy_sol_types::Error::Overrun);
6821                }
6822                out[0usize] = alloy_sol_types::abi::token::WordToken(
6823                    Self::SIGNATURE_HASH,
6824                );
6825                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6826                    &self.implementation,
6827                );
6828                Ok(())
6829            }
6830        }
6831        #[automatically_derived]
6832        impl alloy_sol_types::private::IntoLogData for Upgraded {
6833            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6834                From::from(self)
6835            }
6836            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6837                From::from(&self)
6838            }
6839        }
6840        #[automatically_derived]
6841        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6842            #[inline]
6843            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6844                alloy_sol_types::SolEvent::encode_log_data(this)
6845            }
6846        }
6847    };
6848    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6849    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6850```solidity
6851function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6852```*/
6853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6854    #[derive(Clone)]
6855    pub struct UPGRADE_INTERFACE_VERSIONCall {}
6856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6857    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6859    #[derive(Clone)]
6860    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6861        #[allow(missing_docs)]
6862        pub _0: alloy::sol_types::private::String,
6863    }
6864    #[allow(
6865        non_camel_case_types,
6866        non_snake_case,
6867        clippy::pub_underscore_fields,
6868        clippy::style
6869    )]
6870    const _: () = {
6871        use alloy::sol_types as alloy_sol_types;
6872        {
6873            #[doc(hidden)]
6874            type UnderlyingSolTuple<'a> = ();
6875            #[doc(hidden)]
6876            type UnderlyingRustTuple<'a> = ();
6877            #[cfg(test)]
6878            #[allow(dead_code, unreachable_patterns)]
6879            fn _type_assertion(
6880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6881            ) {
6882                match _t {
6883                    alloy_sol_types::private::AssertTypeEq::<
6884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6885                    >(_) => {}
6886                }
6887            }
6888            #[automatically_derived]
6889            #[doc(hidden)]
6890            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6891            for UnderlyingRustTuple<'_> {
6892                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6893                    ()
6894                }
6895            }
6896            #[automatically_derived]
6897            #[doc(hidden)]
6898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6899            for UPGRADE_INTERFACE_VERSIONCall {
6900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6901                    Self {}
6902                }
6903            }
6904        }
6905        {
6906            #[doc(hidden)]
6907            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6908            #[doc(hidden)]
6909            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6910            #[cfg(test)]
6911            #[allow(dead_code, unreachable_patterns)]
6912            fn _type_assertion(
6913                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6914            ) {
6915                match _t {
6916                    alloy_sol_types::private::AssertTypeEq::<
6917                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6918                    >(_) => {}
6919                }
6920            }
6921            #[automatically_derived]
6922            #[doc(hidden)]
6923            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6924            for UnderlyingRustTuple<'_> {
6925                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6926                    (value._0,)
6927                }
6928            }
6929            #[automatically_derived]
6930            #[doc(hidden)]
6931            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6932            for UPGRADE_INTERFACE_VERSIONReturn {
6933                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6934                    Self { _0: tuple.0 }
6935                }
6936            }
6937        }
6938        #[automatically_derived]
6939        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6940            type Parameters<'a> = ();
6941            type Token<'a> = <Self::Parameters<
6942                'a,
6943            > as alloy_sol_types::SolType>::Token<'a>;
6944            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6945            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6946            type ReturnToken<'a> = <Self::ReturnTuple<
6947                'a,
6948            > as alloy_sol_types::SolType>::Token<'a>;
6949            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6950            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6951            #[inline]
6952            fn new<'a>(
6953                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6954            ) -> Self {
6955                tuple.into()
6956            }
6957            #[inline]
6958            fn tokenize(&self) -> Self::Token<'_> {
6959                ()
6960            }
6961            #[inline]
6962            fn abi_decode_returns(
6963                data: &[u8],
6964                validate: bool,
6965            ) -> alloy_sol_types::Result<Self::Return> {
6966                <Self::ReturnTuple<
6967                    '_,
6968                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6969                    .map(Into::into)
6970            }
6971        }
6972    };
6973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6974    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6975```solidity
6976function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6977```*/
6978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6979    #[derive(Clone)]
6980    pub struct _getVkCall {}
6981    #[derive()]
6982    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6984    #[derive(Clone)]
6985    pub struct _getVkReturn {
6986        #[allow(missing_docs)]
6987        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6988    }
6989    #[allow(
6990        non_camel_case_types,
6991        non_snake_case,
6992        clippy::pub_underscore_fields,
6993        clippy::style
6994    )]
6995    const _: () = {
6996        use alloy::sol_types as alloy_sol_types;
6997        {
6998            #[doc(hidden)]
6999            type UnderlyingSolTuple<'a> = ();
7000            #[doc(hidden)]
7001            type UnderlyingRustTuple<'a> = ();
7002            #[cfg(test)]
7003            #[allow(dead_code, unreachable_patterns)]
7004            fn _type_assertion(
7005                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7006            ) {
7007                match _t {
7008                    alloy_sol_types::private::AssertTypeEq::<
7009                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7010                    >(_) => {}
7011                }
7012            }
7013            #[automatically_derived]
7014            #[doc(hidden)]
7015            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7016                fn from(value: _getVkCall) -> Self {
7017                    ()
7018                }
7019            }
7020            #[automatically_derived]
7021            #[doc(hidden)]
7022            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7023                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7024                    Self {}
7025                }
7026            }
7027        }
7028        {
7029            #[doc(hidden)]
7030            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7031            #[doc(hidden)]
7032            type UnderlyingRustTuple<'a> = (
7033                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7034            );
7035            #[cfg(test)]
7036            #[allow(dead_code, unreachable_patterns)]
7037            fn _type_assertion(
7038                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7039            ) {
7040                match _t {
7041                    alloy_sol_types::private::AssertTypeEq::<
7042                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7043                    >(_) => {}
7044                }
7045            }
7046            #[automatically_derived]
7047            #[doc(hidden)]
7048            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7049                fn from(value: _getVkReturn) -> Self {
7050                    (value.vk,)
7051                }
7052            }
7053            #[automatically_derived]
7054            #[doc(hidden)]
7055            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7057                    Self { vk: tuple.0 }
7058                }
7059            }
7060        }
7061        #[automatically_derived]
7062        impl alloy_sol_types::SolCall for _getVkCall {
7063            type Parameters<'a> = ();
7064            type Token<'a> = <Self::Parameters<
7065                'a,
7066            > as alloy_sol_types::SolType>::Token<'a>;
7067            type Return = _getVkReturn;
7068            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7069            type ReturnToken<'a> = <Self::ReturnTuple<
7070                'a,
7071            > as alloy_sol_types::SolType>::Token<'a>;
7072            const SIGNATURE: &'static str = "_getVk()";
7073            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7074            #[inline]
7075            fn new<'a>(
7076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7077            ) -> Self {
7078                tuple.into()
7079            }
7080            #[inline]
7081            fn tokenize(&self) -> Self::Token<'_> {
7082                ()
7083            }
7084            #[inline]
7085            fn abi_decode_returns(
7086                data: &[u8],
7087                validate: bool,
7088            ) -> alloy_sol_types::Result<Self::Return> {
7089                <Self::ReturnTuple<
7090                    '_,
7091                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7092                    .map(Into::into)
7093            }
7094        }
7095    };
7096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7097    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7098```solidity
7099function currentBlockNumber() external view returns (uint256);
7100```*/
7101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7102    #[derive(Clone)]
7103    pub struct currentBlockNumberCall {}
7104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7105    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7107    #[derive(Clone)]
7108    pub struct currentBlockNumberReturn {
7109        #[allow(missing_docs)]
7110        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7111    }
7112    #[allow(
7113        non_camel_case_types,
7114        non_snake_case,
7115        clippy::pub_underscore_fields,
7116        clippy::style
7117    )]
7118    const _: () = {
7119        use alloy::sol_types as alloy_sol_types;
7120        {
7121            #[doc(hidden)]
7122            type UnderlyingSolTuple<'a> = ();
7123            #[doc(hidden)]
7124            type UnderlyingRustTuple<'a> = ();
7125            #[cfg(test)]
7126            #[allow(dead_code, unreachable_patterns)]
7127            fn _type_assertion(
7128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7129            ) {
7130                match _t {
7131                    alloy_sol_types::private::AssertTypeEq::<
7132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7133                    >(_) => {}
7134                }
7135            }
7136            #[automatically_derived]
7137            #[doc(hidden)]
7138            impl ::core::convert::From<currentBlockNumberCall>
7139            for UnderlyingRustTuple<'_> {
7140                fn from(value: currentBlockNumberCall) -> Self {
7141                    ()
7142                }
7143            }
7144            #[automatically_derived]
7145            #[doc(hidden)]
7146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7147            for currentBlockNumberCall {
7148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7149                    Self {}
7150                }
7151            }
7152        }
7153        {
7154            #[doc(hidden)]
7155            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7156            #[doc(hidden)]
7157            type UnderlyingRustTuple<'a> = (
7158                alloy::sol_types::private::primitives::aliases::U256,
7159            );
7160            #[cfg(test)]
7161            #[allow(dead_code, unreachable_patterns)]
7162            fn _type_assertion(
7163                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7164            ) {
7165                match _t {
7166                    alloy_sol_types::private::AssertTypeEq::<
7167                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7168                    >(_) => {}
7169                }
7170            }
7171            #[automatically_derived]
7172            #[doc(hidden)]
7173            impl ::core::convert::From<currentBlockNumberReturn>
7174            for UnderlyingRustTuple<'_> {
7175                fn from(value: currentBlockNumberReturn) -> Self {
7176                    (value._0,)
7177                }
7178            }
7179            #[automatically_derived]
7180            #[doc(hidden)]
7181            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7182            for currentBlockNumberReturn {
7183                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7184                    Self { _0: tuple.0 }
7185                }
7186            }
7187        }
7188        #[automatically_derived]
7189        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7190            type Parameters<'a> = ();
7191            type Token<'a> = <Self::Parameters<
7192                'a,
7193            > as alloy_sol_types::SolType>::Token<'a>;
7194            type Return = currentBlockNumberReturn;
7195            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7196            type ReturnToken<'a> = <Self::ReturnTuple<
7197                'a,
7198            > as alloy_sol_types::SolType>::Token<'a>;
7199            const SIGNATURE: &'static str = "currentBlockNumber()";
7200            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7201            #[inline]
7202            fn new<'a>(
7203                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7204            ) -> Self {
7205                tuple.into()
7206            }
7207            #[inline]
7208            fn tokenize(&self) -> Self::Token<'_> {
7209                ()
7210            }
7211            #[inline]
7212            fn abi_decode_returns(
7213                data: &[u8],
7214                validate: bool,
7215            ) -> alloy_sol_types::Result<Self::Return> {
7216                <Self::ReturnTuple<
7217                    '_,
7218                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7219                    .map(Into::into)
7220            }
7221        }
7222    };
7223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7224    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7225```solidity
7226function disablePermissionedProverMode() external;
7227```*/
7228    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7229    #[derive(Clone)]
7230    pub struct disablePermissionedProverModeCall {}
7231    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7233    #[derive(Clone)]
7234    pub struct disablePermissionedProverModeReturn {}
7235    #[allow(
7236        non_camel_case_types,
7237        non_snake_case,
7238        clippy::pub_underscore_fields,
7239        clippy::style
7240    )]
7241    const _: () = {
7242        use alloy::sol_types as alloy_sol_types;
7243        {
7244            #[doc(hidden)]
7245            type UnderlyingSolTuple<'a> = ();
7246            #[doc(hidden)]
7247            type UnderlyingRustTuple<'a> = ();
7248            #[cfg(test)]
7249            #[allow(dead_code, unreachable_patterns)]
7250            fn _type_assertion(
7251                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7252            ) {
7253                match _t {
7254                    alloy_sol_types::private::AssertTypeEq::<
7255                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7256                    >(_) => {}
7257                }
7258            }
7259            #[automatically_derived]
7260            #[doc(hidden)]
7261            impl ::core::convert::From<disablePermissionedProverModeCall>
7262            for UnderlyingRustTuple<'_> {
7263                fn from(value: disablePermissionedProverModeCall) -> Self {
7264                    ()
7265                }
7266            }
7267            #[automatically_derived]
7268            #[doc(hidden)]
7269            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7270            for disablePermissionedProverModeCall {
7271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7272                    Self {}
7273                }
7274            }
7275        }
7276        {
7277            #[doc(hidden)]
7278            type UnderlyingSolTuple<'a> = ();
7279            #[doc(hidden)]
7280            type UnderlyingRustTuple<'a> = ();
7281            #[cfg(test)]
7282            #[allow(dead_code, unreachable_patterns)]
7283            fn _type_assertion(
7284                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7285            ) {
7286                match _t {
7287                    alloy_sol_types::private::AssertTypeEq::<
7288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7289                    >(_) => {}
7290                }
7291            }
7292            #[automatically_derived]
7293            #[doc(hidden)]
7294            impl ::core::convert::From<disablePermissionedProverModeReturn>
7295            for UnderlyingRustTuple<'_> {
7296                fn from(value: disablePermissionedProverModeReturn) -> Self {
7297                    ()
7298                }
7299            }
7300            #[automatically_derived]
7301            #[doc(hidden)]
7302            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7303            for disablePermissionedProverModeReturn {
7304                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7305                    Self {}
7306                }
7307            }
7308        }
7309        #[automatically_derived]
7310        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7311            type Parameters<'a> = ();
7312            type Token<'a> = <Self::Parameters<
7313                'a,
7314            > as alloy_sol_types::SolType>::Token<'a>;
7315            type Return = disablePermissionedProverModeReturn;
7316            type ReturnTuple<'a> = ();
7317            type ReturnToken<'a> = <Self::ReturnTuple<
7318                'a,
7319            > as alloy_sol_types::SolType>::Token<'a>;
7320            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7321            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7322            #[inline]
7323            fn new<'a>(
7324                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7325            ) -> Self {
7326                tuple.into()
7327            }
7328            #[inline]
7329            fn tokenize(&self) -> Self::Token<'_> {
7330                ()
7331            }
7332            #[inline]
7333            fn abi_decode_returns(
7334                data: &[u8],
7335                validate: bool,
7336            ) -> alloy_sol_types::Result<Self::Return> {
7337                <Self::ReturnTuple<
7338                    '_,
7339                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7340                    .map(Into::into)
7341            }
7342        }
7343    };
7344    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7345    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7346```solidity
7347function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7348```*/
7349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7350    #[derive(Clone)]
7351    pub struct finalizedStateCall {}
7352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7353    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7355    #[derive(Clone)]
7356    pub struct finalizedStateReturn {
7357        #[allow(missing_docs)]
7358        pub viewNum: u64,
7359        #[allow(missing_docs)]
7360        pub blockHeight: u64,
7361        #[allow(missing_docs)]
7362        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7363    }
7364    #[allow(
7365        non_camel_case_types,
7366        non_snake_case,
7367        clippy::pub_underscore_fields,
7368        clippy::style
7369    )]
7370    const _: () = {
7371        use alloy::sol_types as alloy_sol_types;
7372        {
7373            #[doc(hidden)]
7374            type UnderlyingSolTuple<'a> = ();
7375            #[doc(hidden)]
7376            type UnderlyingRustTuple<'a> = ();
7377            #[cfg(test)]
7378            #[allow(dead_code, unreachable_patterns)]
7379            fn _type_assertion(
7380                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7381            ) {
7382                match _t {
7383                    alloy_sol_types::private::AssertTypeEq::<
7384                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7385                    >(_) => {}
7386                }
7387            }
7388            #[automatically_derived]
7389            #[doc(hidden)]
7390            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7391                fn from(value: finalizedStateCall) -> Self {
7392                    ()
7393                }
7394            }
7395            #[automatically_derived]
7396            #[doc(hidden)]
7397            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7398                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7399                    Self {}
7400                }
7401            }
7402        }
7403        {
7404            #[doc(hidden)]
7405            type UnderlyingSolTuple<'a> = (
7406                alloy::sol_types::sol_data::Uint<64>,
7407                alloy::sol_types::sol_data::Uint<64>,
7408                BN254::ScalarField,
7409            );
7410            #[doc(hidden)]
7411            type UnderlyingRustTuple<'a> = (
7412                u64,
7413                u64,
7414                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7415            );
7416            #[cfg(test)]
7417            #[allow(dead_code, unreachable_patterns)]
7418            fn _type_assertion(
7419                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7420            ) {
7421                match _t {
7422                    alloy_sol_types::private::AssertTypeEq::<
7423                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7424                    >(_) => {}
7425                }
7426            }
7427            #[automatically_derived]
7428            #[doc(hidden)]
7429            impl ::core::convert::From<finalizedStateReturn>
7430            for UnderlyingRustTuple<'_> {
7431                fn from(value: finalizedStateReturn) -> Self {
7432                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7433                }
7434            }
7435            #[automatically_derived]
7436            #[doc(hidden)]
7437            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7438            for finalizedStateReturn {
7439                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7440                    Self {
7441                        viewNum: tuple.0,
7442                        blockHeight: tuple.1,
7443                        blockCommRoot: tuple.2,
7444                    }
7445                }
7446            }
7447        }
7448        #[automatically_derived]
7449        impl alloy_sol_types::SolCall for finalizedStateCall {
7450            type Parameters<'a> = ();
7451            type Token<'a> = <Self::Parameters<
7452                'a,
7453            > as alloy_sol_types::SolType>::Token<'a>;
7454            type Return = finalizedStateReturn;
7455            type ReturnTuple<'a> = (
7456                alloy::sol_types::sol_data::Uint<64>,
7457                alloy::sol_types::sol_data::Uint<64>,
7458                BN254::ScalarField,
7459            );
7460            type ReturnToken<'a> = <Self::ReturnTuple<
7461                'a,
7462            > as alloy_sol_types::SolType>::Token<'a>;
7463            const SIGNATURE: &'static str = "finalizedState()";
7464            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7465            #[inline]
7466            fn new<'a>(
7467                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7468            ) -> Self {
7469                tuple.into()
7470            }
7471            #[inline]
7472            fn tokenize(&self) -> Self::Token<'_> {
7473                ()
7474            }
7475            #[inline]
7476            fn abi_decode_returns(
7477                data: &[u8],
7478                validate: bool,
7479            ) -> alloy_sol_types::Result<Self::Return> {
7480                <Self::ReturnTuple<
7481                    '_,
7482                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7483                    .map(Into::into)
7484            }
7485        }
7486    };
7487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7488    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7489```solidity
7490function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7491```*/
7492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7493    #[derive(Clone)]
7494    pub struct genesisStakeTableStateCall {}
7495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7496    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7498    #[derive(Clone)]
7499    pub struct genesisStakeTableStateReturn {
7500        #[allow(missing_docs)]
7501        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7502        #[allow(missing_docs)]
7503        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7504        #[allow(missing_docs)]
7505        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7506        #[allow(missing_docs)]
7507        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7508    }
7509    #[allow(
7510        non_camel_case_types,
7511        non_snake_case,
7512        clippy::pub_underscore_fields,
7513        clippy::style
7514    )]
7515    const _: () = {
7516        use alloy::sol_types as alloy_sol_types;
7517        {
7518            #[doc(hidden)]
7519            type UnderlyingSolTuple<'a> = ();
7520            #[doc(hidden)]
7521            type UnderlyingRustTuple<'a> = ();
7522            #[cfg(test)]
7523            #[allow(dead_code, unreachable_patterns)]
7524            fn _type_assertion(
7525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7526            ) {
7527                match _t {
7528                    alloy_sol_types::private::AssertTypeEq::<
7529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7530                    >(_) => {}
7531                }
7532            }
7533            #[automatically_derived]
7534            #[doc(hidden)]
7535            impl ::core::convert::From<genesisStakeTableStateCall>
7536            for UnderlyingRustTuple<'_> {
7537                fn from(value: genesisStakeTableStateCall) -> Self {
7538                    ()
7539                }
7540            }
7541            #[automatically_derived]
7542            #[doc(hidden)]
7543            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7544            for genesisStakeTableStateCall {
7545                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7546                    Self {}
7547                }
7548            }
7549        }
7550        {
7551            #[doc(hidden)]
7552            type UnderlyingSolTuple<'a> = (
7553                alloy::sol_types::sol_data::Uint<256>,
7554                BN254::ScalarField,
7555                BN254::ScalarField,
7556                BN254::ScalarField,
7557            );
7558            #[doc(hidden)]
7559            type UnderlyingRustTuple<'a> = (
7560                alloy::sol_types::private::primitives::aliases::U256,
7561                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7562                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7563                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7564            );
7565            #[cfg(test)]
7566            #[allow(dead_code, unreachable_patterns)]
7567            fn _type_assertion(
7568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7569            ) {
7570                match _t {
7571                    alloy_sol_types::private::AssertTypeEq::<
7572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7573                    >(_) => {}
7574                }
7575            }
7576            #[automatically_derived]
7577            #[doc(hidden)]
7578            impl ::core::convert::From<genesisStakeTableStateReturn>
7579            for UnderlyingRustTuple<'_> {
7580                fn from(value: genesisStakeTableStateReturn) -> Self {
7581                    (
7582                        value.threshold,
7583                        value.blsKeyComm,
7584                        value.schnorrKeyComm,
7585                        value.amountComm,
7586                    )
7587                }
7588            }
7589            #[automatically_derived]
7590            #[doc(hidden)]
7591            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7592            for genesisStakeTableStateReturn {
7593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7594                    Self {
7595                        threshold: tuple.0,
7596                        blsKeyComm: tuple.1,
7597                        schnorrKeyComm: tuple.2,
7598                        amountComm: tuple.3,
7599                    }
7600                }
7601            }
7602        }
7603        #[automatically_derived]
7604        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7605            type Parameters<'a> = ();
7606            type Token<'a> = <Self::Parameters<
7607                'a,
7608            > as alloy_sol_types::SolType>::Token<'a>;
7609            type Return = genesisStakeTableStateReturn;
7610            type ReturnTuple<'a> = (
7611                alloy::sol_types::sol_data::Uint<256>,
7612                BN254::ScalarField,
7613                BN254::ScalarField,
7614                BN254::ScalarField,
7615            );
7616            type ReturnToken<'a> = <Self::ReturnTuple<
7617                'a,
7618            > as alloy_sol_types::SolType>::Token<'a>;
7619            const SIGNATURE: &'static str = "genesisStakeTableState()";
7620            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7621            #[inline]
7622            fn new<'a>(
7623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7624            ) -> Self {
7625                tuple.into()
7626            }
7627            #[inline]
7628            fn tokenize(&self) -> Self::Token<'_> {
7629                ()
7630            }
7631            #[inline]
7632            fn abi_decode_returns(
7633                data: &[u8],
7634                validate: bool,
7635            ) -> alloy_sol_types::Result<Self::Return> {
7636                <Self::ReturnTuple<
7637                    '_,
7638                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7639                    .map(Into::into)
7640            }
7641        }
7642    };
7643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7644    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7645```solidity
7646function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7647```*/
7648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7649    #[derive(Clone)]
7650    pub struct genesisStateCall {}
7651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7652    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7654    #[derive(Clone)]
7655    pub struct genesisStateReturn {
7656        #[allow(missing_docs)]
7657        pub viewNum: u64,
7658        #[allow(missing_docs)]
7659        pub blockHeight: u64,
7660        #[allow(missing_docs)]
7661        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7662    }
7663    #[allow(
7664        non_camel_case_types,
7665        non_snake_case,
7666        clippy::pub_underscore_fields,
7667        clippy::style
7668    )]
7669    const _: () = {
7670        use alloy::sol_types as alloy_sol_types;
7671        {
7672            #[doc(hidden)]
7673            type UnderlyingSolTuple<'a> = ();
7674            #[doc(hidden)]
7675            type UnderlyingRustTuple<'a> = ();
7676            #[cfg(test)]
7677            #[allow(dead_code, unreachable_patterns)]
7678            fn _type_assertion(
7679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7680            ) {
7681                match _t {
7682                    alloy_sol_types::private::AssertTypeEq::<
7683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7684                    >(_) => {}
7685                }
7686            }
7687            #[automatically_derived]
7688            #[doc(hidden)]
7689            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7690                fn from(value: genesisStateCall) -> Self {
7691                    ()
7692                }
7693            }
7694            #[automatically_derived]
7695            #[doc(hidden)]
7696            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7698                    Self {}
7699                }
7700            }
7701        }
7702        {
7703            #[doc(hidden)]
7704            type UnderlyingSolTuple<'a> = (
7705                alloy::sol_types::sol_data::Uint<64>,
7706                alloy::sol_types::sol_data::Uint<64>,
7707                BN254::ScalarField,
7708            );
7709            #[doc(hidden)]
7710            type UnderlyingRustTuple<'a> = (
7711                u64,
7712                u64,
7713                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7714            );
7715            #[cfg(test)]
7716            #[allow(dead_code, unreachable_patterns)]
7717            fn _type_assertion(
7718                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7719            ) {
7720                match _t {
7721                    alloy_sol_types::private::AssertTypeEq::<
7722                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7723                    >(_) => {}
7724                }
7725            }
7726            #[automatically_derived]
7727            #[doc(hidden)]
7728            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7729                fn from(value: genesisStateReturn) -> Self {
7730                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7731                }
7732            }
7733            #[automatically_derived]
7734            #[doc(hidden)]
7735            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7736                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7737                    Self {
7738                        viewNum: tuple.0,
7739                        blockHeight: tuple.1,
7740                        blockCommRoot: tuple.2,
7741                    }
7742                }
7743            }
7744        }
7745        #[automatically_derived]
7746        impl alloy_sol_types::SolCall for genesisStateCall {
7747            type Parameters<'a> = ();
7748            type Token<'a> = <Self::Parameters<
7749                'a,
7750            > as alloy_sol_types::SolType>::Token<'a>;
7751            type Return = genesisStateReturn;
7752            type ReturnTuple<'a> = (
7753                alloy::sol_types::sol_data::Uint<64>,
7754                alloy::sol_types::sol_data::Uint<64>,
7755                BN254::ScalarField,
7756            );
7757            type ReturnToken<'a> = <Self::ReturnTuple<
7758                'a,
7759            > as alloy_sol_types::SolType>::Token<'a>;
7760            const SIGNATURE: &'static str = "genesisState()";
7761            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7762            #[inline]
7763            fn new<'a>(
7764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7765            ) -> Self {
7766                tuple.into()
7767            }
7768            #[inline]
7769            fn tokenize(&self) -> Self::Token<'_> {
7770                ()
7771            }
7772            #[inline]
7773            fn abi_decode_returns(
7774                data: &[u8],
7775                validate: bool,
7776            ) -> alloy_sol_types::Result<Self::Return> {
7777                <Self::ReturnTuple<
7778                    '_,
7779                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7780                    .map(Into::into)
7781            }
7782        }
7783    };
7784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7785    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7786```solidity
7787function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7788```*/
7789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7790    #[derive(Clone)]
7791    pub struct getHotShotCommitmentCall {
7792        #[allow(missing_docs)]
7793        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7794    }
7795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7796    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7797    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7798    #[derive(Clone)]
7799    pub struct getHotShotCommitmentReturn {
7800        #[allow(missing_docs)]
7801        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7802        #[allow(missing_docs)]
7803        pub hotshotBlockHeight: u64,
7804    }
7805    #[allow(
7806        non_camel_case_types,
7807        non_snake_case,
7808        clippy::pub_underscore_fields,
7809        clippy::style
7810    )]
7811    const _: () = {
7812        use alloy::sol_types as alloy_sol_types;
7813        {
7814            #[doc(hidden)]
7815            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7816            #[doc(hidden)]
7817            type UnderlyingRustTuple<'a> = (
7818                alloy::sol_types::private::primitives::aliases::U256,
7819            );
7820            #[cfg(test)]
7821            #[allow(dead_code, unreachable_patterns)]
7822            fn _type_assertion(
7823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7824            ) {
7825                match _t {
7826                    alloy_sol_types::private::AssertTypeEq::<
7827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7828                    >(_) => {}
7829                }
7830            }
7831            #[automatically_derived]
7832            #[doc(hidden)]
7833            impl ::core::convert::From<getHotShotCommitmentCall>
7834            for UnderlyingRustTuple<'_> {
7835                fn from(value: getHotShotCommitmentCall) -> Self {
7836                    (value.hotShotBlockHeight,)
7837                }
7838            }
7839            #[automatically_derived]
7840            #[doc(hidden)]
7841            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7842            for getHotShotCommitmentCall {
7843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7844                    Self {
7845                        hotShotBlockHeight: tuple.0,
7846                    }
7847                }
7848            }
7849        }
7850        {
7851            #[doc(hidden)]
7852            type UnderlyingSolTuple<'a> = (
7853                BN254::ScalarField,
7854                alloy::sol_types::sol_data::Uint<64>,
7855            );
7856            #[doc(hidden)]
7857            type UnderlyingRustTuple<'a> = (
7858                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7859                u64,
7860            );
7861            #[cfg(test)]
7862            #[allow(dead_code, unreachable_patterns)]
7863            fn _type_assertion(
7864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7865            ) {
7866                match _t {
7867                    alloy_sol_types::private::AssertTypeEq::<
7868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7869                    >(_) => {}
7870                }
7871            }
7872            #[automatically_derived]
7873            #[doc(hidden)]
7874            impl ::core::convert::From<getHotShotCommitmentReturn>
7875            for UnderlyingRustTuple<'_> {
7876                fn from(value: getHotShotCommitmentReturn) -> Self {
7877                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7878                }
7879            }
7880            #[automatically_derived]
7881            #[doc(hidden)]
7882            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7883            for getHotShotCommitmentReturn {
7884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7885                    Self {
7886                        hotShotBlockCommRoot: tuple.0,
7887                        hotshotBlockHeight: tuple.1,
7888                    }
7889                }
7890            }
7891        }
7892        #[automatically_derived]
7893        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7894            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7895            type Token<'a> = <Self::Parameters<
7896                'a,
7897            > as alloy_sol_types::SolType>::Token<'a>;
7898            type Return = getHotShotCommitmentReturn;
7899            type ReturnTuple<'a> = (
7900                BN254::ScalarField,
7901                alloy::sol_types::sol_data::Uint<64>,
7902            );
7903            type ReturnToken<'a> = <Self::ReturnTuple<
7904                'a,
7905            > as alloy_sol_types::SolType>::Token<'a>;
7906            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7907            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7908            #[inline]
7909            fn new<'a>(
7910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7911            ) -> Self {
7912                tuple.into()
7913            }
7914            #[inline]
7915            fn tokenize(&self) -> Self::Token<'_> {
7916                (
7917                    <alloy::sol_types::sol_data::Uint<
7918                        256,
7919                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
7920                )
7921            }
7922            #[inline]
7923            fn abi_decode_returns(
7924                data: &[u8],
7925                validate: bool,
7926            ) -> alloy_sol_types::Result<Self::Return> {
7927                <Self::ReturnTuple<
7928                    '_,
7929                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7930                    .map(Into::into)
7931            }
7932        }
7933    };
7934    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7935    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
7936```solidity
7937function getStateHistoryCount() external view returns (uint256);
7938```*/
7939    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7940    #[derive(Clone)]
7941    pub struct getStateHistoryCountCall {}
7942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7943    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
7944    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7945    #[derive(Clone)]
7946    pub struct getStateHistoryCountReturn {
7947        #[allow(missing_docs)]
7948        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7949    }
7950    #[allow(
7951        non_camel_case_types,
7952        non_snake_case,
7953        clippy::pub_underscore_fields,
7954        clippy::style
7955    )]
7956    const _: () = {
7957        use alloy::sol_types as alloy_sol_types;
7958        {
7959            #[doc(hidden)]
7960            type UnderlyingSolTuple<'a> = ();
7961            #[doc(hidden)]
7962            type UnderlyingRustTuple<'a> = ();
7963            #[cfg(test)]
7964            #[allow(dead_code, unreachable_patterns)]
7965            fn _type_assertion(
7966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7967            ) {
7968                match _t {
7969                    alloy_sol_types::private::AssertTypeEq::<
7970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7971                    >(_) => {}
7972                }
7973            }
7974            #[automatically_derived]
7975            #[doc(hidden)]
7976            impl ::core::convert::From<getStateHistoryCountCall>
7977            for UnderlyingRustTuple<'_> {
7978                fn from(value: getStateHistoryCountCall) -> Self {
7979                    ()
7980                }
7981            }
7982            #[automatically_derived]
7983            #[doc(hidden)]
7984            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7985            for getStateHistoryCountCall {
7986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7987                    Self {}
7988                }
7989            }
7990        }
7991        {
7992            #[doc(hidden)]
7993            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7994            #[doc(hidden)]
7995            type UnderlyingRustTuple<'a> = (
7996                alloy::sol_types::private::primitives::aliases::U256,
7997            );
7998            #[cfg(test)]
7999            #[allow(dead_code, unreachable_patterns)]
8000            fn _type_assertion(
8001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8002            ) {
8003                match _t {
8004                    alloy_sol_types::private::AssertTypeEq::<
8005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8006                    >(_) => {}
8007                }
8008            }
8009            #[automatically_derived]
8010            #[doc(hidden)]
8011            impl ::core::convert::From<getStateHistoryCountReturn>
8012            for UnderlyingRustTuple<'_> {
8013                fn from(value: getStateHistoryCountReturn) -> Self {
8014                    (value._0,)
8015                }
8016            }
8017            #[automatically_derived]
8018            #[doc(hidden)]
8019            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8020            for getStateHistoryCountReturn {
8021                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8022                    Self { _0: tuple.0 }
8023                }
8024            }
8025        }
8026        #[automatically_derived]
8027        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8028            type Parameters<'a> = ();
8029            type Token<'a> = <Self::Parameters<
8030                'a,
8031            > as alloy_sol_types::SolType>::Token<'a>;
8032            type Return = getStateHistoryCountReturn;
8033            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8034            type ReturnToken<'a> = <Self::ReturnTuple<
8035                'a,
8036            > as alloy_sol_types::SolType>::Token<'a>;
8037            const SIGNATURE: &'static str = "getStateHistoryCount()";
8038            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8039            #[inline]
8040            fn new<'a>(
8041                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8042            ) -> Self {
8043                tuple.into()
8044            }
8045            #[inline]
8046            fn tokenize(&self) -> Self::Token<'_> {
8047                ()
8048            }
8049            #[inline]
8050            fn abi_decode_returns(
8051                data: &[u8],
8052                validate: bool,
8053            ) -> alloy_sol_types::Result<Self::Return> {
8054                <Self::ReturnTuple<
8055                    '_,
8056                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8057                    .map(Into::into)
8058            }
8059        }
8060    };
8061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8062    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8063```solidity
8064function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8065```*/
8066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8067    #[derive(Clone)]
8068    pub struct getVersionCall {}
8069    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8070    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8072    #[derive(Clone)]
8073    pub struct getVersionReturn {
8074        #[allow(missing_docs)]
8075        pub majorVersion: u8,
8076        #[allow(missing_docs)]
8077        pub minorVersion: u8,
8078        #[allow(missing_docs)]
8079        pub patchVersion: u8,
8080    }
8081    #[allow(
8082        non_camel_case_types,
8083        non_snake_case,
8084        clippy::pub_underscore_fields,
8085        clippy::style
8086    )]
8087    const _: () = {
8088        use alloy::sol_types as alloy_sol_types;
8089        {
8090            #[doc(hidden)]
8091            type UnderlyingSolTuple<'a> = ();
8092            #[doc(hidden)]
8093            type UnderlyingRustTuple<'a> = ();
8094            #[cfg(test)]
8095            #[allow(dead_code, unreachable_patterns)]
8096            fn _type_assertion(
8097                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8098            ) {
8099                match _t {
8100                    alloy_sol_types::private::AssertTypeEq::<
8101                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8102                    >(_) => {}
8103                }
8104            }
8105            #[automatically_derived]
8106            #[doc(hidden)]
8107            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8108                fn from(value: getVersionCall) -> Self {
8109                    ()
8110                }
8111            }
8112            #[automatically_derived]
8113            #[doc(hidden)]
8114            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8115                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8116                    Self {}
8117                }
8118            }
8119        }
8120        {
8121            #[doc(hidden)]
8122            type UnderlyingSolTuple<'a> = (
8123                alloy::sol_types::sol_data::Uint<8>,
8124                alloy::sol_types::sol_data::Uint<8>,
8125                alloy::sol_types::sol_data::Uint<8>,
8126            );
8127            #[doc(hidden)]
8128            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8129            #[cfg(test)]
8130            #[allow(dead_code, unreachable_patterns)]
8131            fn _type_assertion(
8132                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8133            ) {
8134                match _t {
8135                    alloy_sol_types::private::AssertTypeEq::<
8136                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8137                    >(_) => {}
8138                }
8139            }
8140            #[automatically_derived]
8141            #[doc(hidden)]
8142            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8143                fn from(value: getVersionReturn) -> Self {
8144                    (value.majorVersion, value.minorVersion, value.patchVersion)
8145                }
8146            }
8147            #[automatically_derived]
8148            #[doc(hidden)]
8149            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8150                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8151                    Self {
8152                        majorVersion: tuple.0,
8153                        minorVersion: tuple.1,
8154                        patchVersion: tuple.2,
8155                    }
8156                }
8157            }
8158        }
8159        #[automatically_derived]
8160        impl alloy_sol_types::SolCall for getVersionCall {
8161            type Parameters<'a> = ();
8162            type Token<'a> = <Self::Parameters<
8163                'a,
8164            > as alloy_sol_types::SolType>::Token<'a>;
8165            type Return = getVersionReturn;
8166            type ReturnTuple<'a> = (
8167                alloy::sol_types::sol_data::Uint<8>,
8168                alloy::sol_types::sol_data::Uint<8>,
8169                alloy::sol_types::sol_data::Uint<8>,
8170            );
8171            type ReturnToken<'a> = <Self::ReturnTuple<
8172                'a,
8173            > as alloy_sol_types::SolType>::Token<'a>;
8174            const SIGNATURE: &'static str = "getVersion()";
8175            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8176            #[inline]
8177            fn new<'a>(
8178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8179            ) -> Self {
8180                tuple.into()
8181            }
8182            #[inline]
8183            fn tokenize(&self) -> Self::Token<'_> {
8184                ()
8185            }
8186            #[inline]
8187            fn abi_decode_returns(
8188                data: &[u8],
8189                validate: bool,
8190            ) -> alloy_sol_types::Result<Self::Return> {
8191                <Self::ReturnTuple<
8192                    '_,
8193                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8194                    .map(Into::into)
8195            }
8196        }
8197    };
8198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8199    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8200```solidity
8201function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8202```*/
8203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8204    #[derive(Clone)]
8205    pub struct initializeCall {
8206        #[allow(missing_docs)]
8207        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8208        #[allow(missing_docs)]
8209        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8210        #[allow(missing_docs)]
8211        pub _stateHistoryRetentionPeriod: u32,
8212        #[allow(missing_docs)]
8213        pub owner: alloy::sol_types::private::Address,
8214    }
8215    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8217    #[derive(Clone)]
8218    pub struct initializeReturn {}
8219    #[allow(
8220        non_camel_case_types,
8221        non_snake_case,
8222        clippy::pub_underscore_fields,
8223        clippy::style
8224    )]
8225    const _: () = {
8226        use alloy::sol_types as alloy_sol_types;
8227        {
8228            #[doc(hidden)]
8229            type UnderlyingSolTuple<'a> = (
8230                LightClient::LightClientState,
8231                LightClient::StakeTableState,
8232                alloy::sol_types::sol_data::Uint<32>,
8233                alloy::sol_types::sol_data::Address,
8234            );
8235            #[doc(hidden)]
8236            type UnderlyingRustTuple<'a> = (
8237                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8238                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8239                u32,
8240                alloy::sol_types::private::Address,
8241            );
8242            #[cfg(test)]
8243            #[allow(dead_code, unreachable_patterns)]
8244            fn _type_assertion(
8245                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8246            ) {
8247                match _t {
8248                    alloy_sol_types::private::AssertTypeEq::<
8249                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8250                    >(_) => {}
8251                }
8252            }
8253            #[automatically_derived]
8254            #[doc(hidden)]
8255            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8256                fn from(value: initializeCall) -> Self {
8257                    (
8258                        value._genesis,
8259                        value._genesisStakeTableState,
8260                        value._stateHistoryRetentionPeriod,
8261                        value.owner,
8262                    )
8263                }
8264            }
8265            #[automatically_derived]
8266            #[doc(hidden)]
8267            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8268                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8269                    Self {
8270                        _genesis: tuple.0,
8271                        _genesisStakeTableState: tuple.1,
8272                        _stateHistoryRetentionPeriod: tuple.2,
8273                        owner: tuple.3,
8274                    }
8275                }
8276            }
8277        }
8278        {
8279            #[doc(hidden)]
8280            type UnderlyingSolTuple<'a> = ();
8281            #[doc(hidden)]
8282            type UnderlyingRustTuple<'a> = ();
8283            #[cfg(test)]
8284            #[allow(dead_code, unreachable_patterns)]
8285            fn _type_assertion(
8286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8287            ) {
8288                match _t {
8289                    alloy_sol_types::private::AssertTypeEq::<
8290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8291                    >(_) => {}
8292                }
8293            }
8294            #[automatically_derived]
8295            #[doc(hidden)]
8296            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8297                fn from(value: initializeReturn) -> Self {
8298                    ()
8299                }
8300            }
8301            #[automatically_derived]
8302            #[doc(hidden)]
8303            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8304                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8305                    Self {}
8306                }
8307            }
8308        }
8309        #[automatically_derived]
8310        impl alloy_sol_types::SolCall for initializeCall {
8311            type Parameters<'a> = (
8312                LightClient::LightClientState,
8313                LightClient::StakeTableState,
8314                alloy::sol_types::sol_data::Uint<32>,
8315                alloy::sol_types::sol_data::Address,
8316            );
8317            type Token<'a> = <Self::Parameters<
8318                'a,
8319            > as alloy_sol_types::SolType>::Token<'a>;
8320            type Return = initializeReturn;
8321            type ReturnTuple<'a> = ();
8322            type ReturnToken<'a> = <Self::ReturnTuple<
8323                'a,
8324            > as alloy_sol_types::SolType>::Token<'a>;
8325            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8326            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8327            #[inline]
8328            fn new<'a>(
8329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8330            ) -> Self {
8331                tuple.into()
8332            }
8333            #[inline]
8334            fn tokenize(&self) -> Self::Token<'_> {
8335                (
8336                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8337                        &self._genesis,
8338                    ),
8339                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8340                        &self._genesisStakeTableState,
8341                    ),
8342                    <alloy::sol_types::sol_data::Uint<
8343                        32,
8344                    > as alloy_sol_types::SolType>::tokenize(
8345                        &self._stateHistoryRetentionPeriod,
8346                    ),
8347                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8348                        &self.owner,
8349                    ),
8350                )
8351            }
8352            #[inline]
8353            fn abi_decode_returns(
8354                data: &[u8],
8355                validate: bool,
8356            ) -> alloy_sol_types::Result<Self::Return> {
8357                <Self::ReturnTuple<
8358                    '_,
8359                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8360                    .map(Into::into)
8361            }
8362        }
8363    };
8364    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8365    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8366```solidity
8367function isPermissionedProverEnabled() external view returns (bool);
8368```*/
8369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8370    #[derive(Clone)]
8371    pub struct isPermissionedProverEnabledCall {}
8372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8373    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8375    #[derive(Clone)]
8376    pub struct isPermissionedProverEnabledReturn {
8377        #[allow(missing_docs)]
8378        pub _0: bool,
8379    }
8380    #[allow(
8381        non_camel_case_types,
8382        non_snake_case,
8383        clippy::pub_underscore_fields,
8384        clippy::style
8385    )]
8386    const _: () = {
8387        use alloy::sol_types as alloy_sol_types;
8388        {
8389            #[doc(hidden)]
8390            type UnderlyingSolTuple<'a> = ();
8391            #[doc(hidden)]
8392            type UnderlyingRustTuple<'a> = ();
8393            #[cfg(test)]
8394            #[allow(dead_code, unreachable_patterns)]
8395            fn _type_assertion(
8396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8397            ) {
8398                match _t {
8399                    alloy_sol_types::private::AssertTypeEq::<
8400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8401                    >(_) => {}
8402                }
8403            }
8404            #[automatically_derived]
8405            #[doc(hidden)]
8406            impl ::core::convert::From<isPermissionedProverEnabledCall>
8407            for UnderlyingRustTuple<'_> {
8408                fn from(value: isPermissionedProverEnabledCall) -> Self {
8409                    ()
8410                }
8411            }
8412            #[automatically_derived]
8413            #[doc(hidden)]
8414            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8415            for isPermissionedProverEnabledCall {
8416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8417                    Self {}
8418                }
8419            }
8420        }
8421        {
8422            #[doc(hidden)]
8423            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8424            #[doc(hidden)]
8425            type UnderlyingRustTuple<'a> = (bool,);
8426            #[cfg(test)]
8427            #[allow(dead_code, unreachable_patterns)]
8428            fn _type_assertion(
8429                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8430            ) {
8431                match _t {
8432                    alloy_sol_types::private::AssertTypeEq::<
8433                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8434                    >(_) => {}
8435                }
8436            }
8437            #[automatically_derived]
8438            #[doc(hidden)]
8439            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8440            for UnderlyingRustTuple<'_> {
8441                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8442                    (value._0,)
8443                }
8444            }
8445            #[automatically_derived]
8446            #[doc(hidden)]
8447            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8448            for isPermissionedProverEnabledReturn {
8449                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8450                    Self { _0: tuple.0 }
8451                }
8452            }
8453        }
8454        #[automatically_derived]
8455        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8456            type Parameters<'a> = ();
8457            type Token<'a> = <Self::Parameters<
8458                'a,
8459            > as alloy_sol_types::SolType>::Token<'a>;
8460            type Return = isPermissionedProverEnabledReturn;
8461            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8462            type ReturnToken<'a> = <Self::ReturnTuple<
8463                'a,
8464            > as alloy_sol_types::SolType>::Token<'a>;
8465            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8466            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8467            #[inline]
8468            fn new<'a>(
8469                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8470            ) -> Self {
8471                tuple.into()
8472            }
8473            #[inline]
8474            fn tokenize(&self) -> Self::Token<'_> {
8475                ()
8476            }
8477            #[inline]
8478            fn abi_decode_returns(
8479                data: &[u8],
8480                validate: bool,
8481            ) -> alloy_sol_types::Result<Self::Return> {
8482                <Self::ReturnTuple<
8483                    '_,
8484                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8485                    .map(Into::into)
8486            }
8487        }
8488    };
8489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8490    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8491```solidity
8492function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
8493```*/
8494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8495    #[derive(Clone)]
8496    pub struct lagOverEscapeHatchThresholdCall {
8497        #[allow(missing_docs)]
8498        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8499        #[allow(missing_docs)]
8500        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8501    }
8502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8503    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8504    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8505    #[derive(Clone)]
8506    pub struct lagOverEscapeHatchThresholdReturn {
8507        #[allow(missing_docs)]
8508        pub _0: bool,
8509    }
8510    #[allow(
8511        non_camel_case_types,
8512        non_snake_case,
8513        clippy::pub_underscore_fields,
8514        clippy::style
8515    )]
8516    const _: () = {
8517        use alloy::sol_types as alloy_sol_types;
8518        {
8519            #[doc(hidden)]
8520            type UnderlyingSolTuple<'a> = (
8521                alloy::sol_types::sol_data::Uint<256>,
8522                alloy::sol_types::sol_data::Uint<256>,
8523            );
8524            #[doc(hidden)]
8525            type UnderlyingRustTuple<'a> = (
8526                alloy::sol_types::private::primitives::aliases::U256,
8527                alloy::sol_types::private::primitives::aliases::U256,
8528            );
8529            #[cfg(test)]
8530            #[allow(dead_code, unreachable_patterns)]
8531            fn _type_assertion(
8532                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8533            ) {
8534                match _t {
8535                    alloy_sol_types::private::AssertTypeEq::<
8536                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8537                    >(_) => {}
8538                }
8539            }
8540            #[automatically_derived]
8541            #[doc(hidden)]
8542            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8543            for UnderlyingRustTuple<'_> {
8544                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8545                    (value.blockNumber, value.threshold)
8546                }
8547            }
8548            #[automatically_derived]
8549            #[doc(hidden)]
8550            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8551            for lagOverEscapeHatchThresholdCall {
8552                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8553                    Self {
8554                        blockNumber: tuple.0,
8555                        threshold: tuple.1,
8556                    }
8557                }
8558            }
8559        }
8560        {
8561            #[doc(hidden)]
8562            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8563            #[doc(hidden)]
8564            type UnderlyingRustTuple<'a> = (bool,);
8565            #[cfg(test)]
8566            #[allow(dead_code, unreachable_patterns)]
8567            fn _type_assertion(
8568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8569            ) {
8570                match _t {
8571                    alloy_sol_types::private::AssertTypeEq::<
8572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8573                    >(_) => {}
8574                }
8575            }
8576            #[automatically_derived]
8577            #[doc(hidden)]
8578            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8579            for UnderlyingRustTuple<'_> {
8580                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8581                    (value._0,)
8582                }
8583            }
8584            #[automatically_derived]
8585            #[doc(hidden)]
8586            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8587            for lagOverEscapeHatchThresholdReturn {
8588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8589                    Self { _0: tuple.0 }
8590                }
8591            }
8592        }
8593        #[automatically_derived]
8594        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8595            type Parameters<'a> = (
8596                alloy::sol_types::sol_data::Uint<256>,
8597                alloy::sol_types::sol_data::Uint<256>,
8598            );
8599            type Token<'a> = <Self::Parameters<
8600                'a,
8601            > as alloy_sol_types::SolType>::Token<'a>;
8602            type Return = lagOverEscapeHatchThresholdReturn;
8603            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8604            type ReturnToken<'a> = <Self::ReturnTuple<
8605                'a,
8606            > as alloy_sol_types::SolType>::Token<'a>;
8607            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8608            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8609            #[inline]
8610            fn new<'a>(
8611                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8612            ) -> Self {
8613                tuple.into()
8614            }
8615            #[inline]
8616            fn tokenize(&self) -> Self::Token<'_> {
8617                (
8618                    <alloy::sol_types::sol_data::Uint<
8619                        256,
8620                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8621                    <alloy::sol_types::sol_data::Uint<
8622                        256,
8623                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
8624                )
8625            }
8626            #[inline]
8627            fn abi_decode_returns(
8628                data: &[u8],
8629                validate: bool,
8630            ) -> alloy_sol_types::Result<Self::Return> {
8631                <Self::ReturnTuple<
8632                    '_,
8633                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8634                    .map(Into::into)
8635            }
8636        }
8637    };
8638    #[derive()]
8639    /**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`.
8640```solidity
8641function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8642```*/
8643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8644    #[derive(Clone)]
8645    pub struct newFinalizedStateCall {
8646        #[allow(missing_docs)]
8647        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8648        #[allow(missing_docs)]
8649        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8650    }
8651    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedStateCall) function.
8652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8653    #[derive(Clone)]
8654    pub struct newFinalizedStateReturn {}
8655    #[allow(
8656        non_camel_case_types,
8657        non_snake_case,
8658        clippy::pub_underscore_fields,
8659        clippy::style
8660    )]
8661    const _: () = {
8662        use alloy::sol_types as alloy_sol_types;
8663        {
8664            #[doc(hidden)]
8665            type UnderlyingSolTuple<'a> = (
8666                LightClient::LightClientState,
8667                IPlonkVerifier::PlonkProof,
8668            );
8669            #[doc(hidden)]
8670            type UnderlyingRustTuple<'a> = (
8671                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8672                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8673            );
8674            #[cfg(test)]
8675            #[allow(dead_code, unreachable_patterns)]
8676            fn _type_assertion(
8677                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8678            ) {
8679                match _t {
8680                    alloy_sol_types::private::AssertTypeEq::<
8681                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8682                    >(_) => {}
8683                }
8684            }
8685            #[automatically_derived]
8686            #[doc(hidden)]
8687            impl ::core::convert::From<newFinalizedStateCall>
8688            for UnderlyingRustTuple<'_> {
8689                fn from(value: newFinalizedStateCall) -> Self {
8690                    (value.newState, value.proof)
8691                }
8692            }
8693            #[automatically_derived]
8694            #[doc(hidden)]
8695            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8696            for newFinalizedStateCall {
8697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8698                    Self {
8699                        newState: tuple.0,
8700                        proof: tuple.1,
8701                    }
8702                }
8703            }
8704        }
8705        {
8706            #[doc(hidden)]
8707            type UnderlyingSolTuple<'a> = ();
8708            #[doc(hidden)]
8709            type UnderlyingRustTuple<'a> = ();
8710            #[cfg(test)]
8711            #[allow(dead_code, unreachable_patterns)]
8712            fn _type_assertion(
8713                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8714            ) {
8715                match _t {
8716                    alloy_sol_types::private::AssertTypeEq::<
8717                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8718                    >(_) => {}
8719                }
8720            }
8721            #[automatically_derived]
8722            #[doc(hidden)]
8723            impl ::core::convert::From<newFinalizedStateReturn>
8724            for UnderlyingRustTuple<'_> {
8725                fn from(value: newFinalizedStateReturn) -> Self {
8726                    ()
8727                }
8728            }
8729            #[automatically_derived]
8730            #[doc(hidden)]
8731            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8732            for newFinalizedStateReturn {
8733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8734                    Self {}
8735                }
8736            }
8737        }
8738        #[automatically_derived]
8739        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8740            type Parameters<'a> = (
8741                LightClient::LightClientState,
8742                IPlonkVerifier::PlonkProof,
8743            );
8744            type Token<'a> = <Self::Parameters<
8745                'a,
8746            > as alloy_sol_types::SolType>::Token<'a>;
8747            type Return = newFinalizedStateReturn;
8748            type ReturnTuple<'a> = ();
8749            type ReturnToken<'a> = <Self::ReturnTuple<
8750                'a,
8751            > as alloy_sol_types::SolType>::Token<'a>;
8752            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))";
8753            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8754            #[inline]
8755            fn new<'a>(
8756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8757            ) -> Self {
8758                tuple.into()
8759            }
8760            #[inline]
8761            fn tokenize(&self) -> Self::Token<'_> {
8762                (
8763                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8764                        &self.newState,
8765                    ),
8766                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
8767                        &self.proof,
8768                    ),
8769                )
8770            }
8771            #[inline]
8772            fn abi_decode_returns(
8773                data: &[u8],
8774                validate: bool,
8775            ) -> alloy_sol_types::Result<Self::Return> {
8776                <Self::ReturnTuple<
8777                    '_,
8778                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8779                    .map(Into::into)
8780            }
8781        }
8782    };
8783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8784    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8785```solidity
8786function owner() external view returns (address);
8787```*/
8788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8789    #[derive(Clone)]
8790    pub struct ownerCall {}
8791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8792    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8794    #[derive(Clone)]
8795    pub struct ownerReturn {
8796        #[allow(missing_docs)]
8797        pub _0: alloy::sol_types::private::Address,
8798    }
8799    #[allow(
8800        non_camel_case_types,
8801        non_snake_case,
8802        clippy::pub_underscore_fields,
8803        clippy::style
8804    )]
8805    const _: () = {
8806        use alloy::sol_types as alloy_sol_types;
8807        {
8808            #[doc(hidden)]
8809            type UnderlyingSolTuple<'a> = ();
8810            #[doc(hidden)]
8811            type UnderlyingRustTuple<'a> = ();
8812            #[cfg(test)]
8813            #[allow(dead_code, unreachable_patterns)]
8814            fn _type_assertion(
8815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8816            ) {
8817                match _t {
8818                    alloy_sol_types::private::AssertTypeEq::<
8819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8820                    >(_) => {}
8821                }
8822            }
8823            #[automatically_derived]
8824            #[doc(hidden)]
8825            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
8826                fn from(value: ownerCall) -> Self {
8827                    ()
8828                }
8829            }
8830            #[automatically_derived]
8831            #[doc(hidden)]
8832            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
8833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8834                    Self {}
8835                }
8836            }
8837        }
8838        {
8839            #[doc(hidden)]
8840            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8841            #[doc(hidden)]
8842            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8843            #[cfg(test)]
8844            #[allow(dead_code, unreachable_patterns)]
8845            fn _type_assertion(
8846                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8847            ) {
8848                match _t {
8849                    alloy_sol_types::private::AssertTypeEq::<
8850                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8851                    >(_) => {}
8852                }
8853            }
8854            #[automatically_derived]
8855            #[doc(hidden)]
8856            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
8857                fn from(value: ownerReturn) -> Self {
8858                    (value._0,)
8859                }
8860            }
8861            #[automatically_derived]
8862            #[doc(hidden)]
8863            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
8864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8865                    Self { _0: tuple.0 }
8866                }
8867            }
8868        }
8869        #[automatically_derived]
8870        impl alloy_sol_types::SolCall for ownerCall {
8871            type Parameters<'a> = ();
8872            type Token<'a> = <Self::Parameters<
8873                'a,
8874            > as alloy_sol_types::SolType>::Token<'a>;
8875            type Return = ownerReturn;
8876            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8877            type ReturnToken<'a> = <Self::ReturnTuple<
8878                'a,
8879            > as alloy_sol_types::SolType>::Token<'a>;
8880            const SIGNATURE: &'static str = "owner()";
8881            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
8882            #[inline]
8883            fn new<'a>(
8884                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8885            ) -> Self {
8886                tuple.into()
8887            }
8888            #[inline]
8889            fn tokenize(&self) -> Self::Token<'_> {
8890                ()
8891            }
8892            #[inline]
8893            fn abi_decode_returns(
8894                data: &[u8],
8895                validate: bool,
8896            ) -> alloy_sol_types::Result<Self::Return> {
8897                <Self::ReturnTuple<
8898                    '_,
8899                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8900                    .map(Into::into)
8901            }
8902        }
8903    };
8904    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8905    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
8906```solidity
8907function permissionedProver() external view returns (address);
8908```*/
8909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8910    #[derive(Clone)]
8911    pub struct permissionedProverCall {}
8912    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8913    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
8914    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8915    #[derive(Clone)]
8916    pub struct permissionedProverReturn {
8917        #[allow(missing_docs)]
8918        pub _0: alloy::sol_types::private::Address,
8919    }
8920    #[allow(
8921        non_camel_case_types,
8922        non_snake_case,
8923        clippy::pub_underscore_fields,
8924        clippy::style
8925    )]
8926    const _: () = {
8927        use alloy::sol_types as alloy_sol_types;
8928        {
8929            #[doc(hidden)]
8930            type UnderlyingSolTuple<'a> = ();
8931            #[doc(hidden)]
8932            type UnderlyingRustTuple<'a> = ();
8933            #[cfg(test)]
8934            #[allow(dead_code, unreachable_patterns)]
8935            fn _type_assertion(
8936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8937            ) {
8938                match _t {
8939                    alloy_sol_types::private::AssertTypeEq::<
8940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8941                    >(_) => {}
8942                }
8943            }
8944            #[automatically_derived]
8945            #[doc(hidden)]
8946            impl ::core::convert::From<permissionedProverCall>
8947            for UnderlyingRustTuple<'_> {
8948                fn from(value: permissionedProverCall) -> Self {
8949                    ()
8950                }
8951            }
8952            #[automatically_derived]
8953            #[doc(hidden)]
8954            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8955            for permissionedProverCall {
8956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8957                    Self {}
8958                }
8959            }
8960        }
8961        {
8962            #[doc(hidden)]
8963            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8964            #[doc(hidden)]
8965            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8966            #[cfg(test)]
8967            #[allow(dead_code, unreachable_patterns)]
8968            fn _type_assertion(
8969                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8970            ) {
8971                match _t {
8972                    alloy_sol_types::private::AssertTypeEq::<
8973                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8974                    >(_) => {}
8975                }
8976            }
8977            #[automatically_derived]
8978            #[doc(hidden)]
8979            impl ::core::convert::From<permissionedProverReturn>
8980            for UnderlyingRustTuple<'_> {
8981                fn from(value: permissionedProverReturn) -> Self {
8982                    (value._0,)
8983                }
8984            }
8985            #[automatically_derived]
8986            #[doc(hidden)]
8987            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8988            for permissionedProverReturn {
8989                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8990                    Self { _0: tuple.0 }
8991                }
8992            }
8993        }
8994        #[automatically_derived]
8995        impl alloy_sol_types::SolCall for permissionedProverCall {
8996            type Parameters<'a> = ();
8997            type Token<'a> = <Self::Parameters<
8998                'a,
8999            > as alloy_sol_types::SolType>::Token<'a>;
9000            type Return = permissionedProverReturn;
9001            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9002            type ReturnToken<'a> = <Self::ReturnTuple<
9003                'a,
9004            > as alloy_sol_types::SolType>::Token<'a>;
9005            const SIGNATURE: &'static str = "permissionedProver()";
9006            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9007            #[inline]
9008            fn new<'a>(
9009                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9010            ) -> Self {
9011                tuple.into()
9012            }
9013            #[inline]
9014            fn tokenize(&self) -> Self::Token<'_> {
9015                ()
9016            }
9017            #[inline]
9018            fn abi_decode_returns(
9019                data: &[u8],
9020                validate: bool,
9021            ) -> alloy_sol_types::Result<Self::Return> {
9022                <Self::ReturnTuple<
9023                    '_,
9024                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9025                    .map(Into::into)
9026            }
9027        }
9028    };
9029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9030    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9031```solidity
9032function proxiableUUID() external view returns (bytes32);
9033```*/
9034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9035    #[derive(Clone)]
9036    pub struct proxiableUUIDCall {}
9037    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9038    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9040    #[derive(Clone)]
9041    pub struct proxiableUUIDReturn {
9042        #[allow(missing_docs)]
9043        pub _0: alloy::sol_types::private::FixedBytes<32>,
9044    }
9045    #[allow(
9046        non_camel_case_types,
9047        non_snake_case,
9048        clippy::pub_underscore_fields,
9049        clippy::style
9050    )]
9051    const _: () = {
9052        use alloy::sol_types as alloy_sol_types;
9053        {
9054            #[doc(hidden)]
9055            type UnderlyingSolTuple<'a> = ();
9056            #[doc(hidden)]
9057            type UnderlyingRustTuple<'a> = ();
9058            #[cfg(test)]
9059            #[allow(dead_code, unreachable_patterns)]
9060            fn _type_assertion(
9061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9062            ) {
9063                match _t {
9064                    alloy_sol_types::private::AssertTypeEq::<
9065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9066                    >(_) => {}
9067                }
9068            }
9069            #[automatically_derived]
9070            #[doc(hidden)]
9071            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9072                fn from(value: proxiableUUIDCall) -> Self {
9073                    ()
9074                }
9075            }
9076            #[automatically_derived]
9077            #[doc(hidden)]
9078            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9080                    Self {}
9081                }
9082            }
9083        }
9084        {
9085            #[doc(hidden)]
9086            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9087            #[doc(hidden)]
9088            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9089            #[cfg(test)]
9090            #[allow(dead_code, unreachable_patterns)]
9091            fn _type_assertion(
9092                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9093            ) {
9094                match _t {
9095                    alloy_sol_types::private::AssertTypeEq::<
9096                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9097                    >(_) => {}
9098                }
9099            }
9100            #[automatically_derived]
9101            #[doc(hidden)]
9102            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9103                fn from(value: proxiableUUIDReturn) -> Self {
9104                    (value._0,)
9105                }
9106            }
9107            #[automatically_derived]
9108            #[doc(hidden)]
9109            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9110                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9111                    Self { _0: tuple.0 }
9112                }
9113            }
9114        }
9115        #[automatically_derived]
9116        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9117            type Parameters<'a> = ();
9118            type Token<'a> = <Self::Parameters<
9119                'a,
9120            > as alloy_sol_types::SolType>::Token<'a>;
9121            type Return = proxiableUUIDReturn;
9122            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9123            type ReturnToken<'a> = <Self::ReturnTuple<
9124                'a,
9125            > as alloy_sol_types::SolType>::Token<'a>;
9126            const SIGNATURE: &'static str = "proxiableUUID()";
9127            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9128            #[inline]
9129            fn new<'a>(
9130                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9131            ) -> Self {
9132                tuple.into()
9133            }
9134            #[inline]
9135            fn tokenize(&self) -> Self::Token<'_> {
9136                ()
9137            }
9138            #[inline]
9139            fn abi_decode_returns(
9140                data: &[u8],
9141                validate: bool,
9142            ) -> alloy_sol_types::Result<Self::Return> {
9143                <Self::ReturnTuple<
9144                    '_,
9145                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9146                    .map(Into::into)
9147            }
9148        }
9149    };
9150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9151    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9152```solidity
9153function renounceOwnership() external;
9154```*/
9155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9156    #[derive(Clone)]
9157    pub struct renounceOwnershipCall {}
9158    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9160    #[derive(Clone)]
9161    pub struct renounceOwnershipReturn {}
9162    #[allow(
9163        non_camel_case_types,
9164        non_snake_case,
9165        clippy::pub_underscore_fields,
9166        clippy::style
9167    )]
9168    const _: () = {
9169        use alloy::sol_types as alloy_sol_types;
9170        {
9171            #[doc(hidden)]
9172            type UnderlyingSolTuple<'a> = ();
9173            #[doc(hidden)]
9174            type UnderlyingRustTuple<'a> = ();
9175            #[cfg(test)]
9176            #[allow(dead_code, unreachable_patterns)]
9177            fn _type_assertion(
9178                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9179            ) {
9180                match _t {
9181                    alloy_sol_types::private::AssertTypeEq::<
9182                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9183                    >(_) => {}
9184                }
9185            }
9186            #[automatically_derived]
9187            #[doc(hidden)]
9188            impl ::core::convert::From<renounceOwnershipCall>
9189            for UnderlyingRustTuple<'_> {
9190                fn from(value: renounceOwnershipCall) -> Self {
9191                    ()
9192                }
9193            }
9194            #[automatically_derived]
9195            #[doc(hidden)]
9196            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9197            for renounceOwnershipCall {
9198                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9199                    Self {}
9200                }
9201            }
9202        }
9203        {
9204            #[doc(hidden)]
9205            type UnderlyingSolTuple<'a> = ();
9206            #[doc(hidden)]
9207            type UnderlyingRustTuple<'a> = ();
9208            #[cfg(test)]
9209            #[allow(dead_code, unreachable_patterns)]
9210            fn _type_assertion(
9211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9212            ) {
9213                match _t {
9214                    alloy_sol_types::private::AssertTypeEq::<
9215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9216                    >(_) => {}
9217                }
9218            }
9219            #[automatically_derived]
9220            #[doc(hidden)]
9221            impl ::core::convert::From<renounceOwnershipReturn>
9222            for UnderlyingRustTuple<'_> {
9223                fn from(value: renounceOwnershipReturn) -> Self {
9224                    ()
9225                }
9226            }
9227            #[automatically_derived]
9228            #[doc(hidden)]
9229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9230            for renounceOwnershipReturn {
9231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9232                    Self {}
9233                }
9234            }
9235        }
9236        #[automatically_derived]
9237        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9238            type Parameters<'a> = ();
9239            type Token<'a> = <Self::Parameters<
9240                'a,
9241            > as alloy_sol_types::SolType>::Token<'a>;
9242            type Return = renounceOwnershipReturn;
9243            type ReturnTuple<'a> = ();
9244            type ReturnToken<'a> = <Self::ReturnTuple<
9245                'a,
9246            > as alloy_sol_types::SolType>::Token<'a>;
9247            const SIGNATURE: &'static str = "renounceOwnership()";
9248            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9249            #[inline]
9250            fn new<'a>(
9251                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9252            ) -> Self {
9253                tuple.into()
9254            }
9255            #[inline]
9256            fn tokenize(&self) -> Self::Token<'_> {
9257                ()
9258            }
9259            #[inline]
9260            fn abi_decode_returns(
9261                data: &[u8],
9262                validate: bool,
9263            ) -> alloy_sol_types::Result<Self::Return> {
9264                <Self::ReturnTuple<
9265                    '_,
9266                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9267                    .map(Into::into)
9268            }
9269        }
9270    };
9271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9272    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
9273```solidity
9274function setFinalizedState(LightClient.LightClientState memory state) external;
9275```*/
9276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9277    #[derive(Clone)]
9278    pub struct setFinalizedStateCall {
9279        #[allow(missing_docs)]
9280        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9281    }
9282    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
9283    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9284    #[derive(Clone)]
9285    pub struct setFinalizedStateReturn {}
9286    #[allow(
9287        non_camel_case_types,
9288        non_snake_case,
9289        clippy::pub_underscore_fields,
9290        clippy::style
9291    )]
9292    const _: () = {
9293        use alloy::sol_types as alloy_sol_types;
9294        {
9295            #[doc(hidden)]
9296            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
9297            #[doc(hidden)]
9298            type UnderlyingRustTuple<'a> = (
9299                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9300            );
9301            #[cfg(test)]
9302            #[allow(dead_code, unreachable_patterns)]
9303            fn _type_assertion(
9304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9305            ) {
9306                match _t {
9307                    alloy_sol_types::private::AssertTypeEq::<
9308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9309                    >(_) => {}
9310                }
9311            }
9312            #[automatically_derived]
9313            #[doc(hidden)]
9314            impl ::core::convert::From<setFinalizedStateCall>
9315            for UnderlyingRustTuple<'_> {
9316                fn from(value: setFinalizedStateCall) -> Self {
9317                    (value.state,)
9318                }
9319            }
9320            #[automatically_derived]
9321            #[doc(hidden)]
9322            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9323            for setFinalizedStateCall {
9324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9325                    Self { state: tuple.0 }
9326                }
9327            }
9328        }
9329        {
9330            #[doc(hidden)]
9331            type UnderlyingSolTuple<'a> = ();
9332            #[doc(hidden)]
9333            type UnderlyingRustTuple<'a> = ();
9334            #[cfg(test)]
9335            #[allow(dead_code, unreachable_patterns)]
9336            fn _type_assertion(
9337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9338            ) {
9339                match _t {
9340                    alloy_sol_types::private::AssertTypeEq::<
9341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9342                    >(_) => {}
9343                }
9344            }
9345            #[automatically_derived]
9346            #[doc(hidden)]
9347            impl ::core::convert::From<setFinalizedStateReturn>
9348            for UnderlyingRustTuple<'_> {
9349                fn from(value: setFinalizedStateReturn) -> Self {
9350                    ()
9351                }
9352            }
9353            #[automatically_derived]
9354            #[doc(hidden)]
9355            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9356            for setFinalizedStateReturn {
9357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9358                    Self {}
9359                }
9360            }
9361        }
9362        #[automatically_derived]
9363        impl alloy_sol_types::SolCall for setFinalizedStateCall {
9364            type Parameters<'a> = (LightClient::LightClientState,);
9365            type Token<'a> = <Self::Parameters<
9366                'a,
9367            > as alloy_sol_types::SolType>::Token<'a>;
9368            type Return = setFinalizedStateReturn;
9369            type ReturnTuple<'a> = ();
9370            type ReturnToken<'a> = <Self::ReturnTuple<
9371                'a,
9372            > as alloy_sol_types::SolType>::Token<'a>;
9373            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
9374            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
9375            #[inline]
9376            fn new<'a>(
9377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9378            ) -> Self {
9379                tuple.into()
9380            }
9381            #[inline]
9382            fn tokenize(&self) -> Self::Token<'_> {
9383                (
9384                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9385                        &self.state,
9386                    ),
9387                )
9388            }
9389            #[inline]
9390            fn abi_decode_returns(
9391                data: &[u8],
9392                validate: bool,
9393            ) -> alloy_sol_types::Result<Self::Return> {
9394                <Self::ReturnTuple<
9395                    '_,
9396                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9397                    .map(Into::into)
9398            }
9399        }
9400    };
9401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9402    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
9403```solidity
9404function setHotShotDownSince(uint256 l1Height) external;
9405```*/
9406    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9407    #[derive(Clone)]
9408    pub struct setHotShotDownSinceCall {
9409        #[allow(missing_docs)]
9410        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
9411    }
9412    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
9413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9414    #[derive(Clone)]
9415    pub struct setHotShotDownSinceReturn {}
9416    #[allow(
9417        non_camel_case_types,
9418        non_snake_case,
9419        clippy::pub_underscore_fields,
9420        clippy::style
9421    )]
9422    const _: () = {
9423        use alloy::sol_types as alloy_sol_types;
9424        {
9425            #[doc(hidden)]
9426            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9427            #[doc(hidden)]
9428            type UnderlyingRustTuple<'a> = (
9429                alloy::sol_types::private::primitives::aliases::U256,
9430            );
9431            #[cfg(test)]
9432            #[allow(dead_code, unreachable_patterns)]
9433            fn _type_assertion(
9434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9435            ) {
9436                match _t {
9437                    alloy_sol_types::private::AssertTypeEq::<
9438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9439                    >(_) => {}
9440                }
9441            }
9442            #[automatically_derived]
9443            #[doc(hidden)]
9444            impl ::core::convert::From<setHotShotDownSinceCall>
9445            for UnderlyingRustTuple<'_> {
9446                fn from(value: setHotShotDownSinceCall) -> Self {
9447                    (value.l1Height,)
9448                }
9449            }
9450            #[automatically_derived]
9451            #[doc(hidden)]
9452            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9453            for setHotShotDownSinceCall {
9454                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9455                    Self { l1Height: tuple.0 }
9456                }
9457            }
9458        }
9459        {
9460            #[doc(hidden)]
9461            type UnderlyingSolTuple<'a> = ();
9462            #[doc(hidden)]
9463            type UnderlyingRustTuple<'a> = ();
9464            #[cfg(test)]
9465            #[allow(dead_code, unreachable_patterns)]
9466            fn _type_assertion(
9467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9468            ) {
9469                match _t {
9470                    alloy_sol_types::private::AssertTypeEq::<
9471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9472                    >(_) => {}
9473                }
9474            }
9475            #[automatically_derived]
9476            #[doc(hidden)]
9477            impl ::core::convert::From<setHotShotDownSinceReturn>
9478            for UnderlyingRustTuple<'_> {
9479                fn from(value: setHotShotDownSinceReturn) -> Self {
9480                    ()
9481                }
9482            }
9483            #[automatically_derived]
9484            #[doc(hidden)]
9485            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9486            for setHotShotDownSinceReturn {
9487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9488                    Self {}
9489                }
9490            }
9491        }
9492        #[automatically_derived]
9493        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
9494            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9495            type Token<'a> = <Self::Parameters<
9496                'a,
9497            > as alloy_sol_types::SolType>::Token<'a>;
9498            type Return = setHotShotDownSinceReturn;
9499            type ReturnTuple<'a> = ();
9500            type ReturnToken<'a> = <Self::ReturnTuple<
9501                'a,
9502            > as alloy_sol_types::SolType>::Token<'a>;
9503            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
9504            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
9505            #[inline]
9506            fn new<'a>(
9507                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9508            ) -> Self {
9509                tuple.into()
9510            }
9511            #[inline]
9512            fn tokenize(&self) -> Self::Token<'_> {
9513                (
9514                    <alloy::sol_types::sol_data::Uint<
9515                        256,
9516                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
9517                )
9518            }
9519            #[inline]
9520            fn abi_decode_returns(
9521                data: &[u8],
9522                validate: bool,
9523            ) -> alloy_sol_types::Result<Self::Return> {
9524                <Self::ReturnTuple<
9525                    '_,
9526                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9527                    .map(Into::into)
9528            }
9529        }
9530    };
9531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9532    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
9533```solidity
9534function setHotShotUp() external;
9535```*/
9536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9537    #[derive(Clone)]
9538    pub struct setHotShotUpCall {}
9539    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
9540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9541    #[derive(Clone)]
9542    pub struct setHotShotUpReturn {}
9543    #[allow(
9544        non_camel_case_types,
9545        non_snake_case,
9546        clippy::pub_underscore_fields,
9547        clippy::style
9548    )]
9549    const _: () = {
9550        use alloy::sol_types as alloy_sol_types;
9551        {
9552            #[doc(hidden)]
9553            type UnderlyingSolTuple<'a> = ();
9554            #[doc(hidden)]
9555            type UnderlyingRustTuple<'a> = ();
9556            #[cfg(test)]
9557            #[allow(dead_code, unreachable_patterns)]
9558            fn _type_assertion(
9559                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9560            ) {
9561                match _t {
9562                    alloy_sol_types::private::AssertTypeEq::<
9563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9564                    >(_) => {}
9565                }
9566            }
9567            #[automatically_derived]
9568            #[doc(hidden)]
9569            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
9570                fn from(value: setHotShotUpCall) -> Self {
9571                    ()
9572                }
9573            }
9574            #[automatically_derived]
9575            #[doc(hidden)]
9576            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
9577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9578                    Self {}
9579                }
9580            }
9581        }
9582        {
9583            #[doc(hidden)]
9584            type UnderlyingSolTuple<'a> = ();
9585            #[doc(hidden)]
9586            type UnderlyingRustTuple<'a> = ();
9587            #[cfg(test)]
9588            #[allow(dead_code, unreachable_patterns)]
9589            fn _type_assertion(
9590                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9591            ) {
9592                match _t {
9593                    alloy_sol_types::private::AssertTypeEq::<
9594                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9595                    >(_) => {}
9596                }
9597            }
9598            #[automatically_derived]
9599            #[doc(hidden)]
9600            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
9601                fn from(value: setHotShotUpReturn) -> Self {
9602                    ()
9603                }
9604            }
9605            #[automatically_derived]
9606            #[doc(hidden)]
9607            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
9608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9609                    Self {}
9610                }
9611            }
9612        }
9613        #[automatically_derived]
9614        impl alloy_sol_types::SolCall for setHotShotUpCall {
9615            type Parameters<'a> = ();
9616            type Token<'a> = <Self::Parameters<
9617                'a,
9618            > as alloy_sol_types::SolType>::Token<'a>;
9619            type Return = setHotShotUpReturn;
9620            type ReturnTuple<'a> = ();
9621            type ReturnToken<'a> = <Self::ReturnTuple<
9622                'a,
9623            > as alloy_sol_types::SolType>::Token<'a>;
9624            const SIGNATURE: &'static str = "setHotShotUp()";
9625            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
9626            #[inline]
9627            fn new<'a>(
9628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9629            ) -> Self {
9630                tuple.into()
9631            }
9632            #[inline]
9633            fn tokenize(&self) -> Self::Token<'_> {
9634                ()
9635            }
9636            #[inline]
9637            fn abi_decode_returns(
9638                data: &[u8],
9639                validate: bool,
9640            ) -> alloy_sol_types::Result<Self::Return> {
9641                <Self::ReturnTuple<
9642                    '_,
9643                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9644                    .map(Into::into)
9645            }
9646        }
9647    };
9648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9649    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9650```solidity
9651function setPermissionedProver(address prover) external;
9652```*/
9653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9654    #[derive(Clone)]
9655    pub struct setPermissionedProverCall {
9656        #[allow(missing_docs)]
9657        pub prover: alloy::sol_types::private::Address,
9658    }
9659    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9661    #[derive(Clone)]
9662    pub struct setPermissionedProverReturn {}
9663    #[allow(
9664        non_camel_case_types,
9665        non_snake_case,
9666        clippy::pub_underscore_fields,
9667        clippy::style
9668    )]
9669    const _: () = {
9670        use alloy::sol_types as alloy_sol_types;
9671        {
9672            #[doc(hidden)]
9673            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9674            #[doc(hidden)]
9675            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9676            #[cfg(test)]
9677            #[allow(dead_code, unreachable_patterns)]
9678            fn _type_assertion(
9679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9680            ) {
9681                match _t {
9682                    alloy_sol_types::private::AssertTypeEq::<
9683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9684                    >(_) => {}
9685                }
9686            }
9687            #[automatically_derived]
9688            #[doc(hidden)]
9689            impl ::core::convert::From<setPermissionedProverCall>
9690            for UnderlyingRustTuple<'_> {
9691                fn from(value: setPermissionedProverCall) -> Self {
9692                    (value.prover,)
9693                }
9694            }
9695            #[automatically_derived]
9696            #[doc(hidden)]
9697            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9698            for setPermissionedProverCall {
9699                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9700                    Self { prover: tuple.0 }
9701                }
9702            }
9703        }
9704        {
9705            #[doc(hidden)]
9706            type UnderlyingSolTuple<'a> = ();
9707            #[doc(hidden)]
9708            type UnderlyingRustTuple<'a> = ();
9709            #[cfg(test)]
9710            #[allow(dead_code, unreachable_patterns)]
9711            fn _type_assertion(
9712                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9713            ) {
9714                match _t {
9715                    alloy_sol_types::private::AssertTypeEq::<
9716                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9717                    >(_) => {}
9718                }
9719            }
9720            #[automatically_derived]
9721            #[doc(hidden)]
9722            impl ::core::convert::From<setPermissionedProverReturn>
9723            for UnderlyingRustTuple<'_> {
9724                fn from(value: setPermissionedProverReturn) -> Self {
9725                    ()
9726                }
9727            }
9728            #[automatically_derived]
9729            #[doc(hidden)]
9730            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9731            for setPermissionedProverReturn {
9732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9733                    Self {}
9734                }
9735            }
9736        }
9737        #[automatically_derived]
9738        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9739            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9740            type Token<'a> = <Self::Parameters<
9741                'a,
9742            > as alloy_sol_types::SolType>::Token<'a>;
9743            type Return = setPermissionedProverReturn;
9744            type ReturnTuple<'a> = ();
9745            type ReturnToken<'a> = <Self::ReturnTuple<
9746                'a,
9747            > as alloy_sol_types::SolType>::Token<'a>;
9748            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9749            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9750            #[inline]
9751            fn new<'a>(
9752                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9753            ) -> Self {
9754                tuple.into()
9755            }
9756            #[inline]
9757            fn tokenize(&self) -> Self::Token<'_> {
9758                (
9759                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9760                        &self.prover,
9761                    ),
9762                )
9763            }
9764            #[inline]
9765            fn abi_decode_returns(
9766                data: &[u8],
9767                validate: bool,
9768            ) -> alloy_sol_types::Result<Self::Return> {
9769                <Self::ReturnTuple<
9770                    '_,
9771                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9772                    .map(Into::into)
9773            }
9774        }
9775    };
9776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9777    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
9778```solidity
9779function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
9780```*/
9781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9782    #[derive(Clone)]
9783    pub struct setStateHistoryCall {
9784        #[allow(missing_docs)]
9785        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
9786            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
9787        >,
9788    }
9789    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
9790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9791    #[derive(Clone)]
9792    pub struct setStateHistoryReturn {}
9793    #[allow(
9794        non_camel_case_types,
9795        non_snake_case,
9796        clippy::pub_underscore_fields,
9797        clippy::style
9798    )]
9799    const _: () = {
9800        use alloy::sol_types as alloy_sol_types;
9801        {
9802            #[doc(hidden)]
9803            type UnderlyingSolTuple<'a> = (
9804                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
9805            );
9806            #[doc(hidden)]
9807            type UnderlyingRustTuple<'a> = (
9808                alloy::sol_types::private::Vec<
9809                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
9810                >,
9811            );
9812            #[cfg(test)]
9813            #[allow(dead_code, unreachable_patterns)]
9814            fn _type_assertion(
9815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9816            ) {
9817                match _t {
9818                    alloy_sol_types::private::AssertTypeEq::<
9819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9820                    >(_) => {}
9821                }
9822            }
9823            #[automatically_derived]
9824            #[doc(hidden)]
9825            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
9826                fn from(value: setStateHistoryCall) -> Self {
9827                    (value._stateHistoryCommitments,)
9828                }
9829            }
9830            #[automatically_derived]
9831            #[doc(hidden)]
9832            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
9833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9834                    Self {
9835                        _stateHistoryCommitments: tuple.0,
9836                    }
9837                }
9838            }
9839        }
9840        {
9841            #[doc(hidden)]
9842            type UnderlyingSolTuple<'a> = ();
9843            #[doc(hidden)]
9844            type UnderlyingRustTuple<'a> = ();
9845            #[cfg(test)]
9846            #[allow(dead_code, unreachable_patterns)]
9847            fn _type_assertion(
9848                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9849            ) {
9850                match _t {
9851                    alloy_sol_types::private::AssertTypeEq::<
9852                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9853                    >(_) => {}
9854                }
9855            }
9856            #[automatically_derived]
9857            #[doc(hidden)]
9858            impl ::core::convert::From<setStateHistoryReturn>
9859            for UnderlyingRustTuple<'_> {
9860                fn from(value: setStateHistoryReturn) -> Self {
9861                    ()
9862                }
9863            }
9864            #[automatically_derived]
9865            #[doc(hidden)]
9866            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9867            for setStateHistoryReturn {
9868                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9869                    Self {}
9870                }
9871            }
9872        }
9873        #[automatically_derived]
9874        impl alloy_sol_types::SolCall for setStateHistoryCall {
9875            type Parameters<'a> = (
9876                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
9877            );
9878            type Token<'a> = <Self::Parameters<
9879                'a,
9880            > as alloy_sol_types::SolType>::Token<'a>;
9881            type Return = setStateHistoryReturn;
9882            type ReturnTuple<'a> = ();
9883            type ReturnToken<'a> = <Self::ReturnTuple<
9884                'a,
9885            > as alloy_sol_types::SolType>::Token<'a>;
9886            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
9887            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
9888            #[inline]
9889            fn new<'a>(
9890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9891            ) -> Self {
9892                tuple.into()
9893            }
9894            #[inline]
9895            fn tokenize(&self) -> Self::Token<'_> {
9896                (
9897                    <alloy::sol_types::sol_data::Array<
9898                        LightClient::StateHistoryCommitment,
9899                    > as alloy_sol_types::SolType>::tokenize(
9900                        &self._stateHistoryCommitments,
9901                    ),
9902                )
9903            }
9904            #[inline]
9905            fn abi_decode_returns(
9906                data: &[u8],
9907                validate: bool,
9908            ) -> alloy_sol_types::Result<Self::Return> {
9909                <Self::ReturnTuple<
9910                    '_,
9911                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9912                    .map(Into::into)
9913            }
9914        }
9915    };
9916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9917    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9918```solidity
9919function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9920```*/
9921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9922    #[derive(Clone)]
9923    pub struct setstateHistoryRetentionPeriodCall {
9924        #[allow(missing_docs)]
9925        pub historySeconds: u32,
9926    }
9927    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9928    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9929    #[derive(Clone)]
9930    pub struct setstateHistoryRetentionPeriodReturn {}
9931    #[allow(
9932        non_camel_case_types,
9933        non_snake_case,
9934        clippy::pub_underscore_fields,
9935        clippy::style
9936    )]
9937    const _: () = {
9938        use alloy::sol_types as alloy_sol_types;
9939        {
9940            #[doc(hidden)]
9941            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9942            #[doc(hidden)]
9943            type UnderlyingRustTuple<'a> = (u32,);
9944            #[cfg(test)]
9945            #[allow(dead_code, unreachable_patterns)]
9946            fn _type_assertion(
9947                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9948            ) {
9949                match _t {
9950                    alloy_sol_types::private::AssertTypeEq::<
9951                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9952                    >(_) => {}
9953                }
9954            }
9955            #[automatically_derived]
9956            #[doc(hidden)]
9957            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9958            for UnderlyingRustTuple<'_> {
9959                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9960                    (value.historySeconds,)
9961                }
9962            }
9963            #[automatically_derived]
9964            #[doc(hidden)]
9965            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9966            for setstateHistoryRetentionPeriodCall {
9967                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9968                    Self { historySeconds: tuple.0 }
9969                }
9970            }
9971        }
9972        {
9973            #[doc(hidden)]
9974            type UnderlyingSolTuple<'a> = ();
9975            #[doc(hidden)]
9976            type UnderlyingRustTuple<'a> = ();
9977            #[cfg(test)]
9978            #[allow(dead_code, unreachable_patterns)]
9979            fn _type_assertion(
9980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9981            ) {
9982                match _t {
9983                    alloy_sol_types::private::AssertTypeEq::<
9984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9985                    >(_) => {}
9986                }
9987            }
9988            #[automatically_derived]
9989            #[doc(hidden)]
9990            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9991            for UnderlyingRustTuple<'_> {
9992                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9993                    ()
9994                }
9995            }
9996            #[automatically_derived]
9997            #[doc(hidden)]
9998            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9999            for setstateHistoryRetentionPeriodReturn {
10000                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10001                    Self {}
10002                }
10003            }
10004        }
10005        #[automatically_derived]
10006        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10007            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10008            type Token<'a> = <Self::Parameters<
10009                'a,
10010            > as alloy_sol_types::SolType>::Token<'a>;
10011            type Return = setstateHistoryRetentionPeriodReturn;
10012            type ReturnTuple<'a> = ();
10013            type ReturnToken<'a> = <Self::ReturnTuple<
10014                'a,
10015            > as alloy_sol_types::SolType>::Token<'a>;
10016            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10017            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10018            #[inline]
10019            fn new<'a>(
10020                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10021            ) -> Self {
10022                tuple.into()
10023            }
10024            #[inline]
10025            fn tokenize(&self) -> Self::Token<'_> {
10026                (
10027                    <alloy::sol_types::sol_data::Uint<
10028                        32,
10029                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10030                )
10031            }
10032            #[inline]
10033            fn abi_decode_returns(
10034                data: &[u8],
10035                validate: bool,
10036            ) -> alloy_sol_types::Result<Self::Return> {
10037                <Self::ReturnTuple<
10038                    '_,
10039                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10040                    .map(Into::into)
10041            }
10042        }
10043    };
10044    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10045    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10046```solidity
10047function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10048```*/
10049    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10050    #[derive(Clone)]
10051    pub struct stateHistoryCommitmentsCall {
10052        #[allow(missing_docs)]
10053        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10054    }
10055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10056    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10058    #[derive(Clone)]
10059    pub struct stateHistoryCommitmentsReturn {
10060        #[allow(missing_docs)]
10061        pub l1BlockHeight: u64,
10062        #[allow(missing_docs)]
10063        pub l1BlockTimestamp: u64,
10064        #[allow(missing_docs)]
10065        pub hotShotBlockHeight: u64,
10066        #[allow(missing_docs)]
10067        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10068    }
10069    #[allow(
10070        non_camel_case_types,
10071        non_snake_case,
10072        clippy::pub_underscore_fields,
10073        clippy::style
10074    )]
10075    const _: () = {
10076        use alloy::sol_types as alloy_sol_types;
10077        {
10078            #[doc(hidden)]
10079            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10080            #[doc(hidden)]
10081            type UnderlyingRustTuple<'a> = (
10082                alloy::sol_types::private::primitives::aliases::U256,
10083            );
10084            #[cfg(test)]
10085            #[allow(dead_code, unreachable_patterns)]
10086            fn _type_assertion(
10087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10088            ) {
10089                match _t {
10090                    alloy_sol_types::private::AssertTypeEq::<
10091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10092                    >(_) => {}
10093                }
10094            }
10095            #[automatically_derived]
10096            #[doc(hidden)]
10097            impl ::core::convert::From<stateHistoryCommitmentsCall>
10098            for UnderlyingRustTuple<'_> {
10099                fn from(value: stateHistoryCommitmentsCall) -> Self {
10100                    (value._0,)
10101                }
10102            }
10103            #[automatically_derived]
10104            #[doc(hidden)]
10105            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10106            for stateHistoryCommitmentsCall {
10107                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10108                    Self { _0: tuple.0 }
10109                }
10110            }
10111        }
10112        {
10113            #[doc(hidden)]
10114            type UnderlyingSolTuple<'a> = (
10115                alloy::sol_types::sol_data::Uint<64>,
10116                alloy::sol_types::sol_data::Uint<64>,
10117                alloy::sol_types::sol_data::Uint<64>,
10118                BN254::ScalarField,
10119            );
10120            #[doc(hidden)]
10121            type UnderlyingRustTuple<'a> = (
10122                u64,
10123                u64,
10124                u64,
10125                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10126            );
10127            #[cfg(test)]
10128            #[allow(dead_code, unreachable_patterns)]
10129            fn _type_assertion(
10130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10131            ) {
10132                match _t {
10133                    alloy_sol_types::private::AssertTypeEq::<
10134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10135                    >(_) => {}
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10141            for UnderlyingRustTuple<'_> {
10142                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10143                    (
10144                        value.l1BlockHeight,
10145                        value.l1BlockTimestamp,
10146                        value.hotShotBlockHeight,
10147                        value.hotShotBlockCommRoot,
10148                    )
10149                }
10150            }
10151            #[automatically_derived]
10152            #[doc(hidden)]
10153            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10154            for stateHistoryCommitmentsReturn {
10155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10156                    Self {
10157                        l1BlockHeight: tuple.0,
10158                        l1BlockTimestamp: tuple.1,
10159                        hotShotBlockHeight: tuple.2,
10160                        hotShotBlockCommRoot: tuple.3,
10161                    }
10162                }
10163            }
10164        }
10165        #[automatically_derived]
10166        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10167            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10168            type Token<'a> = <Self::Parameters<
10169                'a,
10170            > as alloy_sol_types::SolType>::Token<'a>;
10171            type Return = stateHistoryCommitmentsReturn;
10172            type ReturnTuple<'a> = (
10173                alloy::sol_types::sol_data::Uint<64>,
10174                alloy::sol_types::sol_data::Uint<64>,
10175                alloy::sol_types::sol_data::Uint<64>,
10176                BN254::ScalarField,
10177            );
10178            type ReturnToken<'a> = <Self::ReturnTuple<
10179                'a,
10180            > as alloy_sol_types::SolType>::Token<'a>;
10181            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10182            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10183            #[inline]
10184            fn new<'a>(
10185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10186            ) -> Self {
10187                tuple.into()
10188            }
10189            #[inline]
10190            fn tokenize(&self) -> Self::Token<'_> {
10191                (
10192                    <alloy::sol_types::sol_data::Uint<
10193                        256,
10194                    > as alloy_sol_types::SolType>::tokenize(&self._0),
10195                )
10196            }
10197            #[inline]
10198            fn abi_decode_returns(
10199                data: &[u8],
10200                validate: bool,
10201            ) -> alloy_sol_types::Result<Self::Return> {
10202                <Self::ReturnTuple<
10203                    '_,
10204                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10205                    .map(Into::into)
10206            }
10207        }
10208    };
10209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10210    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10211```solidity
10212function stateHistoryFirstIndex() external view returns (uint64);
10213```*/
10214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10215    #[derive(Clone)]
10216    pub struct stateHistoryFirstIndexCall {}
10217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10218    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10220    #[derive(Clone)]
10221    pub struct stateHistoryFirstIndexReturn {
10222        #[allow(missing_docs)]
10223        pub _0: u64,
10224    }
10225    #[allow(
10226        non_camel_case_types,
10227        non_snake_case,
10228        clippy::pub_underscore_fields,
10229        clippy::style
10230    )]
10231    const _: () = {
10232        use alloy::sol_types as alloy_sol_types;
10233        {
10234            #[doc(hidden)]
10235            type UnderlyingSolTuple<'a> = ();
10236            #[doc(hidden)]
10237            type UnderlyingRustTuple<'a> = ();
10238            #[cfg(test)]
10239            #[allow(dead_code, unreachable_patterns)]
10240            fn _type_assertion(
10241                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10242            ) {
10243                match _t {
10244                    alloy_sol_types::private::AssertTypeEq::<
10245                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10246                    >(_) => {}
10247                }
10248            }
10249            #[automatically_derived]
10250            #[doc(hidden)]
10251            impl ::core::convert::From<stateHistoryFirstIndexCall>
10252            for UnderlyingRustTuple<'_> {
10253                fn from(value: stateHistoryFirstIndexCall) -> Self {
10254                    ()
10255                }
10256            }
10257            #[automatically_derived]
10258            #[doc(hidden)]
10259            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10260            for stateHistoryFirstIndexCall {
10261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10262                    Self {}
10263                }
10264            }
10265        }
10266        {
10267            #[doc(hidden)]
10268            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10269            #[doc(hidden)]
10270            type UnderlyingRustTuple<'a> = (u64,);
10271            #[cfg(test)]
10272            #[allow(dead_code, unreachable_patterns)]
10273            fn _type_assertion(
10274                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10275            ) {
10276                match _t {
10277                    alloy_sol_types::private::AssertTypeEq::<
10278                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10279                    >(_) => {}
10280                }
10281            }
10282            #[automatically_derived]
10283            #[doc(hidden)]
10284            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10285            for UnderlyingRustTuple<'_> {
10286                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10287                    (value._0,)
10288                }
10289            }
10290            #[automatically_derived]
10291            #[doc(hidden)]
10292            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10293            for stateHistoryFirstIndexReturn {
10294                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10295                    Self { _0: tuple.0 }
10296                }
10297            }
10298        }
10299        #[automatically_derived]
10300        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10301            type Parameters<'a> = ();
10302            type Token<'a> = <Self::Parameters<
10303                'a,
10304            > as alloy_sol_types::SolType>::Token<'a>;
10305            type Return = stateHistoryFirstIndexReturn;
10306            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10307            type ReturnToken<'a> = <Self::ReturnTuple<
10308                'a,
10309            > as alloy_sol_types::SolType>::Token<'a>;
10310            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10311            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10312            #[inline]
10313            fn new<'a>(
10314                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10315            ) -> Self {
10316                tuple.into()
10317            }
10318            #[inline]
10319            fn tokenize(&self) -> Self::Token<'_> {
10320                ()
10321            }
10322            #[inline]
10323            fn abi_decode_returns(
10324                data: &[u8],
10325                validate: bool,
10326            ) -> alloy_sol_types::Result<Self::Return> {
10327                <Self::ReturnTuple<
10328                    '_,
10329                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10330                    .map(Into::into)
10331            }
10332        }
10333    };
10334    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10335    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10336```solidity
10337function stateHistoryRetentionPeriod() external view returns (uint32);
10338```*/
10339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10340    #[derive(Clone)]
10341    pub struct stateHistoryRetentionPeriodCall {}
10342    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10343    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10345    #[derive(Clone)]
10346    pub struct stateHistoryRetentionPeriodReturn {
10347        #[allow(missing_docs)]
10348        pub _0: u32,
10349    }
10350    #[allow(
10351        non_camel_case_types,
10352        non_snake_case,
10353        clippy::pub_underscore_fields,
10354        clippy::style
10355    )]
10356    const _: () = {
10357        use alloy::sol_types as alloy_sol_types;
10358        {
10359            #[doc(hidden)]
10360            type UnderlyingSolTuple<'a> = ();
10361            #[doc(hidden)]
10362            type UnderlyingRustTuple<'a> = ();
10363            #[cfg(test)]
10364            #[allow(dead_code, unreachable_patterns)]
10365            fn _type_assertion(
10366                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10367            ) {
10368                match _t {
10369                    alloy_sol_types::private::AssertTypeEq::<
10370                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10371                    >(_) => {}
10372                }
10373            }
10374            #[automatically_derived]
10375            #[doc(hidden)]
10376            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10377            for UnderlyingRustTuple<'_> {
10378                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10379                    ()
10380                }
10381            }
10382            #[automatically_derived]
10383            #[doc(hidden)]
10384            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10385            for stateHistoryRetentionPeriodCall {
10386                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10387                    Self {}
10388                }
10389            }
10390        }
10391        {
10392            #[doc(hidden)]
10393            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10394            #[doc(hidden)]
10395            type UnderlyingRustTuple<'a> = (u32,);
10396            #[cfg(test)]
10397            #[allow(dead_code, unreachable_patterns)]
10398            fn _type_assertion(
10399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10400            ) {
10401                match _t {
10402                    alloy_sol_types::private::AssertTypeEq::<
10403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10404                    >(_) => {}
10405                }
10406            }
10407            #[automatically_derived]
10408            #[doc(hidden)]
10409            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10410            for UnderlyingRustTuple<'_> {
10411                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10412                    (value._0,)
10413                }
10414            }
10415            #[automatically_derived]
10416            #[doc(hidden)]
10417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10418            for stateHistoryRetentionPeriodReturn {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self { _0: tuple.0 }
10421                }
10422            }
10423        }
10424        #[automatically_derived]
10425        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10426            type Parameters<'a> = ();
10427            type Token<'a> = <Self::Parameters<
10428                'a,
10429            > as alloy_sol_types::SolType>::Token<'a>;
10430            type Return = stateHistoryRetentionPeriodReturn;
10431            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10432            type ReturnToken<'a> = <Self::ReturnTuple<
10433                'a,
10434            > as alloy_sol_types::SolType>::Token<'a>;
10435            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10436            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10437            #[inline]
10438            fn new<'a>(
10439                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10440            ) -> Self {
10441                tuple.into()
10442            }
10443            #[inline]
10444            fn tokenize(&self) -> Self::Token<'_> {
10445                ()
10446            }
10447            #[inline]
10448            fn abi_decode_returns(
10449                data: &[u8],
10450                validate: bool,
10451            ) -> alloy_sol_types::Result<Self::Return> {
10452                <Self::ReturnTuple<
10453                    '_,
10454                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10455                    .map(Into::into)
10456            }
10457        }
10458    };
10459    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10460    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10461```solidity
10462function transferOwnership(address newOwner) external;
10463```*/
10464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10465    #[derive(Clone)]
10466    pub struct transferOwnershipCall {
10467        #[allow(missing_docs)]
10468        pub newOwner: alloy::sol_types::private::Address,
10469    }
10470    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10472    #[derive(Clone)]
10473    pub struct transferOwnershipReturn {}
10474    #[allow(
10475        non_camel_case_types,
10476        non_snake_case,
10477        clippy::pub_underscore_fields,
10478        clippy::style
10479    )]
10480    const _: () = {
10481        use alloy::sol_types as alloy_sol_types;
10482        {
10483            #[doc(hidden)]
10484            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10485            #[doc(hidden)]
10486            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10487            #[cfg(test)]
10488            #[allow(dead_code, unreachable_patterns)]
10489            fn _type_assertion(
10490                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10491            ) {
10492                match _t {
10493                    alloy_sol_types::private::AssertTypeEq::<
10494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10495                    >(_) => {}
10496                }
10497            }
10498            #[automatically_derived]
10499            #[doc(hidden)]
10500            impl ::core::convert::From<transferOwnershipCall>
10501            for UnderlyingRustTuple<'_> {
10502                fn from(value: transferOwnershipCall) -> Self {
10503                    (value.newOwner,)
10504                }
10505            }
10506            #[automatically_derived]
10507            #[doc(hidden)]
10508            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10509            for transferOwnershipCall {
10510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10511                    Self { newOwner: tuple.0 }
10512                }
10513            }
10514        }
10515        {
10516            #[doc(hidden)]
10517            type UnderlyingSolTuple<'a> = ();
10518            #[doc(hidden)]
10519            type UnderlyingRustTuple<'a> = ();
10520            #[cfg(test)]
10521            #[allow(dead_code, unreachable_patterns)]
10522            fn _type_assertion(
10523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10524            ) {
10525                match _t {
10526                    alloy_sol_types::private::AssertTypeEq::<
10527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10528                    >(_) => {}
10529                }
10530            }
10531            #[automatically_derived]
10532            #[doc(hidden)]
10533            impl ::core::convert::From<transferOwnershipReturn>
10534            for UnderlyingRustTuple<'_> {
10535                fn from(value: transferOwnershipReturn) -> Self {
10536                    ()
10537                }
10538            }
10539            #[automatically_derived]
10540            #[doc(hidden)]
10541            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10542            for transferOwnershipReturn {
10543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10544                    Self {}
10545                }
10546            }
10547        }
10548        #[automatically_derived]
10549        impl alloy_sol_types::SolCall for transferOwnershipCall {
10550            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10551            type Token<'a> = <Self::Parameters<
10552                'a,
10553            > as alloy_sol_types::SolType>::Token<'a>;
10554            type Return = transferOwnershipReturn;
10555            type ReturnTuple<'a> = ();
10556            type ReturnToken<'a> = <Self::ReturnTuple<
10557                'a,
10558            > as alloy_sol_types::SolType>::Token<'a>;
10559            const SIGNATURE: &'static str = "transferOwnership(address)";
10560            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10561            #[inline]
10562            fn new<'a>(
10563                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10564            ) -> Self {
10565                tuple.into()
10566            }
10567            #[inline]
10568            fn tokenize(&self) -> Self::Token<'_> {
10569                (
10570                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10571                        &self.newOwner,
10572                    ),
10573                )
10574            }
10575            #[inline]
10576            fn abi_decode_returns(
10577                data: &[u8],
10578                validate: bool,
10579            ) -> alloy_sol_types::Result<Self::Return> {
10580                <Self::ReturnTuple<
10581                    '_,
10582                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10583                    .map(Into::into)
10584            }
10585        }
10586    };
10587    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10588    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10589```solidity
10590function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10591```*/
10592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10593    #[derive(Clone)]
10594    pub struct upgradeToAndCallCall {
10595        #[allow(missing_docs)]
10596        pub newImplementation: alloy::sol_types::private::Address,
10597        #[allow(missing_docs)]
10598        pub data: alloy::sol_types::private::Bytes,
10599    }
10600    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10602    #[derive(Clone)]
10603    pub struct upgradeToAndCallReturn {}
10604    #[allow(
10605        non_camel_case_types,
10606        non_snake_case,
10607        clippy::pub_underscore_fields,
10608        clippy::style
10609    )]
10610    const _: () = {
10611        use alloy::sol_types as alloy_sol_types;
10612        {
10613            #[doc(hidden)]
10614            type UnderlyingSolTuple<'a> = (
10615                alloy::sol_types::sol_data::Address,
10616                alloy::sol_types::sol_data::Bytes,
10617            );
10618            #[doc(hidden)]
10619            type UnderlyingRustTuple<'a> = (
10620                alloy::sol_types::private::Address,
10621                alloy::sol_types::private::Bytes,
10622            );
10623            #[cfg(test)]
10624            #[allow(dead_code, unreachable_patterns)]
10625            fn _type_assertion(
10626                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10627            ) {
10628                match _t {
10629                    alloy_sol_types::private::AssertTypeEq::<
10630                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10631                    >(_) => {}
10632                }
10633            }
10634            #[automatically_derived]
10635            #[doc(hidden)]
10636            impl ::core::convert::From<upgradeToAndCallCall>
10637            for UnderlyingRustTuple<'_> {
10638                fn from(value: upgradeToAndCallCall) -> Self {
10639                    (value.newImplementation, value.data)
10640                }
10641            }
10642            #[automatically_derived]
10643            #[doc(hidden)]
10644            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10645            for upgradeToAndCallCall {
10646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10647                    Self {
10648                        newImplementation: tuple.0,
10649                        data: tuple.1,
10650                    }
10651                }
10652            }
10653        }
10654        {
10655            #[doc(hidden)]
10656            type UnderlyingSolTuple<'a> = ();
10657            #[doc(hidden)]
10658            type UnderlyingRustTuple<'a> = ();
10659            #[cfg(test)]
10660            #[allow(dead_code, unreachable_patterns)]
10661            fn _type_assertion(
10662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10663            ) {
10664                match _t {
10665                    alloy_sol_types::private::AssertTypeEq::<
10666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10667                    >(_) => {}
10668                }
10669            }
10670            #[automatically_derived]
10671            #[doc(hidden)]
10672            impl ::core::convert::From<upgradeToAndCallReturn>
10673            for UnderlyingRustTuple<'_> {
10674                fn from(value: upgradeToAndCallReturn) -> Self {
10675                    ()
10676                }
10677            }
10678            #[automatically_derived]
10679            #[doc(hidden)]
10680            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10681            for upgradeToAndCallReturn {
10682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10683                    Self {}
10684                }
10685            }
10686        }
10687        #[automatically_derived]
10688        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10689            type Parameters<'a> = (
10690                alloy::sol_types::sol_data::Address,
10691                alloy::sol_types::sol_data::Bytes,
10692            );
10693            type Token<'a> = <Self::Parameters<
10694                'a,
10695            > as alloy_sol_types::SolType>::Token<'a>;
10696            type Return = upgradeToAndCallReturn;
10697            type ReturnTuple<'a> = ();
10698            type ReturnToken<'a> = <Self::ReturnTuple<
10699                'a,
10700            > as alloy_sol_types::SolType>::Token<'a>;
10701            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10702            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10703            #[inline]
10704            fn new<'a>(
10705                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10706            ) -> Self {
10707                tuple.into()
10708            }
10709            #[inline]
10710            fn tokenize(&self) -> Self::Token<'_> {
10711                (
10712                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10713                        &self.newImplementation,
10714                    ),
10715                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10716                        &self.data,
10717                    ),
10718                )
10719            }
10720            #[inline]
10721            fn abi_decode_returns(
10722                data: &[u8],
10723                validate: bool,
10724            ) -> alloy_sol_types::Result<Self::Return> {
10725                <Self::ReturnTuple<
10726                    '_,
10727                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10728                    .map(Into::into)
10729            }
10730        }
10731    };
10732    ///Container for all the [`LightClientMock`](self) function calls.
10733    #[derive()]
10734    pub enum LightClientMockCalls {
10735        #[allow(missing_docs)]
10736        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10737        #[allow(missing_docs)]
10738        _getVk(_getVkCall),
10739        #[allow(missing_docs)]
10740        currentBlockNumber(currentBlockNumberCall),
10741        #[allow(missing_docs)]
10742        disablePermissionedProverMode(disablePermissionedProverModeCall),
10743        #[allow(missing_docs)]
10744        finalizedState(finalizedStateCall),
10745        #[allow(missing_docs)]
10746        genesisStakeTableState(genesisStakeTableStateCall),
10747        #[allow(missing_docs)]
10748        genesisState(genesisStateCall),
10749        #[allow(missing_docs)]
10750        getHotShotCommitment(getHotShotCommitmentCall),
10751        #[allow(missing_docs)]
10752        getStateHistoryCount(getStateHistoryCountCall),
10753        #[allow(missing_docs)]
10754        getVersion(getVersionCall),
10755        #[allow(missing_docs)]
10756        initialize(initializeCall),
10757        #[allow(missing_docs)]
10758        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10759        #[allow(missing_docs)]
10760        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10761        #[allow(missing_docs)]
10762        newFinalizedState(newFinalizedStateCall),
10763        #[allow(missing_docs)]
10764        owner(ownerCall),
10765        #[allow(missing_docs)]
10766        permissionedProver(permissionedProverCall),
10767        #[allow(missing_docs)]
10768        proxiableUUID(proxiableUUIDCall),
10769        #[allow(missing_docs)]
10770        renounceOwnership(renounceOwnershipCall),
10771        #[allow(missing_docs)]
10772        setFinalizedState(setFinalizedStateCall),
10773        #[allow(missing_docs)]
10774        setHotShotDownSince(setHotShotDownSinceCall),
10775        #[allow(missing_docs)]
10776        setHotShotUp(setHotShotUpCall),
10777        #[allow(missing_docs)]
10778        setPermissionedProver(setPermissionedProverCall),
10779        #[allow(missing_docs)]
10780        setStateHistory(setStateHistoryCall),
10781        #[allow(missing_docs)]
10782        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10783        #[allow(missing_docs)]
10784        stateHistoryCommitments(stateHistoryCommitmentsCall),
10785        #[allow(missing_docs)]
10786        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10787        #[allow(missing_docs)]
10788        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10789        #[allow(missing_docs)]
10790        transferOwnership(transferOwnershipCall),
10791        #[allow(missing_docs)]
10792        upgradeToAndCall(upgradeToAndCallCall),
10793    }
10794    #[automatically_derived]
10795    impl LightClientMockCalls {
10796        /// All the selectors of this enum.
10797        ///
10798        /// Note that the selectors might not be in the same order as the variants.
10799        /// No guarantees are made about the order of the selectors.
10800        ///
10801        /// Prefer using `SolInterface` methods instead.
10802        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10803            [1u8, 63u8, 165u8, 252u8],
10804            [2u8, 181u8, 146u8, 243u8],
10805            [13u8, 142u8, 110u8, 44u8],
10806            [18u8, 23u8, 60u8, 44u8],
10807            [32u8, 99u8, 212u8, 247u8],
10808            [45u8, 82u8, 170u8, 214u8],
10809            [47u8, 121u8, 136u8, 157u8],
10810            [49u8, 61u8, 247u8, 177u8],
10811            [55u8, 142u8, 194u8, 59u8],
10812            [66u8, 109u8, 49u8, 148u8],
10813            [79u8, 30u8, 242u8, 134u8],
10814            [82u8, 209u8, 144u8, 45u8],
10815            [105u8, 204u8, 106u8, 4u8],
10816            [113u8, 80u8, 24u8, 166u8],
10817            [130u8, 110u8, 65u8, 252u8],
10818            [133u8, 132u8, 210u8, 63u8],
10819            [141u8, 165u8, 203u8, 91u8],
10820            [150u8, 193u8, 202u8, 97u8],
10821            [155u8, 170u8, 60u8, 201u8],
10822            [159u8, 219u8, 84u8, 167u8],
10823            [173u8, 60u8, 177u8, 204u8],
10824            [181u8, 173u8, 234u8, 60u8],
10825            [194u8, 59u8, 158u8, 158u8],
10826            [200u8, 229u8, 228u8, 152u8],
10827            [210u8, 77u8, 147u8, 61u8],
10828            [224u8, 48u8, 51u8, 1u8],
10829            [242u8, 253u8, 227u8, 139u8],
10830            [245u8, 103u8, 97u8, 96u8],
10831            [249u8, 229u8, 13u8, 25u8],
10832        ];
10833    }
10834    #[automatically_derived]
10835    impl alloy_sol_types::SolInterface for LightClientMockCalls {
10836        const NAME: &'static str = "LightClientMockCalls";
10837        const MIN_DATA_LENGTH: usize = 0usize;
10838        const COUNT: usize = 29usize;
10839        #[inline]
10840        fn selector(&self) -> [u8; 4] {
10841            match self {
10842                Self::UPGRADE_INTERFACE_VERSION(_) => {
10843                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10844                }
10845                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10846                Self::currentBlockNumber(_) => {
10847                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10848                }
10849                Self::disablePermissionedProverMode(_) => {
10850                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10851                }
10852                Self::finalizedState(_) => {
10853                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10854                }
10855                Self::genesisStakeTableState(_) => {
10856                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10857                }
10858                Self::genesisState(_) => {
10859                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10860                }
10861                Self::getHotShotCommitment(_) => {
10862                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10863                }
10864                Self::getStateHistoryCount(_) => {
10865                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10866                }
10867                Self::getVersion(_) => {
10868                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10869                }
10870                Self::initialize(_) => {
10871                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10872                }
10873                Self::isPermissionedProverEnabled(_) => {
10874                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10875                }
10876                Self::lagOverEscapeHatchThreshold(_) => {
10877                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10878                }
10879                Self::newFinalizedState(_) => {
10880                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10881                }
10882                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10883                Self::permissionedProver(_) => {
10884                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10885                }
10886                Self::proxiableUUID(_) => {
10887                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10888                }
10889                Self::renounceOwnership(_) => {
10890                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10891                }
10892                Self::setFinalizedState(_) => {
10893                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10894                }
10895                Self::setHotShotDownSince(_) => {
10896                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
10897                }
10898                Self::setHotShotUp(_) => {
10899                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
10900                }
10901                Self::setPermissionedProver(_) => {
10902                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10903                }
10904                Self::setStateHistory(_) => {
10905                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
10906                }
10907                Self::setstateHistoryRetentionPeriod(_) => {
10908                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10909                }
10910                Self::stateHistoryCommitments(_) => {
10911                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10912                }
10913                Self::stateHistoryFirstIndex(_) => {
10914                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10915                }
10916                Self::stateHistoryRetentionPeriod(_) => {
10917                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10918                }
10919                Self::transferOwnership(_) => {
10920                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10921                }
10922                Self::upgradeToAndCall(_) => {
10923                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10924                }
10925            }
10926        }
10927        #[inline]
10928        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10929            Self::SELECTORS.get(i).copied()
10930        }
10931        #[inline]
10932        fn valid_selector(selector: [u8; 4]) -> bool {
10933            Self::SELECTORS.binary_search(&selector).is_ok()
10934        }
10935        #[inline]
10936        #[allow(non_snake_case)]
10937        fn abi_decode_raw(
10938            selector: [u8; 4],
10939            data: &[u8],
10940            validate: bool,
10941        ) -> alloy_sol_types::Result<Self> {
10942            static DECODE_SHIMS: &[fn(
10943                &[u8],
10944                bool,
10945            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
10946                {
10947                    fn setPermissionedProver(
10948                        data: &[u8],
10949                        validate: bool,
10950                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10951                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10952                                data,
10953                                validate,
10954                            )
10955                            .map(LightClientMockCalls::setPermissionedProver)
10956                    }
10957                    setPermissionedProver
10958                },
10959                {
10960                    fn stateHistoryCommitments(
10961                        data: &[u8],
10962                        validate: bool,
10963                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10964                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10965                                data,
10966                                validate,
10967                            )
10968                            .map(LightClientMockCalls::stateHistoryCommitments)
10969                    }
10970                    stateHistoryCommitments
10971                },
10972                {
10973                    fn getVersion(
10974                        data: &[u8],
10975                        validate: bool,
10976                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10977                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10978                                data,
10979                                validate,
10980                            )
10981                            .map(LightClientMockCalls::getVersion)
10982                    }
10983                    getVersion
10984                },
10985                {
10986                    fn _getVk(
10987                        data: &[u8],
10988                        validate: bool,
10989                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10990                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
10991                                data,
10992                                validate,
10993                            )
10994                            .map(LightClientMockCalls::_getVk)
10995                    }
10996                    _getVk
10997                },
10998                {
10999                    fn newFinalizedState(
11000                        data: &[u8],
11001                        validate: bool,
11002                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11003                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11004                                data,
11005                                validate,
11006                            )
11007                            .map(LightClientMockCalls::newFinalizedState)
11008                    }
11009                    newFinalizedState
11010                },
11011                {
11012                    fn setHotShotDownSince(
11013                        data: &[u8],
11014                        validate: bool,
11015                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11016                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
11017                                data,
11018                                validate,
11019                            )
11020                            .map(LightClientMockCalls::setHotShotDownSince)
11021                    }
11022                    setHotShotDownSince
11023                },
11024                {
11025                    fn stateHistoryFirstIndex(
11026                        data: &[u8],
11027                        validate: bool,
11028                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11029                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11030                                data,
11031                                validate,
11032                            )
11033                            .map(LightClientMockCalls::stateHistoryFirstIndex)
11034                    }
11035                    stateHistoryFirstIndex
11036                },
11037                {
11038                    fn permissionedProver(
11039                        data: &[u8],
11040                        validate: bool,
11041                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11042                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11043                                data,
11044                                validate,
11045                            )
11046                            .map(LightClientMockCalls::permissionedProver)
11047                    }
11048                    permissionedProver
11049                },
11050                {
11051                    fn currentBlockNumber(
11052                        data: &[u8],
11053                        validate: bool,
11054                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11055                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11056                                data,
11057                                validate,
11058                            )
11059                            .map(LightClientMockCalls::currentBlockNumber)
11060                    }
11061                    currentBlockNumber
11062                },
11063                {
11064                    fn genesisStakeTableState(
11065                        data: &[u8],
11066                        validate: bool,
11067                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11068                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11069                                data,
11070                                validate,
11071                            )
11072                            .map(LightClientMockCalls::genesisStakeTableState)
11073                    }
11074                    genesisStakeTableState
11075                },
11076                {
11077                    fn upgradeToAndCall(
11078                        data: &[u8],
11079                        validate: bool,
11080                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11081                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11082                                data,
11083                                validate,
11084                            )
11085                            .map(LightClientMockCalls::upgradeToAndCall)
11086                    }
11087                    upgradeToAndCall
11088                },
11089                {
11090                    fn proxiableUUID(
11091                        data: &[u8],
11092                        validate: bool,
11093                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11094                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11095                                data,
11096                                validate,
11097                            )
11098                            .map(LightClientMockCalls::proxiableUUID)
11099                    }
11100                    proxiableUUID
11101                },
11102                {
11103                    fn disablePermissionedProverMode(
11104                        data: &[u8],
11105                        validate: bool,
11106                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11107                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11108                                data,
11109                                validate,
11110                            )
11111                            .map(LightClientMockCalls::disablePermissionedProverMode)
11112                    }
11113                    disablePermissionedProverMode
11114                },
11115                {
11116                    fn renounceOwnership(
11117                        data: &[u8],
11118                        validate: bool,
11119                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11120                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11121                                data,
11122                                validate,
11123                            )
11124                            .map(LightClientMockCalls::renounceOwnership)
11125                    }
11126                    renounceOwnership
11127                },
11128                {
11129                    fn isPermissionedProverEnabled(
11130                        data: &[u8],
11131                        validate: bool,
11132                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11133                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11134                                data,
11135                                validate,
11136                            )
11137                            .map(LightClientMockCalls::isPermissionedProverEnabled)
11138                    }
11139                    isPermissionedProverEnabled
11140                },
11141                {
11142                    fn getHotShotCommitment(
11143                        data: &[u8],
11144                        validate: bool,
11145                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11146                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11147                                data,
11148                                validate,
11149                            )
11150                            .map(LightClientMockCalls::getHotShotCommitment)
11151                    }
11152                    getHotShotCommitment
11153                },
11154                {
11155                    fn owner(
11156                        data: &[u8],
11157                        validate: bool,
11158                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11159                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
11160                                data,
11161                                validate,
11162                            )
11163                            .map(LightClientMockCalls::owner)
11164                    }
11165                    owner
11166                },
11167                {
11168                    fn setstateHistoryRetentionPeriod(
11169                        data: &[u8],
11170                        validate: bool,
11171                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11172                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11173                                data,
11174                                validate,
11175                            )
11176                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
11177                    }
11178                    setstateHistoryRetentionPeriod
11179                },
11180                {
11181                    fn initialize(
11182                        data: &[u8],
11183                        validate: bool,
11184                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11185                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11186                                data,
11187                                validate,
11188                            )
11189                            .map(LightClientMockCalls::initialize)
11190                    }
11191                    initialize
11192                },
11193                {
11194                    fn finalizedState(
11195                        data: &[u8],
11196                        validate: bool,
11197                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11198                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11199                                data,
11200                                validate,
11201                            )
11202                            .map(LightClientMockCalls::finalizedState)
11203                    }
11204                    finalizedState
11205                },
11206                {
11207                    fn UPGRADE_INTERFACE_VERSION(
11208                        data: &[u8],
11209                        validate: bool,
11210                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11211                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11212                                data,
11213                                validate,
11214                            )
11215                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
11216                    }
11217                    UPGRADE_INTERFACE_VERSION
11218                },
11219                {
11220                    fn setFinalizedState(
11221                        data: &[u8],
11222                        validate: bool,
11223                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11224                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11225                                data,
11226                                validate,
11227                            )
11228                            .map(LightClientMockCalls::setFinalizedState)
11229                    }
11230                    setFinalizedState
11231                },
11232                {
11233                    fn stateHistoryRetentionPeriod(
11234                        data: &[u8],
11235                        validate: bool,
11236                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11237                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11238                                data,
11239                                validate,
11240                            )
11241                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
11242                    }
11243                    stateHistoryRetentionPeriod
11244                },
11245                {
11246                    fn setHotShotUp(
11247                        data: &[u8],
11248                        validate: bool,
11249                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11250                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
11251                                data,
11252                                validate,
11253                            )
11254                            .map(LightClientMockCalls::setHotShotUp)
11255                    }
11256                    setHotShotUp
11257                },
11258                {
11259                    fn genesisState(
11260                        data: &[u8],
11261                        validate: bool,
11262                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11263                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11264                                data,
11265                                validate,
11266                            )
11267                            .map(LightClientMockCalls::genesisState)
11268                    }
11269                    genesisState
11270                },
11271                {
11272                    fn lagOverEscapeHatchThreshold(
11273                        data: &[u8],
11274                        validate: bool,
11275                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11276                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11277                                data,
11278                                validate,
11279                            )
11280                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
11281                    }
11282                    lagOverEscapeHatchThreshold
11283                },
11284                {
11285                    fn transferOwnership(
11286                        data: &[u8],
11287                        validate: bool,
11288                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11289                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11290                                data,
11291                                validate,
11292                            )
11293                            .map(LightClientMockCalls::transferOwnership)
11294                    }
11295                    transferOwnership
11296                },
11297                {
11298                    fn setStateHistory(
11299                        data: &[u8],
11300                        validate: bool,
11301                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11302                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
11303                                data,
11304                                validate,
11305                            )
11306                            .map(LightClientMockCalls::setStateHistory)
11307                    }
11308                    setStateHistory
11309                },
11310                {
11311                    fn getStateHistoryCount(
11312                        data: &[u8],
11313                        validate: bool,
11314                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
11315                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11316                                data,
11317                                validate,
11318                            )
11319                            .map(LightClientMockCalls::getStateHistoryCount)
11320                    }
11321                    getStateHistoryCount
11322                },
11323            ];
11324            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11325                return Err(
11326                    alloy_sol_types::Error::unknown_selector(
11327                        <Self as alloy_sol_types::SolInterface>::NAME,
11328                        selector,
11329                    ),
11330                );
11331            };
11332            DECODE_SHIMS[idx](data, validate)
11333        }
11334        #[inline]
11335        fn abi_encoded_size(&self) -> usize {
11336            match self {
11337                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11338                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11339                        inner,
11340                    )
11341                }
11342                Self::_getVk(inner) => {
11343                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11344                }
11345                Self::currentBlockNumber(inner) => {
11346                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11347                        inner,
11348                    )
11349                }
11350                Self::disablePermissionedProverMode(inner) => {
11351                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11352                        inner,
11353                    )
11354                }
11355                Self::finalizedState(inner) => {
11356                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11357                        inner,
11358                    )
11359                }
11360                Self::genesisStakeTableState(inner) => {
11361                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11362                        inner,
11363                    )
11364                }
11365                Self::genesisState(inner) => {
11366                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11367                        inner,
11368                    )
11369                }
11370                Self::getHotShotCommitment(inner) => {
11371                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11372                        inner,
11373                    )
11374                }
11375                Self::getStateHistoryCount(inner) => {
11376                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11377                        inner,
11378                    )
11379                }
11380                Self::getVersion(inner) => {
11381                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11382                }
11383                Self::initialize(inner) => {
11384                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11385                }
11386                Self::isPermissionedProverEnabled(inner) => {
11387                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11388                        inner,
11389                    )
11390                }
11391                Self::lagOverEscapeHatchThreshold(inner) => {
11392                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11393                        inner,
11394                    )
11395                }
11396                Self::newFinalizedState(inner) => {
11397                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11398                        inner,
11399                    )
11400                }
11401                Self::owner(inner) => {
11402                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11403                }
11404                Self::permissionedProver(inner) => {
11405                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11406                        inner,
11407                    )
11408                }
11409                Self::proxiableUUID(inner) => {
11410                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11411                        inner,
11412                    )
11413                }
11414                Self::renounceOwnership(inner) => {
11415                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11416                        inner,
11417                    )
11418                }
11419                Self::setFinalizedState(inner) => {
11420                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11421                        inner,
11422                    )
11423                }
11424                Self::setHotShotDownSince(inner) => {
11425                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
11426                        inner,
11427                    )
11428                }
11429                Self::setHotShotUp(inner) => {
11430                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
11431                        inner,
11432                    )
11433                }
11434                Self::setPermissionedProver(inner) => {
11435                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11436                        inner,
11437                    )
11438                }
11439                Self::setStateHistory(inner) => {
11440                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
11441                        inner,
11442                    )
11443                }
11444                Self::setstateHistoryRetentionPeriod(inner) => {
11445                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11446                        inner,
11447                    )
11448                }
11449                Self::stateHistoryCommitments(inner) => {
11450                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11451                        inner,
11452                    )
11453                }
11454                Self::stateHistoryFirstIndex(inner) => {
11455                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11456                        inner,
11457                    )
11458                }
11459                Self::stateHistoryRetentionPeriod(inner) => {
11460                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11461                        inner,
11462                    )
11463                }
11464                Self::transferOwnership(inner) => {
11465                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11466                        inner,
11467                    )
11468                }
11469                Self::upgradeToAndCall(inner) => {
11470                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11471                        inner,
11472                    )
11473                }
11474            }
11475        }
11476        #[inline]
11477        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11478            match self {
11479                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11480                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11481                        inner,
11482                        out,
11483                    )
11484                }
11485                Self::_getVk(inner) => {
11486                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11487                }
11488                Self::currentBlockNumber(inner) => {
11489                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11490                        inner,
11491                        out,
11492                    )
11493                }
11494                Self::disablePermissionedProverMode(inner) => {
11495                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11496                        inner,
11497                        out,
11498                    )
11499                }
11500                Self::finalizedState(inner) => {
11501                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11502                        inner,
11503                        out,
11504                    )
11505                }
11506                Self::genesisStakeTableState(inner) => {
11507                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11508                        inner,
11509                        out,
11510                    )
11511                }
11512                Self::genesisState(inner) => {
11513                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11514                        inner,
11515                        out,
11516                    )
11517                }
11518                Self::getHotShotCommitment(inner) => {
11519                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11520                        inner,
11521                        out,
11522                    )
11523                }
11524                Self::getStateHistoryCount(inner) => {
11525                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11526                        inner,
11527                        out,
11528                    )
11529                }
11530                Self::getVersion(inner) => {
11531                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11532                        inner,
11533                        out,
11534                    )
11535                }
11536                Self::initialize(inner) => {
11537                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11538                        inner,
11539                        out,
11540                    )
11541                }
11542                Self::isPermissionedProverEnabled(inner) => {
11543                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11544                        inner,
11545                        out,
11546                    )
11547                }
11548                Self::lagOverEscapeHatchThreshold(inner) => {
11549                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11550                        inner,
11551                        out,
11552                    )
11553                }
11554                Self::newFinalizedState(inner) => {
11555                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11556                        inner,
11557                        out,
11558                    )
11559                }
11560                Self::owner(inner) => {
11561                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11562                }
11563                Self::permissionedProver(inner) => {
11564                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11565                        inner,
11566                        out,
11567                    )
11568                }
11569                Self::proxiableUUID(inner) => {
11570                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11571                        inner,
11572                        out,
11573                    )
11574                }
11575                Self::renounceOwnership(inner) => {
11576                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11577                        inner,
11578                        out,
11579                    )
11580                }
11581                Self::setFinalizedState(inner) => {
11582                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11583                        inner,
11584                        out,
11585                    )
11586                }
11587                Self::setHotShotDownSince(inner) => {
11588                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
11589                        inner,
11590                        out,
11591                    )
11592                }
11593                Self::setHotShotUp(inner) => {
11594                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
11595                        inner,
11596                        out,
11597                    )
11598                }
11599                Self::setPermissionedProver(inner) => {
11600                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11601                        inner,
11602                        out,
11603                    )
11604                }
11605                Self::setStateHistory(inner) => {
11606                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
11607                        inner,
11608                        out,
11609                    )
11610                }
11611                Self::setstateHistoryRetentionPeriod(inner) => {
11612                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11613                        inner,
11614                        out,
11615                    )
11616                }
11617                Self::stateHistoryCommitments(inner) => {
11618                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11619                        inner,
11620                        out,
11621                    )
11622                }
11623                Self::stateHistoryFirstIndex(inner) => {
11624                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11625                        inner,
11626                        out,
11627                    )
11628                }
11629                Self::stateHistoryRetentionPeriod(inner) => {
11630                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11631                        inner,
11632                        out,
11633                    )
11634                }
11635                Self::transferOwnership(inner) => {
11636                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11637                        inner,
11638                        out,
11639                    )
11640                }
11641                Self::upgradeToAndCall(inner) => {
11642                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11643                        inner,
11644                        out,
11645                    )
11646                }
11647            }
11648        }
11649    }
11650    ///Container for all the [`LightClientMock`](self) custom errors.
11651    #[derive(Debug, PartialEq, Eq, Hash)]
11652    pub enum LightClientMockErrors {
11653        #[allow(missing_docs)]
11654        AddressEmptyCode(AddressEmptyCode),
11655        #[allow(missing_docs)]
11656        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11657        #[allow(missing_docs)]
11658        ERC1967NonPayable(ERC1967NonPayable),
11659        #[allow(missing_docs)]
11660        FailedInnerCall(FailedInnerCall),
11661        #[allow(missing_docs)]
11662        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11663        #[allow(missing_docs)]
11664        InvalidAddress(InvalidAddress),
11665        #[allow(missing_docs)]
11666        InvalidArgs(InvalidArgs),
11667        #[allow(missing_docs)]
11668        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11669        #[allow(missing_docs)]
11670        InvalidInitialization(InvalidInitialization),
11671        #[allow(missing_docs)]
11672        InvalidMaxStateHistory(InvalidMaxStateHistory),
11673        #[allow(missing_docs)]
11674        InvalidProof(InvalidProof),
11675        #[allow(missing_docs)]
11676        NoChangeRequired(NoChangeRequired),
11677        #[allow(missing_docs)]
11678        NotInitializing(NotInitializing),
11679        #[allow(missing_docs)]
11680        OutdatedState(OutdatedState),
11681        #[allow(missing_docs)]
11682        OwnableInvalidOwner(OwnableInvalidOwner),
11683        #[allow(missing_docs)]
11684        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11685        #[allow(missing_docs)]
11686        ProverNotPermissioned(ProverNotPermissioned),
11687        #[allow(missing_docs)]
11688        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11689        #[allow(missing_docs)]
11690        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11691        #[allow(missing_docs)]
11692        WrongStakeTableUsed(WrongStakeTableUsed),
11693    }
11694    #[automatically_derived]
11695    impl LightClientMockErrors {
11696        /// All the selectors of this enum.
11697        ///
11698        /// Note that the selectors might not be in the same order as the variants.
11699        /// No guarantees are made about the order of the selectors.
11700        ///
11701        /// Prefer using `SolInterface` methods instead.
11702        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11703            [5u8, 28u8, 70u8, 239u8],
11704            [9u8, 189u8, 227u8, 57u8],
11705            [17u8, 140u8, 218u8, 167u8],
11706            [20u8, 37u8, 234u8, 66u8],
11707            [30u8, 79u8, 189u8, 247u8],
11708            [76u8, 156u8, 140u8, 227u8],
11709            [81u8, 97u8, 128u8, 137u8],
11710            [97u8, 90u8, 146u8, 100u8],
11711            [153u8, 150u8, 179u8, 21u8],
11712            [161u8, 186u8, 7u8, 238u8],
11713            [163u8, 166u8, 71u8, 128u8],
11714            [168u8, 99u8, 174u8, 201u8],
11715            [170u8, 29u8, 73u8, 164u8],
11716            [176u8, 180u8, 56u8, 119u8],
11717            [179u8, 152u8, 151u8, 159u8],
11718            [215u8, 230u8, 188u8, 248u8],
11719            [224u8, 124u8, 141u8, 186u8],
11720            [230u8, 196u8, 36u8, 123u8],
11721            [244u8, 160u8, 238u8, 224u8],
11722            [249u8, 46u8, 232u8, 169u8],
11723        ];
11724    }
11725    #[automatically_derived]
11726    impl alloy_sol_types::SolInterface for LightClientMockErrors {
11727        const NAME: &'static str = "LightClientMockErrors";
11728        const MIN_DATA_LENGTH: usize = 0usize;
11729        const COUNT: usize = 20usize;
11730        #[inline]
11731        fn selector(&self) -> [u8; 4] {
11732            match self {
11733                Self::AddressEmptyCode(_) => {
11734                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11735                }
11736                Self::ERC1967InvalidImplementation(_) => {
11737                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11738                }
11739                Self::ERC1967NonPayable(_) => {
11740                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11741                }
11742                Self::FailedInnerCall(_) => {
11743                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11744                }
11745                Self::InsufficientSnapshotHistory(_) => {
11746                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
11747                }
11748                Self::InvalidAddress(_) => {
11749                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
11750                }
11751                Self::InvalidArgs(_) => {
11752                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
11753                }
11754                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
11755                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
11756                }
11757                Self::InvalidInitialization(_) => {
11758                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11759                }
11760                Self::InvalidMaxStateHistory(_) => {
11761                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
11762                }
11763                Self::InvalidProof(_) => {
11764                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11765                }
11766                Self::NoChangeRequired(_) => {
11767                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
11768                }
11769                Self::NotInitializing(_) => {
11770                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11771                }
11772                Self::OutdatedState(_) => {
11773                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
11774                }
11775                Self::OwnableInvalidOwner(_) => {
11776                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11777                }
11778                Self::OwnableUnauthorizedAccount(_) => {
11779                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11780                }
11781                Self::ProverNotPermissioned(_) => {
11782                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
11783                }
11784                Self::UUPSUnauthorizedCallContext(_) => {
11785                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11786                }
11787                Self::UUPSUnsupportedProxiableUUID(_) => {
11788                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11789                }
11790                Self::WrongStakeTableUsed(_) => {
11791                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
11792                }
11793            }
11794        }
11795        #[inline]
11796        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11797            Self::SELECTORS.get(i).copied()
11798        }
11799        #[inline]
11800        fn valid_selector(selector: [u8; 4]) -> bool {
11801            Self::SELECTORS.binary_search(&selector).is_ok()
11802        }
11803        #[inline]
11804        #[allow(non_snake_case)]
11805        fn abi_decode_raw(
11806            selector: [u8; 4],
11807            data: &[u8],
11808            validate: bool,
11809        ) -> alloy_sol_types::Result<Self> {
11810            static DECODE_SHIMS: &[fn(
11811                &[u8],
11812                bool,
11813            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
11814                {
11815                    fn OutdatedState(
11816                        data: &[u8],
11817                        validate: bool,
11818                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11819                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
11820                                data,
11821                                validate,
11822                            )
11823                            .map(LightClientMockErrors::OutdatedState)
11824                    }
11825                    OutdatedState
11826                },
11827                {
11828                    fn InvalidProof(
11829                        data: &[u8],
11830                        validate: bool,
11831                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11832                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
11833                                data,
11834                                validate,
11835                            )
11836                            .map(LightClientMockErrors::InvalidProof)
11837                    }
11838                    InvalidProof
11839                },
11840                {
11841                    fn OwnableUnauthorizedAccount(
11842                        data: &[u8],
11843                        validate: bool,
11844                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11845                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
11846                                data,
11847                                validate,
11848                            )
11849                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
11850                    }
11851                    OwnableUnauthorizedAccount
11852                },
11853                {
11854                    fn FailedInnerCall(
11855                        data: &[u8],
11856                        validate: bool,
11857                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11858                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
11859                                data,
11860                                validate,
11861                            )
11862                            .map(LightClientMockErrors::FailedInnerCall)
11863                    }
11864                    FailedInnerCall
11865                },
11866                {
11867                    fn OwnableInvalidOwner(
11868                        data: &[u8],
11869                        validate: bool,
11870                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11871                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
11872                                data,
11873                                validate,
11874                            )
11875                            .map(LightClientMockErrors::OwnableInvalidOwner)
11876                    }
11877                    OwnableInvalidOwner
11878                },
11879                {
11880                    fn ERC1967InvalidImplementation(
11881                        data: &[u8],
11882                        validate: bool,
11883                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11884                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
11885                                data,
11886                                validate,
11887                            )
11888                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
11889                    }
11890                    ERC1967InvalidImplementation
11891                },
11892                {
11893                    fn WrongStakeTableUsed(
11894                        data: &[u8],
11895                        validate: bool,
11896                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11897                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
11898                                data,
11899                                validate,
11900                            )
11901                            .map(LightClientMockErrors::WrongStakeTableUsed)
11902                    }
11903                    WrongStakeTableUsed
11904                },
11905                {
11906                    fn InvalidHotShotBlockForCommitmentCheck(
11907                        data: &[u8],
11908                        validate: bool,
11909                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11910                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
11911                                data,
11912                                validate,
11913                            )
11914                            .map(
11915                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
11916                            )
11917                    }
11918                    InvalidHotShotBlockForCommitmentCheck
11919                },
11920                {
11921                    fn AddressEmptyCode(
11922                        data: &[u8],
11923                        validate: bool,
11924                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11925                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11926                                data,
11927                                validate,
11928                            )
11929                            .map(LightClientMockErrors::AddressEmptyCode)
11930                    }
11931                    AddressEmptyCode
11932                },
11933                {
11934                    fn InvalidArgs(
11935                        data: &[u8],
11936                        validate: bool,
11937                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11938                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
11939                                data,
11940                                validate,
11941                            )
11942                            .map(LightClientMockErrors::InvalidArgs)
11943                    }
11944                    InvalidArgs
11945                },
11946                {
11947                    fn ProverNotPermissioned(
11948                        data: &[u8],
11949                        validate: bool,
11950                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11951                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
11952                                data,
11953                                validate,
11954                            )
11955                            .map(LightClientMockErrors::ProverNotPermissioned)
11956                    }
11957                    ProverNotPermissioned
11958                },
11959                {
11960                    fn NoChangeRequired(
11961                        data: &[u8],
11962                        validate: bool,
11963                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11964                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
11965                                data,
11966                                validate,
11967                            )
11968                            .map(LightClientMockErrors::NoChangeRequired)
11969                    }
11970                    NoChangeRequired
11971                },
11972                {
11973                    fn UUPSUnsupportedProxiableUUID(
11974                        data: &[u8],
11975                        validate: bool,
11976                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11977                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
11978                                data,
11979                                validate,
11980                            )
11981                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
11982                    }
11983                    UUPSUnsupportedProxiableUUID
11984                },
11985                {
11986                    fn InsufficientSnapshotHistory(
11987                        data: &[u8],
11988                        validate: bool,
11989                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11990                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
11991                                data,
11992                                validate,
11993                            )
11994                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
11995                    }
11996                    InsufficientSnapshotHistory
11997                },
11998                {
11999                    fn ERC1967NonPayable(
12000                        data: &[u8],
12001                        validate: bool,
12002                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12003                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12004                                data,
12005                                validate,
12006                            )
12007                            .map(LightClientMockErrors::ERC1967NonPayable)
12008                    }
12009                    ERC1967NonPayable
12010                },
12011                {
12012                    fn NotInitializing(
12013                        data: &[u8],
12014                        validate: bool,
12015                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12016                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12017                                data,
12018                                validate,
12019                            )
12020                            .map(LightClientMockErrors::NotInitializing)
12021                    }
12022                    NotInitializing
12023                },
12024                {
12025                    fn UUPSUnauthorizedCallContext(
12026                        data: &[u8],
12027                        validate: bool,
12028                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12029                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12030                                data,
12031                                validate,
12032                            )
12033                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
12034                    }
12035                    UUPSUnauthorizedCallContext
12036                },
12037                {
12038                    fn InvalidAddress(
12039                        data: &[u8],
12040                        validate: bool,
12041                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12042                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12043                                data,
12044                                validate,
12045                            )
12046                            .map(LightClientMockErrors::InvalidAddress)
12047                    }
12048                    InvalidAddress
12049                },
12050                {
12051                    fn InvalidMaxStateHistory(
12052                        data: &[u8],
12053                        validate: bool,
12054                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12055                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12056                                data,
12057                                validate,
12058                            )
12059                            .map(LightClientMockErrors::InvalidMaxStateHistory)
12060                    }
12061                    InvalidMaxStateHistory
12062                },
12063                {
12064                    fn InvalidInitialization(
12065                        data: &[u8],
12066                        validate: bool,
12067                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
12068                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12069                                data,
12070                                validate,
12071                            )
12072                            .map(LightClientMockErrors::InvalidInitialization)
12073                    }
12074                    InvalidInitialization
12075                },
12076            ];
12077            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12078                return Err(
12079                    alloy_sol_types::Error::unknown_selector(
12080                        <Self as alloy_sol_types::SolInterface>::NAME,
12081                        selector,
12082                    ),
12083                );
12084            };
12085            DECODE_SHIMS[idx](data, validate)
12086        }
12087        #[inline]
12088        fn abi_encoded_size(&self) -> usize {
12089            match self {
12090                Self::AddressEmptyCode(inner) => {
12091                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12092                        inner,
12093                    )
12094                }
12095                Self::ERC1967InvalidImplementation(inner) => {
12096                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12097                        inner,
12098                    )
12099                }
12100                Self::ERC1967NonPayable(inner) => {
12101                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12102                        inner,
12103                    )
12104                }
12105                Self::FailedInnerCall(inner) => {
12106                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12107                        inner,
12108                    )
12109                }
12110                Self::InsufficientSnapshotHistory(inner) => {
12111                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12112                        inner,
12113                    )
12114                }
12115                Self::InvalidAddress(inner) => {
12116                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12117                        inner,
12118                    )
12119                }
12120                Self::InvalidArgs(inner) => {
12121                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12122                }
12123                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12124                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12125                        inner,
12126                    )
12127                }
12128                Self::InvalidInitialization(inner) => {
12129                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12130                        inner,
12131                    )
12132                }
12133                Self::InvalidMaxStateHistory(inner) => {
12134                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12135                        inner,
12136                    )
12137                }
12138                Self::InvalidProof(inner) => {
12139                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12140                }
12141                Self::NoChangeRequired(inner) => {
12142                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12143                        inner,
12144                    )
12145                }
12146                Self::NotInitializing(inner) => {
12147                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12148                        inner,
12149                    )
12150                }
12151                Self::OutdatedState(inner) => {
12152                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12153                }
12154                Self::OwnableInvalidOwner(inner) => {
12155                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12156                        inner,
12157                    )
12158                }
12159                Self::OwnableUnauthorizedAccount(inner) => {
12160                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12161                        inner,
12162                    )
12163                }
12164                Self::ProverNotPermissioned(inner) => {
12165                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12166                        inner,
12167                    )
12168                }
12169                Self::UUPSUnauthorizedCallContext(inner) => {
12170                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12171                        inner,
12172                    )
12173                }
12174                Self::UUPSUnsupportedProxiableUUID(inner) => {
12175                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12176                        inner,
12177                    )
12178                }
12179                Self::WrongStakeTableUsed(inner) => {
12180                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12181                        inner,
12182                    )
12183                }
12184            }
12185        }
12186        #[inline]
12187        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12188            match self {
12189                Self::AddressEmptyCode(inner) => {
12190                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12191                        inner,
12192                        out,
12193                    )
12194                }
12195                Self::ERC1967InvalidImplementation(inner) => {
12196                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12197                        inner,
12198                        out,
12199                    )
12200                }
12201                Self::ERC1967NonPayable(inner) => {
12202                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12203                        inner,
12204                        out,
12205                    )
12206                }
12207                Self::FailedInnerCall(inner) => {
12208                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12209                        inner,
12210                        out,
12211                    )
12212                }
12213                Self::InsufficientSnapshotHistory(inner) => {
12214                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12215                        inner,
12216                        out,
12217                    )
12218                }
12219                Self::InvalidAddress(inner) => {
12220                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12221                        inner,
12222                        out,
12223                    )
12224                }
12225                Self::InvalidArgs(inner) => {
12226                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12227                        inner,
12228                        out,
12229                    )
12230                }
12231                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12232                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12233                        inner,
12234                        out,
12235                    )
12236                }
12237                Self::InvalidInitialization(inner) => {
12238                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12239                        inner,
12240                        out,
12241                    )
12242                }
12243                Self::InvalidMaxStateHistory(inner) => {
12244                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12245                        inner,
12246                        out,
12247                    )
12248                }
12249                Self::InvalidProof(inner) => {
12250                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12251                        inner,
12252                        out,
12253                    )
12254                }
12255                Self::NoChangeRequired(inner) => {
12256                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12257                        inner,
12258                        out,
12259                    )
12260                }
12261                Self::NotInitializing(inner) => {
12262                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12263                        inner,
12264                        out,
12265                    )
12266                }
12267                Self::OutdatedState(inner) => {
12268                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12269                        inner,
12270                        out,
12271                    )
12272                }
12273                Self::OwnableInvalidOwner(inner) => {
12274                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12275                        inner,
12276                        out,
12277                    )
12278                }
12279                Self::OwnableUnauthorizedAccount(inner) => {
12280                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12281                        inner,
12282                        out,
12283                    )
12284                }
12285                Self::ProverNotPermissioned(inner) => {
12286                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12287                        inner,
12288                        out,
12289                    )
12290                }
12291                Self::UUPSUnauthorizedCallContext(inner) => {
12292                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12293                        inner,
12294                        out,
12295                    )
12296                }
12297                Self::UUPSUnsupportedProxiableUUID(inner) => {
12298                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12299                        inner,
12300                        out,
12301                    )
12302                }
12303                Self::WrongStakeTableUsed(inner) => {
12304                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12305                        inner,
12306                        out,
12307                    )
12308                }
12309            }
12310        }
12311    }
12312    ///Container for all the [`LightClientMock`](self) events.
12313    #[derive(Debug, PartialEq, Eq, Hash)]
12314    pub enum LightClientMockEvents {
12315        #[allow(missing_docs)]
12316        Initialized(Initialized),
12317        #[allow(missing_docs)]
12318        NewState(NewState),
12319        #[allow(missing_docs)]
12320        OwnershipTransferred(OwnershipTransferred),
12321        #[allow(missing_docs)]
12322        PermissionedProverNotRequired(PermissionedProverNotRequired),
12323        #[allow(missing_docs)]
12324        PermissionedProverRequired(PermissionedProverRequired),
12325        #[allow(missing_docs)]
12326        Upgrade(Upgrade),
12327        #[allow(missing_docs)]
12328        Upgraded(Upgraded),
12329    }
12330    #[automatically_derived]
12331    impl LightClientMockEvents {
12332        /// All the selectors of this enum.
12333        ///
12334        /// Note that the selectors might not be in the same order as the variants.
12335        /// No guarantees are made about the order of the selectors.
12336        ///
12337        /// Prefer using `SolInterface` methods instead.
12338        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12339            [
12340                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12341                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12342                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12343            ],
12344            [
12345                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12346                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12347                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12348            ],
12349            [
12350                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12351                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12352                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12353            ],
12354            [
12355                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12356                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12357                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12358            ],
12359            [
12360                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12361                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12362                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12363            ],
12364            [
12365                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12366                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12367                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12368            ],
12369            [
12370                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12371                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12372                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12373            ],
12374        ];
12375    }
12376    #[automatically_derived]
12377    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
12378        const NAME: &'static str = "LightClientMockEvents";
12379        const COUNT: usize = 7usize;
12380        fn decode_raw_log(
12381            topics: &[alloy_sol_types::Word],
12382            data: &[u8],
12383            validate: bool,
12384        ) -> alloy_sol_types::Result<Self> {
12385            match topics.first().copied() {
12386                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12387                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12388                            topics,
12389                            data,
12390                            validate,
12391                        )
12392                        .map(Self::Initialized)
12393                }
12394                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12395                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
12396                            topics,
12397                            data,
12398                            validate,
12399                        )
12400                        .map(Self::NewState)
12401                }
12402                Some(
12403                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12404                ) => {
12405                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12406                            topics,
12407                            data,
12408                            validate,
12409                        )
12410                        .map(Self::OwnershipTransferred)
12411                }
12412                Some(
12413                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12414                ) => {
12415                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12416                            topics,
12417                            data,
12418                            validate,
12419                        )
12420                        .map(Self::PermissionedProverNotRequired)
12421                }
12422                Some(
12423                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12424                ) => {
12425                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12426                            topics,
12427                            data,
12428                            validate,
12429                        )
12430                        .map(Self::PermissionedProverRequired)
12431                }
12432                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12433                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
12434                            topics,
12435                            data,
12436                            validate,
12437                        )
12438                        .map(Self::Upgrade)
12439                }
12440                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12441                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
12442                            topics,
12443                            data,
12444                            validate,
12445                        )
12446                        .map(Self::Upgraded)
12447                }
12448                _ => {
12449                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12450                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12451                        log: alloy_sol_types::private::Box::new(
12452                            alloy_sol_types::private::LogData::new_unchecked(
12453                                topics.to_vec(),
12454                                data.to_vec().into(),
12455                            ),
12456                        ),
12457                    })
12458                }
12459            }
12460        }
12461    }
12462    #[automatically_derived]
12463    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
12464        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12465            match self {
12466                Self::Initialized(inner) => {
12467                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12468                }
12469                Self::NewState(inner) => {
12470                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12471                }
12472                Self::OwnershipTransferred(inner) => {
12473                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12474                }
12475                Self::PermissionedProverNotRequired(inner) => {
12476                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12477                }
12478                Self::PermissionedProverRequired(inner) => {
12479                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12480                }
12481                Self::Upgrade(inner) => {
12482                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12483                }
12484                Self::Upgraded(inner) => {
12485                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12486                }
12487            }
12488        }
12489        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12490            match self {
12491                Self::Initialized(inner) => {
12492                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12493                }
12494                Self::NewState(inner) => {
12495                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12496                }
12497                Self::OwnershipTransferred(inner) => {
12498                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12499                }
12500                Self::PermissionedProverNotRequired(inner) => {
12501                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12502                }
12503                Self::PermissionedProverRequired(inner) => {
12504                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12505                }
12506                Self::Upgrade(inner) => {
12507                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12508                }
12509                Self::Upgraded(inner) => {
12510                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12511                }
12512            }
12513        }
12514    }
12515    use alloy::contract as alloy_contract;
12516    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
12517
12518See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
12519    #[inline]
12520    pub const fn new<
12521        T: alloy_contract::private::Transport + ::core::clone::Clone,
12522        P: alloy_contract::private::Provider<T, N>,
12523        N: alloy_contract::private::Network,
12524    >(
12525        address: alloy_sol_types::private::Address,
12526        provider: P,
12527    ) -> LightClientMockInstance<T, P, N> {
12528        LightClientMockInstance::<T, P, N>::new(address, provider)
12529    }
12530    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12531
12532Returns a new instance of the contract, if the deployment was successful.
12533
12534For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12535    #[inline]
12536    pub fn deploy<
12537        T: alloy_contract::private::Transport + ::core::clone::Clone,
12538        P: alloy_contract::private::Provider<T, N>,
12539        N: alloy_contract::private::Network,
12540    >(
12541        provider: P,
12542    ) -> impl ::core::future::Future<
12543        Output = alloy_contract::Result<LightClientMockInstance<T, P, N>>,
12544    > {
12545        LightClientMockInstance::<T, P, N>::deploy(provider)
12546    }
12547    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12548and constructor arguments, if any.
12549
12550This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12551the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12552    #[inline]
12553    pub fn deploy_builder<
12554        T: alloy_contract::private::Transport + ::core::clone::Clone,
12555        P: alloy_contract::private::Provider<T, N>,
12556        N: alloy_contract::private::Network,
12557    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
12558        LightClientMockInstance::<T, P, N>::deploy_builder(provider)
12559    }
12560    /**A [`LightClientMock`](self) instance.
12561
12562Contains type-safe methods for interacting with an on-chain instance of the
12563[`LightClientMock`](self) contract located at a given `address`, using a given
12564provider `P`.
12565
12566If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12567documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12568be used to deploy a new instance of the contract.
12569
12570See the [module-level documentation](self) for all the available methods.*/
12571    #[derive(Clone)]
12572    pub struct LightClientMockInstance<T, P, N = alloy_contract::private::Ethereum> {
12573        address: alloy_sol_types::private::Address,
12574        provider: P,
12575        _network_transport: ::core::marker::PhantomData<(N, T)>,
12576    }
12577    #[automatically_derived]
12578    impl<T, P, N> ::core::fmt::Debug for LightClientMockInstance<T, P, N> {
12579        #[inline]
12580        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12581            f.debug_tuple("LightClientMockInstance").field(&self.address).finish()
12582        }
12583    }
12584    /// Instantiation and getters/setters.
12585    #[automatically_derived]
12586    impl<
12587        T: alloy_contract::private::Transport + ::core::clone::Clone,
12588        P: alloy_contract::private::Provider<T, N>,
12589        N: alloy_contract::private::Network,
12590    > LightClientMockInstance<T, P, N> {
12591        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
12592
12593See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
12594        #[inline]
12595        pub const fn new(
12596            address: alloy_sol_types::private::Address,
12597            provider: P,
12598        ) -> Self {
12599            Self {
12600                address,
12601                provider,
12602                _network_transport: ::core::marker::PhantomData,
12603            }
12604        }
12605        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12606
12607Returns a new instance of the contract, if the deployment was successful.
12608
12609For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12610        #[inline]
12611        pub async fn deploy(
12612            provider: P,
12613        ) -> alloy_contract::Result<LightClientMockInstance<T, P, N>> {
12614            let call_builder = Self::deploy_builder(provider);
12615            let contract_address = call_builder.deploy().await?;
12616            Ok(Self::new(contract_address, call_builder.provider))
12617        }
12618        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12619and constructor arguments, if any.
12620
12621This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12622the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12623        #[inline]
12624        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
12625            alloy_contract::RawCallBuilder::new_raw_deploy(
12626                provider,
12627                ::core::clone::Clone::clone(&BYTECODE),
12628            )
12629        }
12630        /// Returns a reference to the address.
12631        #[inline]
12632        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12633            &self.address
12634        }
12635        /// Sets the address.
12636        #[inline]
12637        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12638            self.address = address;
12639        }
12640        /// Sets the address and returns `self`.
12641        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12642            self.set_address(address);
12643            self
12644        }
12645        /// Returns a reference to the provider.
12646        #[inline]
12647        pub const fn provider(&self) -> &P {
12648            &self.provider
12649        }
12650    }
12651    impl<T, P: ::core::clone::Clone, N> LightClientMockInstance<T, &P, N> {
12652        /// Clones the provider and returns a new instance with the cloned provider.
12653        #[inline]
12654        pub fn with_cloned_provider(self) -> LightClientMockInstance<T, P, N> {
12655            LightClientMockInstance {
12656                address: self.address,
12657                provider: ::core::clone::Clone::clone(&self.provider),
12658                _network_transport: ::core::marker::PhantomData,
12659            }
12660        }
12661    }
12662    /// Function calls.
12663    #[automatically_derived]
12664    impl<
12665        T: alloy_contract::private::Transport + ::core::clone::Clone,
12666        P: alloy_contract::private::Provider<T, N>,
12667        N: alloy_contract::private::Network,
12668    > LightClientMockInstance<T, P, N> {
12669        /// Creates a new call builder using this contract instance's provider and address.
12670        ///
12671        /// Note that the call can be any function call, not just those defined in this
12672        /// contract. Prefer using the other methods for building type-safe contract calls.
12673        pub fn call_builder<C: alloy_sol_types::SolCall>(
12674            &self,
12675            call: &C,
12676        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
12677            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12678        }
12679        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12680        pub fn UPGRADE_INTERFACE_VERSION(
12681            &self,
12682        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
12683            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
12684        }
12685        ///Creates a new call builder for the [`_getVk`] function.
12686        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
12687            self.call_builder(&_getVkCall {})
12688        }
12689        ///Creates a new call builder for the [`currentBlockNumber`] function.
12690        pub fn currentBlockNumber(
12691            &self,
12692        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
12693            self.call_builder(&currentBlockNumberCall {})
12694        }
12695        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
12696        pub fn disablePermissionedProverMode(
12697            &self,
12698        ) -> alloy_contract::SolCallBuilder<
12699            T,
12700            &P,
12701            disablePermissionedProverModeCall,
12702            N,
12703        > {
12704            self.call_builder(
12705                &disablePermissionedProverModeCall {
12706                },
12707            )
12708        }
12709        ///Creates a new call builder for the [`finalizedState`] function.
12710        pub fn finalizedState(
12711            &self,
12712        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
12713            self.call_builder(&finalizedStateCall {})
12714        }
12715        ///Creates a new call builder for the [`genesisStakeTableState`] function.
12716        pub fn genesisStakeTableState(
12717            &self,
12718        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
12719            self.call_builder(&genesisStakeTableStateCall {})
12720        }
12721        ///Creates a new call builder for the [`genesisState`] function.
12722        pub fn genesisState(
12723            &self,
12724        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
12725            self.call_builder(&genesisStateCall {})
12726        }
12727        ///Creates a new call builder for the [`getHotShotCommitment`] function.
12728        pub fn getHotShotCommitment(
12729            &self,
12730            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
12731        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
12732            self.call_builder(
12733                &getHotShotCommitmentCall {
12734                    hotShotBlockHeight,
12735                },
12736            )
12737        }
12738        ///Creates a new call builder for the [`getStateHistoryCount`] function.
12739        pub fn getStateHistoryCount(
12740            &self,
12741        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
12742            self.call_builder(&getStateHistoryCountCall {})
12743        }
12744        ///Creates a new call builder for the [`getVersion`] function.
12745        pub fn getVersion(
12746            &self,
12747        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
12748            self.call_builder(&getVersionCall {})
12749        }
12750        ///Creates a new call builder for the [`initialize`] function.
12751        pub fn initialize(
12752            &self,
12753            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12754            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12755            _stateHistoryRetentionPeriod: u32,
12756            owner: alloy::sol_types::private::Address,
12757        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
12758            self.call_builder(
12759                &initializeCall {
12760                    _genesis,
12761                    _genesisStakeTableState,
12762                    _stateHistoryRetentionPeriod,
12763                    owner,
12764                },
12765            )
12766        }
12767        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
12768        pub fn isPermissionedProverEnabled(
12769            &self,
12770        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
12771            self.call_builder(&isPermissionedProverEnabledCall {})
12772        }
12773        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
12774        pub fn lagOverEscapeHatchThreshold(
12775            &self,
12776            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
12777            threshold: alloy::sol_types::private::primitives::aliases::U256,
12778        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
12779            self.call_builder(
12780                &lagOverEscapeHatchThresholdCall {
12781                    blockNumber,
12782                    threshold,
12783                },
12784            )
12785        }
12786        ///Creates a new call builder for the [`newFinalizedState`] function.
12787        pub fn newFinalizedState(
12788            &self,
12789            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12790            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12791        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
12792            self.call_builder(
12793                &newFinalizedStateCall {
12794                    newState,
12795                    proof,
12796                },
12797            )
12798        }
12799        ///Creates a new call builder for the [`owner`] function.
12800        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
12801            self.call_builder(&ownerCall {})
12802        }
12803        ///Creates a new call builder for the [`permissionedProver`] function.
12804        pub fn permissionedProver(
12805            &self,
12806        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
12807            self.call_builder(&permissionedProverCall {})
12808        }
12809        ///Creates a new call builder for the [`proxiableUUID`] function.
12810        pub fn proxiableUUID(
12811            &self,
12812        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
12813            self.call_builder(&proxiableUUIDCall {})
12814        }
12815        ///Creates a new call builder for the [`renounceOwnership`] function.
12816        pub fn renounceOwnership(
12817            &self,
12818        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
12819            self.call_builder(&renounceOwnershipCall {})
12820        }
12821        ///Creates a new call builder for the [`setFinalizedState`] function.
12822        pub fn setFinalizedState(
12823            &self,
12824            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12825        ) -> alloy_contract::SolCallBuilder<T, &P, setFinalizedStateCall, N> {
12826            self.call_builder(&setFinalizedStateCall { state })
12827        }
12828        ///Creates a new call builder for the [`setHotShotDownSince`] function.
12829        pub fn setHotShotDownSince(
12830            &self,
12831            l1Height: alloy::sol_types::private::primitives::aliases::U256,
12832        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotDownSinceCall, N> {
12833            self.call_builder(
12834                &setHotShotDownSinceCall {
12835                    l1Height,
12836                },
12837            )
12838        }
12839        ///Creates a new call builder for the [`setHotShotUp`] function.
12840        pub fn setHotShotUp(
12841            &self,
12842        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotUpCall, N> {
12843            self.call_builder(&setHotShotUpCall {})
12844        }
12845        ///Creates a new call builder for the [`setPermissionedProver`] function.
12846        pub fn setPermissionedProver(
12847            &self,
12848            prover: alloy::sol_types::private::Address,
12849        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
12850            self.call_builder(
12851                &setPermissionedProverCall {
12852                    prover,
12853                },
12854            )
12855        }
12856        ///Creates a new call builder for the [`setStateHistory`] function.
12857        pub fn setStateHistory(
12858            &self,
12859            _stateHistoryCommitments: alloy::sol_types::private::Vec<
12860                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
12861            >,
12862        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryCall, N> {
12863            self.call_builder(
12864                &setStateHistoryCall {
12865                    _stateHistoryCommitments,
12866                },
12867            )
12868        }
12869        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
12870        pub fn setstateHistoryRetentionPeriod(
12871            &self,
12872            historySeconds: u32,
12873        ) -> alloy_contract::SolCallBuilder<
12874            T,
12875            &P,
12876            setstateHistoryRetentionPeriodCall,
12877            N,
12878        > {
12879            self.call_builder(
12880                &setstateHistoryRetentionPeriodCall {
12881                    historySeconds,
12882                },
12883            )
12884        }
12885        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
12886        pub fn stateHistoryCommitments(
12887            &self,
12888            _0: alloy::sol_types::private::primitives::aliases::U256,
12889        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
12890            self.call_builder(&stateHistoryCommitmentsCall { _0 })
12891        }
12892        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
12893        pub fn stateHistoryFirstIndex(
12894            &self,
12895        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
12896            self.call_builder(&stateHistoryFirstIndexCall {})
12897        }
12898        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
12899        pub fn stateHistoryRetentionPeriod(
12900            &self,
12901        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
12902            self.call_builder(&stateHistoryRetentionPeriodCall {})
12903        }
12904        ///Creates a new call builder for the [`transferOwnership`] function.
12905        pub fn transferOwnership(
12906            &self,
12907            newOwner: alloy::sol_types::private::Address,
12908        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
12909            self.call_builder(&transferOwnershipCall { newOwner })
12910        }
12911        ///Creates a new call builder for the [`upgradeToAndCall`] function.
12912        pub fn upgradeToAndCall(
12913            &self,
12914            newImplementation: alloy::sol_types::private::Address,
12915            data: alloy::sol_types::private::Bytes,
12916        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
12917            self.call_builder(
12918                &upgradeToAndCallCall {
12919                    newImplementation,
12920                    data,
12921                },
12922            )
12923        }
12924    }
12925    /// Event filters.
12926    #[automatically_derived]
12927    impl<
12928        T: alloy_contract::private::Transport + ::core::clone::Clone,
12929        P: alloy_contract::private::Provider<T, N>,
12930        N: alloy_contract::private::Network,
12931    > LightClientMockInstance<T, P, N> {
12932        /// Creates a new event filter using this contract instance's provider and address.
12933        ///
12934        /// Note that the type can be any event, not just those defined in this contract.
12935        /// Prefer using the other methods for building type-safe event filters.
12936        pub fn event_filter<E: alloy_sol_types::SolEvent>(
12937            &self,
12938        ) -> alloy_contract::Event<T, &P, E, N> {
12939            alloy_contract::Event::new_sol(&self.provider, &self.address)
12940        }
12941        ///Creates a new event filter for the [`Initialized`] event.
12942        pub fn Initialized_filter(
12943            &self,
12944        ) -> alloy_contract::Event<T, &P, Initialized, N> {
12945            self.event_filter::<Initialized>()
12946        }
12947        ///Creates a new event filter for the [`NewState`] event.
12948        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
12949            self.event_filter::<NewState>()
12950        }
12951        ///Creates a new event filter for the [`OwnershipTransferred`] event.
12952        pub fn OwnershipTransferred_filter(
12953            &self,
12954        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
12955            self.event_filter::<OwnershipTransferred>()
12956        }
12957        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
12958        pub fn PermissionedProverNotRequired_filter(
12959            &self,
12960        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
12961            self.event_filter::<PermissionedProverNotRequired>()
12962        }
12963        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
12964        pub fn PermissionedProverRequired_filter(
12965            &self,
12966        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
12967            self.event_filter::<PermissionedProverRequired>()
12968        }
12969        ///Creates a new event filter for the [`Upgrade`] event.
12970        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
12971            self.event_filter::<Upgrade>()
12972        }
12973        ///Creates a new event filter for the [`Upgraded`] event.
12974        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
12975            self.event_filter::<Upgraded>()
12976        }
12977    }
12978}