hotshot_contract_adapter/bindings/
lightclient.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 alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    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; }
559    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; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    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; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "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)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    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; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "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)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885/**
1886
1887Generated by the following Solidity interface...
1888```solidity
1889library BN254 {
1890    type BaseField is uint256;
1891    type ScalarField is uint256;
1892    struct G1Point {
1893        BaseField x;
1894        BaseField y;
1895    }
1896}
1897
1898library IPlonkVerifier {
1899    struct PlonkProof {
1900        BN254.G1Point wire0;
1901        BN254.G1Point wire1;
1902        BN254.G1Point wire2;
1903        BN254.G1Point wire3;
1904        BN254.G1Point wire4;
1905        BN254.G1Point prodPerm;
1906        BN254.G1Point split0;
1907        BN254.G1Point split1;
1908        BN254.G1Point split2;
1909        BN254.G1Point split3;
1910        BN254.G1Point split4;
1911        BN254.G1Point zeta;
1912        BN254.G1Point zetaOmega;
1913        BN254.ScalarField wireEval0;
1914        BN254.ScalarField wireEval1;
1915        BN254.ScalarField wireEval2;
1916        BN254.ScalarField wireEval3;
1917        BN254.ScalarField wireEval4;
1918        BN254.ScalarField sigmaEval0;
1919        BN254.ScalarField sigmaEval1;
1920        BN254.ScalarField sigmaEval2;
1921        BN254.ScalarField sigmaEval3;
1922        BN254.ScalarField prodPermZetaOmegaEval;
1923    }
1924    struct VerifyingKey {
1925        uint256 domainSize;
1926        uint256 numInputs;
1927        BN254.G1Point sigma0;
1928        BN254.G1Point sigma1;
1929        BN254.G1Point sigma2;
1930        BN254.G1Point sigma3;
1931        BN254.G1Point sigma4;
1932        BN254.G1Point q1;
1933        BN254.G1Point q2;
1934        BN254.G1Point q3;
1935        BN254.G1Point q4;
1936        BN254.G1Point qM12;
1937        BN254.G1Point qM34;
1938        BN254.G1Point qO;
1939        BN254.G1Point qC;
1940        BN254.G1Point qH1;
1941        BN254.G1Point qH2;
1942        BN254.G1Point qH3;
1943        BN254.G1Point qH4;
1944        BN254.G1Point qEcc;
1945        bytes32 g2LSB;
1946        bytes32 g2MSB;
1947    }
1948}
1949
1950interface LightClient {
1951    struct LightClientState {
1952        uint64 viewNum;
1953        uint64 blockHeight;
1954        BN254.ScalarField blockCommRoot;
1955    }
1956    struct StakeTableState {
1957        uint256 threshold;
1958        BN254.ScalarField blsKeyComm;
1959        BN254.ScalarField schnorrKeyComm;
1960        BN254.ScalarField amountComm;
1961    }
1962
1963    error AddressEmptyCode(address target);
1964    error ERC1967InvalidImplementation(address implementation);
1965    error ERC1967NonPayable();
1966    error FailedInnerCall();
1967    error InsufficientSnapshotHistory();
1968    error InvalidAddress();
1969    error InvalidArgs();
1970    error InvalidHotShotBlockForCommitmentCheck();
1971    error InvalidInitialization();
1972    error InvalidMaxStateHistory();
1973    error InvalidProof();
1974    error NoChangeRequired();
1975    error NotInitializing();
1976    error OutdatedState();
1977    error OwnableInvalidOwner(address owner);
1978    error OwnableUnauthorizedAccount(address account);
1979    error ProverNotPermissioned();
1980    error UUPSUnauthorizedCallContext();
1981    error UUPSUnsupportedProxiableUUID(bytes32 slot);
1982    error WrongStakeTableUsed();
1983
1984    event Initialized(uint64 version);
1985    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
1986    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
1987    event PermissionedProverNotRequired();
1988    event PermissionedProverRequired(address permissionedProver);
1989    event Upgrade(address implementation);
1990    event Upgraded(address indexed implementation);
1991
1992    constructor();
1993
1994    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
1995    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
1996    function currentBlockNumber() external view returns (uint256);
1997    function disablePermissionedProverMode() external;
1998    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
1999    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2000    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2001    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2002    function getStateHistoryCount() external view returns (uint256);
2003    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2004    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2005    function isPermissionedProverEnabled() external view returns (bool);
2006    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2007    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2008    function owner() external view returns (address);
2009    function permissionedProver() external view returns (address);
2010    function proxiableUUID() external view returns (bytes32);
2011    function renounceOwnership() external;
2012    function setPermissionedProver(address prover) external;
2013    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2014    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2015    function stateHistoryFirstIndex() external view returns (uint64);
2016    function stateHistoryRetentionPeriod() external view returns (uint32);
2017    function transferOwnership(address newOwner) external;
2018    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2019}
2020```
2021
2022...which was generated by the following JSON ABI:
2023```json
2024[
2025  {
2026    "type": "constructor",
2027    "inputs": [],
2028    "stateMutability": "nonpayable"
2029  },
2030  {
2031    "type": "function",
2032    "name": "UPGRADE_INTERFACE_VERSION",
2033    "inputs": [],
2034    "outputs": [
2035      {
2036        "name": "",
2037        "type": "string",
2038        "internalType": "string"
2039      }
2040    ],
2041    "stateMutability": "view"
2042  },
2043  {
2044    "type": "function",
2045    "name": "_getVk",
2046    "inputs": [],
2047    "outputs": [
2048      {
2049        "name": "vk",
2050        "type": "tuple",
2051        "internalType": "struct IPlonkVerifier.VerifyingKey",
2052        "components": [
2053          {
2054            "name": "domainSize",
2055            "type": "uint256",
2056            "internalType": "uint256"
2057          },
2058          {
2059            "name": "numInputs",
2060            "type": "uint256",
2061            "internalType": "uint256"
2062          },
2063          {
2064            "name": "sigma0",
2065            "type": "tuple",
2066            "internalType": "struct BN254.G1Point",
2067            "components": [
2068              {
2069                "name": "x",
2070                "type": "uint256",
2071                "internalType": "BN254.BaseField"
2072              },
2073              {
2074                "name": "y",
2075                "type": "uint256",
2076                "internalType": "BN254.BaseField"
2077              }
2078            ]
2079          },
2080          {
2081            "name": "sigma1",
2082            "type": "tuple",
2083            "internalType": "struct BN254.G1Point",
2084            "components": [
2085              {
2086                "name": "x",
2087                "type": "uint256",
2088                "internalType": "BN254.BaseField"
2089              },
2090              {
2091                "name": "y",
2092                "type": "uint256",
2093                "internalType": "BN254.BaseField"
2094              }
2095            ]
2096          },
2097          {
2098            "name": "sigma2",
2099            "type": "tuple",
2100            "internalType": "struct BN254.G1Point",
2101            "components": [
2102              {
2103                "name": "x",
2104                "type": "uint256",
2105                "internalType": "BN254.BaseField"
2106              },
2107              {
2108                "name": "y",
2109                "type": "uint256",
2110                "internalType": "BN254.BaseField"
2111              }
2112            ]
2113          },
2114          {
2115            "name": "sigma3",
2116            "type": "tuple",
2117            "internalType": "struct BN254.G1Point",
2118            "components": [
2119              {
2120                "name": "x",
2121                "type": "uint256",
2122                "internalType": "BN254.BaseField"
2123              },
2124              {
2125                "name": "y",
2126                "type": "uint256",
2127                "internalType": "BN254.BaseField"
2128              }
2129            ]
2130          },
2131          {
2132            "name": "sigma4",
2133            "type": "tuple",
2134            "internalType": "struct BN254.G1Point",
2135            "components": [
2136              {
2137                "name": "x",
2138                "type": "uint256",
2139                "internalType": "BN254.BaseField"
2140              },
2141              {
2142                "name": "y",
2143                "type": "uint256",
2144                "internalType": "BN254.BaseField"
2145              }
2146            ]
2147          },
2148          {
2149            "name": "q1",
2150            "type": "tuple",
2151            "internalType": "struct BN254.G1Point",
2152            "components": [
2153              {
2154                "name": "x",
2155                "type": "uint256",
2156                "internalType": "BN254.BaseField"
2157              },
2158              {
2159                "name": "y",
2160                "type": "uint256",
2161                "internalType": "BN254.BaseField"
2162              }
2163            ]
2164          },
2165          {
2166            "name": "q2",
2167            "type": "tuple",
2168            "internalType": "struct BN254.G1Point",
2169            "components": [
2170              {
2171                "name": "x",
2172                "type": "uint256",
2173                "internalType": "BN254.BaseField"
2174              },
2175              {
2176                "name": "y",
2177                "type": "uint256",
2178                "internalType": "BN254.BaseField"
2179              }
2180            ]
2181          },
2182          {
2183            "name": "q3",
2184            "type": "tuple",
2185            "internalType": "struct BN254.G1Point",
2186            "components": [
2187              {
2188                "name": "x",
2189                "type": "uint256",
2190                "internalType": "BN254.BaseField"
2191              },
2192              {
2193                "name": "y",
2194                "type": "uint256",
2195                "internalType": "BN254.BaseField"
2196              }
2197            ]
2198          },
2199          {
2200            "name": "q4",
2201            "type": "tuple",
2202            "internalType": "struct BN254.G1Point",
2203            "components": [
2204              {
2205                "name": "x",
2206                "type": "uint256",
2207                "internalType": "BN254.BaseField"
2208              },
2209              {
2210                "name": "y",
2211                "type": "uint256",
2212                "internalType": "BN254.BaseField"
2213              }
2214            ]
2215          },
2216          {
2217            "name": "qM12",
2218            "type": "tuple",
2219            "internalType": "struct BN254.G1Point",
2220            "components": [
2221              {
2222                "name": "x",
2223                "type": "uint256",
2224                "internalType": "BN254.BaseField"
2225              },
2226              {
2227                "name": "y",
2228                "type": "uint256",
2229                "internalType": "BN254.BaseField"
2230              }
2231            ]
2232          },
2233          {
2234            "name": "qM34",
2235            "type": "tuple",
2236            "internalType": "struct BN254.G1Point",
2237            "components": [
2238              {
2239                "name": "x",
2240                "type": "uint256",
2241                "internalType": "BN254.BaseField"
2242              },
2243              {
2244                "name": "y",
2245                "type": "uint256",
2246                "internalType": "BN254.BaseField"
2247              }
2248            ]
2249          },
2250          {
2251            "name": "qO",
2252            "type": "tuple",
2253            "internalType": "struct BN254.G1Point",
2254            "components": [
2255              {
2256                "name": "x",
2257                "type": "uint256",
2258                "internalType": "BN254.BaseField"
2259              },
2260              {
2261                "name": "y",
2262                "type": "uint256",
2263                "internalType": "BN254.BaseField"
2264              }
2265            ]
2266          },
2267          {
2268            "name": "qC",
2269            "type": "tuple",
2270            "internalType": "struct BN254.G1Point",
2271            "components": [
2272              {
2273                "name": "x",
2274                "type": "uint256",
2275                "internalType": "BN254.BaseField"
2276              },
2277              {
2278                "name": "y",
2279                "type": "uint256",
2280                "internalType": "BN254.BaseField"
2281              }
2282            ]
2283          },
2284          {
2285            "name": "qH1",
2286            "type": "tuple",
2287            "internalType": "struct BN254.G1Point",
2288            "components": [
2289              {
2290                "name": "x",
2291                "type": "uint256",
2292                "internalType": "BN254.BaseField"
2293              },
2294              {
2295                "name": "y",
2296                "type": "uint256",
2297                "internalType": "BN254.BaseField"
2298              }
2299            ]
2300          },
2301          {
2302            "name": "qH2",
2303            "type": "tuple",
2304            "internalType": "struct BN254.G1Point",
2305            "components": [
2306              {
2307                "name": "x",
2308                "type": "uint256",
2309                "internalType": "BN254.BaseField"
2310              },
2311              {
2312                "name": "y",
2313                "type": "uint256",
2314                "internalType": "BN254.BaseField"
2315              }
2316            ]
2317          },
2318          {
2319            "name": "qH3",
2320            "type": "tuple",
2321            "internalType": "struct BN254.G1Point",
2322            "components": [
2323              {
2324                "name": "x",
2325                "type": "uint256",
2326                "internalType": "BN254.BaseField"
2327              },
2328              {
2329                "name": "y",
2330                "type": "uint256",
2331                "internalType": "BN254.BaseField"
2332              }
2333            ]
2334          },
2335          {
2336            "name": "qH4",
2337            "type": "tuple",
2338            "internalType": "struct BN254.G1Point",
2339            "components": [
2340              {
2341                "name": "x",
2342                "type": "uint256",
2343                "internalType": "BN254.BaseField"
2344              },
2345              {
2346                "name": "y",
2347                "type": "uint256",
2348                "internalType": "BN254.BaseField"
2349              }
2350            ]
2351          },
2352          {
2353            "name": "qEcc",
2354            "type": "tuple",
2355            "internalType": "struct BN254.G1Point",
2356            "components": [
2357              {
2358                "name": "x",
2359                "type": "uint256",
2360                "internalType": "BN254.BaseField"
2361              },
2362              {
2363                "name": "y",
2364                "type": "uint256",
2365                "internalType": "BN254.BaseField"
2366              }
2367            ]
2368          },
2369          {
2370            "name": "g2LSB",
2371            "type": "bytes32",
2372            "internalType": "bytes32"
2373          },
2374          {
2375            "name": "g2MSB",
2376            "type": "bytes32",
2377            "internalType": "bytes32"
2378          }
2379        ]
2380      }
2381    ],
2382    "stateMutability": "pure"
2383  },
2384  {
2385    "type": "function",
2386    "name": "currentBlockNumber",
2387    "inputs": [],
2388    "outputs": [
2389      {
2390        "name": "",
2391        "type": "uint256",
2392        "internalType": "uint256"
2393      }
2394    ],
2395    "stateMutability": "view"
2396  },
2397  {
2398    "type": "function",
2399    "name": "disablePermissionedProverMode",
2400    "inputs": [],
2401    "outputs": [],
2402    "stateMutability": "nonpayable"
2403  },
2404  {
2405    "type": "function",
2406    "name": "finalizedState",
2407    "inputs": [],
2408    "outputs": [
2409      {
2410        "name": "viewNum",
2411        "type": "uint64",
2412        "internalType": "uint64"
2413      },
2414      {
2415        "name": "blockHeight",
2416        "type": "uint64",
2417        "internalType": "uint64"
2418      },
2419      {
2420        "name": "blockCommRoot",
2421        "type": "uint256",
2422        "internalType": "BN254.ScalarField"
2423      }
2424    ],
2425    "stateMutability": "view"
2426  },
2427  {
2428    "type": "function",
2429    "name": "genesisStakeTableState",
2430    "inputs": [],
2431    "outputs": [
2432      {
2433        "name": "threshold",
2434        "type": "uint256",
2435        "internalType": "uint256"
2436      },
2437      {
2438        "name": "blsKeyComm",
2439        "type": "uint256",
2440        "internalType": "BN254.ScalarField"
2441      },
2442      {
2443        "name": "schnorrKeyComm",
2444        "type": "uint256",
2445        "internalType": "BN254.ScalarField"
2446      },
2447      {
2448        "name": "amountComm",
2449        "type": "uint256",
2450        "internalType": "BN254.ScalarField"
2451      }
2452    ],
2453    "stateMutability": "view"
2454  },
2455  {
2456    "type": "function",
2457    "name": "genesisState",
2458    "inputs": [],
2459    "outputs": [
2460      {
2461        "name": "viewNum",
2462        "type": "uint64",
2463        "internalType": "uint64"
2464      },
2465      {
2466        "name": "blockHeight",
2467        "type": "uint64",
2468        "internalType": "uint64"
2469      },
2470      {
2471        "name": "blockCommRoot",
2472        "type": "uint256",
2473        "internalType": "BN254.ScalarField"
2474      }
2475    ],
2476    "stateMutability": "view"
2477  },
2478  {
2479    "type": "function",
2480    "name": "getHotShotCommitment",
2481    "inputs": [
2482      {
2483        "name": "hotShotBlockHeight",
2484        "type": "uint256",
2485        "internalType": "uint256"
2486      }
2487    ],
2488    "outputs": [
2489      {
2490        "name": "hotShotBlockCommRoot",
2491        "type": "uint256",
2492        "internalType": "BN254.ScalarField"
2493      },
2494      {
2495        "name": "hotshotBlockHeight",
2496        "type": "uint64",
2497        "internalType": "uint64"
2498      }
2499    ],
2500    "stateMutability": "view"
2501  },
2502  {
2503    "type": "function",
2504    "name": "getStateHistoryCount",
2505    "inputs": [],
2506    "outputs": [
2507      {
2508        "name": "",
2509        "type": "uint256",
2510        "internalType": "uint256"
2511      }
2512    ],
2513    "stateMutability": "view"
2514  },
2515  {
2516    "type": "function",
2517    "name": "getVersion",
2518    "inputs": [],
2519    "outputs": [
2520      {
2521        "name": "majorVersion",
2522        "type": "uint8",
2523        "internalType": "uint8"
2524      },
2525      {
2526        "name": "minorVersion",
2527        "type": "uint8",
2528        "internalType": "uint8"
2529      },
2530      {
2531        "name": "patchVersion",
2532        "type": "uint8",
2533        "internalType": "uint8"
2534      }
2535    ],
2536    "stateMutability": "pure"
2537  },
2538  {
2539    "type": "function",
2540    "name": "initialize",
2541    "inputs": [
2542      {
2543        "name": "_genesis",
2544        "type": "tuple",
2545        "internalType": "struct LightClient.LightClientState",
2546        "components": [
2547          {
2548            "name": "viewNum",
2549            "type": "uint64",
2550            "internalType": "uint64"
2551          },
2552          {
2553            "name": "blockHeight",
2554            "type": "uint64",
2555            "internalType": "uint64"
2556          },
2557          {
2558            "name": "blockCommRoot",
2559            "type": "uint256",
2560            "internalType": "BN254.ScalarField"
2561          }
2562        ]
2563      },
2564      {
2565        "name": "_genesisStakeTableState",
2566        "type": "tuple",
2567        "internalType": "struct LightClient.StakeTableState",
2568        "components": [
2569          {
2570            "name": "threshold",
2571            "type": "uint256",
2572            "internalType": "uint256"
2573          },
2574          {
2575            "name": "blsKeyComm",
2576            "type": "uint256",
2577            "internalType": "BN254.ScalarField"
2578          },
2579          {
2580            "name": "schnorrKeyComm",
2581            "type": "uint256",
2582            "internalType": "BN254.ScalarField"
2583          },
2584          {
2585            "name": "amountComm",
2586            "type": "uint256",
2587            "internalType": "BN254.ScalarField"
2588          }
2589        ]
2590      },
2591      {
2592        "name": "_stateHistoryRetentionPeriod",
2593        "type": "uint32",
2594        "internalType": "uint32"
2595      },
2596      {
2597        "name": "owner",
2598        "type": "address",
2599        "internalType": "address"
2600      }
2601    ],
2602    "outputs": [],
2603    "stateMutability": "nonpayable"
2604  },
2605  {
2606    "type": "function",
2607    "name": "isPermissionedProverEnabled",
2608    "inputs": [],
2609    "outputs": [
2610      {
2611        "name": "",
2612        "type": "bool",
2613        "internalType": "bool"
2614      }
2615    ],
2616    "stateMutability": "view"
2617  },
2618  {
2619    "type": "function",
2620    "name": "lagOverEscapeHatchThreshold",
2621    "inputs": [
2622      {
2623        "name": "blockNumber",
2624        "type": "uint256",
2625        "internalType": "uint256"
2626      },
2627      {
2628        "name": "blockThreshold",
2629        "type": "uint256",
2630        "internalType": "uint256"
2631      }
2632    ],
2633    "outputs": [
2634      {
2635        "name": "",
2636        "type": "bool",
2637        "internalType": "bool"
2638      }
2639    ],
2640    "stateMutability": "view"
2641  },
2642  {
2643    "type": "function",
2644    "name": "newFinalizedState",
2645    "inputs": [
2646      {
2647        "name": "newState",
2648        "type": "tuple",
2649        "internalType": "struct LightClient.LightClientState",
2650        "components": [
2651          {
2652            "name": "viewNum",
2653            "type": "uint64",
2654            "internalType": "uint64"
2655          },
2656          {
2657            "name": "blockHeight",
2658            "type": "uint64",
2659            "internalType": "uint64"
2660          },
2661          {
2662            "name": "blockCommRoot",
2663            "type": "uint256",
2664            "internalType": "BN254.ScalarField"
2665          }
2666        ]
2667      },
2668      {
2669        "name": "proof",
2670        "type": "tuple",
2671        "internalType": "struct IPlonkVerifier.PlonkProof",
2672        "components": [
2673          {
2674            "name": "wire0",
2675            "type": "tuple",
2676            "internalType": "struct BN254.G1Point",
2677            "components": [
2678              {
2679                "name": "x",
2680                "type": "uint256",
2681                "internalType": "BN254.BaseField"
2682              },
2683              {
2684                "name": "y",
2685                "type": "uint256",
2686                "internalType": "BN254.BaseField"
2687              }
2688            ]
2689          },
2690          {
2691            "name": "wire1",
2692            "type": "tuple",
2693            "internalType": "struct BN254.G1Point",
2694            "components": [
2695              {
2696                "name": "x",
2697                "type": "uint256",
2698                "internalType": "BN254.BaseField"
2699              },
2700              {
2701                "name": "y",
2702                "type": "uint256",
2703                "internalType": "BN254.BaseField"
2704              }
2705            ]
2706          },
2707          {
2708            "name": "wire2",
2709            "type": "tuple",
2710            "internalType": "struct BN254.G1Point",
2711            "components": [
2712              {
2713                "name": "x",
2714                "type": "uint256",
2715                "internalType": "BN254.BaseField"
2716              },
2717              {
2718                "name": "y",
2719                "type": "uint256",
2720                "internalType": "BN254.BaseField"
2721              }
2722            ]
2723          },
2724          {
2725            "name": "wire3",
2726            "type": "tuple",
2727            "internalType": "struct BN254.G1Point",
2728            "components": [
2729              {
2730                "name": "x",
2731                "type": "uint256",
2732                "internalType": "BN254.BaseField"
2733              },
2734              {
2735                "name": "y",
2736                "type": "uint256",
2737                "internalType": "BN254.BaseField"
2738              }
2739            ]
2740          },
2741          {
2742            "name": "wire4",
2743            "type": "tuple",
2744            "internalType": "struct BN254.G1Point",
2745            "components": [
2746              {
2747                "name": "x",
2748                "type": "uint256",
2749                "internalType": "BN254.BaseField"
2750              },
2751              {
2752                "name": "y",
2753                "type": "uint256",
2754                "internalType": "BN254.BaseField"
2755              }
2756            ]
2757          },
2758          {
2759            "name": "prodPerm",
2760            "type": "tuple",
2761            "internalType": "struct BN254.G1Point",
2762            "components": [
2763              {
2764                "name": "x",
2765                "type": "uint256",
2766                "internalType": "BN254.BaseField"
2767              },
2768              {
2769                "name": "y",
2770                "type": "uint256",
2771                "internalType": "BN254.BaseField"
2772              }
2773            ]
2774          },
2775          {
2776            "name": "split0",
2777            "type": "tuple",
2778            "internalType": "struct BN254.G1Point",
2779            "components": [
2780              {
2781                "name": "x",
2782                "type": "uint256",
2783                "internalType": "BN254.BaseField"
2784              },
2785              {
2786                "name": "y",
2787                "type": "uint256",
2788                "internalType": "BN254.BaseField"
2789              }
2790            ]
2791          },
2792          {
2793            "name": "split1",
2794            "type": "tuple",
2795            "internalType": "struct BN254.G1Point",
2796            "components": [
2797              {
2798                "name": "x",
2799                "type": "uint256",
2800                "internalType": "BN254.BaseField"
2801              },
2802              {
2803                "name": "y",
2804                "type": "uint256",
2805                "internalType": "BN254.BaseField"
2806              }
2807            ]
2808          },
2809          {
2810            "name": "split2",
2811            "type": "tuple",
2812            "internalType": "struct BN254.G1Point",
2813            "components": [
2814              {
2815                "name": "x",
2816                "type": "uint256",
2817                "internalType": "BN254.BaseField"
2818              },
2819              {
2820                "name": "y",
2821                "type": "uint256",
2822                "internalType": "BN254.BaseField"
2823              }
2824            ]
2825          },
2826          {
2827            "name": "split3",
2828            "type": "tuple",
2829            "internalType": "struct BN254.G1Point",
2830            "components": [
2831              {
2832                "name": "x",
2833                "type": "uint256",
2834                "internalType": "BN254.BaseField"
2835              },
2836              {
2837                "name": "y",
2838                "type": "uint256",
2839                "internalType": "BN254.BaseField"
2840              }
2841            ]
2842          },
2843          {
2844            "name": "split4",
2845            "type": "tuple",
2846            "internalType": "struct BN254.G1Point",
2847            "components": [
2848              {
2849                "name": "x",
2850                "type": "uint256",
2851                "internalType": "BN254.BaseField"
2852              },
2853              {
2854                "name": "y",
2855                "type": "uint256",
2856                "internalType": "BN254.BaseField"
2857              }
2858            ]
2859          },
2860          {
2861            "name": "zeta",
2862            "type": "tuple",
2863            "internalType": "struct BN254.G1Point",
2864            "components": [
2865              {
2866                "name": "x",
2867                "type": "uint256",
2868                "internalType": "BN254.BaseField"
2869              },
2870              {
2871                "name": "y",
2872                "type": "uint256",
2873                "internalType": "BN254.BaseField"
2874              }
2875            ]
2876          },
2877          {
2878            "name": "zetaOmega",
2879            "type": "tuple",
2880            "internalType": "struct BN254.G1Point",
2881            "components": [
2882              {
2883                "name": "x",
2884                "type": "uint256",
2885                "internalType": "BN254.BaseField"
2886              },
2887              {
2888                "name": "y",
2889                "type": "uint256",
2890                "internalType": "BN254.BaseField"
2891              }
2892            ]
2893          },
2894          {
2895            "name": "wireEval0",
2896            "type": "uint256",
2897            "internalType": "BN254.ScalarField"
2898          },
2899          {
2900            "name": "wireEval1",
2901            "type": "uint256",
2902            "internalType": "BN254.ScalarField"
2903          },
2904          {
2905            "name": "wireEval2",
2906            "type": "uint256",
2907            "internalType": "BN254.ScalarField"
2908          },
2909          {
2910            "name": "wireEval3",
2911            "type": "uint256",
2912            "internalType": "BN254.ScalarField"
2913          },
2914          {
2915            "name": "wireEval4",
2916            "type": "uint256",
2917            "internalType": "BN254.ScalarField"
2918          },
2919          {
2920            "name": "sigmaEval0",
2921            "type": "uint256",
2922            "internalType": "BN254.ScalarField"
2923          },
2924          {
2925            "name": "sigmaEval1",
2926            "type": "uint256",
2927            "internalType": "BN254.ScalarField"
2928          },
2929          {
2930            "name": "sigmaEval2",
2931            "type": "uint256",
2932            "internalType": "BN254.ScalarField"
2933          },
2934          {
2935            "name": "sigmaEval3",
2936            "type": "uint256",
2937            "internalType": "BN254.ScalarField"
2938          },
2939          {
2940            "name": "prodPermZetaOmegaEval",
2941            "type": "uint256",
2942            "internalType": "BN254.ScalarField"
2943          }
2944        ]
2945      }
2946    ],
2947    "outputs": [],
2948    "stateMutability": "nonpayable"
2949  },
2950  {
2951    "type": "function",
2952    "name": "owner",
2953    "inputs": [],
2954    "outputs": [
2955      {
2956        "name": "",
2957        "type": "address",
2958        "internalType": "address"
2959      }
2960    ],
2961    "stateMutability": "view"
2962  },
2963  {
2964    "type": "function",
2965    "name": "permissionedProver",
2966    "inputs": [],
2967    "outputs": [
2968      {
2969        "name": "",
2970        "type": "address",
2971        "internalType": "address"
2972      }
2973    ],
2974    "stateMutability": "view"
2975  },
2976  {
2977    "type": "function",
2978    "name": "proxiableUUID",
2979    "inputs": [],
2980    "outputs": [
2981      {
2982        "name": "",
2983        "type": "bytes32",
2984        "internalType": "bytes32"
2985      }
2986    ],
2987    "stateMutability": "view"
2988  },
2989  {
2990    "type": "function",
2991    "name": "renounceOwnership",
2992    "inputs": [],
2993    "outputs": [],
2994    "stateMutability": "nonpayable"
2995  },
2996  {
2997    "type": "function",
2998    "name": "setPermissionedProver",
2999    "inputs": [
3000      {
3001        "name": "prover",
3002        "type": "address",
3003        "internalType": "address"
3004      }
3005    ],
3006    "outputs": [],
3007    "stateMutability": "nonpayable"
3008  },
3009  {
3010    "type": "function",
3011    "name": "setstateHistoryRetentionPeriod",
3012    "inputs": [
3013      {
3014        "name": "historySeconds",
3015        "type": "uint32",
3016        "internalType": "uint32"
3017      }
3018    ],
3019    "outputs": [],
3020    "stateMutability": "nonpayable"
3021  },
3022  {
3023    "type": "function",
3024    "name": "stateHistoryCommitments",
3025    "inputs": [
3026      {
3027        "name": "",
3028        "type": "uint256",
3029        "internalType": "uint256"
3030      }
3031    ],
3032    "outputs": [
3033      {
3034        "name": "l1BlockHeight",
3035        "type": "uint64",
3036        "internalType": "uint64"
3037      },
3038      {
3039        "name": "l1BlockTimestamp",
3040        "type": "uint64",
3041        "internalType": "uint64"
3042      },
3043      {
3044        "name": "hotShotBlockHeight",
3045        "type": "uint64",
3046        "internalType": "uint64"
3047      },
3048      {
3049        "name": "hotShotBlockCommRoot",
3050        "type": "uint256",
3051        "internalType": "BN254.ScalarField"
3052      }
3053    ],
3054    "stateMutability": "view"
3055  },
3056  {
3057    "type": "function",
3058    "name": "stateHistoryFirstIndex",
3059    "inputs": [],
3060    "outputs": [
3061      {
3062        "name": "",
3063        "type": "uint64",
3064        "internalType": "uint64"
3065      }
3066    ],
3067    "stateMutability": "view"
3068  },
3069  {
3070    "type": "function",
3071    "name": "stateHistoryRetentionPeriod",
3072    "inputs": [],
3073    "outputs": [
3074      {
3075        "name": "",
3076        "type": "uint32",
3077        "internalType": "uint32"
3078      }
3079    ],
3080    "stateMutability": "view"
3081  },
3082  {
3083    "type": "function",
3084    "name": "transferOwnership",
3085    "inputs": [
3086      {
3087        "name": "newOwner",
3088        "type": "address",
3089        "internalType": "address"
3090      }
3091    ],
3092    "outputs": [],
3093    "stateMutability": "nonpayable"
3094  },
3095  {
3096    "type": "function",
3097    "name": "upgradeToAndCall",
3098    "inputs": [
3099      {
3100        "name": "newImplementation",
3101        "type": "address",
3102        "internalType": "address"
3103      },
3104      {
3105        "name": "data",
3106        "type": "bytes",
3107        "internalType": "bytes"
3108      }
3109    ],
3110    "outputs": [],
3111    "stateMutability": "payable"
3112  },
3113  {
3114    "type": "event",
3115    "name": "Initialized",
3116    "inputs": [
3117      {
3118        "name": "version",
3119        "type": "uint64",
3120        "indexed": false,
3121        "internalType": "uint64"
3122      }
3123    ],
3124    "anonymous": false
3125  },
3126  {
3127    "type": "event",
3128    "name": "NewState",
3129    "inputs": [
3130      {
3131        "name": "viewNum",
3132        "type": "uint64",
3133        "indexed": true,
3134        "internalType": "uint64"
3135      },
3136      {
3137        "name": "blockHeight",
3138        "type": "uint64",
3139        "indexed": true,
3140        "internalType": "uint64"
3141      },
3142      {
3143        "name": "blockCommRoot",
3144        "type": "uint256",
3145        "indexed": false,
3146        "internalType": "BN254.ScalarField"
3147      }
3148    ],
3149    "anonymous": false
3150  },
3151  {
3152    "type": "event",
3153    "name": "OwnershipTransferred",
3154    "inputs": [
3155      {
3156        "name": "previousOwner",
3157        "type": "address",
3158        "indexed": true,
3159        "internalType": "address"
3160      },
3161      {
3162        "name": "newOwner",
3163        "type": "address",
3164        "indexed": true,
3165        "internalType": "address"
3166      }
3167    ],
3168    "anonymous": false
3169  },
3170  {
3171    "type": "event",
3172    "name": "PermissionedProverNotRequired",
3173    "inputs": [],
3174    "anonymous": false
3175  },
3176  {
3177    "type": "event",
3178    "name": "PermissionedProverRequired",
3179    "inputs": [
3180      {
3181        "name": "permissionedProver",
3182        "type": "address",
3183        "indexed": false,
3184        "internalType": "address"
3185      }
3186    ],
3187    "anonymous": false
3188  },
3189  {
3190    "type": "event",
3191    "name": "Upgrade",
3192    "inputs": [
3193      {
3194        "name": "implementation",
3195        "type": "address",
3196        "indexed": false,
3197        "internalType": "address"
3198      }
3199    ],
3200    "anonymous": false
3201  },
3202  {
3203    "type": "event",
3204    "name": "Upgraded",
3205    "inputs": [
3206      {
3207        "name": "implementation",
3208        "type": "address",
3209        "indexed": true,
3210        "internalType": "address"
3211      }
3212    ],
3213    "anonymous": false
3214  },
3215  {
3216    "type": "error",
3217    "name": "AddressEmptyCode",
3218    "inputs": [
3219      {
3220        "name": "target",
3221        "type": "address",
3222        "internalType": "address"
3223      }
3224    ]
3225  },
3226  {
3227    "type": "error",
3228    "name": "ERC1967InvalidImplementation",
3229    "inputs": [
3230      {
3231        "name": "implementation",
3232        "type": "address",
3233        "internalType": "address"
3234      }
3235    ]
3236  },
3237  {
3238    "type": "error",
3239    "name": "ERC1967NonPayable",
3240    "inputs": []
3241  },
3242  {
3243    "type": "error",
3244    "name": "FailedInnerCall",
3245    "inputs": []
3246  },
3247  {
3248    "type": "error",
3249    "name": "InsufficientSnapshotHistory",
3250    "inputs": []
3251  },
3252  {
3253    "type": "error",
3254    "name": "InvalidAddress",
3255    "inputs": []
3256  },
3257  {
3258    "type": "error",
3259    "name": "InvalidArgs",
3260    "inputs": []
3261  },
3262  {
3263    "type": "error",
3264    "name": "InvalidHotShotBlockForCommitmentCheck",
3265    "inputs": []
3266  },
3267  {
3268    "type": "error",
3269    "name": "InvalidInitialization",
3270    "inputs": []
3271  },
3272  {
3273    "type": "error",
3274    "name": "InvalidMaxStateHistory",
3275    "inputs": []
3276  },
3277  {
3278    "type": "error",
3279    "name": "InvalidProof",
3280    "inputs": []
3281  },
3282  {
3283    "type": "error",
3284    "name": "NoChangeRequired",
3285    "inputs": []
3286  },
3287  {
3288    "type": "error",
3289    "name": "NotInitializing",
3290    "inputs": []
3291  },
3292  {
3293    "type": "error",
3294    "name": "OutdatedState",
3295    "inputs": []
3296  },
3297  {
3298    "type": "error",
3299    "name": "OwnableInvalidOwner",
3300    "inputs": [
3301      {
3302        "name": "owner",
3303        "type": "address",
3304        "internalType": "address"
3305      }
3306    ]
3307  },
3308  {
3309    "type": "error",
3310    "name": "OwnableUnauthorizedAccount",
3311    "inputs": [
3312      {
3313        "name": "account",
3314        "type": "address",
3315        "internalType": "address"
3316      }
3317    ]
3318  },
3319  {
3320    "type": "error",
3321    "name": "ProverNotPermissioned",
3322    "inputs": []
3323  },
3324  {
3325    "type": "error",
3326    "name": "UUPSUnauthorizedCallContext",
3327    "inputs": []
3328  },
3329  {
3330    "type": "error",
3331    "name": "UUPSUnsupportedProxiableUUID",
3332    "inputs": [
3333      {
3334        "name": "slot",
3335        "type": "bytes32",
3336        "internalType": "bytes32"
3337      }
3338    ]
3339  },
3340  {
3341    "type": "error",
3342    "name": "WrongStakeTableUsed",
3343    "inputs": []
3344  }
3345]
3346```*/
3347#[allow(
3348    non_camel_case_types,
3349    non_snake_case,
3350    clippy::pub_underscore_fields,
3351    clippy::style,
3352    clippy::empty_structs_with_brackets
3353)]
3354pub mod LightClient {
3355    use alloy::sol_types as alloy_sol_types;
3356
3357    use super::*;
3358    /// The creation / init bytecode of the contract.
3359    ///
3360    /// ```text
3361    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b5c6100f95f395f81816117130152818161173c01526118b90152612b5c5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f6c565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f85565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f9c565b34801561023a575f5ffd5b506101846102493660046122d1565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612481565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f85565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612537565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612550565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125f9565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461262e565b610b95565b348015610573575f5ffd5b50610184610582366004611f6c565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611cce565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d828261142b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b428461151f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e611708565b610817826117ac565b61082182826117ed565b5050565b5f61082e6118ae565b505f516020612b305f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118f7565b600980545f918291906108d3600183612662565b815481106108e3576108e3612675565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612675565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612675565b905f5260205f20906002020160010154600982815481106109ae576109ae612675565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611967565b610b39611978565b610b44898989611980565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612675565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612662565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612675565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612675565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb081612689565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612662565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118f7565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611cce565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d1c565b5f611434610697565b905061143e611f33565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114bd9085908590889060040161287a565b602060405180830381865af41580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190612a9a565b611519576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611594575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061155f5761155f612675565b5f91825260209091206002909102015461158990600160401b90046001600160401b031684612ab9565b6001600160401b0316115b1561162757600854600980549091600160c01b90046001600160401b03169081106115c1576115c1612675565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861160183612ad8565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061178e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117825f516020612b305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b6117b4610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611847575060408051601f3d908101601f1916820190925261184491810190612b02565b60015b61186f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b305f395f51905f52811461189f57604051632a87526960e21b815260048101829052602401610d1c565b6118a98383611aac565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61196f611b01565b610d2e81611b4a565b6108ac611b01565b82516001600160401b03161515806119a4575060208301516001600160401b031615155b806119b157506020820151155b806119be57506040820151155b806119cb57506060820151155b806119d557508151155b806119e75750610e108163ffffffff16105b806119fb57506301e133808163ffffffff16115b15611a19576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611ab582611b52565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611af9576118a98282611bb5565b610821611c27565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611b01565b806001600160a01b03163b5f03611b8757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bd19190612b19565b5f60405180830381855af49150503d805f8114611c09576040519150601f19603f3d011682016040523d82523d5f602084013e611c0e565b606091505b5091509150611c1e858383611c46565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c5b57611c5682611ca5565b611c9e565b8151158015611c7257506001600160a01b0384163b155b15611c9b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611cb55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d0160405180604001604052805f81526020015f81525090565b8152602001611d2160405180604001604052805f81526020015f81525090565b8152602001611d4160405180604001604052805f81526020015f81525090565b8152602001611d6160405180604001604052805f81526020015f81525090565b8152602001611d8160405180604001604052805f81526020015f81525090565b8152602001611da160405180604001604052805f81526020015f81525090565b8152602001611dc160405180604001604052805f81526020015f81525090565b8152602001611de160405180604001604052805f81526020015f81525090565b8152602001611e0160405180604001604052805f81526020015f81525090565b8152602001611e2160405180604001604052805f81526020015f81525090565b8152602001611e4160405180604001604052805f81526020015f81525090565b8152602001611e6160405180604001604052805f81526020015f81525090565b8152602001611e8160405180604001604052805f81526020015f81525090565b8152602001611ea160405180604001604052805f81526020015f81525090565b8152602001611ec160405180604001604052805f81526020015f81525090565b8152602001611ee160405180604001604052805f81526020015f81525090565b8152602001611f0160405180604001604052805f81526020015f81525090565b8152602001611f2160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f67575f5ffd5b919050565b5f60208284031215611f7c575f5ffd5b611c9e82611f51565b5f60208284031215611f95575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611fce604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121d4576121d461219d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122025761220261219d565b604052919050565b80356001600160401b0381168114611f67575f5ffd5b5f60608284031215612230575f5ffd5b604051606081016001600160401b03811182821017156122525761225261219d565b6040529050806122618361220a565b815261226f6020840161220a565b6020820152604092830135920191909152919050565b5f60408284031215612295575f5ffd5b604080519081016001600160401b03811182821017156122b7576122b761219d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122e4575f5ffd5b6122ee8585612220565b9250610480605f1982011215612302575f5ffd5b5061230b6121b1565b6123188560608601612285565b81526123278560a08601612285565b60208201526123398560e08601612285565b604082015261234c856101208601612285565b606082015261235f856101608601612285565b6080820152612372856101a08601612285565b60a0820152612385856101e08601612285565b60c0820152612398856102208601612285565b60e08201526123ab856102608601612285565b6101008201526123bf856102a08601612285565b6101208201526123d3856102e08601612285565b6101408201526123e7856103208601612285565b6101608201526123fb856103608601612285565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612492575f5ffd5b61249b83611f51565b915060208301356001600160401b038111156124b5575f5ffd5b8301601f810185136124c5575f5ffd5b80356001600160401b038111156124de576124de61219d565b6124f1601f8201601f19166020016121da565b818152866020838501011115612505575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f67575f5ffd5b5f60208284031215612547575f5ffd5b611c9e82612524565b5f5f5f5f848603610120811215612565575f5ffd5b61256f8787612220565b94506080605f1982011215612582575f5ffd5b50604051608081016001600160401b03811182821017156125a5576125a561219d565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125df60e08601612524565b91506125ee6101008601611f51565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561263f575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961264e565b634e487b7160e01b5f52603260045260245ffd5b5f816126975761269761264e565b505f190190565b805f5b60078110156115195781518452602093840193909101906001016126a1565b6126d582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a6082019050845182526020850151602083015260408501516128ac604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a8461050083018561269e565b612a926105e08301846126c0565b949350505050565b5f60208284031215612aaa575f5ffd5b81518015158114611c9e575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961264e565b5f6001600160401b0382166001600160401b038103612af957612af961264e565b60010192915050565b5f60208284031215612b12575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3362    /// ```
3363    #[rustfmt::skip]
3364    #[allow(clippy::all)]
3365    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3366        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+\\a\0\xF9_9_\x81\x81a\x17\x13\x01R\x81\x81a\x17<\x01Ra\x18\xB9\x01Ra+\\_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FlV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\x85V[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F\x9CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xD1V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$\x81V[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1F\x85V[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%7V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%PV[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xF9V[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&.V[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FlV[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xCEV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@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\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x14+V[\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\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\x1FV[\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\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x17\x08V[a\x08\x17\x82a\x17\xACV[a\x08!\x82\x82a\x17\xEDV[PPV[_a\x08.a\x18\xAEV[P_Q` a+0_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\r1V[a\x08\xAC_a\x18\xF7V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&bV[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@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\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&uV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&uV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@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\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@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\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x19gV[a\x0B9a\x19xV[a\x0BD\x89\x89\x89a\x19\x80V[\x83\x15a\x0B\x8AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&bV[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&\x89V[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&bV[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xF7V[PV[3a\rc\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\xCEV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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\x08!W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\r\x1CV[_a\x144a\x06\x97V[\x90Pa\x14>a\x1F3V[\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\x14\xBD\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(zV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xD8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xFC\x91\x90a*\x9AV[a\x15\x19W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\x94WP`\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_Wa\x15_a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\x89\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\xB9V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16'W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xC1Wa\x15\xC1a&uV[_\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\x01\x83a*\xD8V[\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\x17\x8EWP\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\x17\x82_Q` a+0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xB4a\r1V[`@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\x06CV[\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\x18GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18D\x91\x81\x01\x90a+\x02V[`\x01[a\x18oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x81\x14a\x18\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18\xA9\x83\x83a\x1A\xACV[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\x08\xACW`@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\x19oa\x1B\x01V[a\r.\x81a\x1BJV[a\x08\xACa\x1B\x01V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xB1WP` \x82\x01Q\x15[\x80a\x19\xBEWP`@\x82\x01Q\x15[\x80a\x19\xCBWP``\x82\x01Q\x15[\x80a\x19\xD5WP\x81Q\x15[\x80a\x19\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x19W`@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[a\x1A\xB5\x82a\x1BRV[`@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\x1A\xF9Wa\x18\xA9\x82\x82a\x1B\xB5V[a\x08!a\x1C'V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1B\x01V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\x87W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_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\x1B\xD1\x91\x90a+\x19V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1C\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C\x0EV[``\x91P[P\x91P\x91Pa\x1C\x1E\x85\x83\x83a\x1CFV[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C[Wa\x1CV\x82a\x1C\xA5V[a\x1C\x9EV[\x81Q\x15\x80\x15a\x1CrWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\x9BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xB5W\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\x1D\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Da`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Ea`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F|W__\xFD[a\x1C\x9E\x82a\x1FQV[_` \x82\x84\x03\x12\x15a\x1F\x95W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xCE`@\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!\xD4Wa!\xD4a!\x9DV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x02Wa\"\x02a!\x9DV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[_``\x82\x84\x03\x12\x15a\"0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"RWa\"Ra!\x9DV[`@R\x90P\x80a\"a\x83a\"\nV[\x81Ra\"o` \x84\x01a\"\nV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\x95W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xB7Wa\"\xB7a!\x9DV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xE4W__\xFD[a\"\xEE\x85\x85a\" V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#\x02W__\xFD[Pa#\x0Ba!\xB1V[a#\x18\x85``\x86\x01a\"\x85V[\x81Ra#'\x85`\xA0\x86\x01a\"\x85V[` \x82\x01Ra#9\x85`\xE0\x86\x01a\"\x85V[`@\x82\x01Ra#L\x85a\x01 \x86\x01a\"\x85V[``\x82\x01Ra#_\x85a\x01`\x86\x01a\"\x85V[`\x80\x82\x01Ra#r\x85a\x01\xA0\x86\x01a\"\x85V[`\xA0\x82\x01Ra#\x85\x85a\x01\xE0\x86\x01a\"\x85V[`\xC0\x82\x01Ra#\x98\x85a\x02 \x86\x01a\"\x85V[`\xE0\x82\x01Ra#\xAB\x85a\x02`\x86\x01a\"\x85V[a\x01\0\x82\x01Ra#\xBF\x85a\x02\xA0\x86\x01a\"\x85V[a\x01 \x82\x01Ra#\xD3\x85a\x02\xE0\x86\x01a\"\x85V[a\x01@\x82\x01Ra#\xE7\x85a\x03 \x86\x01a\"\x85V[a\x01`\x82\x01Ra#\xFB\x85a\x03`\x86\x01a\"\x85V[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$\x92W__\xFD[a$\x9B\x83a\x1FQV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xB5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xC5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xDEWa$\xDEa!\x9DV[a$\xF1`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xDAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\x05W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FgW__\xFD[_` \x82\x84\x03\x12\x15a%GW__\xFD[a\x1C\x9E\x82a%$V[____\x84\x86\x03a\x01 \x81\x12\x15a%eW__\xFD[a%o\x87\x87a\" V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\x82W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xA5Wa%\xA5a!\x9DV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xDF`\xE0\x86\x01a%$V[\x91Pa%\xEEa\x01\0\x86\x01a\x1FQV[\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[__`@\x83\x85\x03\x12\x15a&?W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\x97Wa&\x97a&NV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x19W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xA1V[a&\xD5\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(\xAC`@\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*\x84a\x05\0\x83\x01\x85a&\x9EV[a*\x92a\x05\xE0\x83\x01\x84a&\xC0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\xAAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x9EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xF9Wa*\xF9a&NV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[PQ\x91\x90PV[_\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",
3367    );
3368    /// The runtime bytecode of the contract, as deployed on the network.
3369    ///
3370    /// ```text
3371    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f6c565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f85565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f9c565b34801561023a575f5ffd5b506101846102493660046122d1565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612481565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f85565b6108bf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612537565b6109ea565b34801561043c575f5ffd5b5061018461044b366004612550565b610a73565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125f9565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461262e565b610b95565b348015610573575f5ffd5b50610184610582366004611f6c565b610cef565b348015610592575f5ffd5b506009546102d1565b6105a3610d31565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611cce565b6106a7610d8c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113bb565b61075d828261142b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b428461151f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e611708565b610817826117ac565b61082182826117ed565b5050565b5f61082e6118ae565b505f516020612b305f395f51905f5290565b610848610d31565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d31565b6108ac5f6118f7565b600980545f918291906108d3600183612662565b815481106108e3576108e3612675565b5f918252602090912060029091020154600160801b90046001600160401b0316841061092257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109e357846009828154811061095257610952612675565b5f918252602090912060029091020154600160801b90046001600160401b031611156109db576009818154811061098b5761098b612675565b905f5260205f20906002020160010154600982815481106109ae576109ae612675565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610936565b5050915091565b6109f2610d31565b610e108163ffffffff161080610a1157506301e133808163ffffffff16115b80610a2f575060085463ffffffff600160a01b909104811690821611155b15610a4d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ab75750825b90505f826001600160401b03166001148015610ad25750303b155b905081158015610ae0575080155b15610afe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b2857845460ff60401b1916600160401b1785555b610b3186611967565b610b39611978565b610b44898989611980565b8315610b8a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610ba6575080155b80610bf05750600854600980549091600160c01b90046001600160401b0316908110610bd457610bd4612675565b5f9182526020909120600290910201546001600160401b031684105b15610c0e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c1c600185612662565b90505b81610cb857600854600160c01b90046001600160401b03168110610cb8578660098281548110610c5157610c51612675565b5f9182526020909120600290910201546001600160401b031611610ca6576001915060098181548110610c8657610c86612675565b5f9182526020909120600290910201546001600160401b03169250610cb8565b80610cb081612689565b915050610c1f565b81610cd65760405163b0b4387760e01b815260040160405180910390fd5b85610ce18489612662565b119450505050505b92915050565b610cf7610d31565b6001600160a01b038116610d2557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2e816118f7565b50565b33610d637f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d1c565b610d94611cce565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d1c565b5f611434610697565b905061143e611f33565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a77906114bd9085908590889060040161287a565b602060405180830381865af41580156114d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fc9190612a9a565b611519576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611594575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061155f5761155f612675565b5f91825260209091206002909102015461158990600160401b90046001600160401b031684612ab9565b6001600160401b0316115b1561162757600854600980549091600160c01b90046001600160401b03169081106115c1576115c1612675565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861160183612ad8565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061178e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117825f516020612b305f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b6117b4610d31565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611847575060408051601f3d908101601f1916820190925261184491810190612b02565b60015b61186f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1c565b5f516020612b305f395f51905f52811461189f57604051632a87526960e21b815260048101829052602401610d1c565b6118a98383611aac565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61196f611b01565b610d2e81611b4a565b6108ac611b01565b82516001600160401b03161515806119a4575060208301516001600160401b031615155b806119b157506020820151155b806119be57506040820151155b806119cb57506060820151155b806119d557508151155b806119e75750610e108163ffffffff16105b806119fb57506301e133808163ffffffff16115b15611a19576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611ab582611b52565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611af9576118a98282611bb5565b610821611c27565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610cf7611b01565b806001600160a01b03163b5f03611b8757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1c565b5f516020612b305f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bd19190612b19565b5f60405180830381855af49150503d805f8114611c09576040519150601f19603f3d011682016040523d82523d5f602084013e611c0e565b606091505b5091509150611c1e858383611c46565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c5b57611c5682611ca5565b611c9e565b8151158015611c7257506001600160a01b0384163b155b15611c9b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d1c565b50805b9392505050565b805115611cb55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d0160405180604001604052805f81526020015f81525090565b8152602001611d2160405180604001604052805f81526020015f81525090565b8152602001611d4160405180604001604052805f81526020015f81525090565b8152602001611d6160405180604001604052805f81526020015f81525090565b8152602001611d8160405180604001604052805f81526020015f81525090565b8152602001611da160405180604001604052805f81526020015f81525090565b8152602001611dc160405180604001604052805f81526020015f81525090565b8152602001611de160405180604001604052805f81526020015f81525090565b8152602001611e0160405180604001604052805f81526020015f81525090565b8152602001611e2160405180604001604052805f81526020015f81525090565b8152602001611e4160405180604001604052805f81526020015f81525090565b8152602001611e6160405180604001604052805f81526020015f81525090565b8152602001611e8160405180604001604052805f81526020015f81525090565b8152602001611ea160405180604001604052805f81526020015f81525090565b8152602001611ec160405180604001604052805f81526020015f81525090565b8152602001611ee160405180604001604052805f81526020015f81525090565b8152602001611f0160405180604001604052805f81526020015f81525090565b8152602001611f2160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f67575f5ffd5b919050565b5f60208284031215611f7c575f5ffd5b611c9e82611f51565b5f60208284031215611f95575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611fce604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121d4576121d461219d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122025761220261219d565b604052919050565b80356001600160401b0381168114611f67575f5ffd5b5f60608284031215612230575f5ffd5b604051606081016001600160401b03811182821017156122525761225261219d565b6040529050806122618361220a565b815261226f6020840161220a565b6020820152604092830135920191909152919050565b5f60408284031215612295575f5ffd5b604080519081016001600160401b03811182821017156122b7576122b761219d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122e4575f5ffd5b6122ee8585612220565b9250610480605f1982011215612302575f5ffd5b5061230b6121b1565b6123188560608601612285565b81526123278560a08601612285565b60208201526123398560e08601612285565b604082015261234c856101208601612285565b606082015261235f856101608601612285565b6080820152612372856101a08601612285565b60a0820152612385856101e08601612285565b60c0820152612398856102208601612285565b60e08201526123ab856102608601612285565b6101008201526123bf856102a08601612285565b6101208201526123d3856102e08601612285565b6101408201526123e7856103208601612285565b6101608201526123fb856103608601612285565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612492575f5ffd5b61249b83611f51565b915060208301356001600160401b038111156124b5575f5ffd5b8301601f810185136124c5575f5ffd5b80356001600160401b038111156124de576124de61219d565b6124f1601f8201601f19166020016121da565b818152866020838501011115612505575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f67575f5ffd5b5f60208284031215612547575f5ffd5b611c9e82612524565b5f5f5f5f848603610120811215612565575f5ffd5b61256f8787612220565b94506080605f1982011215612582575f5ffd5b50604051608081016001600160401b03811182821017156125a5576125a561219d565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125df60e08601612524565b91506125ee6101008601611f51565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f6040838503121561263f575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610ce957610ce961264e565b634e487b7160e01b5f52603260045260245ffd5b5f816126975761269761264e565b505f190190565b805f5b60078110156115195781518452602093840193909101906001016126a1565b6126d582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a6082019050845182526020850151602083015260408501516128ac604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a8461050083018561269e565b612a926105e08301846126c0565b949350505050565b5f60208284031215612aaa575f5ffd5b81518015158114611c9e575f5ffd5b6001600160401b038281168282160390811115610ce957610ce961264e565b5f6001600160401b0382166001600160401b038103612af957612af961264e565b60010192915050565b5f60208284031215612b12575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3372    /// ```
3373    #[rustfmt::skip]
3374    #[allow(clippy::all)]
3375    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3376        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FlV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\x85V[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F\x9CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xD1V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$\x81V[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1F\x85V[a\x08\xBFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%7V[a\t\xEAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%PV[a\nsV[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xF9V[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&.V[a\x0B\x95V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FlV[a\x0C\xEFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xCEV[a\x06\xA7a\r\x8CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@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\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xBBV[a\x07]\x82\x82a\x14+V[\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\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\x1FV[\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\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x17\x08V[a\x08\x17\x82a\x17\xACV[a\x08!\x82\x82a\x17\xEDV[PPV[_a\x08.a\x18\xAEV[P_Q` a+0_9_Q\x90_R\x90V[a\x08Ha\r1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\r1V[a\x08\xAC_a\x18\xF7V[`\t\x80T_\x91\x82\x91\x90a\x08\xD3`\x01\x83a&bV[\x81T\x81\x10a\x08\xE3Wa\x08\xE3a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\"W`@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\t\xE3W\x84`\t\x82\x81T\x81\x10a\tRWa\tRa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xDBW`\t\x81\x81T\x81\x10a\t\x8BWa\t\x8Ba&uV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xAEWa\t\xAEa&uV[\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\t6V[PP\x91P\x91V[a\t\xF2a\r1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x11WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n/WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\nMW`@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\n\xB7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xD2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xE0WP\x80\x15[\x15a\n\xFEW`@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\x0B(W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B1\x86a\x19gV[a\x0B9a\x19xV[a\x0BD\x89\x89\x89a\x19\x80V[\x83\x15a\x0B\x8AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xA6WP\x80\x15[\x80a\x0B\xF0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xD4Wa\x0B\xD4a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x0EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x1C`\x01\x85a&bV[\x90P[\x81a\x0C\xB8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xB8W\x86`\t\x82\x81T\x81\x10a\x0CQWa\x0CQa&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xA6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x86Wa\x0C\x86a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xB8V[\x80a\x0C\xB0\x81a&\x89V[\x91PPa\x0C\x1FV[\x81a\x0C\xD6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xE1\x84\x89a&bV[\x11\x94PPPPP[\x92\x91PPV[a\x0C\xF7a\r1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r%W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r.\x81a\x18\xF7V[PV[3a\rc\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1CV[a\r\x94a\x1C\xCEV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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\x08!W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\r\x1CV[_a\x144a\x06\x97V[\x90Pa\x14>a\x1F3V[\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\x14\xBD\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(zV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xD8W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xFC\x91\x90a*\x9AV[a\x15\x19W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\x94WP`\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_Wa\x15_a&uV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\x89\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\xB9V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16'W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xC1Wa\x15\xC1a&uV[_\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\x01\x83a*\xD8V[\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\x17\x8EWP\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\x17\x82_Q` a+0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\xB4a\r1V[`@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\x06CV[\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\x18GWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18D\x91\x81\x01\x90a+\x02V[`\x01[a\x18oW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_9_Q\x90_R\x81\x14a\x18\x9FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1CV[a\x18\xA9\x83\x83a\x1A\xACV[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\x08\xACW`@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\x19oa\x1B\x01V[a\r.\x81a\x1BJV[a\x08\xACa\x1B\x01V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xA4WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xB1WP` \x82\x01Q\x15[\x80a\x19\xBEWP`@\x82\x01Q\x15[\x80a\x19\xCBWP``\x82\x01Q\x15[\x80a\x19\xD5WP\x81Q\x15[\x80a\x19\xE7WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xFBWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x19W`@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[a\x1A\xB5\x82a\x1BRV[`@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\x1A\xF9Wa\x18\xA9\x82\x82a\x1B\xB5V[a\x08!a\x1C'V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF7a\x1B\x01V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\x87W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1CV[_Q` a+0_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\x1B\xD1\x91\x90a+\x19V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1C\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C\x0EV[``\x91P[P\x91P\x91Pa\x1C\x1E\x85\x83\x83a\x1CFV[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C[Wa\x1CV\x82a\x1C\xA5V[a\x1C\x9EV[\x81Q\x15\x80\x15a\x1CrWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\x9BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\xB5W\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\x1D\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Da`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Ea`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x81`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x01`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F!`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F|W__\xFD[a\x1C\x9E\x82a\x1FQV[_` \x82\x84\x03\x12\x15a\x1F\x95W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xCE`@\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!\xD4Wa!\xD4a!\x9DV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x02Wa\"\x02a!\x9DV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FgW__\xFD[_``\x82\x84\x03\x12\x15a\"0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"RWa\"Ra!\x9DV[`@R\x90P\x80a\"a\x83a\"\nV[\x81Ra\"o` \x84\x01a\"\nV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\x95W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xB7Wa\"\xB7a!\x9DV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xE4W__\xFD[a\"\xEE\x85\x85a\" V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#\x02W__\xFD[Pa#\x0Ba!\xB1V[a#\x18\x85``\x86\x01a\"\x85V[\x81Ra#'\x85`\xA0\x86\x01a\"\x85V[` \x82\x01Ra#9\x85`\xE0\x86\x01a\"\x85V[`@\x82\x01Ra#L\x85a\x01 \x86\x01a\"\x85V[``\x82\x01Ra#_\x85a\x01`\x86\x01a\"\x85V[`\x80\x82\x01Ra#r\x85a\x01\xA0\x86\x01a\"\x85V[`\xA0\x82\x01Ra#\x85\x85a\x01\xE0\x86\x01a\"\x85V[`\xC0\x82\x01Ra#\x98\x85a\x02 \x86\x01a\"\x85V[`\xE0\x82\x01Ra#\xAB\x85a\x02`\x86\x01a\"\x85V[a\x01\0\x82\x01Ra#\xBF\x85a\x02\xA0\x86\x01a\"\x85V[a\x01 \x82\x01Ra#\xD3\x85a\x02\xE0\x86\x01a\"\x85V[a\x01@\x82\x01Ra#\xE7\x85a\x03 \x86\x01a\"\x85V[a\x01`\x82\x01Ra#\xFB\x85a\x03`\x86\x01a\"\x85V[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$\x92W__\xFD[a$\x9B\x83a\x1FQV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xB5W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xC5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xDEWa$\xDEa!\x9DV[a$\xF1`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xDAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%\x05W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FgW__\xFD[_` \x82\x84\x03\x12\x15a%GW__\xFD[a\x1C\x9E\x82a%$V[____\x84\x86\x03a\x01 \x81\x12\x15a%eW__\xFD[a%o\x87\x87a\" V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\x82W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xA5Wa%\xA5a!\x9DV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xDF`\xE0\x86\x01a%$V[\x91Pa%\xEEa\x01\0\x86\x01a\x1FQV[\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[__`@\x83\x85\x03\x12\x15a&?W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\x97Wa&\x97a&NV[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x19W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\xA1V[a&\xD5\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(\xAC`@\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*\x84a\x05\0\x83\x01\x85a&\x9EV[a*\x92a\x05\xE0\x83\x01\x84a&\xC0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\xAAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x9EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xE9Wa\x0C\xE9a&NV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xF9Wa*\xF9a&NV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[PQ\x91\x90PV[_\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",
3377    );
3378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3379    /**```solidity
3380    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3381    ```*/
3382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3383    #[derive(Clone)]
3384    pub struct LightClientState {
3385        #[allow(missing_docs)]
3386        pub viewNum: u64,
3387        #[allow(missing_docs)]
3388        pub blockHeight: u64,
3389        #[allow(missing_docs)]
3390        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3391    }
3392    #[allow(
3393        non_camel_case_types,
3394        non_snake_case,
3395        clippy::pub_underscore_fields,
3396        clippy::style
3397    )]
3398    const _: () = {
3399        use alloy::sol_types as alloy_sol_types;
3400        #[doc(hidden)]
3401        type UnderlyingSolTuple<'a> = (
3402            alloy::sol_types::sol_data::Uint<64>,
3403            alloy::sol_types::sol_data::Uint<64>,
3404            BN254::ScalarField,
3405        );
3406        #[doc(hidden)]
3407        type UnderlyingRustTuple<'a> = (
3408            u64,
3409            u64,
3410            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3411        );
3412        #[cfg(test)]
3413        #[allow(dead_code, unreachable_patterns)]
3414        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3415            match _t {
3416                alloy_sol_types::private::AssertTypeEq::<
3417                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3418                >(_) => {},
3419            }
3420        }
3421        #[automatically_derived]
3422        #[doc(hidden)]
3423        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3424            fn from(value: LightClientState) -> Self {
3425                (value.viewNum, value.blockHeight, value.blockCommRoot)
3426            }
3427        }
3428        #[automatically_derived]
3429        #[doc(hidden)]
3430        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3431            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3432                Self {
3433                    viewNum: tuple.0,
3434                    blockHeight: tuple.1,
3435                    blockCommRoot: tuple.2,
3436                }
3437            }
3438        }
3439        #[automatically_derived]
3440        impl alloy_sol_types::SolValue for LightClientState {
3441            type SolType = Self;
3442        }
3443        #[automatically_derived]
3444        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3445            #[inline]
3446            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3447                (
3448                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
3449                        &self.viewNum,
3450                    ),
3451                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
3452                        &self.blockHeight,
3453                    ),
3454                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blockCommRoot),
3455                )
3456            }
3457            #[inline]
3458            fn stv_abi_encoded_size(&self) -> usize {
3459                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3460                    return size;
3461                }
3462                let tuple =
3463                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3464                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3465            }
3466            #[inline]
3467            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3468                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3469            }
3470            #[inline]
3471            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3472                let tuple =
3473                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3474                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
3475                    &tuple, out,
3476                )
3477            }
3478            #[inline]
3479            fn stv_abi_packed_encoded_size(&self) -> usize {
3480                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3481                    return size;
3482                }
3483                let tuple =
3484                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3485                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
3486                    &tuple,
3487                )
3488            }
3489        }
3490        #[automatically_derived]
3491        impl alloy_sol_types::SolType for LightClientState {
3492            type RustType = Self;
3493            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3494            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3495            const ENCODED_SIZE: Option<usize> =
3496                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
3497            const PACKED_ENCODED_SIZE: Option<usize> =
3498                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3499            #[inline]
3500            fn valid_token(token: &Self::Token<'_>) -> bool {
3501                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3502            }
3503            #[inline]
3504            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3505                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
3506                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3507            }
3508        }
3509        #[automatically_derived]
3510        impl alloy_sol_types::SolStruct for LightClientState {
3511            const NAME: &'static str = "LightClientState";
3512            #[inline]
3513            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3514                alloy_sol_types::private::Cow::Borrowed(
3515                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3516                )
3517            }
3518            #[inline]
3519            fn eip712_components(
3520            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
3521            {
3522                alloy_sol_types::private::Vec::new()
3523            }
3524            #[inline]
3525            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3526                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3527            }
3528            #[inline]
3529            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3530                [
3531                    <alloy::sol_types::sol_data::Uint<
3532                        64,
3533                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3534                        .0,
3535                    <alloy::sol_types::sol_data::Uint<
3536                        64,
3537                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3538                        .0,
3539                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3540                            &self.blockCommRoot,
3541                        )
3542                        .0,
3543                ]
3544                    .concat()
3545            }
3546        }
3547        #[automatically_derived]
3548        impl alloy_sol_types::EventTopic for LightClientState {
3549            #[inline]
3550            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3551                0usize
3552                    + <alloy::sol_types::sol_data::Uint<
3553                        64,
3554                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3555                        &rust.viewNum,
3556                    )
3557                    + <alloy::sol_types::sol_data::Uint<
3558                        64,
3559                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3560                        &rust.blockHeight,
3561                    )
3562                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3563                        &rust.blockCommRoot,
3564                    )
3565            }
3566            #[inline]
3567            fn encode_topic_preimage(
3568                rust: &Self::RustType,
3569                out: &mut alloy_sol_types::private::Vec<u8>,
3570            ) {
3571                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
3572                <alloy::sol_types::sol_data::Uint<
3573                    64,
3574                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3575                    &rust.viewNum,
3576                    out,
3577                );
3578                <alloy::sol_types::sol_data::Uint<
3579                    64,
3580                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3581                    &rust.blockHeight,
3582                    out,
3583                );
3584                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3585                    &rust.blockCommRoot,
3586                    out,
3587                );
3588            }
3589            #[inline]
3590            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
3591                let mut out = alloy_sol_types::private::Vec::new();
3592                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
3593                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
3594            }
3595        }
3596    };
3597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3598    /**```solidity
3599    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3600    ```*/
3601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3602    #[derive(Clone)]
3603    pub struct StakeTableState {
3604        #[allow(missing_docs)]
3605        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
3606        #[allow(missing_docs)]
3607        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3608        #[allow(missing_docs)]
3609        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3610        #[allow(missing_docs)]
3611        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3612    }
3613    #[allow(
3614        non_camel_case_types,
3615        non_snake_case,
3616        clippy::pub_underscore_fields,
3617        clippy::style
3618    )]
3619    const _: () = {
3620        use alloy::sol_types as alloy_sol_types;
3621        #[doc(hidden)]
3622        type UnderlyingSolTuple<'a> = (
3623            alloy::sol_types::sol_data::Uint<256>,
3624            BN254::ScalarField,
3625            BN254::ScalarField,
3626            BN254::ScalarField,
3627        );
3628        #[doc(hidden)]
3629        type UnderlyingRustTuple<'a> = (
3630            alloy::sol_types::private::primitives::aliases::U256,
3631            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3632            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3633            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3634        );
3635        #[cfg(test)]
3636        #[allow(dead_code, unreachable_patterns)]
3637        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3638            match _t {
3639                alloy_sol_types::private::AssertTypeEq::<
3640                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3641                >(_) => {},
3642            }
3643        }
3644        #[automatically_derived]
3645        #[doc(hidden)]
3646        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
3647            fn from(value: StakeTableState) -> Self {
3648                (
3649                    value.threshold,
3650                    value.blsKeyComm,
3651                    value.schnorrKeyComm,
3652                    value.amountComm,
3653                )
3654            }
3655        }
3656        #[automatically_derived]
3657        #[doc(hidden)]
3658        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
3659            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3660                Self {
3661                    threshold: tuple.0,
3662                    blsKeyComm: tuple.1,
3663                    schnorrKeyComm: tuple.2,
3664                    amountComm: tuple.3,
3665                }
3666            }
3667        }
3668        #[automatically_derived]
3669        impl alloy_sol_types::SolValue for StakeTableState {
3670            type SolType = Self;
3671        }
3672        #[automatically_derived]
3673        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
3674            #[inline]
3675            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3676                (
3677                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
3678                        &self.threshold,
3679                    ),
3680                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blsKeyComm),
3681                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3682                        &self.schnorrKeyComm,
3683                    ),
3684                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.amountComm),
3685                )
3686            }
3687            #[inline]
3688            fn stv_abi_encoded_size(&self) -> usize {
3689                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3690                    return size;
3691                }
3692                let tuple =
3693                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3694                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3695            }
3696            #[inline]
3697            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3698                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3699            }
3700            #[inline]
3701            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3702                let tuple =
3703                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3704                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
3705                    &tuple, out,
3706                )
3707            }
3708            #[inline]
3709            fn stv_abi_packed_encoded_size(&self) -> usize {
3710                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3711                    return size;
3712                }
3713                let tuple =
3714                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
3715                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
3716                    &tuple,
3717                )
3718            }
3719        }
3720        #[automatically_derived]
3721        impl alloy_sol_types::SolType for StakeTableState {
3722            type RustType = Self;
3723            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3724            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3725            const ENCODED_SIZE: Option<usize> =
3726                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
3727            const PACKED_ENCODED_SIZE: Option<usize> =
3728                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3729            #[inline]
3730            fn valid_token(token: &Self::Token<'_>) -> bool {
3731                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3732            }
3733            #[inline]
3734            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3735                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
3736                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3737            }
3738        }
3739        #[automatically_derived]
3740        impl alloy_sol_types::SolStruct for StakeTableState {
3741            const NAME: &'static str = "StakeTableState";
3742            #[inline]
3743            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3744                alloy_sol_types::private::Cow::Borrowed(
3745                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
3746                )
3747            }
3748            #[inline]
3749            fn eip712_components(
3750            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
3751            {
3752                alloy_sol_types::private::Vec::new()
3753            }
3754            #[inline]
3755            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3756                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3757            }
3758            #[inline]
3759            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3760                [
3761                    <alloy::sol_types::sol_data::Uint<
3762                        256,
3763                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
3764                        .0,
3765                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3766                            &self.blsKeyComm,
3767                        )
3768                        .0,
3769                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3770                            &self.schnorrKeyComm,
3771                        )
3772                        .0,
3773                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3774                            &self.amountComm,
3775                        )
3776                        .0,
3777                ]
3778                    .concat()
3779            }
3780        }
3781        #[automatically_derived]
3782        impl alloy_sol_types::EventTopic for StakeTableState {
3783            #[inline]
3784            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3785                0usize
3786                    + <alloy::sol_types::sol_data::Uint<
3787                        256,
3788                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3789                        &rust.threshold,
3790                    )
3791                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3792                        &rust.blsKeyComm,
3793                    )
3794                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3795                        &rust.schnorrKeyComm,
3796                    )
3797                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3798                        &rust.amountComm,
3799                    )
3800            }
3801            #[inline]
3802            fn encode_topic_preimage(
3803                rust: &Self::RustType,
3804                out: &mut alloy_sol_types::private::Vec<u8>,
3805            ) {
3806                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
3807                <alloy::sol_types::sol_data::Uint<
3808                    256,
3809                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3810                    &rust.threshold,
3811                    out,
3812                );
3813                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3814                    &rust.blsKeyComm,
3815                    out,
3816                );
3817                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3818                    &rust.schnorrKeyComm,
3819                    out,
3820                );
3821                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3822                    &rust.amountComm,
3823                    out,
3824                );
3825            }
3826            #[inline]
3827            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
3828                let mut out = alloy_sol_types::private::Vec::new();
3829                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
3830                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
3831            }
3832        }
3833    };
3834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3835    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
3836    ```solidity
3837    error AddressEmptyCode(address target);
3838    ```*/
3839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3840    #[derive(Clone)]
3841    pub struct AddressEmptyCode {
3842        #[allow(missing_docs)]
3843        pub target: alloy::sol_types::private::Address,
3844    }
3845    #[allow(
3846        non_camel_case_types,
3847        non_snake_case,
3848        clippy::pub_underscore_fields,
3849        clippy::style
3850    )]
3851    const _: () = {
3852        use alloy::sol_types as alloy_sol_types;
3853        #[doc(hidden)]
3854        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3855        #[doc(hidden)]
3856        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3857        #[cfg(test)]
3858        #[allow(dead_code, unreachable_patterns)]
3859        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3860            match _t {
3861                alloy_sol_types::private::AssertTypeEq::<
3862                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3863                >(_) => {},
3864            }
3865        }
3866        #[automatically_derived]
3867        #[doc(hidden)]
3868        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
3869            fn from(value: AddressEmptyCode) -> Self {
3870                (value.target,)
3871            }
3872        }
3873        #[automatically_derived]
3874        #[doc(hidden)]
3875        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
3876            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3877                Self { target: tuple.0 }
3878            }
3879        }
3880        #[automatically_derived]
3881        impl alloy_sol_types::SolError for AddressEmptyCode {
3882            type Parameters<'a> = UnderlyingSolTuple<'a>;
3883            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3884            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
3885            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
3886            #[inline]
3887            fn new<'a>(
3888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3889            ) -> Self {
3890                tuple.into()
3891            }
3892            #[inline]
3893            fn tokenize(&self) -> Self::Token<'_> {
3894                (
3895                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3896                        &self.target,
3897                    ),
3898                )
3899            }
3900        }
3901    };
3902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3903    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
3904    ```solidity
3905    error ERC1967InvalidImplementation(address implementation);
3906    ```*/
3907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3908    #[derive(Clone)]
3909    pub struct ERC1967InvalidImplementation {
3910        #[allow(missing_docs)]
3911        pub implementation: alloy::sol_types::private::Address,
3912    }
3913    #[allow(
3914        non_camel_case_types,
3915        non_snake_case,
3916        clippy::pub_underscore_fields,
3917        clippy::style
3918    )]
3919    const _: () = {
3920        use alloy::sol_types as alloy_sol_types;
3921        #[doc(hidden)]
3922        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
3923        #[doc(hidden)]
3924        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
3925        #[cfg(test)]
3926        #[allow(dead_code, unreachable_patterns)]
3927        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3928            match _t {
3929                alloy_sol_types::private::AssertTypeEq::<
3930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3931                >(_) => {},
3932            }
3933        }
3934        #[automatically_derived]
3935        #[doc(hidden)]
3936        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
3937            fn from(value: ERC1967InvalidImplementation) -> Self {
3938                (value.implementation,)
3939            }
3940        }
3941        #[automatically_derived]
3942        #[doc(hidden)]
3943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
3944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3945                Self {
3946                    implementation: tuple.0,
3947                }
3948            }
3949        }
3950        #[automatically_derived]
3951        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
3952            type Parameters<'a> = UnderlyingSolTuple<'a>;
3953            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3954            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
3955            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
3956            #[inline]
3957            fn new<'a>(
3958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3959            ) -> Self {
3960                tuple.into()
3961            }
3962            #[inline]
3963            fn tokenize(&self) -> Self::Token<'_> {
3964                (
3965                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3966                        &self.implementation,
3967                    ),
3968                )
3969            }
3970        }
3971    };
3972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3973    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
3974    ```solidity
3975    error ERC1967NonPayable();
3976    ```*/
3977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3978    #[derive(Clone)]
3979    pub struct ERC1967NonPayable {}
3980    #[allow(
3981        non_camel_case_types,
3982        non_snake_case,
3983        clippy::pub_underscore_fields,
3984        clippy::style
3985    )]
3986    const _: () = {
3987        use alloy::sol_types as alloy_sol_types;
3988        #[doc(hidden)]
3989        type UnderlyingSolTuple<'a> = ();
3990        #[doc(hidden)]
3991        type UnderlyingRustTuple<'a> = ();
3992        #[cfg(test)]
3993        #[allow(dead_code, unreachable_patterns)]
3994        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3995            match _t {
3996                alloy_sol_types::private::AssertTypeEq::<
3997                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3998                >(_) => {},
3999            }
4000        }
4001        #[automatically_derived]
4002        #[doc(hidden)]
4003        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4004            fn from(value: ERC1967NonPayable) -> Self {
4005                ()
4006            }
4007        }
4008        #[automatically_derived]
4009        #[doc(hidden)]
4010        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4011            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4012                Self {}
4013            }
4014        }
4015        #[automatically_derived]
4016        impl alloy_sol_types::SolError for ERC1967NonPayable {
4017            type Parameters<'a> = UnderlyingSolTuple<'a>;
4018            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4019            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4020            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4021            #[inline]
4022            fn new<'a>(
4023                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4024            ) -> Self {
4025                tuple.into()
4026            }
4027            #[inline]
4028            fn tokenize(&self) -> Self::Token<'_> {
4029                ()
4030            }
4031        }
4032    };
4033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4034    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4035    ```solidity
4036    error FailedInnerCall();
4037    ```*/
4038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4039    #[derive(Clone)]
4040    pub struct FailedInnerCall {}
4041    #[allow(
4042        non_camel_case_types,
4043        non_snake_case,
4044        clippy::pub_underscore_fields,
4045        clippy::style
4046    )]
4047    const _: () = {
4048        use alloy::sol_types as alloy_sol_types;
4049        #[doc(hidden)]
4050        type UnderlyingSolTuple<'a> = ();
4051        #[doc(hidden)]
4052        type UnderlyingRustTuple<'a> = ();
4053        #[cfg(test)]
4054        #[allow(dead_code, unreachable_patterns)]
4055        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4056            match _t {
4057                alloy_sol_types::private::AssertTypeEq::<
4058                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4059                >(_) => {},
4060            }
4061        }
4062        #[automatically_derived]
4063        #[doc(hidden)]
4064        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4065            fn from(value: FailedInnerCall) -> Self {
4066                ()
4067            }
4068        }
4069        #[automatically_derived]
4070        #[doc(hidden)]
4071        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4072            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4073                Self {}
4074            }
4075        }
4076        #[automatically_derived]
4077        impl alloy_sol_types::SolError for FailedInnerCall {
4078            type Parameters<'a> = UnderlyingSolTuple<'a>;
4079            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4080            const SIGNATURE: &'static str = "FailedInnerCall()";
4081            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4082            #[inline]
4083            fn new<'a>(
4084                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4085            ) -> Self {
4086                tuple.into()
4087            }
4088            #[inline]
4089            fn tokenize(&self) -> Self::Token<'_> {
4090                ()
4091            }
4092        }
4093    };
4094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4095    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4096    ```solidity
4097    error InsufficientSnapshotHistory();
4098    ```*/
4099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4100    #[derive(Clone)]
4101    pub struct InsufficientSnapshotHistory {}
4102    #[allow(
4103        non_camel_case_types,
4104        non_snake_case,
4105        clippy::pub_underscore_fields,
4106        clippy::style
4107    )]
4108    const _: () = {
4109        use alloy::sol_types as alloy_sol_types;
4110        #[doc(hidden)]
4111        type UnderlyingSolTuple<'a> = ();
4112        #[doc(hidden)]
4113        type UnderlyingRustTuple<'a> = ();
4114        #[cfg(test)]
4115        #[allow(dead_code, unreachable_patterns)]
4116        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4117            match _t {
4118                alloy_sol_types::private::AssertTypeEq::<
4119                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4120                >(_) => {},
4121            }
4122        }
4123        #[automatically_derived]
4124        #[doc(hidden)]
4125        impl ::core::convert::From<InsufficientSnapshotHistory> for UnderlyingRustTuple<'_> {
4126            fn from(value: InsufficientSnapshotHistory) -> Self {
4127                ()
4128            }
4129        }
4130        #[automatically_derived]
4131        #[doc(hidden)]
4132        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientSnapshotHistory {
4133            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4134                Self {}
4135            }
4136        }
4137        #[automatically_derived]
4138        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4139            type Parameters<'a> = UnderlyingSolTuple<'a>;
4140            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4141            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4142            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4143            #[inline]
4144            fn new<'a>(
4145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4146            ) -> Self {
4147                tuple.into()
4148            }
4149            #[inline]
4150            fn tokenize(&self) -> Self::Token<'_> {
4151                ()
4152            }
4153        }
4154    };
4155    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4156    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4157    ```solidity
4158    error InvalidAddress();
4159    ```*/
4160    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4161    #[derive(Clone)]
4162    pub struct InvalidAddress {}
4163    #[allow(
4164        non_camel_case_types,
4165        non_snake_case,
4166        clippy::pub_underscore_fields,
4167        clippy::style
4168    )]
4169    const _: () = {
4170        use alloy::sol_types as alloy_sol_types;
4171        #[doc(hidden)]
4172        type UnderlyingSolTuple<'a> = ();
4173        #[doc(hidden)]
4174        type UnderlyingRustTuple<'a> = ();
4175        #[cfg(test)]
4176        #[allow(dead_code, unreachable_patterns)]
4177        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4178            match _t {
4179                alloy_sol_types::private::AssertTypeEq::<
4180                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4181                >(_) => {},
4182            }
4183        }
4184        #[automatically_derived]
4185        #[doc(hidden)]
4186        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4187            fn from(value: InvalidAddress) -> Self {
4188                ()
4189            }
4190        }
4191        #[automatically_derived]
4192        #[doc(hidden)]
4193        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4194            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4195                Self {}
4196            }
4197        }
4198        #[automatically_derived]
4199        impl alloy_sol_types::SolError for InvalidAddress {
4200            type Parameters<'a> = UnderlyingSolTuple<'a>;
4201            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4202            const SIGNATURE: &'static str = "InvalidAddress()";
4203            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4204            #[inline]
4205            fn new<'a>(
4206                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4207            ) -> Self {
4208                tuple.into()
4209            }
4210            #[inline]
4211            fn tokenize(&self) -> Self::Token<'_> {
4212                ()
4213            }
4214        }
4215    };
4216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4217    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4218    ```solidity
4219    error InvalidArgs();
4220    ```*/
4221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4222    #[derive(Clone)]
4223    pub struct InvalidArgs {}
4224    #[allow(
4225        non_camel_case_types,
4226        non_snake_case,
4227        clippy::pub_underscore_fields,
4228        clippy::style
4229    )]
4230    const _: () = {
4231        use alloy::sol_types as alloy_sol_types;
4232        #[doc(hidden)]
4233        type UnderlyingSolTuple<'a> = ();
4234        #[doc(hidden)]
4235        type UnderlyingRustTuple<'a> = ();
4236        #[cfg(test)]
4237        #[allow(dead_code, unreachable_patterns)]
4238        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4239            match _t {
4240                alloy_sol_types::private::AssertTypeEq::<
4241                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4242                >(_) => {},
4243            }
4244        }
4245        #[automatically_derived]
4246        #[doc(hidden)]
4247        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4248            fn from(value: InvalidArgs) -> Self {
4249                ()
4250            }
4251        }
4252        #[automatically_derived]
4253        #[doc(hidden)]
4254        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4255            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4256                Self {}
4257            }
4258        }
4259        #[automatically_derived]
4260        impl alloy_sol_types::SolError for InvalidArgs {
4261            type Parameters<'a> = UnderlyingSolTuple<'a>;
4262            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4263            const SIGNATURE: &'static str = "InvalidArgs()";
4264            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4265            #[inline]
4266            fn new<'a>(
4267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4268            ) -> Self {
4269                tuple.into()
4270            }
4271            #[inline]
4272            fn tokenize(&self) -> Self::Token<'_> {
4273                ()
4274            }
4275        }
4276    };
4277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4278    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4279    ```solidity
4280    error InvalidHotShotBlockForCommitmentCheck();
4281    ```*/
4282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4283    #[derive(Clone)]
4284    pub struct InvalidHotShotBlockForCommitmentCheck {}
4285    #[allow(
4286        non_camel_case_types,
4287        non_snake_case,
4288        clippy::pub_underscore_fields,
4289        clippy::style
4290    )]
4291    const _: () = {
4292        use alloy::sol_types as alloy_sol_types;
4293        #[doc(hidden)]
4294        type UnderlyingSolTuple<'a> = ();
4295        #[doc(hidden)]
4296        type UnderlyingRustTuple<'a> = ();
4297        #[cfg(test)]
4298        #[allow(dead_code, unreachable_patterns)]
4299        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4300            match _t {
4301                alloy_sol_types::private::AssertTypeEq::<
4302                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4303                >(_) => {},
4304            }
4305        }
4306        #[automatically_derived]
4307        #[doc(hidden)]
4308        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck> for UnderlyingRustTuple<'_> {
4309            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4310                ()
4311            }
4312        }
4313        #[automatically_derived]
4314        #[doc(hidden)]
4315        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidHotShotBlockForCommitmentCheck {
4316            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4317                Self {}
4318            }
4319        }
4320        #[automatically_derived]
4321        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4322            type Parameters<'a> = UnderlyingSolTuple<'a>;
4323            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4324            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4325            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4326            #[inline]
4327            fn new<'a>(
4328                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4329            ) -> Self {
4330                tuple.into()
4331            }
4332            #[inline]
4333            fn tokenize(&self) -> Self::Token<'_> {
4334                ()
4335            }
4336        }
4337    };
4338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4339    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4340    ```solidity
4341    error InvalidInitialization();
4342    ```*/
4343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4344    #[derive(Clone)]
4345    pub struct InvalidInitialization {}
4346    #[allow(
4347        non_camel_case_types,
4348        non_snake_case,
4349        clippy::pub_underscore_fields,
4350        clippy::style
4351    )]
4352    const _: () = {
4353        use alloy::sol_types as alloy_sol_types;
4354        #[doc(hidden)]
4355        type UnderlyingSolTuple<'a> = ();
4356        #[doc(hidden)]
4357        type UnderlyingRustTuple<'a> = ();
4358        #[cfg(test)]
4359        #[allow(dead_code, unreachable_patterns)]
4360        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4361            match _t {
4362                alloy_sol_types::private::AssertTypeEq::<
4363                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4364                >(_) => {},
4365            }
4366        }
4367        #[automatically_derived]
4368        #[doc(hidden)]
4369        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4370            fn from(value: InvalidInitialization) -> Self {
4371                ()
4372            }
4373        }
4374        #[automatically_derived]
4375        #[doc(hidden)]
4376        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4377            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4378                Self {}
4379            }
4380        }
4381        #[automatically_derived]
4382        impl alloy_sol_types::SolError for InvalidInitialization {
4383            type Parameters<'a> = UnderlyingSolTuple<'a>;
4384            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4385            const SIGNATURE: &'static str = "InvalidInitialization()";
4386            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4387            #[inline]
4388            fn new<'a>(
4389                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4390            ) -> Self {
4391                tuple.into()
4392            }
4393            #[inline]
4394            fn tokenize(&self) -> Self::Token<'_> {
4395                ()
4396            }
4397        }
4398    };
4399    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4400    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4401    ```solidity
4402    error InvalidMaxStateHistory();
4403    ```*/
4404    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4405    #[derive(Clone)]
4406    pub struct InvalidMaxStateHistory {}
4407    #[allow(
4408        non_camel_case_types,
4409        non_snake_case,
4410        clippy::pub_underscore_fields,
4411        clippy::style
4412    )]
4413    const _: () = {
4414        use alloy::sol_types as alloy_sol_types;
4415        #[doc(hidden)]
4416        type UnderlyingSolTuple<'a> = ();
4417        #[doc(hidden)]
4418        type UnderlyingRustTuple<'a> = ();
4419        #[cfg(test)]
4420        #[allow(dead_code, unreachable_patterns)]
4421        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4422            match _t {
4423                alloy_sol_types::private::AssertTypeEq::<
4424                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4425                >(_) => {},
4426            }
4427        }
4428        #[automatically_derived]
4429        #[doc(hidden)]
4430        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4431            fn from(value: InvalidMaxStateHistory) -> Self {
4432                ()
4433            }
4434        }
4435        #[automatically_derived]
4436        #[doc(hidden)]
4437        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4438            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4439                Self {}
4440            }
4441        }
4442        #[automatically_derived]
4443        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4444            type Parameters<'a> = UnderlyingSolTuple<'a>;
4445            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4446            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4447            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4448            #[inline]
4449            fn new<'a>(
4450                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4451            ) -> Self {
4452                tuple.into()
4453            }
4454            #[inline]
4455            fn tokenize(&self) -> Self::Token<'_> {
4456                ()
4457            }
4458        }
4459    };
4460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4461    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
4462    ```solidity
4463    error InvalidProof();
4464    ```*/
4465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4466    #[derive(Clone)]
4467    pub struct InvalidProof {}
4468    #[allow(
4469        non_camel_case_types,
4470        non_snake_case,
4471        clippy::pub_underscore_fields,
4472        clippy::style
4473    )]
4474    const _: () = {
4475        use alloy::sol_types as alloy_sol_types;
4476        #[doc(hidden)]
4477        type UnderlyingSolTuple<'a> = ();
4478        #[doc(hidden)]
4479        type UnderlyingRustTuple<'a> = ();
4480        #[cfg(test)]
4481        #[allow(dead_code, unreachable_patterns)]
4482        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4483            match _t {
4484                alloy_sol_types::private::AssertTypeEq::<
4485                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4486                >(_) => {},
4487            }
4488        }
4489        #[automatically_derived]
4490        #[doc(hidden)]
4491        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
4492            fn from(value: InvalidProof) -> Self {
4493                ()
4494            }
4495        }
4496        #[automatically_derived]
4497        #[doc(hidden)]
4498        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
4499            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4500                Self {}
4501            }
4502        }
4503        #[automatically_derived]
4504        impl alloy_sol_types::SolError for InvalidProof {
4505            type Parameters<'a> = UnderlyingSolTuple<'a>;
4506            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4507            const SIGNATURE: &'static str = "InvalidProof()";
4508            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
4509            #[inline]
4510            fn new<'a>(
4511                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4512            ) -> Self {
4513                tuple.into()
4514            }
4515            #[inline]
4516            fn tokenize(&self) -> Self::Token<'_> {
4517                ()
4518            }
4519        }
4520    };
4521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4522    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
4523    ```solidity
4524    error NoChangeRequired();
4525    ```*/
4526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4527    #[derive(Clone)]
4528    pub struct NoChangeRequired {}
4529    #[allow(
4530        non_camel_case_types,
4531        non_snake_case,
4532        clippy::pub_underscore_fields,
4533        clippy::style
4534    )]
4535    const _: () = {
4536        use alloy::sol_types as alloy_sol_types;
4537        #[doc(hidden)]
4538        type UnderlyingSolTuple<'a> = ();
4539        #[doc(hidden)]
4540        type UnderlyingRustTuple<'a> = ();
4541        #[cfg(test)]
4542        #[allow(dead_code, unreachable_patterns)]
4543        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4544            match _t {
4545                alloy_sol_types::private::AssertTypeEq::<
4546                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4547                >(_) => {},
4548            }
4549        }
4550        #[automatically_derived]
4551        #[doc(hidden)]
4552        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
4553            fn from(value: NoChangeRequired) -> Self {
4554                ()
4555            }
4556        }
4557        #[automatically_derived]
4558        #[doc(hidden)]
4559        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
4560            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4561                Self {}
4562            }
4563        }
4564        #[automatically_derived]
4565        impl alloy_sol_types::SolError for NoChangeRequired {
4566            type Parameters<'a> = UnderlyingSolTuple<'a>;
4567            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4568            const SIGNATURE: &'static str = "NoChangeRequired()";
4569            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
4570            #[inline]
4571            fn new<'a>(
4572                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4573            ) -> Self {
4574                tuple.into()
4575            }
4576            #[inline]
4577            fn tokenize(&self) -> Self::Token<'_> {
4578                ()
4579            }
4580        }
4581    };
4582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4583    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
4584    ```solidity
4585    error NotInitializing();
4586    ```*/
4587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4588    #[derive(Clone)]
4589    pub struct NotInitializing {}
4590    #[allow(
4591        non_camel_case_types,
4592        non_snake_case,
4593        clippy::pub_underscore_fields,
4594        clippy::style
4595    )]
4596    const _: () = {
4597        use alloy::sol_types as alloy_sol_types;
4598        #[doc(hidden)]
4599        type UnderlyingSolTuple<'a> = ();
4600        #[doc(hidden)]
4601        type UnderlyingRustTuple<'a> = ();
4602        #[cfg(test)]
4603        #[allow(dead_code, unreachable_patterns)]
4604        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4605            match _t {
4606                alloy_sol_types::private::AssertTypeEq::<
4607                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4608                >(_) => {},
4609            }
4610        }
4611        #[automatically_derived]
4612        #[doc(hidden)]
4613        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
4614            fn from(value: NotInitializing) -> Self {
4615                ()
4616            }
4617        }
4618        #[automatically_derived]
4619        #[doc(hidden)]
4620        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
4621            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4622                Self {}
4623            }
4624        }
4625        #[automatically_derived]
4626        impl alloy_sol_types::SolError for NotInitializing {
4627            type Parameters<'a> = UnderlyingSolTuple<'a>;
4628            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4629            const SIGNATURE: &'static str = "NotInitializing()";
4630            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
4631            #[inline]
4632            fn new<'a>(
4633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4634            ) -> Self {
4635                tuple.into()
4636            }
4637            #[inline]
4638            fn tokenize(&self) -> Self::Token<'_> {
4639                ()
4640            }
4641        }
4642    };
4643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4644    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
4645    ```solidity
4646    error OutdatedState();
4647    ```*/
4648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4649    #[derive(Clone)]
4650    pub struct OutdatedState {}
4651    #[allow(
4652        non_camel_case_types,
4653        non_snake_case,
4654        clippy::pub_underscore_fields,
4655        clippy::style
4656    )]
4657    const _: () = {
4658        use alloy::sol_types as alloy_sol_types;
4659        #[doc(hidden)]
4660        type UnderlyingSolTuple<'a> = ();
4661        #[doc(hidden)]
4662        type UnderlyingRustTuple<'a> = ();
4663        #[cfg(test)]
4664        #[allow(dead_code, unreachable_patterns)]
4665        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4666            match _t {
4667                alloy_sol_types::private::AssertTypeEq::<
4668                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4669                >(_) => {},
4670            }
4671        }
4672        #[automatically_derived]
4673        #[doc(hidden)]
4674        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
4675            fn from(value: OutdatedState) -> Self {
4676                ()
4677            }
4678        }
4679        #[automatically_derived]
4680        #[doc(hidden)]
4681        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
4682            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4683                Self {}
4684            }
4685        }
4686        #[automatically_derived]
4687        impl alloy_sol_types::SolError for OutdatedState {
4688            type Parameters<'a> = UnderlyingSolTuple<'a>;
4689            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4690            const SIGNATURE: &'static str = "OutdatedState()";
4691            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
4692            #[inline]
4693            fn new<'a>(
4694                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4695            ) -> Self {
4696                tuple.into()
4697            }
4698            #[inline]
4699            fn tokenize(&self) -> Self::Token<'_> {
4700                ()
4701            }
4702        }
4703    };
4704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4705    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
4706    ```solidity
4707    error OwnableInvalidOwner(address owner);
4708    ```*/
4709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4710    #[derive(Clone)]
4711    pub struct OwnableInvalidOwner {
4712        #[allow(missing_docs)]
4713        pub owner: alloy::sol_types::private::Address,
4714    }
4715    #[allow(
4716        non_camel_case_types,
4717        non_snake_case,
4718        clippy::pub_underscore_fields,
4719        clippy::style
4720    )]
4721    const _: () = {
4722        use alloy::sol_types as alloy_sol_types;
4723        #[doc(hidden)]
4724        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4725        #[doc(hidden)]
4726        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4727        #[cfg(test)]
4728        #[allow(dead_code, unreachable_patterns)]
4729        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4730            match _t {
4731                alloy_sol_types::private::AssertTypeEq::<
4732                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4733                >(_) => {},
4734            }
4735        }
4736        #[automatically_derived]
4737        #[doc(hidden)]
4738        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
4739            fn from(value: OwnableInvalidOwner) -> Self {
4740                (value.owner,)
4741            }
4742        }
4743        #[automatically_derived]
4744        #[doc(hidden)]
4745        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
4746            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4747                Self { owner: tuple.0 }
4748            }
4749        }
4750        #[automatically_derived]
4751        impl alloy_sol_types::SolError for OwnableInvalidOwner {
4752            type Parameters<'a> = UnderlyingSolTuple<'a>;
4753            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4754            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
4755            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
4756            #[inline]
4757            fn new<'a>(
4758                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4759            ) -> Self {
4760                tuple.into()
4761            }
4762            #[inline]
4763            fn tokenize(&self) -> Self::Token<'_> {
4764                (
4765                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4766                        &self.owner,
4767                    ),
4768                )
4769            }
4770        }
4771    };
4772    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4773    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
4774    ```solidity
4775    error OwnableUnauthorizedAccount(address account);
4776    ```*/
4777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4778    #[derive(Clone)]
4779    pub struct OwnableUnauthorizedAccount {
4780        #[allow(missing_docs)]
4781        pub account: alloy::sol_types::private::Address,
4782    }
4783    #[allow(
4784        non_camel_case_types,
4785        non_snake_case,
4786        clippy::pub_underscore_fields,
4787        clippy::style
4788    )]
4789    const _: () = {
4790        use alloy::sol_types as alloy_sol_types;
4791        #[doc(hidden)]
4792        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4793        #[doc(hidden)]
4794        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4795        #[cfg(test)]
4796        #[allow(dead_code, unreachable_patterns)]
4797        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4798            match _t {
4799                alloy_sol_types::private::AssertTypeEq::<
4800                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4801                >(_) => {},
4802            }
4803        }
4804        #[automatically_derived]
4805        #[doc(hidden)]
4806        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
4807            fn from(value: OwnableUnauthorizedAccount) -> Self {
4808                (value.account,)
4809            }
4810        }
4811        #[automatically_derived]
4812        #[doc(hidden)]
4813        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
4814            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4815                Self { account: tuple.0 }
4816            }
4817        }
4818        #[automatically_derived]
4819        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
4820            type Parameters<'a> = UnderlyingSolTuple<'a>;
4821            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4822            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
4823            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
4824            #[inline]
4825            fn new<'a>(
4826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4827            ) -> Self {
4828                tuple.into()
4829            }
4830            #[inline]
4831            fn tokenize(&self) -> Self::Token<'_> {
4832                (
4833                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4834                        &self.account,
4835                    ),
4836                )
4837            }
4838        }
4839    };
4840    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4841    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
4842    ```solidity
4843    error ProverNotPermissioned();
4844    ```*/
4845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4846    #[derive(Clone)]
4847    pub struct ProverNotPermissioned {}
4848    #[allow(
4849        non_camel_case_types,
4850        non_snake_case,
4851        clippy::pub_underscore_fields,
4852        clippy::style
4853    )]
4854    const _: () = {
4855        use alloy::sol_types as alloy_sol_types;
4856        #[doc(hidden)]
4857        type UnderlyingSolTuple<'a> = ();
4858        #[doc(hidden)]
4859        type UnderlyingRustTuple<'a> = ();
4860        #[cfg(test)]
4861        #[allow(dead_code, unreachable_patterns)]
4862        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4863            match _t {
4864                alloy_sol_types::private::AssertTypeEq::<
4865                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4866                >(_) => {},
4867            }
4868        }
4869        #[automatically_derived]
4870        #[doc(hidden)]
4871        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
4872            fn from(value: ProverNotPermissioned) -> Self {
4873                ()
4874            }
4875        }
4876        #[automatically_derived]
4877        #[doc(hidden)]
4878        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
4879            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4880                Self {}
4881            }
4882        }
4883        #[automatically_derived]
4884        impl alloy_sol_types::SolError for ProverNotPermissioned {
4885            type Parameters<'a> = UnderlyingSolTuple<'a>;
4886            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4887            const SIGNATURE: &'static str = "ProverNotPermissioned()";
4888            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
4889            #[inline]
4890            fn new<'a>(
4891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4892            ) -> Self {
4893                tuple.into()
4894            }
4895            #[inline]
4896            fn tokenize(&self) -> Self::Token<'_> {
4897                ()
4898            }
4899        }
4900    };
4901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4902    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
4903    ```solidity
4904    error UUPSUnauthorizedCallContext();
4905    ```*/
4906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4907    #[derive(Clone)]
4908    pub struct UUPSUnauthorizedCallContext {}
4909    #[allow(
4910        non_camel_case_types,
4911        non_snake_case,
4912        clippy::pub_underscore_fields,
4913        clippy::style
4914    )]
4915    const _: () = {
4916        use alloy::sol_types as alloy_sol_types;
4917        #[doc(hidden)]
4918        type UnderlyingSolTuple<'a> = ();
4919        #[doc(hidden)]
4920        type UnderlyingRustTuple<'a> = ();
4921        #[cfg(test)]
4922        #[allow(dead_code, unreachable_patterns)]
4923        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4924            match _t {
4925                alloy_sol_types::private::AssertTypeEq::<
4926                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4927                >(_) => {},
4928            }
4929        }
4930        #[automatically_derived]
4931        #[doc(hidden)]
4932        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
4933            fn from(value: UUPSUnauthorizedCallContext) -> Self {
4934                ()
4935            }
4936        }
4937        #[automatically_derived]
4938        #[doc(hidden)]
4939        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
4940            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4941                Self {}
4942            }
4943        }
4944        #[automatically_derived]
4945        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
4946            type Parameters<'a> = UnderlyingSolTuple<'a>;
4947            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4948            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
4949            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
4950            #[inline]
4951            fn new<'a>(
4952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4953            ) -> Self {
4954                tuple.into()
4955            }
4956            #[inline]
4957            fn tokenize(&self) -> Self::Token<'_> {
4958                ()
4959            }
4960        }
4961    };
4962    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4963    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
4964    ```solidity
4965    error UUPSUnsupportedProxiableUUID(bytes32 slot);
4966    ```*/
4967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4968    #[derive(Clone)]
4969    pub struct UUPSUnsupportedProxiableUUID {
4970        #[allow(missing_docs)]
4971        pub slot: alloy::sol_types::private::FixedBytes<32>,
4972    }
4973    #[allow(
4974        non_camel_case_types,
4975        non_snake_case,
4976        clippy::pub_underscore_fields,
4977        clippy::style
4978    )]
4979    const _: () = {
4980        use alloy::sol_types as alloy_sol_types;
4981        #[doc(hidden)]
4982        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4983        #[doc(hidden)]
4984        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4985        #[cfg(test)]
4986        #[allow(dead_code, unreachable_patterns)]
4987        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4988            match _t {
4989                alloy_sol_types::private::AssertTypeEq::<
4990                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4991                >(_) => {},
4992            }
4993        }
4994        #[automatically_derived]
4995        #[doc(hidden)]
4996        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
4997            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
4998                (value.slot,)
4999            }
5000        }
5001        #[automatically_derived]
5002        #[doc(hidden)]
5003        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
5004            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5005                Self { slot: tuple.0 }
5006            }
5007        }
5008        #[automatically_derived]
5009        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5010            type Parameters<'a> = UnderlyingSolTuple<'a>;
5011            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5012            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5013            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5014            #[inline]
5015            fn new<'a>(
5016                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5017            ) -> Self {
5018                tuple.into()
5019            }
5020            #[inline]
5021            fn tokenize(&self) -> Self::Token<'_> {
5022                (
5023                    <alloy::sol_types::sol_data::FixedBytes<
5024                        32,
5025                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5026                )
5027            }
5028        }
5029    };
5030    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5031    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5032    ```solidity
5033    error WrongStakeTableUsed();
5034    ```*/
5035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5036    #[derive(Clone)]
5037    pub struct WrongStakeTableUsed {}
5038    #[allow(
5039        non_camel_case_types,
5040        non_snake_case,
5041        clippy::pub_underscore_fields,
5042        clippy::style
5043    )]
5044    const _: () = {
5045        use alloy::sol_types as alloy_sol_types;
5046        #[doc(hidden)]
5047        type UnderlyingSolTuple<'a> = ();
5048        #[doc(hidden)]
5049        type UnderlyingRustTuple<'a> = ();
5050        #[cfg(test)]
5051        #[allow(dead_code, unreachable_patterns)]
5052        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5053            match _t {
5054                alloy_sol_types::private::AssertTypeEq::<
5055                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5056                >(_) => {},
5057            }
5058        }
5059        #[automatically_derived]
5060        #[doc(hidden)]
5061        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5062            fn from(value: WrongStakeTableUsed) -> Self {
5063                ()
5064            }
5065        }
5066        #[automatically_derived]
5067        #[doc(hidden)]
5068        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5069            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5070                Self {}
5071            }
5072        }
5073        #[automatically_derived]
5074        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5075            type Parameters<'a> = UnderlyingSolTuple<'a>;
5076            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5077            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5078            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5079            #[inline]
5080            fn new<'a>(
5081                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5082            ) -> Self {
5083                tuple.into()
5084            }
5085            #[inline]
5086            fn tokenize(&self) -> Self::Token<'_> {
5087                ()
5088            }
5089        }
5090    };
5091    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5092    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5093    ```solidity
5094    event Initialized(uint64 version);
5095    ```*/
5096    #[allow(
5097        non_camel_case_types,
5098        non_snake_case,
5099        clippy::pub_underscore_fields,
5100        clippy::style
5101    )]
5102    #[derive(Clone)]
5103    pub struct Initialized {
5104        #[allow(missing_docs)]
5105        pub version: u64,
5106    }
5107    #[allow(
5108        non_camel_case_types,
5109        non_snake_case,
5110        clippy::pub_underscore_fields,
5111        clippy::style
5112    )]
5113    const _: () = {
5114        use alloy::sol_types as alloy_sol_types;
5115        #[automatically_derived]
5116        impl alloy_sol_types::SolEvent for Initialized {
5117            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5118            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5119            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5120            const SIGNATURE: &'static str = "Initialized(uint64)";
5121            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5122                alloy_sol_types::private::B256::new([
5123                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
5124                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
5125                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5126                ]);
5127            const ANONYMOUS: bool = false;
5128            #[allow(unused_variables)]
5129            #[inline]
5130            fn new(
5131                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5132                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5133            ) -> Self {
5134                Self { version: data.0 }
5135            }
5136            #[inline]
5137            fn check_signature(
5138                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5139            ) -> alloy_sol_types::Result<()> {
5140                if topics.0 != Self::SIGNATURE_HASH {
5141                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5142                        Self::SIGNATURE,
5143                        topics.0,
5144                        Self::SIGNATURE_HASH,
5145                    ));
5146                }
5147                Ok(())
5148            }
5149            #[inline]
5150            fn tokenize_body(&self) -> Self::DataToken<'_> {
5151                (
5152                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5153                        &self.version,
5154                    ),
5155                )
5156            }
5157            #[inline]
5158            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5159                (Self::SIGNATURE_HASH.into(),)
5160            }
5161            #[inline]
5162            fn encode_topics_raw(
5163                &self,
5164                out: &mut [alloy_sol_types::abi::token::WordToken],
5165            ) -> alloy_sol_types::Result<()> {
5166                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5167                    return Err(alloy_sol_types::Error::Overrun);
5168                }
5169                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5170                Ok(())
5171            }
5172        }
5173        #[automatically_derived]
5174        impl alloy_sol_types::private::IntoLogData for Initialized {
5175            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5176                From::from(self)
5177            }
5178            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5179                From::from(&self)
5180            }
5181        }
5182        #[automatically_derived]
5183        impl From<&Initialized> for alloy_sol_types::private::LogData {
5184            #[inline]
5185            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5186                alloy_sol_types::SolEvent::encode_log_data(this)
5187            }
5188        }
5189    };
5190    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5191    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5192    ```solidity
5193    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5194    ```*/
5195    #[allow(
5196        non_camel_case_types,
5197        non_snake_case,
5198        clippy::pub_underscore_fields,
5199        clippy::style
5200    )]
5201    #[derive(Clone)]
5202    pub struct NewState {
5203        #[allow(missing_docs)]
5204        pub viewNum: u64,
5205        #[allow(missing_docs)]
5206        pub blockHeight: u64,
5207        #[allow(missing_docs)]
5208        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5209    }
5210    #[allow(
5211        non_camel_case_types,
5212        non_snake_case,
5213        clippy::pub_underscore_fields,
5214        clippy::style
5215    )]
5216    const _: () = {
5217        use alloy::sol_types as alloy_sol_types;
5218        #[automatically_derived]
5219        impl alloy_sol_types::SolEvent for NewState {
5220            type DataTuple<'a> = (BN254::ScalarField,);
5221            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5222            type TopicList = (
5223                alloy_sol_types::sol_data::FixedBytes<32>,
5224                alloy::sol_types::sol_data::Uint<64>,
5225                alloy::sol_types::sol_data::Uint<64>,
5226            );
5227            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
5228            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5229                alloy_sol_types::private::B256::new([
5230                    160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8,
5231                    37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8,
5232                    252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
5233                ]);
5234            const ANONYMOUS: bool = false;
5235            #[allow(unused_variables)]
5236            #[inline]
5237            fn new(
5238                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5239                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5240            ) -> Self {
5241                Self {
5242                    viewNum: topics.1,
5243                    blockHeight: topics.2,
5244                    blockCommRoot: data.0,
5245                }
5246            }
5247            #[inline]
5248            fn check_signature(
5249                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5250            ) -> alloy_sol_types::Result<()> {
5251                if topics.0 != Self::SIGNATURE_HASH {
5252                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5253                        Self::SIGNATURE,
5254                        topics.0,
5255                        Self::SIGNATURE_HASH,
5256                    ));
5257                }
5258                Ok(())
5259            }
5260            #[inline]
5261            fn tokenize_body(&self) -> Self::DataToken<'_> {
5262                (<BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
5263                    &self.blockCommRoot,
5264                ),)
5265            }
5266            #[inline]
5267            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5268                (
5269                    Self::SIGNATURE_HASH.into(),
5270                    self.viewNum.clone(),
5271                    self.blockHeight.clone(),
5272                )
5273            }
5274            #[inline]
5275            fn encode_topics_raw(
5276                &self,
5277                out: &mut [alloy_sol_types::abi::token::WordToken],
5278            ) -> alloy_sol_types::Result<()> {
5279                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5280                    return Err(alloy_sol_types::Error::Overrun);
5281                }
5282                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5283                out[1usize] = <alloy::sol_types::sol_data::Uint<
5284                    64,
5285                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
5286                out[2usize] = <alloy::sol_types::sol_data::Uint<
5287                    64,
5288                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
5289                Ok(())
5290            }
5291        }
5292        #[automatically_derived]
5293        impl alloy_sol_types::private::IntoLogData for NewState {
5294            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5295                From::from(self)
5296            }
5297            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5298                From::from(&self)
5299            }
5300        }
5301        #[automatically_derived]
5302        impl From<&NewState> for alloy_sol_types::private::LogData {
5303            #[inline]
5304            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
5305                alloy_sol_types::SolEvent::encode_log_data(this)
5306            }
5307        }
5308    };
5309    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5310    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5311    ```solidity
5312    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5313    ```*/
5314    #[allow(
5315        non_camel_case_types,
5316        non_snake_case,
5317        clippy::pub_underscore_fields,
5318        clippy::style
5319    )]
5320    #[derive(Clone)]
5321    pub struct OwnershipTransferred {
5322        #[allow(missing_docs)]
5323        pub previousOwner: alloy::sol_types::private::Address,
5324        #[allow(missing_docs)]
5325        pub newOwner: alloy::sol_types::private::Address,
5326    }
5327    #[allow(
5328        non_camel_case_types,
5329        non_snake_case,
5330        clippy::pub_underscore_fields,
5331        clippy::style
5332    )]
5333    const _: () = {
5334        use alloy::sol_types as alloy_sol_types;
5335        #[automatically_derived]
5336        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5337            type DataTuple<'a> = ();
5338            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5339            type TopicList = (
5340                alloy_sol_types::sol_data::FixedBytes<32>,
5341                alloy::sol_types::sol_data::Address,
5342                alloy::sol_types::sol_data::Address,
5343            );
5344            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5345            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5346                alloy_sol_types::private::B256::new([
5347                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
5348                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
5349                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5350                ]);
5351            const ANONYMOUS: bool = false;
5352            #[allow(unused_variables)]
5353            #[inline]
5354            fn new(
5355                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5356                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5357            ) -> Self {
5358                Self {
5359                    previousOwner: topics.1,
5360                    newOwner: topics.2,
5361                }
5362            }
5363            #[inline]
5364            fn check_signature(
5365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5366            ) -> alloy_sol_types::Result<()> {
5367                if topics.0 != Self::SIGNATURE_HASH {
5368                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5369                        Self::SIGNATURE,
5370                        topics.0,
5371                        Self::SIGNATURE_HASH,
5372                    ));
5373                }
5374                Ok(())
5375            }
5376            #[inline]
5377            fn tokenize_body(&self) -> Self::DataToken<'_> {
5378                ()
5379            }
5380            #[inline]
5381            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5382                (
5383                    Self::SIGNATURE_HASH.into(),
5384                    self.previousOwner.clone(),
5385                    self.newOwner.clone(),
5386                )
5387            }
5388            #[inline]
5389            fn encode_topics_raw(
5390                &self,
5391                out: &mut [alloy_sol_types::abi::token::WordToken],
5392            ) -> alloy_sol_types::Result<()> {
5393                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5394                    return Err(alloy_sol_types::Error::Overrun);
5395                }
5396                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5397                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5398                    &self.previousOwner,
5399                );
5400                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5401                    &self.newOwner,
5402                );
5403                Ok(())
5404            }
5405        }
5406        #[automatically_derived]
5407        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5408            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5409                From::from(self)
5410            }
5411            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5412                From::from(&self)
5413            }
5414        }
5415        #[automatically_derived]
5416        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5417            #[inline]
5418            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5419                alloy_sol_types::SolEvent::encode_log_data(this)
5420            }
5421        }
5422    };
5423    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5424    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
5425    ```solidity
5426    event PermissionedProverNotRequired();
5427    ```*/
5428    #[allow(
5429        non_camel_case_types,
5430        non_snake_case,
5431        clippy::pub_underscore_fields,
5432        clippy::style
5433    )]
5434    #[derive(Clone)]
5435    pub struct PermissionedProverNotRequired {}
5436    #[allow(
5437        non_camel_case_types,
5438        non_snake_case,
5439        clippy::pub_underscore_fields,
5440        clippy::style
5441    )]
5442    const _: () = {
5443        use alloy::sol_types as alloy_sol_types;
5444        #[automatically_derived]
5445        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
5446            type DataTuple<'a> = ();
5447            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5448            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5449            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
5450            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5451                alloy_sol_types::private::B256::new([
5452                    154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
5453                    92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
5454                    109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
5455                ]);
5456            const ANONYMOUS: bool = false;
5457            #[allow(unused_variables)]
5458            #[inline]
5459            fn new(
5460                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5461                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5462            ) -> Self {
5463                Self {}
5464            }
5465            #[inline]
5466            fn check_signature(
5467                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5468            ) -> alloy_sol_types::Result<()> {
5469                if topics.0 != Self::SIGNATURE_HASH {
5470                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5471                        Self::SIGNATURE,
5472                        topics.0,
5473                        Self::SIGNATURE_HASH,
5474                    ));
5475                }
5476                Ok(())
5477            }
5478            #[inline]
5479            fn tokenize_body(&self) -> Self::DataToken<'_> {
5480                ()
5481            }
5482            #[inline]
5483            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5484                (Self::SIGNATURE_HASH.into(),)
5485            }
5486            #[inline]
5487            fn encode_topics_raw(
5488                &self,
5489                out: &mut [alloy_sol_types::abi::token::WordToken],
5490            ) -> alloy_sol_types::Result<()> {
5491                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5492                    return Err(alloy_sol_types::Error::Overrun);
5493                }
5494                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5495                Ok(())
5496            }
5497        }
5498        #[automatically_derived]
5499        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
5500            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5501                From::from(self)
5502            }
5503            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5504                From::from(&self)
5505            }
5506        }
5507        #[automatically_derived]
5508        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
5509            #[inline]
5510            fn from(this: &PermissionedProverNotRequired) -> alloy_sol_types::private::LogData {
5511                alloy_sol_types::SolEvent::encode_log_data(this)
5512            }
5513        }
5514    };
5515    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5516    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
5517    ```solidity
5518    event PermissionedProverRequired(address permissionedProver);
5519    ```*/
5520    #[allow(
5521        non_camel_case_types,
5522        non_snake_case,
5523        clippy::pub_underscore_fields,
5524        clippy::style
5525    )]
5526    #[derive(Clone)]
5527    pub struct PermissionedProverRequired {
5528        #[allow(missing_docs)]
5529        pub permissionedProver: alloy::sol_types::private::Address,
5530    }
5531    #[allow(
5532        non_camel_case_types,
5533        non_snake_case,
5534        clippy::pub_underscore_fields,
5535        clippy::style
5536    )]
5537    const _: () = {
5538        use alloy::sol_types as alloy_sol_types;
5539        #[automatically_derived]
5540        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
5541            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5542            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5543            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5544            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
5545            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5546                alloy_sol_types::private::B256::new([
5547                    128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
5548                    212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8,
5549                    133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
5550                ]);
5551            const ANONYMOUS: bool = false;
5552            #[allow(unused_variables)]
5553            #[inline]
5554            fn new(
5555                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5556                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5557            ) -> Self {
5558                Self {
5559                    permissionedProver: data.0,
5560                }
5561            }
5562            #[inline]
5563            fn check_signature(
5564                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5565            ) -> alloy_sol_types::Result<()> {
5566                if topics.0 != Self::SIGNATURE_HASH {
5567                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5568                        Self::SIGNATURE,
5569                        topics.0,
5570                        Self::SIGNATURE_HASH,
5571                    ));
5572                }
5573                Ok(())
5574            }
5575            #[inline]
5576            fn tokenize_body(&self) -> Self::DataToken<'_> {
5577                (
5578                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5579                        &self.permissionedProver,
5580                    ),
5581                )
5582            }
5583            #[inline]
5584            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5585                (Self::SIGNATURE_HASH.into(),)
5586            }
5587            #[inline]
5588            fn encode_topics_raw(
5589                &self,
5590                out: &mut [alloy_sol_types::abi::token::WordToken],
5591            ) -> alloy_sol_types::Result<()> {
5592                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5593                    return Err(alloy_sol_types::Error::Overrun);
5594                }
5595                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5596                Ok(())
5597            }
5598        }
5599        #[automatically_derived]
5600        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
5601            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5602                From::from(self)
5603            }
5604            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5605                From::from(&self)
5606            }
5607        }
5608        #[automatically_derived]
5609        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
5610            #[inline]
5611            fn from(this: &PermissionedProverRequired) -> alloy_sol_types::private::LogData {
5612                alloy_sol_types::SolEvent::encode_log_data(this)
5613            }
5614        }
5615    };
5616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5617    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
5618    ```solidity
5619    event Upgrade(address implementation);
5620    ```*/
5621    #[allow(
5622        non_camel_case_types,
5623        non_snake_case,
5624        clippy::pub_underscore_fields,
5625        clippy::style
5626    )]
5627    #[derive(Clone)]
5628    pub struct Upgrade {
5629        #[allow(missing_docs)]
5630        pub implementation: alloy::sol_types::private::Address,
5631    }
5632    #[allow(
5633        non_camel_case_types,
5634        non_snake_case,
5635        clippy::pub_underscore_fields,
5636        clippy::style
5637    )]
5638    const _: () = {
5639        use alloy::sol_types as alloy_sol_types;
5640        #[automatically_derived]
5641        impl alloy_sol_types::SolEvent for Upgrade {
5642            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
5643            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5644            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5645            const SIGNATURE: &'static str = "Upgrade(address)";
5646            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5647                alloy_sol_types::private::B256::new([
5648                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
5649                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
5650                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
5651                ]);
5652            const ANONYMOUS: bool = false;
5653            #[allow(unused_variables)]
5654            #[inline]
5655            fn new(
5656                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5657                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5658            ) -> Self {
5659                Self {
5660                    implementation: data.0,
5661                }
5662            }
5663            #[inline]
5664            fn check_signature(
5665                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5666            ) -> alloy_sol_types::Result<()> {
5667                if topics.0 != Self::SIGNATURE_HASH {
5668                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5669                        Self::SIGNATURE,
5670                        topics.0,
5671                        Self::SIGNATURE_HASH,
5672                    ));
5673                }
5674                Ok(())
5675            }
5676            #[inline]
5677            fn tokenize_body(&self) -> Self::DataToken<'_> {
5678                (
5679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5680                        &self.implementation,
5681                    ),
5682                )
5683            }
5684            #[inline]
5685            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5686                (Self::SIGNATURE_HASH.into(),)
5687            }
5688            #[inline]
5689            fn encode_topics_raw(
5690                &self,
5691                out: &mut [alloy_sol_types::abi::token::WordToken],
5692            ) -> alloy_sol_types::Result<()> {
5693                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5694                    return Err(alloy_sol_types::Error::Overrun);
5695                }
5696                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5697                Ok(())
5698            }
5699        }
5700        #[automatically_derived]
5701        impl alloy_sol_types::private::IntoLogData for Upgrade {
5702            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5703                From::from(self)
5704            }
5705            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5706                From::from(&self)
5707            }
5708        }
5709        #[automatically_derived]
5710        impl From<&Upgrade> for alloy_sol_types::private::LogData {
5711            #[inline]
5712            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
5713                alloy_sol_types::SolEvent::encode_log_data(this)
5714            }
5715        }
5716    };
5717    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5718    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
5719    ```solidity
5720    event Upgraded(address indexed implementation);
5721    ```*/
5722    #[allow(
5723        non_camel_case_types,
5724        non_snake_case,
5725        clippy::pub_underscore_fields,
5726        clippy::style
5727    )]
5728    #[derive(Clone)]
5729    pub struct Upgraded {
5730        #[allow(missing_docs)]
5731        pub implementation: alloy::sol_types::private::Address,
5732    }
5733    #[allow(
5734        non_camel_case_types,
5735        non_snake_case,
5736        clippy::pub_underscore_fields,
5737        clippy::style
5738    )]
5739    const _: () = {
5740        use alloy::sol_types as alloy_sol_types;
5741        #[automatically_derived]
5742        impl alloy_sol_types::SolEvent for Upgraded {
5743            type DataTuple<'a> = ();
5744            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5745            type TopicList = (
5746                alloy_sol_types::sol_data::FixedBytes<32>,
5747                alloy::sol_types::sol_data::Address,
5748            );
5749            const SIGNATURE: &'static str = "Upgraded(address)";
5750            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5751                alloy_sol_types::private::B256::new([
5752                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
5753                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
5754                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
5755                ]);
5756            const ANONYMOUS: bool = false;
5757            #[allow(unused_variables)]
5758            #[inline]
5759            fn new(
5760                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5761                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5762            ) -> Self {
5763                Self {
5764                    implementation: topics.1,
5765                }
5766            }
5767            #[inline]
5768            fn check_signature(
5769                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5770            ) -> alloy_sol_types::Result<()> {
5771                if topics.0 != Self::SIGNATURE_HASH {
5772                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5773                        Self::SIGNATURE,
5774                        topics.0,
5775                        Self::SIGNATURE_HASH,
5776                    ));
5777                }
5778                Ok(())
5779            }
5780            #[inline]
5781            fn tokenize_body(&self) -> Self::DataToken<'_> {
5782                ()
5783            }
5784            #[inline]
5785            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5786                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
5787            }
5788            #[inline]
5789            fn encode_topics_raw(
5790                &self,
5791                out: &mut [alloy_sol_types::abi::token::WordToken],
5792            ) -> alloy_sol_types::Result<()> {
5793                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5794                    return Err(alloy_sol_types::Error::Overrun);
5795                }
5796                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5797                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5798                    &self.implementation,
5799                );
5800                Ok(())
5801            }
5802        }
5803        #[automatically_derived]
5804        impl alloy_sol_types::private::IntoLogData for Upgraded {
5805            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5806                From::from(self)
5807            }
5808            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5809                From::from(&self)
5810            }
5811        }
5812        #[automatically_derived]
5813        impl From<&Upgraded> for alloy_sol_types::private::LogData {
5814            #[inline]
5815            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
5816                alloy_sol_types::SolEvent::encode_log_data(this)
5817            }
5818        }
5819    };
5820    /**Constructor`.
5821    ```solidity
5822    constructor();
5823    ```*/
5824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5825    #[derive(Clone)]
5826    pub struct constructorCall {}
5827    const _: () = {
5828        use alloy::sol_types as alloy_sol_types;
5829        {
5830            #[doc(hidden)]
5831            type UnderlyingSolTuple<'a> = ();
5832            #[doc(hidden)]
5833            type UnderlyingRustTuple<'a> = ();
5834            #[cfg(test)]
5835            #[allow(dead_code, unreachable_patterns)]
5836            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5837                match _t {
5838                    alloy_sol_types::private::AssertTypeEq::<
5839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5840                    >(_) => {},
5841                }
5842            }
5843            #[automatically_derived]
5844            #[doc(hidden)]
5845            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
5846                fn from(value: constructorCall) -> Self {
5847                    ()
5848                }
5849            }
5850            #[automatically_derived]
5851            #[doc(hidden)]
5852            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
5853                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5854                    Self {}
5855                }
5856            }
5857        }
5858        #[automatically_derived]
5859        impl alloy_sol_types::SolConstructor for constructorCall {
5860            type Parameters<'a> = ();
5861            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5862            #[inline]
5863            fn new<'a>(
5864                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5865            ) -> Self {
5866                tuple.into()
5867            }
5868            #[inline]
5869            fn tokenize(&self) -> Self::Token<'_> {
5870                ()
5871            }
5872        }
5873    };
5874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5875    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
5876    ```solidity
5877    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
5878    ```*/
5879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5880    #[derive(Clone)]
5881    pub struct UPGRADE_INTERFACE_VERSIONCall {}
5882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5883    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
5884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5885    #[derive(Clone)]
5886    pub struct UPGRADE_INTERFACE_VERSIONReturn {
5887        #[allow(missing_docs)]
5888        pub _0: alloy::sol_types::private::String,
5889    }
5890    #[allow(
5891        non_camel_case_types,
5892        non_snake_case,
5893        clippy::pub_underscore_fields,
5894        clippy::style
5895    )]
5896    const _: () = {
5897        use alloy::sol_types as alloy_sol_types;
5898        {
5899            #[doc(hidden)]
5900            type UnderlyingSolTuple<'a> = ();
5901            #[doc(hidden)]
5902            type UnderlyingRustTuple<'a> = ();
5903            #[cfg(test)]
5904            #[allow(dead_code, unreachable_patterns)]
5905            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5906                match _t {
5907                    alloy_sol_types::private::AssertTypeEq::<
5908                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5909                    >(_) => {},
5910                }
5911            }
5912            #[automatically_derived]
5913            #[doc(hidden)]
5914            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
5915                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
5916                    ()
5917                }
5918            }
5919            #[automatically_derived]
5920            #[doc(hidden)]
5921            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
5922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5923                    Self {}
5924                }
5925            }
5926        }
5927        {
5928            #[doc(hidden)]
5929            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
5930            #[doc(hidden)]
5931            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
5932            #[cfg(test)]
5933            #[allow(dead_code, unreachable_patterns)]
5934            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5935                match _t {
5936                    alloy_sol_types::private::AssertTypeEq::<
5937                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5938                    >(_) => {},
5939                }
5940            }
5941            #[automatically_derived]
5942            #[doc(hidden)]
5943            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
5944                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
5945                    (value._0,)
5946                }
5947            }
5948            #[automatically_derived]
5949            #[doc(hidden)]
5950            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
5951                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5952                    Self { _0: tuple.0 }
5953                }
5954            }
5955        }
5956        #[automatically_derived]
5957        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
5958            type Parameters<'a> = ();
5959            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5960            type Return = UPGRADE_INTERFACE_VERSIONReturn;
5961            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
5962            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5963            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
5964            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
5965            #[inline]
5966            fn new<'a>(
5967                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5968            ) -> Self {
5969                tuple.into()
5970            }
5971            #[inline]
5972            fn tokenize(&self) -> Self::Token<'_> {
5973                ()
5974            }
5975            #[inline]
5976            fn abi_decode_returns(
5977                data: &[u8],
5978                validate: bool,
5979            ) -> alloy_sol_types::Result<Self::Return> {
5980                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5981                    data, validate,
5982                )
5983                .map(Into::into)
5984            }
5985        }
5986    };
5987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5988    /**Function with signature `_getVk()` and selector `0x12173c2c`.
5989    ```solidity
5990    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
5991    ```*/
5992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5993    #[derive(Clone)]
5994    pub struct _getVkCall {}
5995    #[derive()]
5996    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
5997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5998    #[derive(Clone)]
5999    pub struct _getVkReturn {
6000        #[allow(missing_docs)]
6001        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6002    }
6003    #[allow(
6004        non_camel_case_types,
6005        non_snake_case,
6006        clippy::pub_underscore_fields,
6007        clippy::style
6008    )]
6009    const _: () = {
6010        use alloy::sol_types as alloy_sol_types;
6011        {
6012            #[doc(hidden)]
6013            type UnderlyingSolTuple<'a> = ();
6014            #[doc(hidden)]
6015            type UnderlyingRustTuple<'a> = ();
6016            #[cfg(test)]
6017            #[allow(dead_code, unreachable_patterns)]
6018            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6019                match _t {
6020                    alloy_sol_types::private::AssertTypeEq::<
6021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6022                    >(_) => {},
6023                }
6024            }
6025            #[automatically_derived]
6026            #[doc(hidden)]
6027            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6028                fn from(value: _getVkCall) -> Self {
6029                    ()
6030                }
6031            }
6032            #[automatically_derived]
6033            #[doc(hidden)]
6034            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6036                    Self {}
6037                }
6038            }
6039        }
6040        {
6041            #[doc(hidden)]
6042            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6043            #[doc(hidden)]
6044            type UnderlyingRustTuple<'a> =
6045                (<IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,);
6046            #[cfg(test)]
6047            #[allow(dead_code, unreachable_patterns)]
6048            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6049                match _t {
6050                    alloy_sol_types::private::AssertTypeEq::<
6051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6052                    >(_) => {},
6053                }
6054            }
6055            #[automatically_derived]
6056            #[doc(hidden)]
6057            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6058                fn from(value: _getVkReturn) -> Self {
6059                    (value.vk,)
6060                }
6061            }
6062            #[automatically_derived]
6063            #[doc(hidden)]
6064            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6066                    Self { vk: tuple.0 }
6067                }
6068            }
6069        }
6070        #[automatically_derived]
6071        impl alloy_sol_types::SolCall for _getVkCall {
6072            type Parameters<'a> = ();
6073            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6074            type Return = _getVkReturn;
6075            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6076            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6077            const SIGNATURE: &'static str = "_getVk()";
6078            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6079            #[inline]
6080            fn new<'a>(
6081                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6082            ) -> Self {
6083                tuple.into()
6084            }
6085            #[inline]
6086            fn tokenize(&self) -> Self::Token<'_> {
6087                ()
6088            }
6089            #[inline]
6090            fn abi_decode_returns(
6091                data: &[u8],
6092                validate: bool,
6093            ) -> alloy_sol_types::Result<Self::Return> {
6094                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6095                    data, validate,
6096                )
6097                .map(Into::into)
6098            }
6099        }
6100    };
6101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6102    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6103    ```solidity
6104    function currentBlockNumber() external view returns (uint256);
6105    ```*/
6106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6107    #[derive(Clone)]
6108    pub struct currentBlockNumberCall {}
6109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6110    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6112    #[derive(Clone)]
6113    pub struct currentBlockNumberReturn {
6114        #[allow(missing_docs)]
6115        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6116    }
6117    #[allow(
6118        non_camel_case_types,
6119        non_snake_case,
6120        clippy::pub_underscore_fields,
6121        clippy::style
6122    )]
6123    const _: () = {
6124        use alloy::sol_types as alloy_sol_types;
6125        {
6126            #[doc(hidden)]
6127            type UnderlyingSolTuple<'a> = ();
6128            #[doc(hidden)]
6129            type UnderlyingRustTuple<'a> = ();
6130            #[cfg(test)]
6131            #[allow(dead_code, unreachable_patterns)]
6132            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6133                match _t {
6134                    alloy_sol_types::private::AssertTypeEq::<
6135                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6136                    >(_) => {},
6137                }
6138            }
6139            #[automatically_derived]
6140            #[doc(hidden)]
6141            impl ::core::convert::From<currentBlockNumberCall> for UnderlyingRustTuple<'_> {
6142                fn from(value: currentBlockNumberCall) -> Self {
6143                    ()
6144                }
6145            }
6146            #[automatically_derived]
6147            #[doc(hidden)]
6148            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberCall {
6149                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6150                    Self {}
6151                }
6152            }
6153        }
6154        {
6155            #[doc(hidden)]
6156            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6157            #[doc(hidden)]
6158            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6159            #[cfg(test)]
6160            #[allow(dead_code, unreachable_patterns)]
6161            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6162                match _t {
6163                    alloy_sol_types::private::AssertTypeEq::<
6164                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6165                    >(_) => {},
6166                }
6167            }
6168            #[automatically_derived]
6169            #[doc(hidden)]
6170            impl ::core::convert::From<currentBlockNumberReturn> for UnderlyingRustTuple<'_> {
6171                fn from(value: currentBlockNumberReturn) -> Self {
6172                    (value._0,)
6173                }
6174            }
6175            #[automatically_derived]
6176            #[doc(hidden)]
6177            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberReturn {
6178                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6179                    Self { _0: tuple.0 }
6180                }
6181            }
6182        }
6183        #[automatically_derived]
6184        impl alloy_sol_types::SolCall for currentBlockNumberCall {
6185            type Parameters<'a> = ();
6186            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6187            type Return = currentBlockNumberReturn;
6188            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6189            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6190            const SIGNATURE: &'static str = "currentBlockNumber()";
6191            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
6192            #[inline]
6193            fn new<'a>(
6194                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6195            ) -> Self {
6196                tuple.into()
6197            }
6198            #[inline]
6199            fn tokenize(&self) -> Self::Token<'_> {
6200                ()
6201            }
6202            #[inline]
6203            fn abi_decode_returns(
6204                data: &[u8],
6205                validate: bool,
6206            ) -> alloy_sol_types::Result<Self::Return> {
6207                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6208                    data, validate,
6209                )
6210                .map(Into::into)
6211            }
6212        }
6213    };
6214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6215    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
6216    ```solidity
6217    function disablePermissionedProverMode() external;
6218    ```*/
6219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6220    #[derive(Clone)]
6221    pub struct disablePermissionedProverModeCall {}
6222    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
6223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6224    #[derive(Clone)]
6225    pub struct disablePermissionedProverModeReturn {}
6226    #[allow(
6227        non_camel_case_types,
6228        non_snake_case,
6229        clippy::pub_underscore_fields,
6230        clippy::style
6231    )]
6232    const _: () = {
6233        use alloy::sol_types as alloy_sol_types;
6234        {
6235            #[doc(hidden)]
6236            type UnderlyingSolTuple<'a> = ();
6237            #[doc(hidden)]
6238            type UnderlyingRustTuple<'a> = ();
6239            #[cfg(test)]
6240            #[allow(dead_code, unreachable_patterns)]
6241            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6242                match _t {
6243                    alloy_sol_types::private::AssertTypeEq::<
6244                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6245                    >(_) => {},
6246                }
6247            }
6248            #[automatically_derived]
6249            #[doc(hidden)]
6250            impl ::core::convert::From<disablePermissionedProverModeCall> for UnderlyingRustTuple<'_> {
6251                fn from(value: disablePermissionedProverModeCall) -> Self {
6252                    ()
6253                }
6254            }
6255            #[automatically_derived]
6256            #[doc(hidden)]
6257            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeCall {
6258                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6259                    Self {}
6260                }
6261            }
6262        }
6263        {
6264            #[doc(hidden)]
6265            type UnderlyingSolTuple<'a> = ();
6266            #[doc(hidden)]
6267            type UnderlyingRustTuple<'a> = ();
6268            #[cfg(test)]
6269            #[allow(dead_code, unreachable_patterns)]
6270            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6271                match _t {
6272                    alloy_sol_types::private::AssertTypeEq::<
6273                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6274                    >(_) => {},
6275                }
6276            }
6277            #[automatically_derived]
6278            #[doc(hidden)]
6279            impl ::core::convert::From<disablePermissionedProverModeReturn> for UnderlyingRustTuple<'_> {
6280                fn from(value: disablePermissionedProverModeReturn) -> Self {
6281                    ()
6282                }
6283            }
6284            #[automatically_derived]
6285            #[doc(hidden)]
6286            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeReturn {
6287                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6288                    Self {}
6289                }
6290            }
6291        }
6292        #[automatically_derived]
6293        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
6294            type Parameters<'a> = ();
6295            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6296            type Return = disablePermissionedProverModeReturn;
6297            type ReturnTuple<'a> = ();
6298            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6299            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
6300            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
6301            #[inline]
6302            fn new<'a>(
6303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6304            ) -> Self {
6305                tuple.into()
6306            }
6307            #[inline]
6308            fn tokenize(&self) -> Self::Token<'_> {
6309                ()
6310            }
6311            #[inline]
6312            fn abi_decode_returns(
6313                data: &[u8],
6314                validate: bool,
6315            ) -> alloy_sol_types::Result<Self::Return> {
6316                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6317                    data, validate,
6318                )
6319                .map(Into::into)
6320            }
6321        }
6322    };
6323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6324    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
6325    ```solidity
6326    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6327    ```*/
6328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6329    #[derive(Clone)]
6330    pub struct finalizedStateCall {}
6331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6332    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
6333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6334    #[derive(Clone)]
6335    pub struct finalizedStateReturn {
6336        #[allow(missing_docs)]
6337        pub viewNum: u64,
6338        #[allow(missing_docs)]
6339        pub blockHeight: u64,
6340        #[allow(missing_docs)]
6341        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6342    }
6343    #[allow(
6344        non_camel_case_types,
6345        non_snake_case,
6346        clippy::pub_underscore_fields,
6347        clippy::style
6348    )]
6349    const _: () = {
6350        use alloy::sol_types as alloy_sol_types;
6351        {
6352            #[doc(hidden)]
6353            type UnderlyingSolTuple<'a> = ();
6354            #[doc(hidden)]
6355            type UnderlyingRustTuple<'a> = ();
6356            #[cfg(test)]
6357            #[allow(dead_code, unreachable_patterns)]
6358            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6359                match _t {
6360                    alloy_sol_types::private::AssertTypeEq::<
6361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6362                    >(_) => {},
6363                }
6364            }
6365            #[automatically_derived]
6366            #[doc(hidden)]
6367            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
6368                fn from(value: finalizedStateCall) -> Self {
6369                    ()
6370                }
6371            }
6372            #[automatically_derived]
6373            #[doc(hidden)]
6374            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
6375                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6376                    Self {}
6377                }
6378            }
6379        }
6380        {
6381            #[doc(hidden)]
6382            type UnderlyingSolTuple<'a> = (
6383                alloy::sol_types::sol_data::Uint<64>,
6384                alloy::sol_types::sol_data::Uint<64>,
6385                BN254::ScalarField,
6386            );
6387            #[doc(hidden)]
6388            type UnderlyingRustTuple<'a> = (
6389                u64,
6390                u64,
6391                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6392            );
6393            #[cfg(test)]
6394            #[allow(dead_code, unreachable_patterns)]
6395            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6396                match _t {
6397                    alloy_sol_types::private::AssertTypeEq::<
6398                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6399                    >(_) => {},
6400                }
6401            }
6402            #[automatically_derived]
6403            #[doc(hidden)]
6404            impl ::core::convert::From<finalizedStateReturn> for UnderlyingRustTuple<'_> {
6405                fn from(value: finalizedStateReturn) -> Self {
6406                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6407                }
6408            }
6409            #[automatically_derived]
6410            #[doc(hidden)]
6411            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateReturn {
6412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6413                    Self {
6414                        viewNum: tuple.0,
6415                        blockHeight: tuple.1,
6416                        blockCommRoot: tuple.2,
6417                    }
6418                }
6419            }
6420        }
6421        #[automatically_derived]
6422        impl alloy_sol_types::SolCall for finalizedStateCall {
6423            type Parameters<'a> = ();
6424            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6425            type Return = finalizedStateReturn;
6426            type ReturnTuple<'a> = (
6427                alloy::sol_types::sol_data::Uint<64>,
6428                alloy::sol_types::sol_data::Uint<64>,
6429                BN254::ScalarField,
6430            );
6431            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6432            const SIGNATURE: &'static str = "finalizedState()";
6433            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
6434            #[inline]
6435            fn new<'a>(
6436                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6437            ) -> Self {
6438                tuple.into()
6439            }
6440            #[inline]
6441            fn tokenize(&self) -> Self::Token<'_> {
6442                ()
6443            }
6444            #[inline]
6445            fn abi_decode_returns(
6446                data: &[u8],
6447                validate: bool,
6448            ) -> alloy_sol_types::Result<Self::Return> {
6449                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6450                    data, validate,
6451                )
6452                .map(Into::into)
6453            }
6454        }
6455    };
6456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6457    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
6458    ```solidity
6459    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
6460    ```*/
6461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6462    #[derive(Clone)]
6463    pub struct genesisStakeTableStateCall {}
6464    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6465    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
6466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6467    #[derive(Clone)]
6468    pub struct genesisStakeTableStateReturn {
6469        #[allow(missing_docs)]
6470        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
6471        #[allow(missing_docs)]
6472        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6473        #[allow(missing_docs)]
6474        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6475        #[allow(missing_docs)]
6476        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6477    }
6478    #[allow(
6479        non_camel_case_types,
6480        non_snake_case,
6481        clippy::pub_underscore_fields,
6482        clippy::style
6483    )]
6484    const _: () = {
6485        use alloy::sol_types as alloy_sol_types;
6486        {
6487            #[doc(hidden)]
6488            type UnderlyingSolTuple<'a> = ();
6489            #[doc(hidden)]
6490            type UnderlyingRustTuple<'a> = ();
6491            #[cfg(test)]
6492            #[allow(dead_code, unreachable_patterns)]
6493            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6494                match _t {
6495                    alloy_sol_types::private::AssertTypeEq::<
6496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6497                    >(_) => {},
6498                }
6499            }
6500            #[automatically_derived]
6501            #[doc(hidden)]
6502            impl ::core::convert::From<genesisStakeTableStateCall> for UnderlyingRustTuple<'_> {
6503                fn from(value: genesisStakeTableStateCall) -> Self {
6504                    ()
6505                }
6506            }
6507            #[automatically_derived]
6508            #[doc(hidden)]
6509            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateCall {
6510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6511                    Self {}
6512                }
6513            }
6514        }
6515        {
6516            #[doc(hidden)]
6517            type UnderlyingSolTuple<'a> = (
6518                alloy::sol_types::sol_data::Uint<256>,
6519                BN254::ScalarField,
6520                BN254::ScalarField,
6521                BN254::ScalarField,
6522            );
6523            #[doc(hidden)]
6524            type UnderlyingRustTuple<'a> = (
6525                alloy::sol_types::private::primitives::aliases::U256,
6526                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6527                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6528                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6529            );
6530            #[cfg(test)]
6531            #[allow(dead_code, unreachable_patterns)]
6532            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6533                match _t {
6534                    alloy_sol_types::private::AssertTypeEq::<
6535                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6536                    >(_) => {},
6537                }
6538            }
6539            #[automatically_derived]
6540            #[doc(hidden)]
6541            impl ::core::convert::From<genesisStakeTableStateReturn> for UnderlyingRustTuple<'_> {
6542                fn from(value: genesisStakeTableStateReturn) -> Self {
6543                    (
6544                        value.threshold,
6545                        value.blsKeyComm,
6546                        value.schnorrKeyComm,
6547                        value.amountComm,
6548                    )
6549                }
6550            }
6551            #[automatically_derived]
6552            #[doc(hidden)]
6553            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateReturn {
6554                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6555                    Self {
6556                        threshold: tuple.0,
6557                        blsKeyComm: tuple.1,
6558                        schnorrKeyComm: tuple.2,
6559                        amountComm: tuple.3,
6560                    }
6561                }
6562            }
6563        }
6564        #[automatically_derived]
6565        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
6566            type Parameters<'a> = ();
6567            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6568            type Return = genesisStakeTableStateReturn;
6569            type ReturnTuple<'a> = (
6570                alloy::sol_types::sol_data::Uint<256>,
6571                BN254::ScalarField,
6572                BN254::ScalarField,
6573                BN254::ScalarField,
6574            );
6575            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6576            const SIGNATURE: &'static str = "genesisStakeTableState()";
6577            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
6578            #[inline]
6579            fn new<'a>(
6580                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6581            ) -> Self {
6582                tuple.into()
6583            }
6584            #[inline]
6585            fn tokenize(&self) -> Self::Token<'_> {
6586                ()
6587            }
6588            #[inline]
6589            fn abi_decode_returns(
6590                data: &[u8],
6591                validate: bool,
6592            ) -> alloy_sol_types::Result<Self::Return> {
6593                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6594                    data, validate,
6595                )
6596                .map(Into::into)
6597            }
6598        }
6599    };
6600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6601    /**Function with signature `genesisState()` and selector `0xd24d933d`.
6602    ```solidity
6603    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6604    ```*/
6605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6606    #[derive(Clone)]
6607    pub struct genesisStateCall {}
6608    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6609    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
6610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6611    #[derive(Clone)]
6612    pub struct genesisStateReturn {
6613        #[allow(missing_docs)]
6614        pub viewNum: u64,
6615        #[allow(missing_docs)]
6616        pub blockHeight: u64,
6617        #[allow(missing_docs)]
6618        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6619    }
6620    #[allow(
6621        non_camel_case_types,
6622        non_snake_case,
6623        clippy::pub_underscore_fields,
6624        clippy::style
6625    )]
6626    const _: () = {
6627        use alloy::sol_types as alloy_sol_types;
6628        {
6629            #[doc(hidden)]
6630            type UnderlyingSolTuple<'a> = ();
6631            #[doc(hidden)]
6632            type UnderlyingRustTuple<'a> = ();
6633            #[cfg(test)]
6634            #[allow(dead_code, unreachable_patterns)]
6635            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6636                match _t {
6637                    alloy_sol_types::private::AssertTypeEq::<
6638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6639                    >(_) => {},
6640                }
6641            }
6642            #[automatically_derived]
6643            #[doc(hidden)]
6644            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
6645                fn from(value: genesisStateCall) -> Self {
6646                    ()
6647                }
6648            }
6649            #[automatically_derived]
6650            #[doc(hidden)]
6651            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
6652                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6653                    Self {}
6654                }
6655            }
6656        }
6657        {
6658            #[doc(hidden)]
6659            type UnderlyingSolTuple<'a> = (
6660                alloy::sol_types::sol_data::Uint<64>,
6661                alloy::sol_types::sol_data::Uint<64>,
6662                BN254::ScalarField,
6663            );
6664            #[doc(hidden)]
6665            type UnderlyingRustTuple<'a> = (
6666                u64,
6667                u64,
6668                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6669            );
6670            #[cfg(test)]
6671            #[allow(dead_code, unreachable_patterns)]
6672            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6673                match _t {
6674                    alloy_sol_types::private::AssertTypeEq::<
6675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6676                    >(_) => {},
6677                }
6678            }
6679            #[automatically_derived]
6680            #[doc(hidden)]
6681            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
6682                fn from(value: genesisStateReturn) -> Self {
6683                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6684                }
6685            }
6686            #[automatically_derived]
6687            #[doc(hidden)]
6688            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
6689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6690                    Self {
6691                        viewNum: tuple.0,
6692                        blockHeight: tuple.1,
6693                        blockCommRoot: tuple.2,
6694                    }
6695                }
6696            }
6697        }
6698        #[automatically_derived]
6699        impl alloy_sol_types::SolCall for genesisStateCall {
6700            type Parameters<'a> = ();
6701            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6702            type Return = genesisStateReturn;
6703            type ReturnTuple<'a> = (
6704                alloy::sol_types::sol_data::Uint<64>,
6705                alloy::sol_types::sol_data::Uint<64>,
6706                BN254::ScalarField,
6707            );
6708            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6709            const SIGNATURE: &'static str = "genesisState()";
6710            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
6711            #[inline]
6712            fn new<'a>(
6713                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6714            ) -> Self {
6715                tuple.into()
6716            }
6717            #[inline]
6718            fn tokenize(&self) -> Self::Token<'_> {
6719                ()
6720            }
6721            #[inline]
6722            fn abi_decode_returns(
6723                data: &[u8],
6724                validate: bool,
6725            ) -> alloy_sol_types::Result<Self::Return> {
6726                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6727                    data, validate,
6728                )
6729                .map(Into::into)
6730            }
6731        }
6732    };
6733    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6734    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
6735    ```solidity
6736    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
6737    ```*/
6738    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6739    #[derive(Clone)]
6740    pub struct getHotShotCommitmentCall {
6741        #[allow(missing_docs)]
6742        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
6743    }
6744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6745    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
6746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6747    #[derive(Clone)]
6748    pub struct getHotShotCommitmentReturn {
6749        #[allow(missing_docs)]
6750        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6751        #[allow(missing_docs)]
6752        pub hotshotBlockHeight: u64,
6753    }
6754    #[allow(
6755        non_camel_case_types,
6756        non_snake_case,
6757        clippy::pub_underscore_fields,
6758        clippy::style
6759    )]
6760    const _: () = {
6761        use alloy::sol_types as alloy_sol_types;
6762        {
6763            #[doc(hidden)]
6764            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6765            #[doc(hidden)]
6766            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6767            #[cfg(test)]
6768            #[allow(dead_code, unreachable_patterns)]
6769            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6770                match _t {
6771                    alloy_sol_types::private::AssertTypeEq::<
6772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6773                    >(_) => {},
6774                }
6775            }
6776            #[automatically_derived]
6777            #[doc(hidden)]
6778            impl ::core::convert::From<getHotShotCommitmentCall> for UnderlyingRustTuple<'_> {
6779                fn from(value: getHotShotCommitmentCall) -> Self {
6780                    (value.hotShotBlockHeight,)
6781                }
6782            }
6783            #[automatically_derived]
6784            #[doc(hidden)]
6785            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentCall {
6786                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6787                    Self {
6788                        hotShotBlockHeight: tuple.0,
6789                    }
6790                }
6791            }
6792        }
6793        {
6794            #[doc(hidden)]
6795            type UnderlyingSolTuple<'a> =
6796                (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
6797            #[doc(hidden)]
6798            type UnderlyingRustTuple<'a> = (
6799                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6800                u64,
6801            );
6802            #[cfg(test)]
6803            #[allow(dead_code, unreachable_patterns)]
6804            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6805                match _t {
6806                    alloy_sol_types::private::AssertTypeEq::<
6807                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6808                    >(_) => {},
6809                }
6810            }
6811            #[automatically_derived]
6812            #[doc(hidden)]
6813            impl ::core::convert::From<getHotShotCommitmentReturn> for UnderlyingRustTuple<'_> {
6814                fn from(value: getHotShotCommitmentReturn) -> Self {
6815                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
6816                }
6817            }
6818            #[automatically_derived]
6819            #[doc(hidden)]
6820            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentReturn {
6821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6822                    Self {
6823                        hotShotBlockCommRoot: tuple.0,
6824                        hotshotBlockHeight: tuple.1,
6825                    }
6826                }
6827            }
6828        }
6829        #[automatically_derived]
6830        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
6831            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6832            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6833            type Return = getHotShotCommitmentReturn;
6834            type ReturnTuple<'a> = (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
6835            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6836            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
6837            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
6838            #[inline]
6839            fn new<'a>(
6840                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6841            ) -> Self {
6842                tuple.into()
6843            }
6844            #[inline]
6845            fn tokenize(&self) -> Self::Token<'_> {
6846                (
6847                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6848                        &self.hotShotBlockHeight,
6849                    ),
6850                )
6851            }
6852            #[inline]
6853            fn abi_decode_returns(
6854                data: &[u8],
6855                validate: bool,
6856            ) -> alloy_sol_types::Result<Self::Return> {
6857                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6858                    data, validate,
6859                )
6860                .map(Into::into)
6861            }
6862        }
6863    };
6864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6865    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
6866    ```solidity
6867    function getStateHistoryCount() external view returns (uint256);
6868    ```*/
6869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6870    #[derive(Clone)]
6871    pub struct getStateHistoryCountCall {}
6872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6873    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
6874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6875    #[derive(Clone)]
6876    pub struct getStateHistoryCountReturn {
6877        #[allow(missing_docs)]
6878        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6879    }
6880    #[allow(
6881        non_camel_case_types,
6882        non_snake_case,
6883        clippy::pub_underscore_fields,
6884        clippy::style
6885    )]
6886    const _: () = {
6887        use alloy::sol_types as alloy_sol_types;
6888        {
6889            #[doc(hidden)]
6890            type UnderlyingSolTuple<'a> = ();
6891            #[doc(hidden)]
6892            type UnderlyingRustTuple<'a> = ();
6893            #[cfg(test)]
6894            #[allow(dead_code, unreachable_patterns)]
6895            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6896                match _t {
6897                    alloy_sol_types::private::AssertTypeEq::<
6898                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6899                    >(_) => {},
6900                }
6901            }
6902            #[automatically_derived]
6903            #[doc(hidden)]
6904            impl ::core::convert::From<getStateHistoryCountCall> for UnderlyingRustTuple<'_> {
6905                fn from(value: getStateHistoryCountCall) -> Self {
6906                    ()
6907                }
6908            }
6909            #[automatically_derived]
6910            #[doc(hidden)]
6911            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountCall {
6912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6913                    Self {}
6914                }
6915            }
6916        }
6917        {
6918            #[doc(hidden)]
6919            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6920            #[doc(hidden)]
6921            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6922            #[cfg(test)]
6923            #[allow(dead_code, unreachable_patterns)]
6924            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6925                match _t {
6926                    alloy_sol_types::private::AssertTypeEq::<
6927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6928                    >(_) => {},
6929                }
6930            }
6931            #[automatically_derived]
6932            #[doc(hidden)]
6933            impl ::core::convert::From<getStateHistoryCountReturn> for UnderlyingRustTuple<'_> {
6934                fn from(value: getStateHistoryCountReturn) -> Self {
6935                    (value._0,)
6936                }
6937            }
6938            #[automatically_derived]
6939            #[doc(hidden)]
6940            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountReturn {
6941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6942                    Self { _0: tuple.0 }
6943                }
6944            }
6945        }
6946        #[automatically_derived]
6947        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
6948            type Parameters<'a> = ();
6949            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6950            type Return = getStateHistoryCountReturn;
6951            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6952            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6953            const SIGNATURE: &'static str = "getStateHistoryCount()";
6954            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
6955            #[inline]
6956            fn new<'a>(
6957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6958            ) -> Self {
6959                tuple.into()
6960            }
6961            #[inline]
6962            fn tokenize(&self) -> Self::Token<'_> {
6963                ()
6964            }
6965            #[inline]
6966            fn abi_decode_returns(
6967                data: &[u8],
6968                validate: bool,
6969            ) -> alloy_sol_types::Result<Self::Return> {
6970                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6971                    data, validate,
6972                )
6973                .map(Into::into)
6974            }
6975        }
6976    };
6977    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6978    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
6979    ```solidity
6980    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
6981    ```*/
6982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6983    #[derive(Clone)]
6984    pub struct getVersionCall {}
6985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6986    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
6987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6988    #[derive(Clone)]
6989    pub struct getVersionReturn {
6990        #[allow(missing_docs)]
6991        pub majorVersion: u8,
6992        #[allow(missing_docs)]
6993        pub minorVersion: u8,
6994        #[allow(missing_docs)]
6995        pub patchVersion: u8,
6996    }
6997    #[allow(
6998        non_camel_case_types,
6999        non_snake_case,
7000        clippy::pub_underscore_fields,
7001        clippy::style
7002    )]
7003    const _: () = {
7004        use alloy::sol_types as alloy_sol_types;
7005        {
7006            #[doc(hidden)]
7007            type UnderlyingSolTuple<'a> = ();
7008            #[doc(hidden)]
7009            type UnderlyingRustTuple<'a> = ();
7010            #[cfg(test)]
7011            #[allow(dead_code, unreachable_patterns)]
7012            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7013                match _t {
7014                    alloy_sol_types::private::AssertTypeEq::<
7015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7016                    >(_) => {},
7017                }
7018            }
7019            #[automatically_derived]
7020            #[doc(hidden)]
7021            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7022                fn from(value: getVersionCall) -> Self {
7023                    ()
7024                }
7025            }
7026            #[automatically_derived]
7027            #[doc(hidden)]
7028            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7029                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7030                    Self {}
7031                }
7032            }
7033        }
7034        {
7035            #[doc(hidden)]
7036            type UnderlyingSolTuple<'a> = (
7037                alloy::sol_types::sol_data::Uint<8>,
7038                alloy::sol_types::sol_data::Uint<8>,
7039                alloy::sol_types::sol_data::Uint<8>,
7040            );
7041            #[doc(hidden)]
7042            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7043            #[cfg(test)]
7044            #[allow(dead_code, unreachable_patterns)]
7045            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7046                match _t {
7047                    alloy_sol_types::private::AssertTypeEq::<
7048                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7049                    >(_) => {},
7050                }
7051            }
7052            #[automatically_derived]
7053            #[doc(hidden)]
7054            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7055                fn from(value: getVersionReturn) -> Self {
7056                    (value.majorVersion, value.minorVersion, value.patchVersion)
7057                }
7058            }
7059            #[automatically_derived]
7060            #[doc(hidden)]
7061            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7063                    Self {
7064                        majorVersion: tuple.0,
7065                        minorVersion: tuple.1,
7066                        patchVersion: tuple.2,
7067                    }
7068                }
7069            }
7070        }
7071        #[automatically_derived]
7072        impl alloy_sol_types::SolCall for getVersionCall {
7073            type Parameters<'a> = ();
7074            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7075            type Return = getVersionReturn;
7076            type ReturnTuple<'a> = (
7077                alloy::sol_types::sol_data::Uint<8>,
7078                alloy::sol_types::sol_data::Uint<8>,
7079                alloy::sol_types::sol_data::Uint<8>,
7080            );
7081            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7082            const SIGNATURE: &'static str = "getVersion()";
7083            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7084            #[inline]
7085            fn new<'a>(
7086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7087            ) -> Self {
7088                tuple.into()
7089            }
7090            #[inline]
7091            fn tokenize(&self) -> Self::Token<'_> {
7092                ()
7093            }
7094            #[inline]
7095            fn abi_decode_returns(
7096                data: &[u8],
7097                validate: bool,
7098            ) -> alloy_sol_types::Result<Self::Return> {
7099                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7100                    data, validate,
7101                )
7102                .map(Into::into)
7103            }
7104        }
7105    };
7106    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7107    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
7108    ```solidity
7109    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
7110    ```*/
7111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7112    #[derive(Clone)]
7113    pub struct initializeCall {
7114        #[allow(missing_docs)]
7115        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
7116        #[allow(missing_docs)]
7117        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
7118        #[allow(missing_docs)]
7119        pub _stateHistoryRetentionPeriod: u32,
7120        #[allow(missing_docs)]
7121        pub owner: alloy::sol_types::private::Address,
7122    }
7123    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
7124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7125    #[derive(Clone)]
7126    pub struct initializeReturn {}
7127    #[allow(
7128        non_camel_case_types,
7129        non_snake_case,
7130        clippy::pub_underscore_fields,
7131        clippy::style
7132    )]
7133    const _: () = {
7134        use alloy::sol_types as alloy_sol_types;
7135        {
7136            #[doc(hidden)]
7137            type UnderlyingSolTuple<'a> = (
7138                LightClientState,
7139                StakeTableState,
7140                alloy::sol_types::sol_data::Uint<32>,
7141                alloy::sol_types::sol_data::Address,
7142            );
7143            #[doc(hidden)]
7144            type UnderlyingRustTuple<'a> = (
7145                <LightClientState as alloy::sol_types::SolType>::RustType,
7146                <StakeTableState as alloy::sol_types::SolType>::RustType,
7147                u32,
7148                alloy::sol_types::private::Address,
7149            );
7150            #[cfg(test)]
7151            #[allow(dead_code, unreachable_patterns)]
7152            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7153                match _t {
7154                    alloy_sol_types::private::AssertTypeEq::<
7155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7156                    >(_) => {},
7157                }
7158            }
7159            #[automatically_derived]
7160            #[doc(hidden)]
7161            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7162                fn from(value: initializeCall) -> Self {
7163                    (
7164                        value._genesis,
7165                        value._genesisStakeTableState,
7166                        value._stateHistoryRetentionPeriod,
7167                        value.owner,
7168                    )
7169                }
7170            }
7171            #[automatically_derived]
7172            #[doc(hidden)]
7173            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7174                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7175                    Self {
7176                        _genesis: tuple.0,
7177                        _genesisStakeTableState: tuple.1,
7178                        _stateHistoryRetentionPeriod: tuple.2,
7179                        owner: tuple.3,
7180                    }
7181                }
7182            }
7183        }
7184        {
7185            #[doc(hidden)]
7186            type UnderlyingSolTuple<'a> = ();
7187            #[doc(hidden)]
7188            type UnderlyingRustTuple<'a> = ();
7189            #[cfg(test)]
7190            #[allow(dead_code, unreachable_patterns)]
7191            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7192                match _t {
7193                    alloy_sol_types::private::AssertTypeEq::<
7194                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7195                    >(_) => {},
7196                }
7197            }
7198            #[automatically_derived]
7199            #[doc(hidden)]
7200            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7201                fn from(value: initializeReturn) -> Self {
7202                    ()
7203                }
7204            }
7205            #[automatically_derived]
7206            #[doc(hidden)]
7207            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7208                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7209                    Self {}
7210                }
7211            }
7212        }
7213        #[automatically_derived]
7214        impl alloy_sol_types::SolCall for initializeCall {
7215            type Parameters<'a> = (
7216                LightClientState,
7217                StakeTableState,
7218                alloy::sol_types::sol_data::Uint<32>,
7219                alloy::sol_types::sol_data::Address,
7220            );
7221            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7222            type Return = initializeReturn;
7223            type ReturnTuple<'a> = ();
7224            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7225            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
7226            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
7227            #[inline]
7228            fn new<'a>(
7229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7230            ) -> Self {
7231                tuple.into()
7232            }
7233            #[inline]
7234            fn tokenize(&self) -> Self::Token<'_> {
7235                (
7236                    <LightClientState as alloy_sol_types::SolType>::tokenize(&self._genesis),
7237                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
7238                        &self._genesisStakeTableState,
7239                    ),
7240                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
7241                        &self._stateHistoryRetentionPeriod,
7242                    ),
7243                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7244                        &self.owner,
7245                    ),
7246                )
7247            }
7248            #[inline]
7249            fn abi_decode_returns(
7250                data: &[u8],
7251                validate: bool,
7252            ) -> alloy_sol_types::Result<Self::Return> {
7253                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7254                    data, validate,
7255                )
7256                .map(Into::into)
7257            }
7258        }
7259    };
7260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7261    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
7262    ```solidity
7263    function isPermissionedProverEnabled() external view returns (bool);
7264    ```*/
7265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7266    #[derive(Clone)]
7267    pub struct isPermissionedProverEnabledCall {}
7268    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7269    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
7270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7271    #[derive(Clone)]
7272    pub struct isPermissionedProverEnabledReturn {
7273        #[allow(missing_docs)]
7274        pub _0: bool,
7275    }
7276    #[allow(
7277        non_camel_case_types,
7278        non_snake_case,
7279        clippy::pub_underscore_fields,
7280        clippy::style
7281    )]
7282    const _: () = {
7283        use alloy::sol_types as alloy_sol_types;
7284        {
7285            #[doc(hidden)]
7286            type UnderlyingSolTuple<'a> = ();
7287            #[doc(hidden)]
7288            type UnderlyingRustTuple<'a> = ();
7289            #[cfg(test)]
7290            #[allow(dead_code, unreachable_patterns)]
7291            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7292                match _t {
7293                    alloy_sol_types::private::AssertTypeEq::<
7294                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7295                    >(_) => {},
7296                }
7297            }
7298            #[automatically_derived]
7299            #[doc(hidden)]
7300            impl ::core::convert::From<isPermissionedProverEnabledCall> for UnderlyingRustTuple<'_> {
7301                fn from(value: isPermissionedProverEnabledCall) -> Self {
7302                    ()
7303                }
7304            }
7305            #[automatically_derived]
7306            #[doc(hidden)]
7307            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledCall {
7308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7309                    Self {}
7310                }
7311            }
7312        }
7313        {
7314            #[doc(hidden)]
7315            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7316            #[doc(hidden)]
7317            type UnderlyingRustTuple<'a> = (bool,);
7318            #[cfg(test)]
7319            #[allow(dead_code, unreachable_patterns)]
7320            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7321                match _t {
7322                    alloy_sol_types::private::AssertTypeEq::<
7323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7324                    >(_) => {},
7325                }
7326            }
7327            #[automatically_derived]
7328            #[doc(hidden)]
7329            impl ::core::convert::From<isPermissionedProverEnabledReturn> for UnderlyingRustTuple<'_> {
7330                fn from(value: isPermissionedProverEnabledReturn) -> Self {
7331                    (value._0,)
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledReturn {
7337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7338                    Self { _0: tuple.0 }
7339                }
7340            }
7341        }
7342        #[automatically_derived]
7343        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
7344            type Parameters<'a> = ();
7345            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7346            type Return = isPermissionedProverEnabledReturn;
7347            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7348            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7349            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
7350            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
7351            #[inline]
7352            fn new<'a>(
7353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7354            ) -> Self {
7355                tuple.into()
7356            }
7357            #[inline]
7358            fn tokenize(&self) -> Self::Token<'_> {
7359                ()
7360            }
7361            #[inline]
7362            fn abi_decode_returns(
7363                data: &[u8],
7364                validate: bool,
7365            ) -> alloy_sol_types::Result<Self::Return> {
7366                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7367                    data, validate,
7368                )
7369                .map(Into::into)
7370            }
7371        }
7372    };
7373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7374    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
7375    ```solidity
7376    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
7377    ```*/
7378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7379    #[derive(Clone)]
7380    pub struct lagOverEscapeHatchThresholdCall {
7381        #[allow(missing_docs)]
7382        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
7383        #[allow(missing_docs)]
7384        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
7385    }
7386    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7387    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
7388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7389    #[derive(Clone)]
7390    pub struct lagOverEscapeHatchThresholdReturn {
7391        #[allow(missing_docs)]
7392        pub _0: bool,
7393    }
7394    #[allow(
7395        non_camel_case_types,
7396        non_snake_case,
7397        clippy::pub_underscore_fields,
7398        clippy::style
7399    )]
7400    const _: () = {
7401        use alloy::sol_types as alloy_sol_types;
7402        {
7403            #[doc(hidden)]
7404            type UnderlyingSolTuple<'a> = (
7405                alloy::sol_types::sol_data::Uint<256>,
7406                alloy::sol_types::sol_data::Uint<256>,
7407            );
7408            #[doc(hidden)]
7409            type UnderlyingRustTuple<'a> = (
7410                alloy::sol_types::private::primitives::aliases::U256,
7411                alloy::sol_types::private::primitives::aliases::U256,
7412            );
7413            #[cfg(test)]
7414            #[allow(dead_code, unreachable_patterns)]
7415            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7416                match _t {
7417                    alloy_sol_types::private::AssertTypeEq::<
7418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7419                    >(_) => {},
7420                }
7421            }
7422            #[automatically_derived]
7423            #[doc(hidden)]
7424            impl ::core::convert::From<lagOverEscapeHatchThresholdCall> for UnderlyingRustTuple<'_> {
7425                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
7426                    (value.blockNumber, value.blockThreshold)
7427                }
7428            }
7429            #[automatically_derived]
7430            #[doc(hidden)]
7431            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdCall {
7432                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7433                    Self {
7434                        blockNumber: tuple.0,
7435                        blockThreshold: tuple.1,
7436                    }
7437                }
7438            }
7439        }
7440        {
7441            #[doc(hidden)]
7442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7443            #[doc(hidden)]
7444            type UnderlyingRustTuple<'a> = (bool,);
7445            #[cfg(test)]
7446            #[allow(dead_code, unreachable_patterns)]
7447            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7448                match _t {
7449                    alloy_sol_types::private::AssertTypeEq::<
7450                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7451                    >(_) => {},
7452                }
7453            }
7454            #[automatically_derived]
7455            #[doc(hidden)]
7456            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn> for UnderlyingRustTuple<'_> {
7457                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
7458                    (value._0,)
7459                }
7460            }
7461            #[automatically_derived]
7462            #[doc(hidden)]
7463            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdReturn {
7464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7465                    Self { _0: tuple.0 }
7466                }
7467            }
7468        }
7469        #[automatically_derived]
7470        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
7471            type Parameters<'a> = (
7472                alloy::sol_types::sol_data::Uint<256>,
7473                alloy::sol_types::sol_data::Uint<256>,
7474            );
7475            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7476            type Return = lagOverEscapeHatchThresholdReturn;
7477            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7478            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7479            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
7480            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
7481            #[inline]
7482            fn new<'a>(
7483                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7484            ) -> Self {
7485                tuple.into()
7486            }
7487            #[inline]
7488            fn tokenize(&self) -> Self::Token<'_> {
7489                (
7490                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7491                        &self.blockNumber,
7492                    ),
7493                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7494                        &self.blockThreshold,
7495                    ),
7496                )
7497            }
7498            #[inline]
7499            fn abi_decode_returns(
7500                data: &[u8],
7501                validate: bool,
7502            ) -> alloy_sol_types::Result<Self::Return> {
7503                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7504                    data, validate,
7505                )
7506                .map(Into::into)
7507            }
7508        }
7509    };
7510    #[derive()]
7511    /**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`.
7512    ```solidity
7513    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
7514    ```*/
7515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7516    #[derive(Clone)]
7517    pub struct newFinalizedStateCall {
7518        #[allow(missing_docs)]
7519        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
7520        #[allow(missing_docs)]
7521        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7522    }
7523    ///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.
7524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7525    #[derive(Clone)]
7526    pub struct newFinalizedStateReturn {}
7527    #[allow(
7528        non_camel_case_types,
7529        non_snake_case,
7530        clippy::pub_underscore_fields,
7531        clippy::style
7532    )]
7533    const _: () = {
7534        use alloy::sol_types as alloy_sol_types;
7535        {
7536            #[doc(hidden)]
7537            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
7538            #[doc(hidden)]
7539            type UnderlyingRustTuple<'a> = (
7540                <LightClientState as alloy::sol_types::SolType>::RustType,
7541                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7542            );
7543            #[cfg(test)]
7544            #[allow(dead_code, unreachable_patterns)]
7545            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7546                match _t {
7547                    alloy_sol_types::private::AssertTypeEq::<
7548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7549                    >(_) => {},
7550                }
7551            }
7552            #[automatically_derived]
7553            #[doc(hidden)]
7554            impl ::core::convert::From<newFinalizedStateCall> for UnderlyingRustTuple<'_> {
7555                fn from(value: newFinalizedStateCall) -> Self {
7556                    (value.newState, value.proof)
7557                }
7558            }
7559            #[automatically_derived]
7560            #[doc(hidden)]
7561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateCall {
7562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7563                    Self {
7564                        newState: tuple.0,
7565                        proof: tuple.1,
7566                    }
7567                }
7568            }
7569        }
7570        {
7571            #[doc(hidden)]
7572            type UnderlyingSolTuple<'a> = ();
7573            #[doc(hidden)]
7574            type UnderlyingRustTuple<'a> = ();
7575            #[cfg(test)]
7576            #[allow(dead_code, unreachable_patterns)]
7577            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7578                match _t {
7579                    alloy_sol_types::private::AssertTypeEq::<
7580                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7581                    >(_) => {},
7582                }
7583            }
7584            #[automatically_derived]
7585            #[doc(hidden)]
7586            impl ::core::convert::From<newFinalizedStateReturn> for UnderlyingRustTuple<'_> {
7587                fn from(value: newFinalizedStateReturn) -> Self {
7588                    ()
7589                }
7590            }
7591            #[automatically_derived]
7592            #[doc(hidden)]
7593            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateReturn {
7594                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7595                    Self {}
7596                }
7597            }
7598        }
7599        #[automatically_derived]
7600        impl alloy_sol_types::SolCall for newFinalizedStateCall {
7601            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
7602            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7603            type Return = newFinalizedStateReturn;
7604            type ReturnTuple<'a> = ();
7605            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7606            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))";
7607            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
7608            #[inline]
7609            fn new<'a>(
7610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7611            ) -> Self {
7612                tuple.into()
7613            }
7614            #[inline]
7615            fn tokenize(&self) -> Self::Token<'_> {
7616                (
7617                    <LightClientState as alloy_sol_types::SolType>::tokenize(&self.newState),
7618                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
7619                )
7620            }
7621            #[inline]
7622            fn abi_decode_returns(
7623                data: &[u8],
7624                validate: bool,
7625            ) -> alloy_sol_types::Result<Self::Return> {
7626                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7627                    data, validate,
7628                )
7629                .map(Into::into)
7630            }
7631        }
7632    };
7633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7634    /**Function with signature `owner()` and selector `0x8da5cb5b`.
7635    ```solidity
7636    function owner() external view returns (address);
7637    ```*/
7638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7639    #[derive(Clone)]
7640    pub struct ownerCall {}
7641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7642    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
7643    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7644    #[derive(Clone)]
7645    pub struct ownerReturn {
7646        #[allow(missing_docs)]
7647        pub _0: alloy::sol_types::private::Address,
7648    }
7649    #[allow(
7650        non_camel_case_types,
7651        non_snake_case,
7652        clippy::pub_underscore_fields,
7653        clippy::style
7654    )]
7655    const _: () = {
7656        use alloy::sol_types as alloy_sol_types;
7657        {
7658            #[doc(hidden)]
7659            type UnderlyingSolTuple<'a> = ();
7660            #[doc(hidden)]
7661            type UnderlyingRustTuple<'a> = ();
7662            #[cfg(test)]
7663            #[allow(dead_code, unreachable_patterns)]
7664            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7665                match _t {
7666                    alloy_sol_types::private::AssertTypeEq::<
7667                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7668                    >(_) => {},
7669                }
7670            }
7671            #[automatically_derived]
7672            #[doc(hidden)]
7673            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
7674                fn from(value: ownerCall) -> Self {
7675                    ()
7676                }
7677            }
7678            #[automatically_derived]
7679            #[doc(hidden)]
7680            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
7681                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7682                    Self {}
7683                }
7684            }
7685        }
7686        {
7687            #[doc(hidden)]
7688            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7689            #[doc(hidden)]
7690            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7691            #[cfg(test)]
7692            #[allow(dead_code, unreachable_patterns)]
7693            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7694                match _t {
7695                    alloy_sol_types::private::AssertTypeEq::<
7696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7697                    >(_) => {},
7698                }
7699            }
7700            #[automatically_derived]
7701            #[doc(hidden)]
7702            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
7703                fn from(value: ownerReturn) -> Self {
7704                    (value._0,)
7705                }
7706            }
7707            #[automatically_derived]
7708            #[doc(hidden)]
7709            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
7710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7711                    Self { _0: tuple.0 }
7712                }
7713            }
7714        }
7715        #[automatically_derived]
7716        impl alloy_sol_types::SolCall for ownerCall {
7717            type Parameters<'a> = ();
7718            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7719            type Return = ownerReturn;
7720            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7721            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7722            const SIGNATURE: &'static str = "owner()";
7723            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
7724            #[inline]
7725            fn new<'a>(
7726                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7727            ) -> Self {
7728                tuple.into()
7729            }
7730            #[inline]
7731            fn tokenize(&self) -> Self::Token<'_> {
7732                ()
7733            }
7734            #[inline]
7735            fn abi_decode_returns(
7736                data: &[u8],
7737                validate: bool,
7738            ) -> alloy_sol_types::Result<Self::Return> {
7739                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7740                    data, validate,
7741                )
7742                .map(Into::into)
7743            }
7744        }
7745    };
7746    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7747    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
7748    ```solidity
7749    function permissionedProver() external view returns (address);
7750    ```*/
7751    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7752    #[derive(Clone)]
7753    pub struct permissionedProverCall {}
7754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7755    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
7756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7757    #[derive(Clone)]
7758    pub struct permissionedProverReturn {
7759        #[allow(missing_docs)]
7760        pub _0: alloy::sol_types::private::Address,
7761    }
7762    #[allow(
7763        non_camel_case_types,
7764        non_snake_case,
7765        clippy::pub_underscore_fields,
7766        clippy::style
7767    )]
7768    const _: () = {
7769        use alloy::sol_types as alloy_sol_types;
7770        {
7771            #[doc(hidden)]
7772            type UnderlyingSolTuple<'a> = ();
7773            #[doc(hidden)]
7774            type UnderlyingRustTuple<'a> = ();
7775            #[cfg(test)]
7776            #[allow(dead_code, unreachable_patterns)]
7777            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7778                match _t {
7779                    alloy_sol_types::private::AssertTypeEq::<
7780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7781                    >(_) => {},
7782                }
7783            }
7784            #[automatically_derived]
7785            #[doc(hidden)]
7786            impl ::core::convert::From<permissionedProverCall> for UnderlyingRustTuple<'_> {
7787                fn from(value: permissionedProverCall) -> Self {
7788                    ()
7789                }
7790            }
7791            #[automatically_derived]
7792            #[doc(hidden)]
7793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverCall {
7794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7795                    Self {}
7796                }
7797            }
7798        }
7799        {
7800            #[doc(hidden)]
7801            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7802            #[doc(hidden)]
7803            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7804            #[cfg(test)]
7805            #[allow(dead_code, unreachable_patterns)]
7806            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7807                match _t {
7808                    alloy_sol_types::private::AssertTypeEq::<
7809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7810                    >(_) => {},
7811                }
7812            }
7813            #[automatically_derived]
7814            #[doc(hidden)]
7815            impl ::core::convert::From<permissionedProverReturn> for UnderlyingRustTuple<'_> {
7816                fn from(value: permissionedProverReturn) -> Self {
7817                    (value._0,)
7818                }
7819            }
7820            #[automatically_derived]
7821            #[doc(hidden)]
7822            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverReturn {
7823                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7824                    Self { _0: tuple.0 }
7825                }
7826            }
7827        }
7828        #[automatically_derived]
7829        impl alloy_sol_types::SolCall for permissionedProverCall {
7830            type Parameters<'a> = ();
7831            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7832            type Return = permissionedProverReturn;
7833            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
7834            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7835            const SIGNATURE: &'static str = "permissionedProver()";
7836            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
7837            #[inline]
7838            fn new<'a>(
7839                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7840            ) -> Self {
7841                tuple.into()
7842            }
7843            #[inline]
7844            fn tokenize(&self) -> Self::Token<'_> {
7845                ()
7846            }
7847            #[inline]
7848            fn abi_decode_returns(
7849                data: &[u8],
7850                validate: bool,
7851            ) -> alloy_sol_types::Result<Self::Return> {
7852                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7853                    data, validate,
7854                )
7855                .map(Into::into)
7856            }
7857        }
7858    };
7859    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7860    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
7861    ```solidity
7862    function proxiableUUID() external view returns (bytes32);
7863    ```*/
7864    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7865    #[derive(Clone)]
7866    pub struct proxiableUUIDCall {}
7867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7868    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
7869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7870    #[derive(Clone)]
7871    pub struct proxiableUUIDReturn {
7872        #[allow(missing_docs)]
7873        pub _0: alloy::sol_types::private::FixedBytes<32>,
7874    }
7875    #[allow(
7876        non_camel_case_types,
7877        non_snake_case,
7878        clippy::pub_underscore_fields,
7879        clippy::style
7880    )]
7881    const _: () = {
7882        use alloy::sol_types as alloy_sol_types;
7883        {
7884            #[doc(hidden)]
7885            type UnderlyingSolTuple<'a> = ();
7886            #[doc(hidden)]
7887            type UnderlyingRustTuple<'a> = ();
7888            #[cfg(test)]
7889            #[allow(dead_code, unreachable_patterns)]
7890            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7891                match _t {
7892                    alloy_sol_types::private::AssertTypeEq::<
7893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7894                    >(_) => {},
7895                }
7896            }
7897            #[automatically_derived]
7898            #[doc(hidden)]
7899            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
7900                fn from(value: proxiableUUIDCall) -> Self {
7901                    ()
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
7907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7908                    Self {}
7909                }
7910            }
7911        }
7912        {
7913            #[doc(hidden)]
7914            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7915            #[doc(hidden)]
7916            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7917            #[cfg(test)]
7918            #[allow(dead_code, unreachable_patterns)]
7919            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7920                match _t {
7921                    alloy_sol_types::private::AssertTypeEq::<
7922                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7923                    >(_) => {},
7924                }
7925            }
7926            #[automatically_derived]
7927            #[doc(hidden)]
7928            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
7929                fn from(value: proxiableUUIDReturn) -> Self {
7930                    (value._0,)
7931                }
7932            }
7933            #[automatically_derived]
7934            #[doc(hidden)]
7935            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
7936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7937                    Self { _0: tuple.0 }
7938                }
7939            }
7940        }
7941        #[automatically_derived]
7942        impl alloy_sol_types::SolCall for proxiableUUIDCall {
7943            type Parameters<'a> = ();
7944            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7945            type Return = proxiableUUIDReturn;
7946            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7947            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7948            const SIGNATURE: &'static str = "proxiableUUID()";
7949            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
7950            #[inline]
7951            fn new<'a>(
7952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7953            ) -> Self {
7954                tuple.into()
7955            }
7956            #[inline]
7957            fn tokenize(&self) -> Self::Token<'_> {
7958                ()
7959            }
7960            #[inline]
7961            fn abi_decode_returns(
7962                data: &[u8],
7963                validate: bool,
7964            ) -> alloy_sol_types::Result<Self::Return> {
7965                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7966                    data, validate,
7967                )
7968                .map(Into::into)
7969            }
7970        }
7971    };
7972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7973    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
7974    ```solidity
7975    function renounceOwnership() external;
7976    ```*/
7977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7978    #[derive(Clone)]
7979    pub struct renounceOwnershipCall {}
7980    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
7981    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7982    #[derive(Clone)]
7983    pub struct renounceOwnershipReturn {}
7984    #[allow(
7985        non_camel_case_types,
7986        non_snake_case,
7987        clippy::pub_underscore_fields,
7988        clippy::style
7989    )]
7990    const _: () = {
7991        use alloy::sol_types as alloy_sol_types;
7992        {
7993            #[doc(hidden)]
7994            type UnderlyingSolTuple<'a> = ();
7995            #[doc(hidden)]
7996            type UnderlyingRustTuple<'a> = ();
7997            #[cfg(test)]
7998            #[allow(dead_code, unreachable_patterns)]
7999            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8000                match _t {
8001                    alloy_sol_types::private::AssertTypeEq::<
8002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8003                    >(_) => {},
8004                }
8005            }
8006            #[automatically_derived]
8007            #[doc(hidden)]
8008            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
8009                fn from(value: renounceOwnershipCall) -> Self {
8010                    ()
8011                }
8012            }
8013            #[automatically_derived]
8014            #[doc(hidden)]
8015            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
8016                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8017                    Self {}
8018                }
8019            }
8020        }
8021        {
8022            #[doc(hidden)]
8023            type UnderlyingSolTuple<'a> = ();
8024            #[doc(hidden)]
8025            type UnderlyingRustTuple<'a> = ();
8026            #[cfg(test)]
8027            #[allow(dead_code, unreachable_patterns)]
8028            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8029                match _t {
8030                    alloy_sol_types::private::AssertTypeEq::<
8031                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8032                    >(_) => {},
8033                }
8034            }
8035            #[automatically_derived]
8036            #[doc(hidden)]
8037            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
8038                fn from(value: renounceOwnershipReturn) -> Self {
8039                    ()
8040                }
8041            }
8042            #[automatically_derived]
8043            #[doc(hidden)]
8044            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
8045                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8046                    Self {}
8047                }
8048            }
8049        }
8050        #[automatically_derived]
8051        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8052            type Parameters<'a> = ();
8053            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8054            type Return = renounceOwnershipReturn;
8055            type ReturnTuple<'a> = ();
8056            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8057            const SIGNATURE: &'static str = "renounceOwnership()";
8058            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8059            #[inline]
8060            fn new<'a>(
8061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8062            ) -> Self {
8063                tuple.into()
8064            }
8065            #[inline]
8066            fn tokenize(&self) -> Self::Token<'_> {
8067                ()
8068            }
8069            #[inline]
8070            fn abi_decode_returns(
8071                data: &[u8],
8072                validate: bool,
8073            ) -> alloy_sol_types::Result<Self::Return> {
8074                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8075                    data, validate,
8076                )
8077                .map(Into::into)
8078            }
8079        }
8080    };
8081    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8082    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
8083    ```solidity
8084    function setPermissionedProver(address prover) external;
8085    ```*/
8086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8087    #[derive(Clone)]
8088    pub struct setPermissionedProverCall {
8089        #[allow(missing_docs)]
8090        pub prover: alloy::sol_types::private::Address,
8091    }
8092    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
8093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8094    #[derive(Clone)]
8095    pub struct setPermissionedProverReturn {}
8096    #[allow(
8097        non_camel_case_types,
8098        non_snake_case,
8099        clippy::pub_underscore_fields,
8100        clippy::style
8101    )]
8102    const _: () = {
8103        use alloy::sol_types as alloy_sol_types;
8104        {
8105            #[doc(hidden)]
8106            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8107            #[doc(hidden)]
8108            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8109            #[cfg(test)]
8110            #[allow(dead_code, unreachable_patterns)]
8111            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8112                match _t {
8113                    alloy_sol_types::private::AssertTypeEq::<
8114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8115                    >(_) => {},
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<setPermissionedProverCall> for UnderlyingRustTuple<'_> {
8121                fn from(value: setPermissionedProverCall) -> Self {
8122                    (value.prover,)
8123                }
8124            }
8125            #[automatically_derived]
8126            #[doc(hidden)]
8127            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverCall {
8128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8129                    Self { prover: tuple.0 }
8130                }
8131            }
8132        }
8133        {
8134            #[doc(hidden)]
8135            type UnderlyingSolTuple<'a> = ();
8136            #[doc(hidden)]
8137            type UnderlyingRustTuple<'a> = ();
8138            #[cfg(test)]
8139            #[allow(dead_code, unreachable_patterns)]
8140            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8141                match _t {
8142                    alloy_sol_types::private::AssertTypeEq::<
8143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8144                    >(_) => {},
8145                }
8146            }
8147            #[automatically_derived]
8148            #[doc(hidden)]
8149            impl ::core::convert::From<setPermissionedProverReturn> for UnderlyingRustTuple<'_> {
8150                fn from(value: setPermissionedProverReturn) -> Self {
8151                    ()
8152                }
8153            }
8154            #[automatically_derived]
8155            #[doc(hidden)]
8156            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverReturn {
8157                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8158                    Self {}
8159                }
8160            }
8161        }
8162        #[automatically_derived]
8163        impl alloy_sol_types::SolCall for setPermissionedProverCall {
8164            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8165            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8166            type Return = setPermissionedProverReturn;
8167            type ReturnTuple<'a> = ();
8168            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8169            const SIGNATURE: &'static str = "setPermissionedProver(address)";
8170            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
8171            #[inline]
8172            fn new<'a>(
8173                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8174            ) -> Self {
8175                tuple.into()
8176            }
8177            #[inline]
8178            fn tokenize(&self) -> Self::Token<'_> {
8179                (
8180                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8181                        &self.prover,
8182                    ),
8183                )
8184            }
8185            #[inline]
8186            fn abi_decode_returns(
8187                data: &[u8],
8188                validate: bool,
8189            ) -> alloy_sol_types::Result<Self::Return> {
8190                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8191                    data, validate,
8192                )
8193                .map(Into::into)
8194            }
8195        }
8196    };
8197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8198    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
8199    ```solidity
8200    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
8201    ```*/
8202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8203    #[derive(Clone)]
8204    pub struct setstateHistoryRetentionPeriodCall {
8205        #[allow(missing_docs)]
8206        pub historySeconds: u32,
8207    }
8208    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
8209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8210    #[derive(Clone)]
8211    pub struct setstateHistoryRetentionPeriodReturn {}
8212    #[allow(
8213        non_camel_case_types,
8214        non_snake_case,
8215        clippy::pub_underscore_fields,
8216        clippy::style
8217    )]
8218    const _: () = {
8219        use alloy::sol_types as alloy_sol_types;
8220        {
8221            #[doc(hidden)]
8222            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8223            #[doc(hidden)]
8224            type UnderlyingRustTuple<'a> = (u32,);
8225            #[cfg(test)]
8226            #[allow(dead_code, unreachable_patterns)]
8227            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8228                match _t {
8229                    alloy_sol_types::private::AssertTypeEq::<
8230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8231                    >(_) => {},
8232                }
8233            }
8234            #[automatically_derived]
8235            #[doc(hidden)]
8236            impl ::core::convert::From<setstateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
8237                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
8238                    (value.historySeconds,)
8239                }
8240            }
8241            #[automatically_derived]
8242            #[doc(hidden)]
8243            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodCall {
8244                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8245                    Self {
8246                        historySeconds: tuple.0,
8247                    }
8248                }
8249            }
8250        }
8251        {
8252            #[doc(hidden)]
8253            type UnderlyingSolTuple<'a> = ();
8254            #[doc(hidden)]
8255            type UnderlyingRustTuple<'a> = ();
8256            #[cfg(test)]
8257            #[allow(dead_code, unreachable_patterns)]
8258            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8259                match _t {
8260                    alloy_sol_types::private::AssertTypeEq::<
8261                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8262                    >(_) => {},
8263                }
8264            }
8265            #[automatically_derived]
8266            #[doc(hidden)]
8267            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
8268                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
8269                    ()
8270                }
8271            }
8272            #[automatically_derived]
8273            #[doc(hidden)]
8274            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodReturn {
8275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8276                    Self {}
8277                }
8278            }
8279        }
8280        #[automatically_derived]
8281        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
8282            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8283            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8284            type Return = setstateHistoryRetentionPeriodReturn;
8285            type ReturnTuple<'a> = ();
8286            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8287            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
8288            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
8289            #[inline]
8290            fn new<'a>(
8291                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8292            ) -> Self {
8293                tuple.into()
8294            }
8295            #[inline]
8296            fn tokenize(&self) -> Self::Token<'_> {
8297                (
8298                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
8299                        &self.historySeconds,
8300                    ),
8301                )
8302            }
8303            #[inline]
8304            fn abi_decode_returns(
8305                data: &[u8],
8306                validate: bool,
8307            ) -> alloy_sol_types::Result<Self::Return> {
8308                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8309                    data, validate,
8310                )
8311                .map(Into::into)
8312            }
8313        }
8314    };
8315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8316    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
8317    ```solidity
8318    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
8319    ```*/
8320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8321    #[derive(Clone)]
8322    pub struct stateHistoryCommitmentsCall {
8323        #[allow(missing_docs)]
8324        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8325    }
8326    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8327    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
8328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8329    #[derive(Clone)]
8330    pub struct stateHistoryCommitmentsReturn {
8331        #[allow(missing_docs)]
8332        pub l1BlockHeight: u64,
8333        #[allow(missing_docs)]
8334        pub l1BlockTimestamp: u64,
8335        #[allow(missing_docs)]
8336        pub hotShotBlockHeight: u64,
8337        #[allow(missing_docs)]
8338        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8339    }
8340    #[allow(
8341        non_camel_case_types,
8342        non_snake_case,
8343        clippy::pub_underscore_fields,
8344        clippy::style
8345    )]
8346    const _: () = {
8347        use alloy::sol_types as alloy_sol_types;
8348        {
8349            #[doc(hidden)]
8350            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8351            #[doc(hidden)]
8352            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8353            #[cfg(test)]
8354            #[allow(dead_code, unreachable_patterns)]
8355            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8356                match _t {
8357                    alloy_sol_types::private::AssertTypeEq::<
8358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8359                    >(_) => {},
8360                }
8361            }
8362            #[automatically_derived]
8363            #[doc(hidden)]
8364            impl ::core::convert::From<stateHistoryCommitmentsCall> for UnderlyingRustTuple<'_> {
8365                fn from(value: stateHistoryCommitmentsCall) -> Self {
8366                    (value._0,)
8367                }
8368            }
8369            #[automatically_derived]
8370            #[doc(hidden)]
8371            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsCall {
8372                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8373                    Self { _0: tuple.0 }
8374                }
8375            }
8376        }
8377        {
8378            #[doc(hidden)]
8379            type UnderlyingSolTuple<'a> = (
8380                alloy::sol_types::sol_data::Uint<64>,
8381                alloy::sol_types::sol_data::Uint<64>,
8382                alloy::sol_types::sol_data::Uint<64>,
8383                BN254::ScalarField,
8384            );
8385            #[doc(hidden)]
8386            type UnderlyingRustTuple<'a> = (
8387                u64,
8388                u64,
8389                u64,
8390                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8391            );
8392            #[cfg(test)]
8393            #[allow(dead_code, unreachable_patterns)]
8394            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8395                match _t {
8396                    alloy_sol_types::private::AssertTypeEq::<
8397                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8398                    >(_) => {},
8399                }
8400            }
8401            #[automatically_derived]
8402            #[doc(hidden)]
8403            impl ::core::convert::From<stateHistoryCommitmentsReturn> for UnderlyingRustTuple<'_> {
8404                fn from(value: stateHistoryCommitmentsReturn) -> Self {
8405                    (
8406                        value.l1BlockHeight,
8407                        value.l1BlockTimestamp,
8408                        value.hotShotBlockHeight,
8409                        value.hotShotBlockCommRoot,
8410                    )
8411                }
8412            }
8413            #[automatically_derived]
8414            #[doc(hidden)]
8415            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsReturn {
8416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8417                    Self {
8418                        l1BlockHeight: tuple.0,
8419                        l1BlockTimestamp: tuple.1,
8420                        hotShotBlockHeight: tuple.2,
8421                        hotShotBlockCommRoot: tuple.3,
8422                    }
8423                }
8424            }
8425        }
8426        #[automatically_derived]
8427        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
8428            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8429            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8430            type Return = stateHistoryCommitmentsReturn;
8431            type ReturnTuple<'a> = (
8432                alloy::sol_types::sol_data::Uint<64>,
8433                alloy::sol_types::sol_data::Uint<64>,
8434                alloy::sol_types::sol_data::Uint<64>,
8435                BN254::ScalarField,
8436            );
8437            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8438            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
8439            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
8440            #[inline]
8441            fn new<'a>(
8442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8443            ) -> Self {
8444                tuple.into()
8445            }
8446            #[inline]
8447            fn tokenize(&self) -> Self::Token<'_> {
8448                (
8449                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8450                        &self._0,
8451                    ),
8452                )
8453            }
8454            #[inline]
8455            fn abi_decode_returns(
8456                data: &[u8],
8457                validate: bool,
8458            ) -> alloy_sol_types::Result<Self::Return> {
8459                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8460                    data, validate,
8461                )
8462                .map(Into::into)
8463            }
8464        }
8465    };
8466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8467    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
8468    ```solidity
8469    function stateHistoryFirstIndex() external view returns (uint64);
8470    ```*/
8471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8472    #[derive(Clone)]
8473    pub struct stateHistoryFirstIndexCall {}
8474    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8475    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
8476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8477    #[derive(Clone)]
8478    pub struct stateHistoryFirstIndexReturn {
8479        #[allow(missing_docs)]
8480        pub _0: u64,
8481    }
8482    #[allow(
8483        non_camel_case_types,
8484        non_snake_case,
8485        clippy::pub_underscore_fields,
8486        clippy::style
8487    )]
8488    const _: () = {
8489        use alloy::sol_types as alloy_sol_types;
8490        {
8491            #[doc(hidden)]
8492            type UnderlyingSolTuple<'a> = ();
8493            #[doc(hidden)]
8494            type UnderlyingRustTuple<'a> = ();
8495            #[cfg(test)]
8496            #[allow(dead_code, unreachable_patterns)]
8497            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8498                match _t {
8499                    alloy_sol_types::private::AssertTypeEq::<
8500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8501                    >(_) => {},
8502                }
8503            }
8504            #[automatically_derived]
8505            #[doc(hidden)]
8506            impl ::core::convert::From<stateHistoryFirstIndexCall> for UnderlyingRustTuple<'_> {
8507                fn from(value: stateHistoryFirstIndexCall) -> Self {
8508                    ()
8509                }
8510            }
8511            #[automatically_derived]
8512            #[doc(hidden)]
8513            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexCall {
8514                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8515                    Self {}
8516                }
8517            }
8518        }
8519        {
8520            #[doc(hidden)]
8521            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8522            #[doc(hidden)]
8523            type UnderlyingRustTuple<'a> = (u64,);
8524            #[cfg(test)]
8525            #[allow(dead_code, unreachable_patterns)]
8526            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8527                match _t {
8528                    alloy_sol_types::private::AssertTypeEq::<
8529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8530                    >(_) => {},
8531                }
8532            }
8533            #[automatically_derived]
8534            #[doc(hidden)]
8535            impl ::core::convert::From<stateHistoryFirstIndexReturn> for UnderlyingRustTuple<'_> {
8536                fn from(value: stateHistoryFirstIndexReturn) -> Self {
8537                    (value._0,)
8538                }
8539            }
8540            #[automatically_derived]
8541            #[doc(hidden)]
8542            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexReturn {
8543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8544                    Self { _0: tuple.0 }
8545                }
8546            }
8547        }
8548        #[automatically_derived]
8549        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
8550            type Parameters<'a> = ();
8551            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8552            type Return = stateHistoryFirstIndexReturn;
8553            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8554            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8555            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
8556            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
8557            #[inline]
8558            fn new<'a>(
8559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8560            ) -> Self {
8561                tuple.into()
8562            }
8563            #[inline]
8564            fn tokenize(&self) -> Self::Token<'_> {
8565                ()
8566            }
8567            #[inline]
8568            fn abi_decode_returns(
8569                data: &[u8],
8570                validate: bool,
8571            ) -> alloy_sol_types::Result<Self::Return> {
8572                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8573                    data, validate,
8574                )
8575                .map(Into::into)
8576            }
8577        }
8578    };
8579    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8580    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
8581    ```solidity
8582    function stateHistoryRetentionPeriod() external view returns (uint32);
8583    ```*/
8584    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8585    #[derive(Clone)]
8586    pub struct stateHistoryRetentionPeriodCall {}
8587    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8588    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
8589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8590    #[derive(Clone)]
8591    pub struct stateHistoryRetentionPeriodReturn {
8592        #[allow(missing_docs)]
8593        pub _0: u32,
8594    }
8595    #[allow(
8596        non_camel_case_types,
8597        non_snake_case,
8598        clippy::pub_underscore_fields,
8599        clippy::style
8600    )]
8601    const _: () = {
8602        use alloy::sol_types as alloy_sol_types;
8603        {
8604            #[doc(hidden)]
8605            type UnderlyingSolTuple<'a> = ();
8606            #[doc(hidden)]
8607            type UnderlyingRustTuple<'a> = ();
8608            #[cfg(test)]
8609            #[allow(dead_code, unreachable_patterns)]
8610            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8611                match _t {
8612                    alloy_sol_types::private::AssertTypeEq::<
8613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8614                    >(_) => {},
8615                }
8616            }
8617            #[automatically_derived]
8618            #[doc(hidden)]
8619            impl ::core::convert::From<stateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
8620                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
8621                    ()
8622                }
8623            }
8624            #[automatically_derived]
8625            #[doc(hidden)]
8626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodCall {
8627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8628                    Self {}
8629                }
8630            }
8631        }
8632        {
8633            #[doc(hidden)]
8634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8635            #[doc(hidden)]
8636            type UnderlyingRustTuple<'a> = (u32,);
8637            #[cfg(test)]
8638            #[allow(dead_code, unreachable_patterns)]
8639            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8640                match _t {
8641                    alloy_sol_types::private::AssertTypeEq::<
8642                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8643                    >(_) => {},
8644                }
8645            }
8646            #[automatically_derived]
8647            #[doc(hidden)]
8648            impl ::core::convert::From<stateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
8649                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
8650                    (value._0,)
8651                }
8652            }
8653            #[automatically_derived]
8654            #[doc(hidden)]
8655            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodReturn {
8656                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8657                    Self { _0: tuple.0 }
8658                }
8659            }
8660        }
8661        #[automatically_derived]
8662        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
8663            type Parameters<'a> = ();
8664            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8665            type Return = stateHistoryRetentionPeriodReturn;
8666            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
8667            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8668            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
8669            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
8670            #[inline]
8671            fn new<'a>(
8672                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8673            ) -> Self {
8674                tuple.into()
8675            }
8676            #[inline]
8677            fn tokenize(&self) -> Self::Token<'_> {
8678                ()
8679            }
8680            #[inline]
8681            fn abi_decode_returns(
8682                data: &[u8],
8683                validate: bool,
8684            ) -> alloy_sol_types::Result<Self::Return> {
8685                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8686                    data, validate,
8687                )
8688                .map(Into::into)
8689            }
8690        }
8691    };
8692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8693    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
8694    ```solidity
8695    function transferOwnership(address newOwner) external;
8696    ```*/
8697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8698    #[derive(Clone)]
8699    pub struct transferOwnershipCall {
8700        #[allow(missing_docs)]
8701        pub newOwner: alloy::sol_types::private::Address,
8702    }
8703    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
8704    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8705    #[derive(Clone)]
8706    pub struct transferOwnershipReturn {}
8707    #[allow(
8708        non_camel_case_types,
8709        non_snake_case,
8710        clippy::pub_underscore_fields,
8711        clippy::style
8712    )]
8713    const _: () = {
8714        use alloy::sol_types as alloy_sol_types;
8715        {
8716            #[doc(hidden)]
8717            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8718            #[doc(hidden)]
8719            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8720            #[cfg(test)]
8721            #[allow(dead_code, unreachable_patterns)]
8722            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8723                match _t {
8724                    alloy_sol_types::private::AssertTypeEq::<
8725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8726                    >(_) => {},
8727                }
8728            }
8729            #[automatically_derived]
8730            #[doc(hidden)]
8731            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
8732                fn from(value: transferOwnershipCall) -> Self {
8733                    (value.newOwner,)
8734                }
8735            }
8736            #[automatically_derived]
8737            #[doc(hidden)]
8738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
8739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8740                    Self { newOwner: tuple.0 }
8741                }
8742            }
8743        }
8744        {
8745            #[doc(hidden)]
8746            type UnderlyingSolTuple<'a> = ();
8747            #[doc(hidden)]
8748            type UnderlyingRustTuple<'a> = ();
8749            #[cfg(test)]
8750            #[allow(dead_code, unreachable_patterns)]
8751            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8752                match _t {
8753                    alloy_sol_types::private::AssertTypeEq::<
8754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8755                    >(_) => {},
8756                }
8757            }
8758            #[automatically_derived]
8759            #[doc(hidden)]
8760            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
8761                fn from(value: transferOwnershipReturn) -> Self {
8762                    ()
8763                }
8764            }
8765            #[automatically_derived]
8766            #[doc(hidden)]
8767            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
8768                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8769                    Self {}
8770                }
8771            }
8772        }
8773        #[automatically_derived]
8774        impl alloy_sol_types::SolCall for transferOwnershipCall {
8775            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8776            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8777            type Return = transferOwnershipReturn;
8778            type ReturnTuple<'a> = ();
8779            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8780            const SIGNATURE: &'static str = "transferOwnership(address)";
8781            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
8782            #[inline]
8783            fn new<'a>(
8784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8785            ) -> Self {
8786                tuple.into()
8787            }
8788            #[inline]
8789            fn tokenize(&self) -> Self::Token<'_> {
8790                (
8791                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8792                        &self.newOwner,
8793                    ),
8794                )
8795            }
8796            #[inline]
8797            fn abi_decode_returns(
8798                data: &[u8],
8799                validate: bool,
8800            ) -> alloy_sol_types::Result<Self::Return> {
8801                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8802                    data, validate,
8803                )
8804                .map(Into::into)
8805            }
8806        }
8807    };
8808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8809    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
8810    ```solidity
8811    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
8812    ```*/
8813    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8814    #[derive(Clone)]
8815    pub struct upgradeToAndCallCall {
8816        #[allow(missing_docs)]
8817        pub newImplementation: alloy::sol_types::private::Address,
8818        #[allow(missing_docs)]
8819        pub data: alloy::sol_types::private::Bytes,
8820    }
8821    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
8822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8823    #[derive(Clone)]
8824    pub struct upgradeToAndCallReturn {}
8825    #[allow(
8826        non_camel_case_types,
8827        non_snake_case,
8828        clippy::pub_underscore_fields,
8829        clippy::style
8830    )]
8831    const _: () = {
8832        use alloy::sol_types as alloy_sol_types;
8833        {
8834            #[doc(hidden)]
8835            type UnderlyingSolTuple<'a> = (
8836                alloy::sol_types::sol_data::Address,
8837                alloy::sol_types::sol_data::Bytes,
8838            );
8839            #[doc(hidden)]
8840            type UnderlyingRustTuple<'a> = (
8841                alloy::sol_types::private::Address,
8842                alloy::sol_types::private::Bytes,
8843            );
8844            #[cfg(test)]
8845            #[allow(dead_code, unreachable_patterns)]
8846            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8847                match _t {
8848                    alloy_sol_types::private::AssertTypeEq::<
8849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8850                    >(_) => {},
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
8856                fn from(value: upgradeToAndCallCall) -> Self {
8857                    (value.newImplementation, value.data)
8858                }
8859            }
8860            #[automatically_derived]
8861            #[doc(hidden)]
8862            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
8863                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8864                    Self {
8865                        newImplementation: tuple.0,
8866                        data: tuple.1,
8867                    }
8868                }
8869            }
8870        }
8871        {
8872            #[doc(hidden)]
8873            type UnderlyingSolTuple<'a> = ();
8874            #[doc(hidden)]
8875            type UnderlyingRustTuple<'a> = ();
8876            #[cfg(test)]
8877            #[allow(dead_code, unreachable_patterns)]
8878            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8879                match _t {
8880                    alloy_sol_types::private::AssertTypeEq::<
8881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8882                    >(_) => {},
8883                }
8884            }
8885            #[automatically_derived]
8886            #[doc(hidden)]
8887            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
8888                fn from(value: upgradeToAndCallReturn) -> Self {
8889                    ()
8890                }
8891            }
8892            #[automatically_derived]
8893            #[doc(hidden)]
8894            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
8895                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8896                    Self {}
8897                }
8898            }
8899        }
8900        #[automatically_derived]
8901        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
8902            type Parameters<'a> = (
8903                alloy::sol_types::sol_data::Address,
8904                alloy::sol_types::sol_data::Bytes,
8905            );
8906            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8907            type Return = upgradeToAndCallReturn;
8908            type ReturnTuple<'a> = ();
8909            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8910            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
8911            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
8912            #[inline]
8913            fn new<'a>(
8914                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8915            ) -> Self {
8916                tuple.into()
8917            }
8918            #[inline]
8919            fn tokenize(&self) -> Self::Token<'_> {
8920                (
8921                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8922                        &self.newImplementation,
8923                    ),
8924                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
8925                        &self.data,
8926                    ),
8927                )
8928            }
8929            #[inline]
8930            fn abi_decode_returns(
8931                data: &[u8],
8932                validate: bool,
8933            ) -> alloy_sol_types::Result<Self::Return> {
8934                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8935                    data, validate,
8936                )
8937                .map(Into::into)
8938            }
8939        }
8940    };
8941    ///Container for all the [`LightClient`](self) function calls.
8942    #[derive()]
8943    pub enum LightClientCalls {
8944        #[allow(missing_docs)]
8945        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
8946        #[allow(missing_docs)]
8947        _getVk(_getVkCall),
8948        #[allow(missing_docs)]
8949        currentBlockNumber(currentBlockNumberCall),
8950        #[allow(missing_docs)]
8951        disablePermissionedProverMode(disablePermissionedProverModeCall),
8952        #[allow(missing_docs)]
8953        finalizedState(finalizedStateCall),
8954        #[allow(missing_docs)]
8955        genesisStakeTableState(genesisStakeTableStateCall),
8956        #[allow(missing_docs)]
8957        genesisState(genesisStateCall),
8958        #[allow(missing_docs)]
8959        getHotShotCommitment(getHotShotCommitmentCall),
8960        #[allow(missing_docs)]
8961        getStateHistoryCount(getStateHistoryCountCall),
8962        #[allow(missing_docs)]
8963        getVersion(getVersionCall),
8964        #[allow(missing_docs)]
8965        initialize(initializeCall),
8966        #[allow(missing_docs)]
8967        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
8968        #[allow(missing_docs)]
8969        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
8970        #[allow(missing_docs)]
8971        newFinalizedState(newFinalizedStateCall),
8972        #[allow(missing_docs)]
8973        owner(ownerCall),
8974        #[allow(missing_docs)]
8975        permissionedProver(permissionedProverCall),
8976        #[allow(missing_docs)]
8977        proxiableUUID(proxiableUUIDCall),
8978        #[allow(missing_docs)]
8979        renounceOwnership(renounceOwnershipCall),
8980        #[allow(missing_docs)]
8981        setPermissionedProver(setPermissionedProverCall),
8982        #[allow(missing_docs)]
8983        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
8984        #[allow(missing_docs)]
8985        stateHistoryCommitments(stateHistoryCommitmentsCall),
8986        #[allow(missing_docs)]
8987        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
8988        #[allow(missing_docs)]
8989        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
8990        #[allow(missing_docs)]
8991        transferOwnership(transferOwnershipCall),
8992        #[allow(missing_docs)]
8993        upgradeToAndCall(upgradeToAndCallCall),
8994    }
8995    #[automatically_derived]
8996    impl LightClientCalls {
8997        /// All the selectors of this enum.
8998        ///
8999        /// Note that the selectors might not be in the same order as the variants.
9000        /// No guarantees are made about the order of the selectors.
9001        ///
9002        /// Prefer using `SolInterface` methods instead.
9003        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9004            [1u8, 63u8, 165u8, 252u8],
9005            [2u8, 181u8, 146u8, 243u8],
9006            [13u8, 142u8, 110u8, 44u8],
9007            [18u8, 23u8, 60u8, 44u8],
9008            [32u8, 99u8, 212u8, 247u8],
9009            [47u8, 121u8, 136u8, 157u8],
9010            [49u8, 61u8, 247u8, 177u8],
9011            [55u8, 142u8, 194u8, 59u8],
9012            [66u8, 109u8, 49u8, 148u8],
9013            [79u8, 30u8, 242u8, 134u8],
9014            [82u8, 209u8, 144u8, 45u8],
9015            [105u8, 204u8, 106u8, 4u8],
9016            [113u8, 80u8, 24u8, 166u8],
9017            [130u8, 110u8, 65u8, 252u8],
9018            [133u8, 132u8, 210u8, 63u8],
9019            [141u8, 165u8, 203u8, 91u8],
9020            [150u8, 193u8, 202u8, 97u8],
9021            [155u8, 170u8, 60u8, 201u8],
9022            [159u8, 219u8, 84u8, 167u8],
9023            [173u8, 60u8, 177u8, 204u8],
9024            [194u8, 59u8, 158u8, 158u8],
9025            [210u8, 77u8, 147u8, 61u8],
9026            [224u8, 48u8, 51u8, 1u8],
9027            [242u8, 253u8, 227u8, 139u8],
9028            [249u8, 229u8, 13u8, 25u8],
9029        ];
9030    }
9031    #[automatically_derived]
9032    impl alloy_sol_types::SolInterface for LightClientCalls {
9033        const NAME: &'static str = "LightClientCalls";
9034        const MIN_DATA_LENGTH: usize = 0usize;
9035        const COUNT: usize = 25usize;
9036        #[inline]
9037        fn selector(&self) -> [u8; 4] {
9038            match self {
9039                Self::UPGRADE_INTERFACE_VERSION(_) => {
9040                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9041                },
9042                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
9043                Self::currentBlockNumber(_) => {
9044                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9045                },
9046                Self::disablePermissionedProverMode(_) => {
9047                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
9048                },
9049                Self::finalizedState(_) => {
9050                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9051                },
9052                Self::genesisStakeTableState(_) => {
9053                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
9054                },
9055                Self::genesisState(_) => <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR,
9056                Self::getHotShotCommitment(_) => {
9057                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
9058                },
9059                Self::getStateHistoryCount(_) => {
9060                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
9061                },
9062                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
9063                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
9064                Self::isPermissionedProverEnabled(_) => {
9065                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
9066                },
9067                Self::lagOverEscapeHatchThreshold(_) => {
9068                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
9069                },
9070                Self::newFinalizedState(_) => {
9071                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9072                },
9073                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9074                Self::permissionedProver(_) => {
9075                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9076                },
9077                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
9078                Self::renounceOwnership(_) => {
9079                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9080                },
9081                Self::setPermissionedProver(_) => {
9082                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9083                },
9084                Self::setstateHistoryRetentionPeriod(_) => {
9085                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9086                },
9087                Self::stateHistoryCommitments(_) => {
9088                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
9089                },
9090                Self::stateHistoryFirstIndex(_) => {
9091                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
9092                },
9093                Self::stateHistoryRetentionPeriod(_) => {
9094                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9095                },
9096                Self::transferOwnership(_) => {
9097                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9098                },
9099                Self::upgradeToAndCall(_) => {
9100                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
9101                },
9102            }
9103        }
9104        #[inline]
9105        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9106            Self::SELECTORS.get(i).copied()
9107        }
9108        #[inline]
9109        fn valid_selector(selector: [u8; 4]) -> bool {
9110            Self::SELECTORS.binary_search(&selector).is_ok()
9111        }
9112        #[inline]
9113        #[allow(non_snake_case)]
9114        fn abi_decode_raw(
9115            selector: [u8; 4],
9116            data: &[u8],
9117            validate: bool,
9118        ) -> alloy_sol_types::Result<Self> {
9119            static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result<LightClientCalls>] =
9120                &[
9121                    {
9122                        fn setPermissionedProver(
9123                            data: &[u8],
9124                            validate: bool,
9125                        ) -> alloy_sol_types::Result<LightClientCalls> {
9126                            <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
9127                                data, validate,
9128                            )
9129                            .map(LightClientCalls::setPermissionedProver)
9130                        }
9131                        setPermissionedProver
9132                    },
9133                    {
9134                        fn stateHistoryCommitments(
9135                            data: &[u8],
9136                            validate: bool,
9137                        ) -> alloy_sol_types::Result<LightClientCalls> {
9138                            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
9139                                data,
9140                                validate,
9141                            )
9142                            .map(LightClientCalls::stateHistoryCommitments)
9143                        }
9144                        stateHistoryCommitments
9145                    },
9146                    {
9147                        fn getVersion(
9148                            data: &[u8],
9149                            validate: bool,
9150                        ) -> alloy_sol_types::Result<LightClientCalls> {
9151                            <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
9152                                data, validate,
9153                            )
9154                            .map(LightClientCalls::getVersion)
9155                        }
9156                        getVersion
9157                    },
9158                    {
9159                        fn _getVk(
9160                            data: &[u8],
9161                            validate: bool,
9162                        ) -> alloy_sol_types::Result<LightClientCalls> {
9163                            <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9164                                .map(LightClientCalls::_getVk)
9165                        }
9166                        _getVk
9167                    },
9168                    {
9169                        fn newFinalizedState(
9170                            data: &[u8],
9171                            validate: bool,
9172                        ) -> alloy_sol_types::Result<LightClientCalls> {
9173                            <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9174                                data, validate,
9175                            )
9176                            .map(LightClientCalls::newFinalizedState)
9177                        }
9178                        newFinalizedState
9179                    },
9180                    {
9181                        fn stateHistoryFirstIndex(
9182                            data: &[u8],
9183                            validate: bool,
9184                        ) -> alloy_sol_types::Result<LightClientCalls> {
9185                            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
9186                                data,
9187                                validate,
9188                            )
9189                            .map(LightClientCalls::stateHistoryFirstIndex)
9190                        }
9191                        stateHistoryFirstIndex
9192                    },
9193                    {
9194                        fn permissionedProver(
9195                            data: &[u8],
9196                            validate: bool,
9197                        ) -> alloy_sol_types::Result<LightClientCalls> {
9198                            <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
9199                                data, validate,
9200                            )
9201                            .map(LightClientCalls::permissionedProver)
9202                        }
9203                        permissionedProver
9204                    },
9205                    {
9206                        fn currentBlockNumber(
9207                            data: &[u8],
9208                            validate: bool,
9209                        ) -> alloy_sol_types::Result<LightClientCalls> {
9210                            <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
9211                                data, validate,
9212                            )
9213                            .map(LightClientCalls::currentBlockNumber)
9214                        }
9215                        currentBlockNumber
9216                    },
9217                    {
9218                        fn genesisStakeTableState(
9219                            data: &[u8],
9220                            validate: bool,
9221                        ) -> alloy_sol_types::Result<LightClientCalls> {
9222                            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9223                                data,
9224                                validate,
9225                            )
9226                            .map(LightClientCalls::genesisStakeTableState)
9227                        }
9228                        genesisStakeTableState
9229                    },
9230                    {
9231                        fn upgradeToAndCall(
9232                            data: &[u8],
9233                            validate: bool,
9234                        ) -> alloy_sol_types::Result<LightClientCalls> {
9235                            <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
9236                                data, validate,
9237                            )
9238                            .map(LightClientCalls::upgradeToAndCall)
9239                        }
9240                        upgradeToAndCall
9241                    },
9242                    {
9243                        fn proxiableUUID(
9244                            data: &[u8],
9245                            validate: bool,
9246                        ) -> alloy_sol_types::Result<LightClientCalls> {
9247                            <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
9248                                data, validate,
9249                            )
9250                            .map(LightClientCalls::proxiableUUID)
9251                        }
9252                        proxiableUUID
9253                    },
9254                    {
9255                        fn disablePermissionedProverMode(
9256                            data: &[u8],
9257                            validate: bool,
9258                        ) -> alloy_sol_types::Result<LightClientCalls> {
9259                            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9260                                data,
9261                                validate,
9262                            )
9263                            .map(LightClientCalls::disablePermissionedProverMode)
9264                        }
9265                        disablePermissionedProverMode
9266                    },
9267                    {
9268                        fn renounceOwnership(
9269                            data: &[u8],
9270                            validate: bool,
9271                        ) -> alloy_sol_types::Result<LightClientCalls> {
9272                            <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9273                                data, validate,
9274                            )
9275                            .map(LightClientCalls::renounceOwnership)
9276                        }
9277                        renounceOwnership
9278                    },
9279                    {
9280                        fn isPermissionedProverEnabled(
9281                            data: &[u8],
9282                            validate: bool,
9283                        ) -> alloy_sol_types::Result<LightClientCalls> {
9284                            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
9285                                data,
9286                                validate,
9287                            )
9288                            .map(LightClientCalls::isPermissionedProverEnabled)
9289                        }
9290                        isPermissionedProverEnabled
9291                    },
9292                    {
9293                        fn getHotShotCommitment(
9294                            data: &[u8],
9295                            validate: bool,
9296                        ) -> alloy_sol_types::Result<LightClientCalls> {
9297                            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
9298                                data, validate,
9299                            )
9300                            .map(LightClientCalls::getHotShotCommitment)
9301                        }
9302                        getHotShotCommitment
9303                    },
9304                    {
9305                        fn owner(
9306                            data: &[u8],
9307                            validate: bool,
9308                        ) -> alloy_sol_types::Result<LightClientCalls> {
9309                            <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
9310                                .map(LightClientCalls::owner)
9311                        }
9312                        owner
9313                    },
9314                    {
9315                        fn setstateHistoryRetentionPeriod(
9316                            data: &[u8],
9317                            validate: bool,
9318                        ) -> alloy_sol_types::Result<LightClientCalls> {
9319                            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9320                                data,
9321                                validate,
9322                            )
9323                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
9324                        }
9325                        setstateHistoryRetentionPeriod
9326                    },
9327                    {
9328                        fn initialize(
9329                            data: &[u8],
9330                            validate: bool,
9331                        ) -> alloy_sol_types::Result<LightClientCalls> {
9332                            <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
9333                                data, validate,
9334                            )
9335                            .map(LightClientCalls::initialize)
9336                        }
9337                        initialize
9338                    },
9339                    {
9340                        fn finalizedState(
9341                            data: &[u8],
9342                            validate: bool,
9343                        ) -> alloy_sol_types::Result<LightClientCalls> {
9344                            <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9345                                data, validate,
9346                            )
9347                            .map(LightClientCalls::finalizedState)
9348                        }
9349                        finalizedState
9350                    },
9351                    {
9352                        fn UPGRADE_INTERFACE_VERSION(
9353                            data: &[u8],
9354                            validate: bool,
9355                        ) -> alloy_sol_types::Result<LightClientCalls> {
9356                            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
9357                                data,
9358                                validate,
9359                            )
9360                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
9361                        }
9362                        UPGRADE_INTERFACE_VERSION
9363                    },
9364                    {
9365                        fn stateHistoryRetentionPeriod(
9366                            data: &[u8],
9367                            validate: bool,
9368                        ) -> alloy_sol_types::Result<LightClientCalls> {
9369                            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
9370                                data,
9371                                validate,
9372                            )
9373                            .map(LightClientCalls::stateHistoryRetentionPeriod)
9374                        }
9375                        stateHistoryRetentionPeriod
9376                    },
9377                    {
9378                        fn genesisState(
9379                            data: &[u8],
9380                            validate: bool,
9381                        ) -> alloy_sol_types::Result<LightClientCalls> {
9382                            <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
9383                                data, validate,
9384                            )
9385                            .map(LightClientCalls::genesisState)
9386                        }
9387                        genesisState
9388                    },
9389                    {
9390                        fn lagOverEscapeHatchThreshold(
9391                            data: &[u8],
9392                            validate: bool,
9393                        ) -> alloy_sol_types::Result<LightClientCalls> {
9394                            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
9395                                data,
9396                                validate,
9397                            )
9398                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
9399                        }
9400                        lagOverEscapeHatchThreshold
9401                    },
9402                    {
9403                        fn transferOwnership(
9404                            data: &[u8],
9405                            validate: bool,
9406                        ) -> alloy_sol_types::Result<LightClientCalls> {
9407                            <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
9408                                data, validate,
9409                            )
9410                            .map(LightClientCalls::transferOwnership)
9411                        }
9412                        transferOwnership
9413                    },
9414                    {
9415                        fn getStateHistoryCount(
9416                            data: &[u8],
9417                            validate: bool,
9418                        ) -> alloy_sol_types::Result<LightClientCalls> {
9419                            <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
9420                                data, validate,
9421                            )
9422                            .map(LightClientCalls::getStateHistoryCount)
9423                        }
9424                        getStateHistoryCount
9425                    },
9426                ];
9427            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9428                return Err(alloy_sol_types::Error::unknown_selector(
9429                    <Self as alloy_sol_types::SolInterface>::NAME,
9430                    selector,
9431                ));
9432            };
9433            DECODE_SHIMS[idx](data, validate)
9434        }
9435        #[inline]
9436        fn abi_encoded_size(&self) -> usize {
9437            match self {
9438                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9439                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
9440                        inner,
9441                    )
9442                }
9443                Self::_getVk(inner) => {
9444                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9445                }
9446                Self::currentBlockNumber(inner) => {
9447                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
9448                        inner,
9449                    )
9450                }
9451                Self::disablePermissionedProverMode(inner) => {
9452                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
9453                        inner,
9454                    )
9455                }
9456                Self::finalizedState(inner) => {
9457                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9458                        inner,
9459                    )
9460                }
9461                Self::genesisStakeTableState(inner) => {
9462                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9463                        inner,
9464                    )
9465                }
9466                Self::genesisState(inner) => {
9467                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9468                        inner,
9469                    )
9470                }
9471                Self::getHotShotCommitment(inner) => {
9472                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
9473                        inner,
9474                    )
9475                }
9476                Self::getStateHistoryCount(inner) => {
9477                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
9478                        inner,
9479                    )
9480                }
9481                Self::getVersion(inner) => {
9482                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9483                }
9484                Self::initialize(inner) => {
9485                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9486                }
9487                Self::isPermissionedProverEnabled(inner) => {
9488                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
9489                        inner,
9490                    )
9491                }
9492                Self::lagOverEscapeHatchThreshold(inner) => {
9493                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
9494                        inner,
9495                    )
9496                }
9497                Self::newFinalizedState(inner) => {
9498                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9499                        inner,
9500                    )
9501                }
9502                Self::owner(inner) => {
9503                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9504                }
9505                Self::permissionedProver(inner) => {
9506                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
9507                        inner,
9508                    )
9509                }
9510                Self::proxiableUUID(inner) => {
9511                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
9512                        inner,
9513                    )
9514                }
9515                Self::renounceOwnership(inner) => {
9516                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9517                        inner,
9518                    )
9519                }
9520                Self::setPermissionedProver(inner) => {
9521                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
9522                        inner,
9523                    )
9524                }
9525                Self::setstateHistoryRetentionPeriod(inner) => {
9526                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
9527                        inner,
9528                    )
9529                }
9530                Self::stateHistoryCommitments(inner) => {
9531                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
9532                        inner,
9533                    )
9534                }
9535                Self::stateHistoryFirstIndex(inner) => {
9536                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
9537                        inner,
9538                    )
9539                }
9540                Self::stateHistoryRetentionPeriod(inner) => {
9541                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
9542                        inner,
9543                    )
9544                }
9545                Self::transferOwnership(inner) => {
9546                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
9547                        inner,
9548                    )
9549                }
9550                Self::upgradeToAndCall(inner) => {
9551                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
9552                        inner,
9553                    )
9554                }
9555            }
9556        }
9557        #[inline]
9558        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9559            match self {
9560                Self::UPGRADE_INTERFACE_VERSION(inner) => {
9561                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
9562                        inner, out,
9563                    )
9564                },
9565                Self::_getVk(inner) => {
9566                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9567                },
9568                Self::currentBlockNumber(inner) => {
9569                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9570                },
9571                Self::disablePermissionedProverMode(inner) => {
9572                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
9573                        inner, out,
9574                    )
9575                },
9576                Self::finalizedState(inner) => {
9577                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9578                },
9579                Self::genesisStakeTableState(inner) => {
9580                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9581                        inner, out,
9582                    )
9583                },
9584                Self::genesisState(inner) => {
9585                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9586                },
9587                Self::getHotShotCommitment(inner) => {
9588                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
9589                        inner, out,
9590                    )
9591                },
9592                Self::getStateHistoryCount(inner) => {
9593                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
9594                        inner, out,
9595                    )
9596                },
9597                Self::getVersion(inner) => {
9598                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9599                },
9600                Self::initialize(inner) => {
9601                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9602                },
9603                Self::isPermissionedProverEnabled(inner) => {
9604                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
9605                        inner, out,
9606                    )
9607                },
9608                Self::lagOverEscapeHatchThreshold(inner) => {
9609                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
9610                        inner, out,
9611                    )
9612                },
9613                Self::newFinalizedState(inner) => {
9614                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9615                },
9616                Self::owner(inner) => {
9617                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9618                },
9619                Self::permissionedProver(inner) => {
9620                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9621                },
9622                Self::proxiableUUID(inner) => {
9623                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9624                },
9625                Self::renounceOwnership(inner) => {
9626                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9627                },
9628                Self::setPermissionedProver(inner) => {
9629                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
9630                        inner, out,
9631                    )
9632                },
9633                Self::setstateHistoryRetentionPeriod(inner) => {
9634                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
9635                        inner, out,
9636                    )
9637                },
9638                Self::stateHistoryCommitments(inner) => {
9639                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
9640                        inner, out,
9641                    )
9642                },
9643                Self::stateHistoryFirstIndex(inner) => {
9644                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
9645                        inner, out,
9646                    )
9647                },
9648                Self::stateHistoryRetentionPeriod(inner) => {
9649                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
9650                        inner, out,
9651                    )
9652                },
9653                Self::transferOwnership(inner) => {
9654                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9655                },
9656                Self::upgradeToAndCall(inner) => {
9657                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9658                },
9659            }
9660        }
9661    }
9662    ///Container for all the [`LightClient`](self) custom errors.
9663    #[derive(Debug, PartialEq, Eq, Hash)]
9664    pub enum LightClientErrors {
9665        #[allow(missing_docs)]
9666        AddressEmptyCode(AddressEmptyCode),
9667        #[allow(missing_docs)]
9668        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
9669        #[allow(missing_docs)]
9670        ERC1967NonPayable(ERC1967NonPayable),
9671        #[allow(missing_docs)]
9672        FailedInnerCall(FailedInnerCall),
9673        #[allow(missing_docs)]
9674        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
9675        #[allow(missing_docs)]
9676        InvalidAddress(InvalidAddress),
9677        #[allow(missing_docs)]
9678        InvalidArgs(InvalidArgs),
9679        #[allow(missing_docs)]
9680        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
9681        #[allow(missing_docs)]
9682        InvalidInitialization(InvalidInitialization),
9683        #[allow(missing_docs)]
9684        InvalidMaxStateHistory(InvalidMaxStateHistory),
9685        #[allow(missing_docs)]
9686        InvalidProof(InvalidProof),
9687        #[allow(missing_docs)]
9688        NoChangeRequired(NoChangeRequired),
9689        #[allow(missing_docs)]
9690        NotInitializing(NotInitializing),
9691        #[allow(missing_docs)]
9692        OutdatedState(OutdatedState),
9693        #[allow(missing_docs)]
9694        OwnableInvalidOwner(OwnableInvalidOwner),
9695        #[allow(missing_docs)]
9696        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
9697        #[allow(missing_docs)]
9698        ProverNotPermissioned(ProverNotPermissioned),
9699        #[allow(missing_docs)]
9700        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
9701        #[allow(missing_docs)]
9702        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
9703        #[allow(missing_docs)]
9704        WrongStakeTableUsed(WrongStakeTableUsed),
9705    }
9706    #[automatically_derived]
9707    impl LightClientErrors {
9708        /// All the selectors of this enum.
9709        ///
9710        /// Note that the selectors might not be in the same order as the variants.
9711        /// No guarantees are made about the order of the selectors.
9712        ///
9713        /// Prefer using `SolInterface` methods instead.
9714        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9715            [5u8, 28u8, 70u8, 239u8],
9716            [9u8, 189u8, 227u8, 57u8],
9717            [17u8, 140u8, 218u8, 167u8],
9718            [20u8, 37u8, 234u8, 66u8],
9719            [30u8, 79u8, 189u8, 247u8],
9720            [76u8, 156u8, 140u8, 227u8],
9721            [81u8, 97u8, 128u8, 137u8],
9722            [97u8, 90u8, 146u8, 100u8],
9723            [153u8, 150u8, 179u8, 21u8],
9724            [161u8, 186u8, 7u8, 238u8],
9725            [163u8, 166u8, 71u8, 128u8],
9726            [168u8, 99u8, 174u8, 201u8],
9727            [170u8, 29u8, 73u8, 164u8],
9728            [176u8, 180u8, 56u8, 119u8],
9729            [179u8, 152u8, 151u8, 159u8],
9730            [215u8, 230u8, 188u8, 248u8],
9731            [224u8, 124u8, 141u8, 186u8],
9732            [230u8, 196u8, 36u8, 123u8],
9733            [244u8, 160u8, 238u8, 224u8],
9734            [249u8, 46u8, 232u8, 169u8],
9735        ];
9736    }
9737    #[automatically_derived]
9738    impl alloy_sol_types::SolInterface for LightClientErrors {
9739        const NAME: &'static str = "LightClientErrors";
9740        const MIN_DATA_LENGTH: usize = 0usize;
9741        const COUNT: usize = 20usize;
9742        #[inline]
9743        fn selector(&self) -> [u8; 4] {
9744            match self {
9745                Self::AddressEmptyCode(_) => {
9746                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
9747                },
9748                Self::ERC1967InvalidImplementation(_) => {
9749                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
9750                },
9751                Self::ERC1967NonPayable(_) => {
9752                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
9753                },
9754                Self::FailedInnerCall(_) => {
9755                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9756                },
9757                Self::InsufficientSnapshotHistory(_) => {
9758                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
9759                },
9760                Self::InvalidAddress(_) => <InvalidAddress as alloy_sol_types::SolError>::SELECTOR,
9761                Self::InvalidArgs(_) => <InvalidArgs as alloy_sol_types::SolError>::SELECTOR,
9762                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
9763                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
9764                },
9765                Self::InvalidInitialization(_) => {
9766                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
9767                },
9768                Self::InvalidMaxStateHistory(_) => {
9769                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
9770                },
9771                Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
9772                Self::NoChangeRequired(_) => {
9773                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
9774                },
9775                Self::NotInitializing(_) => {
9776                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
9777                },
9778                Self::OutdatedState(_) => <OutdatedState as alloy_sol_types::SolError>::SELECTOR,
9779                Self::OwnableInvalidOwner(_) => {
9780                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
9781                },
9782                Self::OwnableUnauthorizedAccount(_) => {
9783                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9784                },
9785                Self::ProverNotPermissioned(_) => {
9786                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
9787                },
9788                Self::UUPSUnauthorizedCallContext(_) => {
9789                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
9790                },
9791                Self::UUPSUnsupportedProxiableUUID(_) => {
9792                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
9793                },
9794                Self::WrongStakeTableUsed(_) => {
9795                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
9796                },
9797            }
9798        }
9799        #[inline]
9800        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9801            Self::SELECTORS.get(i).copied()
9802        }
9803        #[inline]
9804        fn valid_selector(selector: [u8; 4]) -> bool {
9805            Self::SELECTORS.binary_search(&selector).is_ok()
9806        }
9807        #[inline]
9808        #[allow(non_snake_case)]
9809        fn abi_decode_raw(
9810            selector: [u8; 4],
9811            data: &[u8],
9812            validate: bool,
9813        ) -> alloy_sol_types::Result<Self> {
9814            static DECODE_SHIMS: &[fn(
9815                &[u8],
9816                bool,
9817            )
9818                -> alloy_sol_types::Result<LightClientErrors>] = &[
9819                {
9820                    fn OutdatedState(
9821                        data: &[u8],
9822                        validate: bool,
9823                    ) -> alloy_sol_types::Result<LightClientErrors> {
9824                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
9825                            .map(LightClientErrors::OutdatedState)
9826                    }
9827                    OutdatedState
9828                },
9829                {
9830                    fn InvalidProof(
9831                        data: &[u8],
9832                        validate: bool,
9833                    ) -> alloy_sol_types::Result<LightClientErrors> {
9834                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
9835                            .map(LightClientErrors::InvalidProof)
9836                    }
9837                    InvalidProof
9838                },
9839                {
9840                    fn OwnableUnauthorizedAccount(
9841                        data: &[u8],
9842                        validate: bool,
9843                    ) -> alloy_sol_types::Result<LightClientErrors> {
9844                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9845                            data, validate,
9846                        )
9847                        .map(LightClientErrors::OwnableUnauthorizedAccount)
9848                    }
9849                    OwnableUnauthorizedAccount
9850                },
9851                {
9852                    fn FailedInnerCall(
9853                        data: &[u8],
9854                        validate: bool,
9855                    ) -> alloy_sol_types::Result<LightClientErrors> {
9856                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9857                            data, validate,
9858                        )
9859                        .map(LightClientErrors::FailedInnerCall)
9860                    }
9861                    FailedInnerCall
9862                },
9863                {
9864                    fn OwnableInvalidOwner(
9865                        data: &[u8],
9866                        validate: bool,
9867                    ) -> alloy_sol_types::Result<LightClientErrors> {
9868                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
9869                            data, validate,
9870                        )
9871                        .map(LightClientErrors::OwnableInvalidOwner)
9872                    }
9873                    OwnableInvalidOwner
9874                },
9875                {
9876                    fn ERC1967InvalidImplementation(
9877                        data: &[u8],
9878                        validate: bool,
9879                    ) -> alloy_sol_types::Result<LightClientErrors> {
9880                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
9881                            data, validate,
9882                        )
9883                        .map(LightClientErrors::ERC1967InvalidImplementation)
9884                    }
9885                    ERC1967InvalidImplementation
9886                },
9887                {
9888                    fn WrongStakeTableUsed(
9889                        data: &[u8],
9890                        validate: bool,
9891                    ) -> alloy_sol_types::Result<LightClientErrors> {
9892                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
9893                            data, validate,
9894                        )
9895                        .map(LightClientErrors::WrongStakeTableUsed)
9896                    }
9897                    WrongStakeTableUsed
9898                },
9899                {
9900                    fn InvalidHotShotBlockForCommitmentCheck(
9901                        data: &[u8],
9902                        validate: bool,
9903                    ) -> alloy_sol_types::Result<LightClientErrors> {
9904                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
9905                                data,
9906                                validate,
9907                            )
9908                            .map(
9909                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
9910                            )
9911                    }
9912                    InvalidHotShotBlockForCommitmentCheck
9913                },
9914                {
9915                    fn AddressEmptyCode(
9916                        data: &[u8],
9917                        validate: bool,
9918                    ) -> alloy_sol_types::Result<LightClientErrors> {
9919                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
9920                            data, validate,
9921                        )
9922                        .map(LightClientErrors::AddressEmptyCode)
9923                    }
9924                    AddressEmptyCode
9925                },
9926                {
9927                    fn InvalidArgs(
9928                        data: &[u8],
9929                        validate: bool,
9930                    ) -> alloy_sol_types::Result<LightClientErrors> {
9931                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
9932                            .map(LightClientErrors::InvalidArgs)
9933                    }
9934                    InvalidArgs
9935                },
9936                {
9937                    fn ProverNotPermissioned(
9938                        data: &[u8],
9939                        validate: bool,
9940                    ) -> alloy_sol_types::Result<LightClientErrors> {
9941                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
9942                            data, validate,
9943                        )
9944                        .map(LightClientErrors::ProverNotPermissioned)
9945                    }
9946                    ProverNotPermissioned
9947                },
9948                {
9949                    fn NoChangeRequired(
9950                        data: &[u8],
9951                        validate: bool,
9952                    ) -> alloy_sol_types::Result<LightClientErrors> {
9953                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
9954                            data, validate,
9955                        )
9956                        .map(LightClientErrors::NoChangeRequired)
9957                    }
9958                    NoChangeRequired
9959                },
9960                {
9961                    fn UUPSUnsupportedProxiableUUID(
9962                        data: &[u8],
9963                        validate: bool,
9964                    ) -> alloy_sol_types::Result<LightClientErrors> {
9965                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
9966                            data, validate,
9967                        )
9968                        .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
9969                    }
9970                    UUPSUnsupportedProxiableUUID
9971                },
9972                {
9973                    fn InsufficientSnapshotHistory(
9974                        data: &[u8],
9975                        validate: bool,
9976                    ) -> alloy_sol_types::Result<LightClientErrors> {
9977                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
9978                            data, validate,
9979                        )
9980                        .map(LightClientErrors::InsufficientSnapshotHistory)
9981                    }
9982                    InsufficientSnapshotHistory
9983                },
9984                {
9985                    fn ERC1967NonPayable(
9986                        data: &[u8],
9987                        validate: bool,
9988                    ) -> alloy_sol_types::Result<LightClientErrors> {
9989                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
9990                            data, validate,
9991                        )
9992                        .map(LightClientErrors::ERC1967NonPayable)
9993                    }
9994                    ERC1967NonPayable
9995                },
9996                {
9997                    fn NotInitializing(
9998                        data: &[u8],
9999                        validate: bool,
10000                    ) -> alloy_sol_types::Result<LightClientErrors> {
10001                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
10002                            data, validate,
10003                        )
10004                        .map(LightClientErrors::NotInitializing)
10005                    }
10006                    NotInitializing
10007                },
10008                {
10009                    fn UUPSUnauthorizedCallContext(
10010                        data: &[u8],
10011                        validate: bool,
10012                    ) -> alloy_sol_types::Result<LightClientErrors> {
10013                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
10014                            data, validate,
10015                        )
10016                        .map(LightClientErrors::UUPSUnauthorizedCallContext)
10017                    }
10018                    UUPSUnauthorizedCallContext
10019                },
10020                {
10021                    fn InvalidAddress(
10022                        data: &[u8],
10023                        validate: bool,
10024                    ) -> alloy_sol_types::Result<LightClientErrors> {
10025                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
10026                            data, validate,
10027                        )
10028                        .map(LightClientErrors::InvalidAddress)
10029                    }
10030                    InvalidAddress
10031                },
10032                {
10033                    fn InvalidMaxStateHistory(
10034                        data: &[u8],
10035                        validate: bool,
10036                    ) -> alloy_sol_types::Result<LightClientErrors> {
10037                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
10038                            data, validate,
10039                        )
10040                        .map(LightClientErrors::InvalidMaxStateHistory)
10041                    }
10042                    InvalidMaxStateHistory
10043                },
10044                {
10045                    fn InvalidInitialization(
10046                        data: &[u8],
10047                        validate: bool,
10048                    ) -> alloy_sol_types::Result<LightClientErrors> {
10049                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
10050                            data, validate,
10051                        )
10052                        .map(LightClientErrors::InvalidInitialization)
10053                    }
10054                    InvalidInitialization
10055                },
10056            ];
10057            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10058                return Err(alloy_sol_types::Error::unknown_selector(
10059                    <Self as alloy_sol_types::SolInterface>::NAME,
10060                    selector,
10061                ));
10062            };
10063            DECODE_SHIMS[idx](data, validate)
10064        }
10065        #[inline]
10066        fn abi_encoded_size(&self) -> usize {
10067            match self {
10068                Self::AddressEmptyCode(inner) => {
10069                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
10070                        inner,
10071                    )
10072                }
10073                Self::ERC1967InvalidImplementation(inner) => {
10074                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
10075                        inner,
10076                    )
10077                }
10078                Self::ERC1967NonPayable(inner) => {
10079                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
10080                        inner,
10081                    )
10082                }
10083                Self::FailedInnerCall(inner) => {
10084                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
10085                        inner,
10086                    )
10087                }
10088                Self::InsufficientSnapshotHistory(inner) => {
10089                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
10090                        inner,
10091                    )
10092                }
10093                Self::InvalidAddress(inner) => {
10094                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
10095                        inner,
10096                    )
10097                }
10098                Self::InvalidArgs(inner) => {
10099                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
10100                }
10101                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
10102                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
10103                        inner,
10104                    )
10105                }
10106                Self::InvalidInitialization(inner) => {
10107                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
10108                        inner,
10109                    )
10110                }
10111                Self::InvalidMaxStateHistory(inner) => {
10112                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
10113                        inner,
10114                    )
10115                }
10116                Self::InvalidProof(inner) => {
10117                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
10118                }
10119                Self::NoChangeRequired(inner) => {
10120                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
10121                        inner,
10122                    )
10123                }
10124                Self::NotInitializing(inner) => {
10125                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
10126                        inner,
10127                    )
10128                }
10129                Self::OutdatedState(inner) => {
10130                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
10131                }
10132                Self::OwnableInvalidOwner(inner) => {
10133                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
10134                        inner,
10135                    )
10136                }
10137                Self::OwnableUnauthorizedAccount(inner) => {
10138                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
10139                        inner,
10140                    )
10141                }
10142                Self::ProverNotPermissioned(inner) => {
10143                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
10144                        inner,
10145                    )
10146                }
10147                Self::UUPSUnauthorizedCallContext(inner) => {
10148                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
10149                        inner,
10150                    )
10151                }
10152                Self::UUPSUnsupportedProxiableUUID(inner) => {
10153                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
10154                        inner,
10155                    )
10156                }
10157                Self::WrongStakeTableUsed(inner) => {
10158                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
10159                        inner,
10160                    )
10161                }
10162            }
10163        }
10164        #[inline]
10165        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10166            match self {
10167                Self::AddressEmptyCode(inner) => {
10168                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
10169                        inner,
10170                        out,
10171                    )
10172                }
10173                Self::ERC1967InvalidImplementation(inner) => {
10174                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
10175                        inner,
10176                        out,
10177                    )
10178                }
10179                Self::ERC1967NonPayable(inner) => {
10180                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
10181                        inner,
10182                        out,
10183                    )
10184                }
10185                Self::FailedInnerCall(inner) => {
10186                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
10187                        inner,
10188                        out,
10189                    )
10190                }
10191                Self::InsufficientSnapshotHistory(inner) => {
10192                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
10193                        inner,
10194                        out,
10195                    )
10196                }
10197                Self::InvalidAddress(inner) => {
10198                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
10199                        inner,
10200                        out,
10201                    )
10202                }
10203                Self::InvalidArgs(inner) => {
10204                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
10205                        inner,
10206                        out,
10207                    )
10208                }
10209                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
10210                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
10211                        inner,
10212                        out,
10213                    )
10214                }
10215                Self::InvalidInitialization(inner) => {
10216                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
10217                        inner,
10218                        out,
10219                    )
10220                }
10221                Self::InvalidMaxStateHistory(inner) => {
10222                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
10223                        inner,
10224                        out,
10225                    )
10226                }
10227                Self::InvalidProof(inner) => {
10228                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
10229                        inner,
10230                        out,
10231                    )
10232                }
10233                Self::NoChangeRequired(inner) => {
10234                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
10235                        inner,
10236                        out,
10237                    )
10238                }
10239                Self::NotInitializing(inner) => {
10240                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
10241                        inner,
10242                        out,
10243                    )
10244                }
10245                Self::OutdatedState(inner) => {
10246                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
10247                        inner,
10248                        out,
10249                    )
10250                }
10251                Self::OwnableInvalidOwner(inner) => {
10252                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
10253                        inner,
10254                        out,
10255                    )
10256                }
10257                Self::OwnableUnauthorizedAccount(inner) => {
10258                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
10259                        inner,
10260                        out,
10261                    )
10262                }
10263                Self::ProverNotPermissioned(inner) => {
10264                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
10265                        inner,
10266                        out,
10267                    )
10268                }
10269                Self::UUPSUnauthorizedCallContext(inner) => {
10270                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
10271                        inner,
10272                        out,
10273                    )
10274                }
10275                Self::UUPSUnsupportedProxiableUUID(inner) => {
10276                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
10277                        inner,
10278                        out,
10279                    )
10280                }
10281                Self::WrongStakeTableUsed(inner) => {
10282                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
10283                        inner,
10284                        out,
10285                    )
10286                }
10287            }
10288        }
10289    }
10290    ///Container for all the [`LightClient`](self) events.
10291    #[derive(Debug, PartialEq, Eq, Hash)]
10292    pub enum LightClientEvents {
10293        #[allow(missing_docs)]
10294        Initialized(Initialized),
10295        #[allow(missing_docs)]
10296        NewState(NewState),
10297        #[allow(missing_docs)]
10298        OwnershipTransferred(OwnershipTransferred),
10299        #[allow(missing_docs)]
10300        PermissionedProverNotRequired(PermissionedProverNotRequired),
10301        #[allow(missing_docs)]
10302        PermissionedProverRequired(PermissionedProverRequired),
10303        #[allow(missing_docs)]
10304        Upgrade(Upgrade),
10305        #[allow(missing_docs)]
10306        Upgraded(Upgraded),
10307    }
10308    #[automatically_derived]
10309    impl LightClientEvents {
10310        /// All the selectors of this enum.
10311        ///
10312        /// Note that the selectors might not be in the same order as the variants.
10313        /// No guarantees are made about the order of the selectors.
10314        ///
10315        /// Prefer using `SolInterface` methods instead.
10316        pub const SELECTORS: &'static [[u8; 32usize]] = &[
10317            [
10318                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8, 212u8,
10319                15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8, 133u8,
10320                216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
10321            ],
10322            [
10323                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
10324                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
10325                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
10326            ],
10327            [
10328                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
10329                92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
10330                109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
10331            ],
10332            [
10333                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8, 37u8,
10334                245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8, 252u8,
10335                231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
10336            ],
10337            [
10338                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
10339                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
10340                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
10341            ],
10342            [
10343                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
10344                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
10345                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
10346            ],
10347            [
10348                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
10349                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
10350                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
10351            ],
10352        ];
10353    }
10354    #[automatically_derived]
10355    impl alloy_sol_types::SolEventInterface for LightClientEvents {
10356        const NAME: &'static str = "LightClientEvents";
10357        const COUNT: usize = 7usize;
10358        fn decode_raw_log(
10359            topics: &[alloy_sol_types::Word],
10360            data: &[u8],
10361            validate: bool,
10362        ) -> alloy_sol_types::Result<Self> {
10363            match topics.first().copied() {
10364                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10365                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
10366                        topics, data, validate,
10367                    )
10368                    .map(Self::Initialized)
10369                },
10370                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10371                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10372                        .map(Self::NewState)
10373                },
10374                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10375                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
10376                        topics, data, validate,
10377                    )
10378                    .map(Self::OwnershipTransferred)
10379                },
10380                Some(
10381                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
10382                ) => <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
10383                    topics, data, validate,
10384                )
10385                .map(Self::PermissionedProverNotRequired),
10386                Some(<PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10387                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
10388                        topics, data, validate,
10389                    )
10390                    .map(Self::PermissionedProverRequired)
10391                },
10392                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10393                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10394                        .map(Self::Upgrade)
10395                },
10396                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
10397                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
10398                        .map(Self::Upgraded)
10399                },
10400                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
10401                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
10402                    log: alloy_sol_types::private::Box::new(
10403                        alloy_sol_types::private::LogData::new_unchecked(
10404                            topics.to_vec(),
10405                            data.to_vec().into(),
10406                        ),
10407                    ),
10408                }),
10409            }
10410        }
10411    }
10412    #[automatically_derived]
10413    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
10414        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
10415            match self {
10416                Self::Initialized(inner) => {
10417                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10418                },
10419                Self::NewState(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10420                Self::OwnershipTransferred(inner) => {
10421                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10422                },
10423                Self::PermissionedProverNotRequired(inner) => {
10424                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10425                },
10426                Self::PermissionedProverRequired(inner) => {
10427                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10428                },
10429                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10430                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
10431            }
10432        }
10433        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10434            match self {
10435                Self::Initialized(inner) => {
10436                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10437                },
10438                Self::NewState(inner) => {
10439                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10440                },
10441                Self::OwnershipTransferred(inner) => {
10442                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10443                },
10444                Self::PermissionedProverNotRequired(inner) => {
10445                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10446                },
10447                Self::PermissionedProverRequired(inner) => {
10448                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10449                },
10450                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
10451                Self::Upgraded(inner) => {
10452                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10453                },
10454            }
10455        }
10456    }
10457    use alloy::contract as alloy_contract;
10458    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
10459
10460    See the [wrapper's documentation](`LightClientInstance`) for more details.*/
10461    #[inline]
10462    pub const fn new<
10463        T: alloy_contract::private::Transport + ::core::clone::Clone,
10464        P: alloy_contract::private::Provider<T, N>,
10465        N: alloy_contract::private::Network,
10466    >(
10467        address: alloy_sol_types::private::Address,
10468        provider: P,
10469    ) -> LightClientInstance<T, P, N> {
10470        LightClientInstance::<T, P, N>::new(address, provider)
10471    }
10472    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10473
10474    Returns a new instance of the contract, if the deployment was successful.
10475
10476    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10477    #[inline]
10478    pub fn deploy<
10479        T: alloy_contract::private::Transport + ::core::clone::Clone,
10480        P: alloy_contract::private::Provider<T, N>,
10481        N: alloy_contract::private::Network,
10482    >(
10483        provider: P,
10484    ) -> impl ::core::future::Future<Output = alloy_contract::Result<LightClientInstance<T, P, N>>>
10485    {
10486        LightClientInstance::<T, P, N>::deploy(provider)
10487    }
10488    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10489    and constructor arguments, if any.
10490
10491    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10492    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10493    #[inline]
10494    pub fn deploy_builder<
10495        T: alloy_contract::private::Transport + ::core::clone::Clone,
10496        P: alloy_contract::private::Provider<T, N>,
10497        N: alloy_contract::private::Network,
10498    >(
10499        provider: P,
10500    ) -> alloy_contract::RawCallBuilder<T, P, N> {
10501        LightClientInstance::<T, P, N>::deploy_builder(provider)
10502    }
10503    /**A [`LightClient`](self) instance.
10504
10505    Contains type-safe methods for interacting with an on-chain instance of the
10506    [`LightClient`](self) contract located at a given `address`, using a given
10507    provider `P`.
10508
10509    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10510    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10511    be used to deploy a new instance of the contract.
10512
10513    See the [module-level documentation](self) for all the available methods.*/
10514    #[derive(Clone)]
10515    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
10516        address: alloy_sol_types::private::Address,
10517        provider: P,
10518        _network_transport: ::core::marker::PhantomData<(N, T)>,
10519    }
10520    #[automatically_derived]
10521    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
10522        #[inline]
10523        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10524            f.debug_tuple("LightClientInstance")
10525                .field(&self.address)
10526                .finish()
10527        }
10528    }
10529    /// Instantiation and getters/setters.
10530    #[automatically_derived]
10531    impl<
10532            T: alloy_contract::private::Transport + ::core::clone::Clone,
10533            P: alloy_contract::private::Provider<T, N>,
10534            N: alloy_contract::private::Network,
10535        > LightClientInstance<T, P, N>
10536    {
10537        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
10538
10539        See the [wrapper's documentation](`LightClientInstance`) for more details.*/
10540        #[inline]
10541        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
10542            Self {
10543                address,
10544                provider,
10545                _network_transport: ::core::marker::PhantomData,
10546            }
10547        }
10548        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10549
10550        Returns a new instance of the contract, if the deployment was successful.
10551
10552        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10553        #[inline]
10554        pub async fn deploy(provider: P) -> alloy_contract::Result<LightClientInstance<T, P, N>> {
10555            let call_builder = Self::deploy_builder(provider);
10556            let contract_address = call_builder.deploy().await?;
10557            Ok(Self::new(contract_address, call_builder.provider))
10558        }
10559        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10560        and constructor arguments, if any.
10561
10562        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10563        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10564        #[inline]
10565        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
10566            alloy_contract::RawCallBuilder::new_raw_deploy(
10567                provider,
10568                ::core::clone::Clone::clone(&BYTECODE),
10569            )
10570        }
10571        /// Returns a reference to the address.
10572        #[inline]
10573        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10574            &self.address
10575        }
10576        /// Sets the address.
10577        #[inline]
10578        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10579            self.address = address;
10580        }
10581        /// Sets the address and returns `self`.
10582        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10583            self.set_address(address);
10584            self
10585        }
10586        /// Returns a reference to the provider.
10587        #[inline]
10588        pub const fn provider(&self) -> &P {
10589            &self.provider
10590        }
10591    }
10592    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
10593        /// Clones the provider and returns a new instance with the cloned provider.
10594        #[inline]
10595        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
10596            LightClientInstance {
10597                address: self.address,
10598                provider: ::core::clone::Clone::clone(&self.provider),
10599                _network_transport: ::core::marker::PhantomData,
10600            }
10601        }
10602    }
10603    /// Function calls.
10604    #[automatically_derived]
10605    impl<
10606            T: alloy_contract::private::Transport + ::core::clone::Clone,
10607            P: alloy_contract::private::Provider<T, N>,
10608            N: alloy_contract::private::Network,
10609        > LightClientInstance<T, P, N>
10610    {
10611        /// Creates a new call builder using this contract instance's provider and address.
10612        ///
10613        /// Note that the call can be any function call, not just those defined in this
10614        /// contract. Prefer using the other methods for building type-safe contract calls.
10615        pub fn call_builder<C: alloy_sol_types::SolCall>(
10616            &self,
10617            call: &C,
10618        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
10619            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10620        }
10621        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
10622        pub fn UPGRADE_INTERFACE_VERSION(
10623            &self,
10624        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
10625            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
10626        }
10627        ///Creates a new call builder for the [`_getVk`] function.
10628        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
10629            self.call_builder(&_getVkCall {})
10630        }
10631        ///Creates a new call builder for the [`currentBlockNumber`] function.
10632        pub fn currentBlockNumber(
10633            &self,
10634        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
10635            self.call_builder(&currentBlockNumberCall {})
10636        }
10637        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
10638        pub fn disablePermissionedProverMode(
10639            &self,
10640        ) -> alloy_contract::SolCallBuilder<T, &P, disablePermissionedProverModeCall, N> {
10641            self.call_builder(&disablePermissionedProverModeCall {})
10642        }
10643        ///Creates a new call builder for the [`finalizedState`] function.
10644        pub fn finalizedState(
10645            &self,
10646        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
10647            self.call_builder(&finalizedStateCall {})
10648        }
10649        ///Creates a new call builder for the [`genesisStakeTableState`] function.
10650        pub fn genesisStakeTableState(
10651            &self,
10652        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
10653            self.call_builder(&genesisStakeTableStateCall {})
10654        }
10655        ///Creates a new call builder for the [`genesisState`] function.
10656        pub fn genesisState(&self) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
10657            self.call_builder(&genesisStateCall {})
10658        }
10659        ///Creates a new call builder for the [`getHotShotCommitment`] function.
10660        pub fn getHotShotCommitment(
10661            &self,
10662            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10663        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
10664            self.call_builder(&getHotShotCommitmentCall { hotShotBlockHeight })
10665        }
10666        ///Creates a new call builder for the [`getStateHistoryCount`] function.
10667        pub fn getStateHistoryCount(
10668            &self,
10669        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
10670            self.call_builder(&getStateHistoryCountCall {})
10671        }
10672        ///Creates a new call builder for the [`getVersion`] function.
10673        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
10674            self.call_builder(&getVersionCall {})
10675        }
10676        ///Creates a new call builder for the [`initialize`] function.
10677        pub fn initialize(
10678            &self,
10679            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
10680            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
10681            _stateHistoryRetentionPeriod: u32,
10682            owner: alloy::sol_types::private::Address,
10683        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
10684            self.call_builder(&initializeCall {
10685                _genesis,
10686                _genesisStakeTableState,
10687                _stateHistoryRetentionPeriod,
10688                owner,
10689            })
10690        }
10691        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
10692        pub fn isPermissionedProverEnabled(
10693            &self,
10694        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
10695            self.call_builder(&isPermissionedProverEnabledCall {})
10696        }
10697        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
10698        pub fn lagOverEscapeHatchThreshold(
10699            &self,
10700            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10701            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10702        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
10703            self.call_builder(&lagOverEscapeHatchThresholdCall {
10704                blockNumber,
10705                blockThreshold,
10706            })
10707        }
10708        ///Creates a new call builder for the [`newFinalizedState`] function.
10709        pub fn newFinalizedState(
10710            &self,
10711            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
10712            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10713        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
10714            self.call_builder(&newFinalizedStateCall { newState, proof })
10715        }
10716        ///Creates a new call builder for the [`owner`] function.
10717        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
10718            self.call_builder(&ownerCall {})
10719        }
10720        ///Creates a new call builder for the [`permissionedProver`] function.
10721        pub fn permissionedProver(
10722            &self,
10723        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
10724            self.call_builder(&permissionedProverCall {})
10725        }
10726        ///Creates a new call builder for the [`proxiableUUID`] function.
10727        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
10728            self.call_builder(&proxiableUUIDCall {})
10729        }
10730        ///Creates a new call builder for the [`renounceOwnership`] function.
10731        pub fn renounceOwnership(
10732            &self,
10733        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
10734            self.call_builder(&renounceOwnershipCall {})
10735        }
10736        ///Creates a new call builder for the [`setPermissionedProver`] function.
10737        pub fn setPermissionedProver(
10738            &self,
10739            prover: alloy::sol_types::private::Address,
10740        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
10741            self.call_builder(&setPermissionedProverCall { prover })
10742        }
10743        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
10744        pub fn setstateHistoryRetentionPeriod(
10745            &self,
10746            historySeconds: u32,
10747        ) -> alloy_contract::SolCallBuilder<T, &P, setstateHistoryRetentionPeriodCall, N> {
10748            self.call_builder(&setstateHistoryRetentionPeriodCall { historySeconds })
10749        }
10750        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
10751        pub fn stateHistoryCommitments(
10752            &self,
10753            _0: alloy::sol_types::private::primitives::aliases::U256,
10754        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
10755            self.call_builder(&stateHistoryCommitmentsCall { _0 })
10756        }
10757        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
10758        pub fn stateHistoryFirstIndex(
10759            &self,
10760        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
10761            self.call_builder(&stateHistoryFirstIndexCall {})
10762        }
10763        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
10764        pub fn stateHistoryRetentionPeriod(
10765            &self,
10766        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
10767            self.call_builder(&stateHistoryRetentionPeriodCall {})
10768        }
10769        ///Creates a new call builder for the [`transferOwnership`] function.
10770        pub fn transferOwnership(
10771            &self,
10772            newOwner: alloy::sol_types::private::Address,
10773        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
10774            self.call_builder(&transferOwnershipCall { newOwner })
10775        }
10776        ///Creates a new call builder for the [`upgradeToAndCall`] function.
10777        pub fn upgradeToAndCall(
10778            &self,
10779            newImplementation: alloy::sol_types::private::Address,
10780            data: alloy::sol_types::private::Bytes,
10781        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
10782            self.call_builder(&upgradeToAndCallCall {
10783                newImplementation,
10784                data,
10785            })
10786        }
10787    }
10788    /// Event filters.
10789    #[automatically_derived]
10790    impl<
10791            T: alloy_contract::private::Transport + ::core::clone::Clone,
10792            P: alloy_contract::private::Provider<T, N>,
10793            N: alloy_contract::private::Network,
10794        > LightClientInstance<T, P, N>
10795    {
10796        /// Creates a new event filter using this contract instance's provider and address.
10797        ///
10798        /// Note that the type can be any event, not just those defined in this contract.
10799        /// Prefer using the other methods for building type-safe event filters.
10800        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10801            &self,
10802        ) -> alloy_contract::Event<T, &P, E, N> {
10803            alloy_contract::Event::new_sol(&self.provider, &self.address)
10804        }
10805        ///Creates a new event filter for the [`Initialized`] event.
10806        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
10807            self.event_filter::<Initialized>()
10808        }
10809        ///Creates a new event filter for the [`NewState`] event.
10810        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
10811            self.event_filter::<NewState>()
10812        }
10813        ///Creates a new event filter for the [`OwnershipTransferred`] event.
10814        pub fn OwnershipTransferred_filter(
10815            &self,
10816        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
10817            self.event_filter::<OwnershipTransferred>()
10818        }
10819        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
10820        pub fn PermissionedProverNotRequired_filter(
10821            &self,
10822        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
10823            self.event_filter::<PermissionedProverNotRequired>()
10824        }
10825        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
10826        pub fn PermissionedProverRequired_filter(
10827            &self,
10828        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
10829            self.event_filter::<PermissionedProverRequired>()
10830        }
10831        ///Creates a new event filter for the [`Upgrade`] event.
10832        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
10833            self.event_filter::<Upgrade>()
10834        }
10835        ///Creates a new event filter for the [`Upgraded`] event.
10836        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
10837            self.event_filter::<Upgraded>()
10838        }
10839    }
10840}